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

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

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

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

14
задан 16 October 2010 в 05:23

4 ответа

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

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

0
ответ дан 16 October 2010 в 05:23

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

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

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

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

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

  • Вы получаете доступ к последней версии кода, и у вас есть выбор стабильной версии. или передовая версия (обычно называемая ночные сборки, последняя редакция и т. д.)
  • Ubuntu / other-distribution может не захотеть включать программное обеспечение в свои репозитории. В этом случае вы застряли с исходным кодом или пакетами, предоставленными разработчиками или сообществом. То есть, у вас нет выбора, кроме как использовать источники.
0
ответ дан 16 October 2010 в 05:23

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

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

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

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

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

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

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

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home
[ 1122], а затем скомпилируйте отладочную версию для тестирования.

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

0
ответ дан 16 October 2010 в 05:23

Чтобы управлять вашими установками из источника, пожалуйста, смотрите мой ответ здесь: Как обновить пакеты, скомпилированные из источника?

0
ответ дан 16 October 2010 в 05:23

Другие вопросы по тегам:

Похожие вопросы: