Як оновити програмне забезпечення, встановлене з джерела?


10

Я встановлюю NGinx з джерела, оскільки пакети з репозиторію ubuntu досить старі. Мені було цікаво, який найкращий спосіб оновити такі типи установок?

Мій поточний робочий процес передбачає.

  • Завантаження нового джерела
  • Встановіть програмне забезпечення з однаковими шляхами.
  • Перезапуск програмного забезпечення.

Щось підказує мені, що це не найкращий маршрут.

Пропозиції?

Відповіді:


9

Ви праві вважаєте, що це не найкращий маршрут. Цей маршрут вимагає багатьох кроків вручну, і він дуже схильний до помилок і не має масштабів.

Працюючи з дистрибутивами Linux, слід максимально дотримуватися управління пакетом.

Переваги використання управління пакетами:

  • Підтримка залежності
  • Простота установки / видалення
  • Інвентар програмного забезпечення
  • Підтримка / оновлення підтримки, включаючи обробку файлів конфігурації
  • Пакет джерела в основному документує процес збирання та автоматизує його для вас, як тільки він буде написаний.
  • Підписання пакету
  • і більше.

Коли ви починаєте працювати лише з джерела, ви втрачаєте всі ці чудові функції, і речі досить швидко стають брудними.

Щоб вирішити вашу особливу проблему, слід ознайомитись із сховищем резервного списку ubuntu , можливо, у них є оновлена ​​версія для NGinx, яку ви можете використовувати.

Якщо у них немає відповідної версії, то найкращим рішенням було б створити підтримуваний пакет ubuntu самостійно. Це насправді не так складно, і це менше роботи, ніж щоразу компілювати його з джерела вручну. В основному для бекпортування потрібно, як правило, взяти вихідний пакет з ubuntu, замінити старий файл tar.gz на верхній табір на останній, який ви хочете, та відновити пакет.

Ви можете скористатися цим посібником, щоб допомогти вам повернути пакет.


8

Мені було зручно встановлювати різні версії в окремих місцях і просто посилатися на версію, яку ви хочете використовувати, наприклад:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Переваги:

  • мінімізований час простою служби під час оновлення
  • легкий відкат
  • ви все ще можете використовувати той самий o 'шлях, як /usr/local/foo/bin/bar

Звичайно, вам все одно доведеться повторно застосувати будь-які зміни конфігурації, які ви зробили в попередній версії, але для цього ви можете скористатись якоюсь системою версій (RCS / SVN / GIT) або інструментом управління конфігурацією на зразок Bcfg2 .

І, звичайно, це підходить лише для жменьки чи менше господарів.


Це я роблю в кількох випадках, коли складання пакунків не є підходящою відповіддю, за винятком випадків, коли я зазвичай використовую / opt замість / usr / local.
freiheit

2

Наступного разу ... як щодо компіляції в * .rpm або * .deb?


1

Якщо ви збираєтесь встановлювати це на одній машині, то робити це з джерела кожного разу - це проблема найкращим чином. Якщо ви збираєтеся встановлювати це на декількох машинах і хочете переконатися, що це відповідає, можливо, варто навчитися робити пакети Debian. Можливо, ви могли використовувати упаковку в Ubuntu в якості основи.


1

Існує не чудовий спосіб. Причиною того, що було створено ефективне управління пакетами, було вирішення цієї самої проблеми. Оновлення та видалення скомпільованих речей важко.

Я згоден з Томом і Девідом.

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


0

Я боюся, що це єдиний шлях. якщо у вас є більше серверів для обслуговування - розгляньте наявність окремого тестового середовища, де ви збираєте, і, можливо, пакетний результат вашої компіляції.

це трохи стандартизує ваші налаштування та полегшить розгортання на багатьох серверах. також не знадобиться gcc на виробничих машинах [що багато хто вважатиме перевагою безпеки].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.