Назад | Перейти на главную страницу

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

Я устанавливаю NGinx из исходников, так как пакеты из репозитория ubuntu довольно старые. Мне было интересно, как лучше всего обновить эти типы установок?

Мой текущий рабочий процесс включает в себя.

Что-то мне подсказывает, что это не лучший маршрут.

Предложения?

Вы правы, что это не лучший маршрут. Этот маршрут требует множества ручных действий, очень подвержен ошибкам и плохо масштабируется.

При работе с дистрибутивами Linux вы должны как можно больше придерживаться управления пакетами.

Преимущества использования управления пакетами:

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

Когда вы начинаете работать только из исходного кода, вы теряете все эти замечательные функции, и все начинает довольно быстро портиться.

Чтобы решить вашу конкретную проблему, вы должны проверить репозиторий ubuntu backports, возможно, у них есть обновленная версия для NGinx, которую вы можете использовать.

Если у них нет подходящей версии, лучшим решением будет создание пакета ubuntu с обратным переносом самостоятельно. Это действительно не так сложно, и это меньше работы, чем каждый раз вручную компилировать исходный код. Для резервного копирования требуется, в основном, взять исходный пакет из ubuntu, заменить старый файл tar.gz upsteam на последний, который вам нужен, и перестроить пакет.

Ты можешь использовать это руководство чтобы помочь вам перенести пакет обратно.

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

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.

И, конечно, это подходит только для небольшого количества хостов.

В следующий раз ... как насчет его компиляции в * .rpm или * .deb?

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

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

Я согласен с Томом и Дэвидом.

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

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

это немного стандартизирует ваши настройки и упростит развертывание на многих серверах. также вам не понадобится gcc на производственных машинах [что многие сочтут преимуществом безопасности].