В чем разница между yum, apt-get, rpm, ./configure && make install?

126

Я новичок в Linux и использую CentOS. Я сталкивался с четырьмя способами обновить или установить программное обеспечение.

До сих пор я видел:

  • yum install [program]
  • apt-get install [program]
  • rpm -i [program].rpm
  • wget [program].tar.gz-> unpack-> ./configure-> make->make install

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

Итак, мои вопросы:

  • Почему в Linux так много разных способов сделать это?
  • Какой из них вы рекомендуете использовать и почему?
  • Существуют ли другие способы установки программ в Linux?
Саиф Бечан
источник
Кроме того, как насчет yumпротив up2date. Я никогда не понимал разницу.
Джош
apt-getпредназначен для Debian, и действительно не должен появляться в CentOS ....
Кайл Стрэнд,

Ответы:

114

Все эти инструменты устанавливают программное обеспечение в вашу систему, но работают на разных уровнях.

  • ./configure && make install

    Запуск ./configure && make installсоздает и устанавливает библиотеки или исполняемые файлы непосредственно из исходного кода.

    make installШаг в основном только копии окончательных файлов в вашей системе. Многие источники поставляются со специальным make uninstallправилом для их повторного удаления, но это не гарантируется и, конечно, работает только при наличии настроенных источников. Кроме того, это не заботится о необходимых зависимостях.

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

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

  • RPM (менеджер пакетов Redhat)

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

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

    В системах Debian используется эквивалентный формат пакета, .debа установка и база данных обрабатываются dpkgинструментом.

  • Yum

    yumэто дополнительная обертка вокруг rpm. Он хранит свою собственную базу данных rpm-файлов, доступных для вашего распространения, как правило, в онлайн-хранилищах. Для стабильных версий большинства дистрибутивов все пакеты в этой базе данных будут хорошо взаимодействовать друг с другом. В этой базе данных можно искать (например, с помощью yum search some_name).

    Это также автоматически разрешит зависимости для вас. Пакеты (и с некоторой дополнительной помощью их зависимости) также могут быть легко удалены.

    В системах Debian Apt ( apt-getи aptitude) предоставляет эквивалентные инструменты для репозитория и разрешения зависимостей .

Итак, подведем итог: если вы просто хотите какое-то программное обеспечение, попробуйте yumсначала. Если его там нет, вы можете попытаться найти существующий rpmпакет. Если его нет или у вас есть какие-то особые требования, соберите из исходного кода.

Бенджамин Банье
источник
почти то, что я собирался сказать. добавлено упоминание об эквивалентах Debian и исправлено форматирование.
шарлатан-кихот
2
@quack: Спасибо. Но разве мы не можем просто замолчать apt-getили все же это рекомендуется?
Бенджамин Банье
2
вы правы, вероятно, лучше рекомендовать aptitude ; я включил apt-get, потому что он широко упоминается, и читатель, который не знает о aptitude, возможно, слышал о apt-get .
шарлатан-кихот
4
Что не так с apt-get?
рекурсивный
5
@recursive: Некоторое время apt-getне записывал автоматические зависимости и оставлял их после удаления, а aptitudeзатем ввел надлежащее отслеживание зависимостей. Кроме того, он также предоставил некоторые дополнительные функции, недоступные в apt-get. Я не уверен, но я думаю, что в какой-то момент apt-getи aptitudeгде обновится использовать тот же, передовой бэкэнд, обеспечивающий большую часть этой функциональности.
Бенджамин Банье
5

Yum - это RPM - это то же самое, за исключением того, что yum автоматически получает пакеты из сети и устанавливает их (используя rpm -i) за один шаг. По возможности его следует использовать для облегчения обновления. Используйте rpmтолько тогда, когда пакет не найден yum, и используйте makeметод только тогда, когда нет пакета .rpm или вам нужно изменить некоторые параметры времени компиляции.

marcusw
источник