Что является лучшей практикой при замене системного двоичного кода?

Я работаю над 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/ и /usr/sbin/ до ant/bin/ потому что часто есть другие двоичные файлы, кроме ant которые я не хочу переопределять.

Проблема в том, что когда я набираю, which ant я получаю /usr/bin/ . Поэтому я переименовываю /usr/bin/ant в /usr/bin/ant-old , чтобы работать с последней сборкой.

Хотя это работает, я хочу знать, есть ли более эффективные подходы к замене системного двоичного файла (главным образом, чтобы избежать последнего переименования).

  • как я могу предоставить пользователям возможности
  • OSX: генерировать контрольную сумму MD5 рекурсивно в текстовом файле, содержащем файлы с соответствующей контрольной суммой
  • Как восстановить поврежденный раздел HFS + с поврежденного жесткого диска?
  • Содержимое конвейера с несколькими пробелами
  • Лучшие варианты установки жесткого диска Mac OS X на моем Linux-боксе?
  • Судебно-медицинский анализ: найти все файлы, модифицированные вокруг известного
  • Как установить путь к использованию приложений OSX
  • Readline .inputrc сбрасывает значения по умолчанию с каждой строкой
  • 2 Solutions collect form web for “Что является лучшей практикой при замене системного двоичного кода?”

    Замена системного двоичного файла должна быть в последнюю очередь.

    Мой совет:

    • Поместите /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 на время теста.

    Обычным методом переопределения системных двоичных файлов является установка новых двоичных файлов в /usr/local/bin (или sbin ), а затем убедитесь, что /usr/local/bin находится до /usr/bin в вашем пути.

    Обычно вы делаете это, настраивая пакеты с помощью --prefix=/usr/local , что заставляет их устанавливать свои двоичные файлы в /usr/local/bin , вместо того, чтобы создавать каталог в /usr/local для каждого пакета.

    Вы говорите, что есть двоичные файлы в /usr/local/apache-ant-1.8.2/bin которые вы не хотите использовать? В этом случае я бы рекомендовал установить его в /usr/local/apache-ant-1.8.2 (как вы сейчас делаете), но затем ../apache-ant-1.8.2/bin/ant символическую ссылку в /usr/local/bin для ../apache-ant-1.8.2/bin/ant (вместо того, чтобы поставить /usr/local/apache-ant-1.8.2/bin на вашем пути).

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