2014-03-06 32 views

回答

3

保存當前安裝的端口

sudo port list installed | sed 's/ .*//' | sort | uniq > ports.lst 

然後卸載一切,留在原位結構

sudo port clean installed 
sudo port -f uninstall installed 

然後重新安裝一切,用新的依賴:

for package in $(<ports.lst); do sudo port install $package; done 
+2

這給我*所有*安裝的端口。有沒有辦法只列出依賴圖的葉子?例如,我不需要知道將作爲另一個端口的依賴項安裝的端口。 – Jens

+1

也想指出,這種方法不保留安裝的變體。使用'port -v installed'或者其他的'而不是'port list'將會更好的IMO。 – Jens

+0

是什麼讓這個答案比Marc的答案更好? – jvriesem

11

從MacPorts wiki(遷移):

https://trac.macports.org/wiki/Migration

救使用安裝端口的列表後:

port -qv installed > myports.txt 

,並已經與刪除:

sudo port -f uninstall installed 

下載並執行腳本restore_ports。 (如果您安裝從源代碼的MacPorts和使用自定義的前綴,那麼你就需要在運行restore_ports.tcl使用-p選項;見./restore_ports.tcl -h

curl -O https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl 
chmod +x restore_ports.tcl 
sudo ./restore_ports.tcl myports.txt 
+1

@KirkRoybal:這個鏈接是直接來自MacPorts人的這個問題的明確答案。這應該是被接受的答案。 – jvriesem