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

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

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

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

4 ответа

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

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

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

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

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

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

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

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

Еще одна альтернатива для 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,

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

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