Osx

如何將包管理器安裝的二進製文件設置為預設值?

  • October 17, 2015

我安裝了較新版本的tcpdumpvia MacPorts,並希望將其設為預設二進製文件。

$ which -a tcpdump
/usr/sbin/tcpdump
/opt/local/sbin/tcpdump

現在我設置了一個alias,但這當然不會阻止man顯示較舊的文件。

OS X 10.8.5,bash 3.2.53(1)中,MacPorts 2.3.4您實際上應該什麼都不做。

我不知道為什麼它一開始沒有用。PATH的值可能以某種方式被儲存而不是更新(更多內容見下文)。

我試過

·MANPATH正如thrig所建議的那樣,但這沒有用。從man的手冊頁:"It overrides the configuration file and the automatic search path"

·首先使用包管理器exportPATH目錄從我的(全域)配置文件中獲取。這為它們添加了三次前綴並添加了一次後綴,並且確實將較新的二進製文件/手冊頁設置為預設值,但我對這種新的更長的組合感到好奇PATH(舊值只有一次所有目錄,但順序不同,首先是作業系統的預設值,然後是包管理器)。

對於這個主題,請查看 SU,$PATH 在 OS X 10.6 Snow Leopard 中的設置位置?.

事實證明,MacPorts安裝程序將目錄添加到~/.profile.

# MacPorts Installer addition on 2015-10-10_at_20:55:20: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.

我有很多次,所以我繼續評論所有,除了最後一個。這導致了一個乾淨的PATH.

man實際上如何獲得更新的文件?

SEARCH PATH FOR MANUAL PAGES部分:

In  addition,  for  each  directory in the command search path (we'll call it a "command
directory") for which you do not have a MANPATH_MAP statement, man automatically looks for
a manual page directory "nearby" namely as a subdirectory in the command directory itself or
in the parent directory of the command directory.

You can disable the automatic "nearby" searches by including a NOAUTOPATH statement in
/private/etc/man.conf.

我通過暫時啟用NOAUTOPATH.

例子

$ type tcpdump
tcpdump is /opt/local/sbin/tcpdump

$ ll -d /opt/local/man
lrwxr-xr-x  1 root  admin  9 Oct 10 20:55:20 2015 /opt/local/man -> share/man

對於其他包管理器 YMMV,但我想不多。

您需要調整您的變數PATHMANPATH環境變數以在供應商路徑之前列出 MacPorts 路徑。對於bash,在您的.bashrc(或可能還有.bash_profile)中嘗試類似以下的操作,然後exec bash重新載入正在執行的 shell:

export MANPATH=/opt/local/share/man:$MANPATH

其他方便的命令可能是查看目前MANPATH是什麼,並找到 MacPorts 隱藏手冊頁的所有可能位置(並非所有可能都是手冊頁目錄,但正確的應該有man[0-9]子目錄……):

echo $MANPATH
find /opt -type d -name man

PATH是一個類似的,基本上:

export PATH=/opt/local/sbin:/opt/local/bin:$PATH

應該是最簡單的選擇,但同樣,使用andexec bash進行測試echo $PATH

但請注意,Apple 有一個/usr/libexec/path_helper從全域 rc 文件 ( ) 執行的腳本grep -l path_helper /etc/* 2>/dev/null。您的自定義必須此程序更改後PATH進行MANPATH,否則path_helper會將內容重置為 Apple 預設設置的內容。path_helper輸出可用作起點:

/usr/libexec/path_helper -s >> ~/.bashrc

然後編輯附加的那些行,以按您想要的順序包含您想要的路徑。(不要使用>它會破壞你的.bashrc文件,>>是追加……)

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