Tagged: mac

Mac psycopg2 安装错误记录

今天在电脑上安装Odoo的python的依赖包时,遇到了psycopg2无法正常安装的问题。提示 ld: library not found for -lssl 找不到,导致安装失败。

lssl是属于openssl的lib文件,查看系统发现openssl是正确安装的。

brew openssl info

于是查看系统的env环境发现openssl的CPPFLAGS环境变量是没有设置的,于是将openssl的环境变量均设置上。

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

再次尝试安装

pip --no-cache install psycopg2

发现能正常安装了,综上判断,安装不了应该是由于没有找到openssl所对应的lib库引起的。

Install PostgreSql with brew

安装brew的文章请查看:https://jalena.bcsytv.com/archives/2298

版本选择

可以在 https://formulae.brew.sh/formula/postgresql#default 这里找到你需要的PostgreSql版本。本文章使用的是postgresql@10

安装及锁定版本

# 搜索需要的程序
brew search postgresql

# 安装程序
brew install postgresql@10 

# 锁定程序版本
brew pin postgresql@10

初始化设置

# 写入环境变量
echo 'export PATH="/usr/local/opt/postgresql@10/bin:$PATH"' >> ~/.bash_profile

# 让变量立即生效
source ~/.bash_profile

# 如果不想每次输入data目录路径,可以设置数据文件环境变量
echo 'export PGDATA="/usr/local/var/postgresql@10"' >> ~/.bash_profile

启动、使用

# 启动数据库
brew services start postgresql@10

# 停止数据库
brew services stop postgresql@10

# 重启数据库
brew services restart postgresql@10

# 查看当前运行的所有服务
brew services run --all

# 进入数据库
# 这种方式默认初始化的数据库账号为当前系统用户
# 默认的数据库为 postgres
psql postgres

设置快捷命令

vim ~/.bash_profile
alias pgst='brew services start postgresql@10'
alias pgsp='brew services stop postgresql@10'
alias pgrs='brew services restart postgresql@10'
source ~/.bash_profile

现在就可以在任何地方使用pgst来启动数据库了。

Install HomeBrew in Mac

HomeBrew是Mac下类型于Centos下但Yum包管理工具,使用Mac作为开发平台,使用HomeBrew是非常有必要的。

你可以在https://brew.sh/index_zh-cn这里找到更多关于HomeBrew的使用技巧。

安装HomeBrew

拷贝如下命令行在终端中执行。

# 安装Xcode
xcode-select --install

# 安装HomeBrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# 检查
brew doctor

# 更多命令
brew --help

镜像加速

注:该镜像是 Homebrew 二进制预编译包的镜像。本镜像站同时提供 Homebrew 的 formula 索引的镜像(即 brew update 时所更新内容),请参考 Homebrew 镜像使用帮助。

# 临时替换
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
# 永久替换
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
# 永久替换
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

更新 Homebrew

要获取最新的包的列表,首先得更新 Homebrew 自己。这可以用 brew update 来达到更新自身到目的。

更新包 (formula)

更新之前,可以使用 brew outdated 查看哪些包可以更新。Homebrew 会安装新版本的包,但旧版本仍然会保留。

# 更新所有的包
brew upgrade

# 更新指定的包
brew upgrade $FORMULA

锁定不想更新的包

如果经常更新的话,brew update 一次更新所有的包是非常方便的。但有时候会担心自动升级把一些不希望更新的包更新了。数据库就属于这一类,尤其是 PostgreSQL 跨 minor 版本升级都要迁移数据库的。我们更希望找个时间单独处理它。这时可用 brew pin 去锁定这个包,然后 brew update 就会略过它了。

# 锁定某个包
brew pin $FORMULA

# 取消锁定
brew unpin $FORMULA

清理旧版本

新版本安装了,旧版本就不需要了。我会用 brew cleanup 清理旧版本和缓存文件。Homebrew 只会清除比当前安装的包更老的版本,所以不用担心有些包没更新但被删了。

# 清理所有包的旧版本
brew cleanup

# 清理指定包的旧版本
brew cleanup $FORMULA

# 查看可清理的旧版本包,不执行实际操作
brew cleanup -n 

彻底卸载

brew uninstall formula_name --force

Archives