Package-Management
替換系統二進製文件時哪個是最佳實踐?
我正在使用 Mac OS X,它附帶了幾個二進製文件,主要位於
/usr/bin/
和/usr/sbin/
. 由於它沒有像某些 Linux 發行版那樣的本機包管理器,因此我習慣於管理自己的二進製文件,在/usr/local/<package_name>/
.這樣,我可以從我的系統中完全刪除一個包,代價是手動更新文件中的
PATH
和MANPATH
變數.bashrc
。這是一個簡單的例子:
Mac OS X 附帶 ant 1.7.0,位於
/usr/bin
. 我需要使用最新版本,所以我從 Apache 下載它,然後將其解壓縮(建構)到/usr/local/apache-ant-1.8.2
. 然後我更新我的.bashrc
文件:# Mac OS X original PATH PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" # Apache Ant 1.8.2 PATH="$PATH:/usr/local/apache-ant-1.8.2/bin" export PATH
我確保導出
/usr/bin/
and/usr/sbin/
之前,因為除了我不想覆蓋ant/bin/
的之外,通常還有其他二進製文件。ant
問題是當我輸入時
which ant
我得到/usr/bin/
. 因此,我將其重命名為/usr/bin/ant
以/usr/bin/ant-old
使用最新版本。雖然這可行,但我想知道是否有更好的方法來替換系統二進製文件(主要是為了避免最後重命名)。
更換系統二進製文件應該是最後的手段。
我的建議是:
- 把
/usr/local/bin
前面/usr/bin
和其他系統目錄放在PATH
.- 建立
/usr/local/bin/ant
一個符號連結到/usr/local/apache-ant-1.8.2/bin/ant
.- 根本不包括
/usr/local/apache-ant-1.8.2/bin
在內PATH
。這邊走:
- 您的自定義(在 中
/usr/local/bin
)會覆蓋系統預設值。- 符號連結
/usr/local/bin/ant
提醒您從哪裡獲得該版本的ant
.- 如果您想使用預設設置測試某些內容,只需在測試期間
/usr/local/bin
從您PATH
的設備中刪除即可。