Как управлять программным обеспечением, которое установлено из источника?

14

Время от времени нам может понадобиться установить что-то из источника по разным причинам. Хотя это довольно стандартная процедура установки программного обеспечения с учетом соответствующих зависимостей, мне не ясно, как управлять такой установкой для дальнейшего удобства.

Более конкретно:

  1. Что мы можем сделать, чтобы обеспечить легкое и чистое удаление (включая те зависимости, которые установлены непосредственно перед и только для программного обеспечения, установленного из источника)?

  2. Что мы можем сделать, чтобы обеспечить простое и чистое обновление того же программного обеспечения, которое, вероятно, будет снова установлено из исходного кода?

  3. Что мы можем сделать, чтобы минимизировать потенциальный конфликт, если есть пакет по умолчанию (установленный с помощью apt-get), а также (более новая) версия пакета (установленная из исходного кода)?

skyork
источник

Ответы:

8

Использование checkinstall make installсоздаст временный пакет и установит его. Это означает, что он записан в диспетчере пакетов и может быть удален.

user54114
источник
7

Лучше всего сделать пакеты Debian более новых версий самостоятельно. dpkgи aptинструменты делают все три вещи, которые вы упоминаете, и предназначены для этой цели. Используйте их вместо того, чтобы изобретать велосипед. Существует множество руководств по упаковке. Если программное обеспечение уже существует в репозиториях, вы, вероятно, можете получить пакет исходного кода ( apt-get src), который можно использовать для изучения, и запустить собственный пакет.

Этот ответ на /ubuntu//a/485230/158442 может быть полезен в качестве общего руководства.

Хотя checkinstallэто хорошо для быстрого и грязного решения, в долгосрочной перспективе вы должны использовать надлежащую упаковку.

Мур
источник
спасибо за предложения. Когда вы сказали, что «программное обеспечение уже существует в репозиториях», я предполагаю, что вы имеете в виду официальные репозитории, поддерживаемые Ubuntu. Если это так, во многих случаях эти репозитории не предоставляют более новые версии, особенно в старых выпусках Ubuntu. Так что, apt-get srcвероятно, не может помочь в таких случаях.
скайорк
@skyork, может быть, нет. Но вы можете использовать пакеты более старых версий для изучения. Там могут быть некоторые настройки, которые сделали упаковщики, некоторые пользовательские сценарии обслуживания. Нет причин, по которым вы должны игнорировать все это и начинать с нуля. Изобретением колеса, кажется, тема здесь.
Муру
4

Прежде всего, многое зависит от того, как вы управляете своими исходными кодами. Я ~/sourcesсоздаю каталог как и помещаю каждую программу в ее подкаталоги, в то время как другие создают новый каталог для каждой программы.

Точно так же, как я, создайте новый подкаталог для каждой новой версии и удаляйте старые версии только тогда, когда гарантировано, что в новой версии нет существенных ошибок, которые остановили бы мою работу.

Нет единого способа сделать это, но какой бы способ вы ни выбрали, выберите способ, которым вам будет легче управлять .

  1. Чистая Деинсталляция

    • Я бы предложил создать rem_dep.shскрипт, который бы выглядел следующим образом.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      где dep1, dep2, depnзависимости.

  2. Чистое и простое обновление

    • если вы получаете исходный код из автоматизированной системы управления версиями, такой как gitили, bazaarили если ссылки предсказуемы, вы можете создать сценарий оболочки, который будет

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • В других случаях вы также можете создавать такие сценарии с ручной работой в некоторой степени.

  3. Управление конфликтами

    • Лучший способ - использовать эту --prefixопцию при установке программного обеспечения и зависимостей.
    • Другая важная вещь - поддерживать вашу систему обновленной, чтобы минимизировать конфликты.

ПРИМЕЧАНИЕ. Если вы обнаружите, что компилируете больше программного обеспечения, чем нужно (установите max_limitдля себя, например, 5, 10 или 100), лучше всего оставить Ubuntu и перейти на Arch Linux.

зарегистрированный пользователь
источник
3

Построить зависимости:

  • AFAIK они должны быть записаны вручную. Вы можете создать файл, такой как README, чтобы хранить список установленных вручную зависимостей.

  • Если это программное обеспечение уже имеет встроенный двоичный файл в репозиториях Ubuntu или PPA. Отслеживание зависимостей при установке должно быть проще:

    sudo apt-get build-dep target_package
    

Чистая деинсталляция:

Сохраните настроенную и установленную исходную папку. Лучше, если вы соберете все источники в определенную папку с файлом установленных зависимостей.

Чистое обновление и изоляция установленных файлов:

Установите их по-особенному --prefix(желательно --prefix=/opt/software_name-version/).

Это решит многие проблемы: параллельные версии с версией из репозитория; чистое обновление; проще для грязного удаления в случае, если источник был удален.

Более сложный или лучший способ, как ответ @muru, Сборка пакета Debian (для пакетов, доступных в репозиториях Ubuntu / PPA)

user.dz
источник