Могу ли я обновить программное обеспечение, установленное из исходного кода напрямую

14

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

Я узнал, что установка из исходного кода может быть сложной, если у программного обеспечения много зависимостей. Однако, если я займусь этим, я буду счастлив с последней версией. Но я продолжаю задаваться вопросом, может ли такое программное обеспечение автоматически обновляться или мне придется запускать некоторые сценарии для обновления пакета. Или, что еще хуже, придется переустанавливать каждое обновление с нуля?

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

Четан С.
источник
Связанный: askubuntu.com/questions/22510/…
Механическая улитка

Ответы:

10

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

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

Проще говоря, кто-то должен сначала скомпилировать его, чтобы превратить в деб. Компиляция старой версии не даст вам возможности автоматического обновления, вам все равно придется пройти через весь процесс «download-configure-compile-install».

Однако , если вы хотите установить одну и ту же версию на нескольких компьютерах, имеет смысл упаковать скомпилированную версию как .deb(или аналогичную) и распространить ее на эти компьютеры. Если все сделано правильно, зависимости будут автоматически установлены.

Что касается преимуществ установки из исходного кода, я могу думать только о двух:

  • Вы получаете доступ к последней версии кода и можете выбрать стабильную версию или передовую версию (обычно называемую ночные сборки, последнюю версию и т. Д.).
  • Ubuntu / other-distribution может не захотеть включать программное обеспечение в свои репозитории. В этом случае вы застряли с исходным кодом или пакетами, предоставленными разработчиками или сообществом. То есть у вас нет выбора, кроме как использовать источники.
евгений
источник
4
Даже если вы самостоятельно что-то компилируете для использования на 1 компьютере, всегда полезно создать пакет .deb самостоятельно, так как он помогает вам хранить обзор установленного программного обеспечения в одном месте, а также упрощает удаление или обновление для себя.
JanC 16.10.10
4

Согласно этому посту вы можете создать пакет .deb после компиляции исходных текстов. Затем вместо «make install» вы можете установить из пакета .deb. Это облегчает обновление (если оно было в каком-то репозитории), потому что пакет будет управляться менеджером пакетов, который отслеживает обновление.

В случае, если для сборки пакета "some-package" из исходных кодов имеются зависимости, вы можете попробовать "apt-get build-dep some-package", чтобы автоматически установить все зависимости, необходимые для компиляции пакета, без отслеживания каждого вручную. Зависимость себя. Таким образом, зависимости также управляются менеджером пакетов и должны обновляться автоматически.

М. Алагган
источник
3

gitСтоит упомянуть еще одну альтернативу для пользователей:

Вы также можете использовать git pullболее раннюю git cloneверсию для обновления исходного кода, а затем перекомпилировать свою программу, если это необходимо. (Вы также можете использовать gitдля дальнейшего отслеживания файлов: см. Ответ здесь .)

Если вы изначально использовали git cloneдля получения исходного кода, как, например,

git clone git://github.com/person/programname.git

и вы сохранили папку после компиляции и установки, вы можете перейти в папку и запустить, git pullчтобы получить последние коммиты. Затем удалите все каталоги сборки, которые вы, возможно, создали и / или запустите make clean(при необходимости), а затем снова скомпилируйте программное обеспечение и установите его checkinstall, что также создает пакет для вас (хотя и не подходит для распространения).

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

Например, если я тестирую и так регулярно перекомпилирую программу, я бы попал в свою папку сборки после получения последних коммитов git pullи запуска (для этой конкретной программы):

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home

а затем скомпилируйте отладочную версию для тестирования.

Однако, если вы просто хотите скомпилировать новую версию своей клонированной программы git каждый месяц или около того (и не тестировать или отлаживать ее), вы обычно устанавливаете ее в /usr/local/иерархию с помощью checkinstall.

Сообщество
источник