====== 升级 FreeBSD 系统中的 python ====== 当 ports 的 PYTHON_DEFAULT 变更后, 整个 python 生态系统需要重新编译. 记录下升级 python 3.9 为 3.11 的过程. **下面的 sh 可以用 bash, zsh, 反正不能用 csh/tcsh, 如果已经是前三种则不需要切换** ===== 利用 portmaster 升级 ===== sh portmaster -o lang/python311 python39 REINSTALL="$(pkg info -o "*py39*" | awk '{printf "%s ", $2}')" pkg delete -f "*py39*" portmaster $REINSTALL REBUILD=$(pkg query -g "%n:%dn" '*' | grep py3 | grep -v py311 | cut -d : -f 1 | sort -u) portmaster $REBUILD REBUILD2=$(pkg list | grep python-39 | xargs pkg which | awk '{print $6}' | sort -u) portmaster $REBUILD2 ===== 利用 pkg 升级 ===== sh for i in $(pkg query -g %n 'py39-*'); do pkg set -yn ${i}:py311-${i#py39-}; done pkg upgrade pkg remove python39 rm -r /usr/local/lib/python3.9 {{tag>freebsd ports python}}