Как установить двоичный файл, установленный диспетчером пакетов по умолчанию?

Я установил новую версию tcpdump через MacPorts и хотел бы сделать ее бинарным по умолчанию.

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

На данный момент я устанавливаю alias , но это, конечно, не мешает man показывать более старую документацию.

  • Является ли символ «at» @ относительно безопасным в путях файлов?
  • Как убить сложную задачу в Mac Terminal
  • Вимм-режим Vim для системного буфера обмена?
  • Как я могу автоматически вводить пароль из .bash_profile при запуске команды в качестве sudo?
  • Каковы преимущества использования Tmux в любое время?
  • Проблемы с монтированием и сбросом на внешнее хранилище (Mac) с выделенного сервера (Ubuntu)
  • Чтение FreeBSD UFS отформатированного внешнего диска в Mac OS X
  • О взаимосвязи между инициализацией оболочки и настольными приложениями после «графического входа»
  • 2 Solutions collect form web for “Как установить двоичный файл, установленный диспетчером пакетов по умолчанию?”

    Вам нужно будет настроить PATH среды PATH и MANPATH чтобы перечислить пути MacPorts перед поставщиками. Для bash попробуйте что-то вроде следующего в вашем .bashrc (или, возможно, также .bash_profile ), а затем exec bash чтобы перезагрузить запущенную оболочку:

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

    Другими полезными командами могут быть то, что представляет собой текущая MANPATH , и найти все возможные места, в которых MacPorts скрывает справочные страницы (не все могут быть man-страницами, хотя у правильных должны быть man[0-9] subdirs …) :

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

    PATH аналогичен, в основном:

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

    должен быть самым простым вариантом, но опять же, проверьте с помощью exec bash и echo $PATH

    Однако /usr/libexec/path_helper , что Apple имеет сценарий /usr/libexec/path_helper который запускается из глобальных файлов rc ( grep -l path_helper /etc/* 2>/dev/null ). Ваши настройки должны произойти после того, как эта программа изменит PATH и MANPATH , так как иначе path_helper сбросит path_helper на то, что Apple устанавливает по умолчанию. В качестве отправной точки можно использовать выход path_helper :

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

    А затем отредактируйте эти строки, чтобы добавить нужные вам пути в том порядке, в котором вы хотите. (Не используйте просто > как это скроет ваш .bashrc файл, >> добавит …)

    В OS X 10.8.5 , bash 3.2.53(1) , MacPorts 2.3.4 вы фактически ничего не должны делать.

    Я не знаю, почему это не сработало. Значение PATH может быть как-то сохранено и не обновлено (подробнее об этом ниже).

    Я пытался

    · MANPATH как было предложено, но это не сработало. Из man man-страницы: "It overrides the configuration file and the automatic search path" .

    · export PATH из моего (глобального) профиля с помощью каталогов диспетчера пакетов. Это префикс их трижды и суффикс их один раз, и он установил новые бинарные / man-страницы по умолчанию, но мне было любопытно этот новый более длинный состав 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, но не так много, я полагаю.

    Linux и Unix - лучшая ОС в мире.