如果在 macport 直接以 sudo port upgrade outdated
更新軟體,都會直接更新到最新版本,但有時候為了軟體的相容性問題,還是需要安裝舊版的軟體,以下記錄安裝舊版軟體的過程。
以 erlang 為例,目前 macport 最新為 20.0 版,如要安裝 erlang 19.3 版,要用以下程序處理。
由於 macport 的權限問題,必須在 /tmp 執行下列的程序。
cd /tmp
mkdir port
cd port
git clone --single-branch https://github.com/macports/macports-ports.git
cd macports-ports
因為 erlang 19.3 版,在 erlang Portfile history 可找到該 Portfile History,在 19.3 版的地方,點擊 <>,可查看該 commit 的網址https://github.com/macports/macports-ports/blob/e80897a5cc8f3583eac1bff12a62db6dc8ce4f99/lang/erlang/Portfile。
因此我們用 git 指令切換到該 commit
git checkout e80897a5cc8f3583eac1bff12a62db6dc8ce4f99
安裝 19.3 版 erlang
cd lang/erlang
sudo port install +hipe+ssl+wxwidgets
以指令查詢目前 active 的 erlang 版本
sudo port installed | grep erlang
結果為
erlang @19.3_0+hipe+ssl+wxwidgets (active)
erlang @20.0_0+hipe+ssl+wxwidgets
如果版本錯誤,可用以下指令切換至 19.3
sudo port activate erlang @19.3
更新 macport 軟體可用以下的 script,在 uninstall inactive 時,可排除 erlang,避免舊版 erlang 被移除。
port_upgrade.sh
#!/bin/bash
echo "upgrade port..."
echo "!port selftupdate"
sudo port selfupdate
echo "!port upgrade outdated"
sudo port upgrade outdated
echo "!port installed inactive"
# list inactive installed packages
sudo port installed inactive
echo "!port uninstall inactive"
# uninstall inactive installed packages
#sudo port uninstall inactive
sudo port uninstall inactive and not erlang
沒有留言:
張貼留言