如何將包管理器安裝的二進製文件設置為預設值?
我安裝了較新版本的
tcpdump
via 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"
。·首先使用包管理器
export
的PATH
目錄從我的(全域)配置文件中獲取。這為它們添加了三次前綴並添加了一次後綴,並且確實將較新的二進製文件/手冊頁設置為預設值,但我對這種新的更長的組合感到好奇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,但我想不多。
您需要調整您的變數
PATH
和MANPATH
環境變數以在供應商路徑之前列出 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
應該是最簡單的選擇,但同樣,使用and
exec 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
文件,>>
是追加……)