Package-Management

替換系統二進製文件時哪個是最佳實踐?

  • April 18, 2011

我正在使用 Mac OS X,它附帶了幾個二進製文件,主要位於/usr/bin//usr/sbin/. 由於它沒有像某些 Linux 發行版那樣的本機包管理器,因此我習慣於管理自己的二進製文件,在/usr/local/<package_name>/.

這樣,我可以從我的系統中完全刪除一個包,代價是手動更新文件中的PATHMANPATH變數.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的設備中刪除即可。

引用自:https://unix.stackexchange.com/questions/11570