ЭтоКанонический вопросо том, когда следует использовать пакетное программное обеспечение, а когда собирать и устанавливать его самостоятельно.
Когда мне следует устанавливать программное обеспечение из пакетов, предоставляемых моим дистрибутивом ОС, вместо того, чтобы собирать и устанавливать его самостоятельно из исходного кода? Когда лучше собирать из исходного кода?
решение1
Вам следует использовать пакеты вашего дистрибутива, если у вас нет веской причины не делать этого. Использование пакетов дистрибутива дает вам важные преимущества:
- Устанавливать и удалять пакеты, а также поддерживать их в актуальном состоянии, становится проще.
- Система пакетов автоматически установит зависимости программного обеспечения и будет поддерживать их в актуальном состоянии.
- Обновления безопасности предоставляются дистрибутивом автоматически, поэтому вам не придется отслеживать их или беспокоиться о том, что вы их пропустите.
- Система пакетов настроит все так, как предпочитает ваш дистрибутив. Например, в системах на основе apt Apache устанавливается с символическими ссылками в /etc/apache2/*-enabled и инструментами (a2enconf, a2enmod, ...) для использования их для включения или отключения функций Apache. Хотя изначально это может потребовать от вас больше работы по изучению, в долгосрочной перспективе ваша жизнь станет проще, а ваша конфигурация будет лучше интегрирована, если вы будете использовать собственные инструменты и способы выполнения задач дистрибутива.
Если вам необходимо использовать более новую версию какого-либо программного обеспечения, чем та, что предусмотрена в вашем дистрибутиве, или включить функцию, которую необходимо скомпилировать, вы можете найти более свежие или функциональные версии пакета в репозиториях сообщества. Репозитории Ремиявляются хорошо известным примером, предлагая, помимо прочего, гораздо более современные версии PHP, чем те, которые поставляются с RHEL/CentOS. Использование репозитория сообщества дает вам многие из преимуществ репозиториев ОС, но с риском того, что автор выпустит вредоносное ПО, которое вы затем установите, с полными привилегиями, на свою систему. Вам придется самостоятельно принимать решение о соотношении риска и выгоды в каждом конкретном случае.
Если ни один из этих вариантов вам не подходит, вам нужно будет скомпилировать из исходного кода. При компиляции программного обеспечения из исходного кода рекомендуемый путь —создайте свои собственные бинарные пакеты. Создание собственных пакетов позволяет вам:
- Используйте систему управления пакетами вашего дистрибутива для распространения, установки, управления зависимостями, создания отчетов, обновлений, понижений версий и удаления.
- Ограничьте свои инструменты сборки и библиотеки разработки одним хостом сборки (вместо того, чтобы устанавливать их на всех тестовых и производственных серверах).
- Следуйте общепринятому пути выпуска, сначала развернув пакеты в тестовой среде, а затем развернув тот же пакет в производственной среде.
Так как это делаетВы — сопровождающий пакета, вам необходимо подписаться на соответствующие списки рассылки по безопасности, чтобы не пропустить критические ошибки и обновления безопасности.
Если вы в конечном итоге устанавливаете локально собранное программное обеспечение, не упаковывая его,GNU-упаковкаможет помочь поддерживать его в порядке и облегчить его аккуратное удаление.
решение2
Мне нравится ответ Эндрю.
Я хочу указать на конкретную деталь, которую можно добавить к комментарию Эндрю о «лучшей интеграции». Если вы устанавливаете приложение из исходного кода (зависимость будущего проекта), а затем пытаетесь установить пакет из двоичного файла (например, deb или rpm-пакет), этот пакет может не распознать, что установлена зависимость. Если бы вы установили исходное зависимое приложение из RPM или DEB-пакета, будущий пакет знал бы, что оно установлено. Использование того же метода пакета (например, yum, pip, rpm и т. д.) является лучшей практикой. Установка из исходного кода — это еще один метод. Поэтому простота, о которой говорит Эндрю, заслуживает серьезного рассмотрения.
Хочу добавить, что "создание собственных бинарных пакетов" имеет преимущество в виде регистрации процесса установки. Установка из исходных файлов не имеет преимущества в виде регистрации.