在使用 sudo port -v selfupdate
更新源的时候,发生了一个错误:
Error: Failed to verify signature for MacPorts source!
Error: Follow https://guide.macports.org/#project.tickets if you believe there
is a bug.
Error: /opt/local/bin/port: port selfupdate failed: Failed to verify signature for MacPorts source!
无法验证源的签名,暂时不确定是不是服务端的源有问题还是本地环境出了问题。
rsync 同步源的方式不能使用了,只能使用本地源来替代。
MacPorts 的源是存放在目录:/opt/local/var/macports/sources
MacPorts 同时也把源托管在 GitHub 上,而且接受 PR:https://github.com/macports/macports-ports
可以把 GitHub 上的源克隆到本地,让 MacPorts 使用本地源来解决这个签名无效的问题。
克隆 GitHub 源到本地:
cd /opt/local/var/macports/sources sudo mkdir -p github.com/macports/macports-ports sudo git clone https://github.com/macports/macports-ports.git github.com/macports/macports-ports
配置 MacPorts 使用本地源: 编辑 MacPorts 的源配置文件:
/opt/local/etc/macports/sources.conf
,把 rsync 的地址替换为本地路径:file:///opt/local/var/macports/sources/github.com/macports/macports-ports [default]
重建/更新源索引: 如果是首次操作,这一步需要消耗比较多的时间。
sudo port -v sync
以后不能使用 sudo port -v selfupdate
来更新源了,因为这个命令使用的是 rsync。
需要使用 git pull
提取最新的源然后再更新索引:
cd /opt/local/var/macports/sources/github.com/macports/macports-ports
sudo git pull
sudo port -v sync
以上,/opt/local
是 MacPorts 的默认安装路径,需要按自己的实际情况做修改。
为了以后更新方便,可以写一个 shell 脚本,port-update
:
#!/usr/bin/env bash
if [[ $(id -u) != 0 ]]; then
echo you are not root.
exit -1
fi
pushd /opt/macports/var/macports/sources/github.com/macports/macports-ports
git pull
port -v sync
popd
以后更新的时候只需要执行:sudo port-update
例如要更新全部已安装的 ports:
sudo port-update
sudo port upgrade outdated
单独更新某个 port 到最新版本:
sudo port-update
sudo port upgrade gnupg2