Каковы плюсы и минусы deb vs. rpm?

По каким-то причинам я всегда использовал дистрибутивы на основе RPM (Fedora, Centos и в настоящее время openSUSE). Я часто слышал, что он заявил, что deb лучше, чем rpm, но когда его спросили, почему, никогда не было в состоянии получить согласованный ответ (обычно, чтобы получить какое-то усердное разглагольствование и обильное количество слюны).

Я понимаю, что могут быть некоторые исторические причины, но для современных дистрибутивов, использующих два разных метода упаковки, кто-нибудь может дать технические (или другие) достоинства одного и другого?

  • Каков правильный способ установки контекста SELinux в RPM .spec?
  • Загрузите полную сборку ядра Linux
  • При установке пакета .deb или .rpm всегда добавляется репозиторий в вашу систему?
  • yum + как удалить неиспользуемый rpm / patch на linux redhat
  • Репозиторий CentOS yum bad Заголовок V4 RSA / SHA1 подпись
  • Почему «dir-or-file-in-usr-local» является ошибкой, а не предупреждением?
  • RHEL6 + Ошибка: сжатие xz недоступно
  • dnf - как показать, какой зеркальный url был выбран?
  • 12 Solutions collect form web for “Каковы плюсы и минусы deb vs. rpm?”

    Основное отличие для сопровождающего пакета (я думаю, что это был бы «разработчик» в Lingo Debian), так это то, как метаданные пакетов и сопровождающие скрипты объединяются.

    В мире RPM все ваши пакеты (поддерживаемые RPM) расположены в виде ~/rpmbuild . Внизу есть каталог SPEC для ваших spec-файлов, каталог SOURCES для исходных архивов, RPMS и SRPMS для SRPMS вновь созданных RPM и SRPM, а также некоторые другие вещи, которые сейчас не актуальны.

    Все, что связано с тем, как будет создаваться RPM, находится в spec-файле: какие патчи будут применены, возможные пре- и пост-скрипты, метаданные, журнал изменений, все. Все исходные файлы и все патчи всех ваших пакетов находятся в SOURCES.

    Теперь мне лично нравится, что все идет в spec-файл и что spec-файл является отдельным объектом из исходного tarball, но я не чрезмерно восторженно о том, что все источники в SOURCES. ИМХО, ИСТОЧНИКИ забиваются довольно быстро, и вы, как правило, теряете следы того, что там. Однако мнения различаются.

    Для RPM важно использовать тот же самый tarball, что и выпущенный проект вверх, вплоть до отметки времени. Как правило, исключений из этого правила нет. Пакеты Debian также требуют того же tarball, что и для восходящего потока, хотя политика Debian требует, чтобы некоторые tarballs были переупакованы (спасибо, Umang).

    В пакетах Debian используется другой подход. (Простите любые ошибки здесь: я намного менее опытен с дебом, что я с RPM.) Файлы разработки пакетов Debian содержатся в каталоге для каждого пакета.

    То, что мне (думаю) нравится в этом подходе, – это то, что все содержится в одном каталоге.

    В мире Debian несколько более приемлемым является перенос патчей в пакет, который еще не находится вверх. В мире RPM (по крайней мере, среди производителей Red Hat) это неодобрительно. См. «FedoraProject: работа с проектами вверх по течению» .

    Кроме того, в Debian имеется огромное количество скриптов, способных автоматизировать огромную часть создания пакета. Например, создание простого пакета программы setuptool's Python так же просто, как создание нескольких файлов метаданных и запуск debuild . Тем не менее, spec-файл для такого пакета в формате RPM будет довольно коротким, и в мире RPM тоже есть много вещей, которые автоматизированы в наши дни.

    Многие люди сравнивают установку программного обеспечения с apt-get до rpm -i , и поэтому говорят, что DEB лучше. Однако это не имеет никакого отношения к формату файла DEB. Реальное сравнение – dpkg vs rpm и aptitude / apt-* vs zypper / yum .

    С точки зрения пользователя в этих инструментах нет большой разницы. Форматы RPM и DEB – это просто архивные файлы, с некоторыми прикрепленными к ним метаданными. Они оба одинаково тайные, имеют жестко установленные пути установки (yuck!) И отличаются только тонкими деталями. И dpkg -i и rpm -i имеют способа выяснить, как устанавливать зависимости, за исключением случаев, когда они указаны в командной строке.

    В дополнение к этим инструментам существует управление хранилищем в виде apt-... или zypper / yum . Эти инструменты загружают репозитории, отслеживают все метаданные и автоматизируют загрузку зависимостей. Окончательная установка каждого отдельного пакета передается инструментам низкого уровня.

    В течение долгого времени apt-get был превосходным в обработке огромного количества метаданных очень быстро, в то время как yum занимал много времени, чтобы сделать это. RPM также пострадал от таких сайтов, как rpmfind, где вы найдете 10 + несовместимых пакетов для разных дистрибутивов. Apt полностью скрыл эту проблему для пакетов DEB, потому что все пакеты были установлены из одного источника.

    На мой взгляд, zypper действительно закрыл пробел, и нет причин стыдиться использования RPM-дистрибутива в наши дни. Это так же хорошо, если не проще в использовании с сервисом сборки openSUSE под рукой для огромного совместимого индекса пакета.

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

    • dpkg-divert позволяет оставить свой собственный файл, исходящий из пакета. Это может быть спасатель, когда у вас есть программа, которая ищет файл в /usr или /lib и не принимает /usr/local для ответа. Идея была предложена, но, насколько я могу судить, не принято, в об / мин.

    • Когда я последний раз управлял системами на основе rpm (что, по общему признанию, было много лет назад, возможно, ситуация улучшилась), rpm всегда будет перезаписывать модифицированные файлы конфигурации и переместить мои настройки в *.rpmsave (IIRC). Это заставило мою систему не загружаться хотя бы один раз. Dpkg спрашивает меня, что делать, сохраняя мои настройки по умолчанию.

    • Бинарный пакет rpm может объявлять зависимости от файлов, а не пакетов, что позволяет более тонкий контроль, чем пакет deb.

    • Вы не можете установить пакет версии N rpm в систему с версией N-1 инструментов rpm. Это может относиться и к dpkg, за исключением того, что формат не меняется так часто.

    • База данных dpkg состоит из текстовых файлов. База данных rpm является двоичной. Это делает базу данных dpkg легкой для изучения и ремонта. С другой стороны, до тех пор, пока ничего не получится, rpm может быть намного быстрее (установка deb требует чтения тысяч небольших файлов).

    • Пакет deb использует стандартные форматы ( ar , tar , gzip ), чтобы вы могли легко проверить и легко настроить deb deb. Пакеты Rpm не так дружелюбны.

    RPM:

    • «Стандартизованный» (не то, что нет спецификации deb)
    • Используется многими различными дистрибутивами (но пакеты с одного не обязательно работают на другом)
    • IIRC допускает зависимости от файлов, а не только от пакетов

    DEB:

    • Растущая популярность
    • Позволяет давать рекомендации и предложения (возможно, более новая RPM)

    Вероятно, более важным вопросом является менеджер пакетов (dpkg против yum vs. aptitude и т. Д.), А не формат пакета (поскольку оба они сопоставимы).

    Я думаю, что смещение происходит не из формата пакета, а из несоответствий, которые существовали в репозиториях RedHat.

    Назад, когда RedHat был дистрибутивом (до дней RHEL, Fedora и Fedora Core), люди иногда оказывались в «RPM Hell» или «Affency Hell». Это произошло, когда хранилище закончилось пакетом, в котором были зависимостями (обычно с несколькими слоями), которые были взаимоисключающими. Или это возникнет, когда два разных пакета имеют две взаимоисключающие зависимости. Это была проблема с состоянием репозитория, а не с форматом пакета. «RPM Hell» оставил отвращение к RPM-системам среди некоторых пользователей Linux-пользователей, которые были сожжены этой проблемой.

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

    • Философия оригинального дизайна упаковки и целевой аудитории
    • Размер сообщества и, как следствие, качество и богатство репозиториев

    Философия:

    В мире Ubuntu / Debian / Mint / … пользователи ожидают, что установленный пакет «просто работает» после его установки. Это означает, что при установке пакеты, как ожидается, позаботятся обо всем, что необходимо, чтобы заставить их работать хорошо, включая, но не ограничиваясь:

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

    В мире rpm – по общему признанию, это была ситуация несколько лет назад, и с тех пор она, возможно, улучшилась – мне пришлось выполнять дополнительные шаги (например, chkconfig, позволяющие задания cron), фактически создавать пакеты действительно. Это может быть хорошо для системных администраторов или людей, которые хорошо осведомлены о Unix, но это заставляет переживать новички. Обратите внимание, что это не значит, что формат пакета RPM не позволяет этому произойти, просто многие пакеты де-факто не «полностью выполнены» с точки зрения новичка.

    Размер сообщества, участие и богатство репозиториев:

    Поскольку сообщество ubuntu / debian / mint / … больше, все больше людей участвует в упаковке и тестировании программного обеспечения. Я нашел богатство и качество хранилищ выше. В ubuntu я редко, если вообще, должен скачать источник и построить из него. Когда я переключился с Red Hat на Ubuntu дома, у типичного репозитория RHEL было ~ 3000 пакетов, в то же время, ubuntu + universe + multiverse, доступный непосредственно из любого канонического зеркала, имело ~ 30 000 пакетов (примерно 10x). Большинство пакетов, которые я искал в формате RPM, не были легко доступны через простой поиск и щелкните в менеджере пакетов. Им требовалось переключиться на альтернативные репозитории, найти веб-сайт службы rpmfind и т. Д. В большинстве случаев, а не для решения проблемы, была нарушена моя установка, если вы не смогли ограничить, какие зависимости могут или не могут быть правильно обновлены. Я попал в феномен «адского идола», как описано выше Шон Дж. Гоффом.

    В отличие от Ubuntu / Debian, я обнаружил, что мне почти никогда не нужно строить из исходного кода. Также из-за:

    • Быстрый цикл выпуска (6 месяцев) Ubuntu
    • Существование полностью совместимых PPA, которые работают из коробки
    • Единичные репозитории (все размещенные Canonical) не нуждаются в поиске альтернативных / дополнительных репозиториев
    • Пользовательский интерфейс

    Мне никогда не приходилось идти на компромисс в старых версиях пакетов, о которых я беспокоился, даже если их не поддерживали официальные (Canonical) разработчики. Мне никогда не приходилось оставлять мой любимый менеджер пакетов GUI для удобного поиска по ключевому слову, чтобы найти и установить любой пакет, который я хотел. Кроме того, несколько раз я установил debian (не Canonical) пакеты на Ubuntu, и они отлично работали, несмотря на то, что эта совместимость не была официально гарантирована.

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

    Существует также «философская» разница, когда в пакетах Debian вы можете задавать вопросы и тем самым блокировать процесс установки. Плохая сторона этого заключается в том, что некоторые пакеты будут блокировать ваши обновления до тех пор, пока вы не ответите. Хорошая сторона этого, также как философская разница, в системах на базе Debian, когда пакет установлен, он настроен (не всегда так, как вам хотелось бы) и работает. Не на системах Redhat, где вам нужно создать / скопировать из / usr / share / doc / * файл конфигурации по умолчанию / шаблону.

    Одна вещь, которая мне нравится в RPM, – это (недавнее?) Добавление дельта RPM. Это позволяет упростить обновление, сокращая требуемую пропускную способность.

    DEB – это стандартные файлы ar (с более стандартными архивами внутри), RPM являются «проприетарными» двоичными файлами. Я лично считаю, что первое удобнее.

    Только две вещи, которые я могу придумать с головы. Оба они очень сопоставимы. Оба имеют превосходные инструменты для упаковки. Я не думаю, что есть много достоинств для одного над другим или наоборот.

    Служба openSUSE Build (OBS) и zypper – это пара причин, по которым я предпочитаю RPM над deb с точки зрения упаковщика и пользователя. Zypper прошел долгий путь и довольно быстро взвился. OBS, хотя он может справиться с debs, действительно хорош, когда дело доходит до упаковки rpms для различных платформ, таких как openSUSE, SLE, RHEL, centos, fedora, mandriva и т. Д.

    Пакеты Debian могут включать установленный размер , но я не считаю, что RPM имеют эквивалентное поле. Он может быть вычислен на основе файлов, включенных в пакет, но также нельзя полагаться на действия, которые могут быть предприняты в сценариях pre / post install.

    Вот довольно хорошая ссылка для сравнения некоторых конкретных функций, доступных для каждого конкретного формата упаковки: http://debian-br.sourceforge.net/txt/alien.htm (согласно веб-серверу, этот документ довольно старый : Last-Modified: Sun, 15 Oct 2000, так что это может быть не самая лучшая ссылка.)

    Для пакетов Debian имеется большой набор вспомогательных скриптов, последовательное руководство по политике и, по крайней мере, один способ сделать почти все. Зависимости обрабатываются очень хорошо и могут быть определены с очень хорошей детализацией. Реорганизация пакетов очень проста с debian-пакетами и хорошо поддерживается доступными инструментами.

    Ищите поиск в Google для

    1. удвоенные пакеты rpm
    2. дублированные пакеты dpkg

    Прочтите страницы, которые возвращаются. Очень важно сказать, что у вас может быть испорченная база данных RPM с дублирующими пакетами, в то время как такой случай не происходит с dpkg.

    Interesting Posts

    команда для очистки старых файлов журнала

    Проблема беспроводной мыши Logitech

    Как начать мою сеть в centos7?

    Подключение к хосту с помощью SSH-клиента в Linux через прокси-сервер

    cp – только файлы, когда разрешение предоставляется в каталоге

    Ограничить использование дискового буфера в SLES 11SP2, чтобы обеспечить более эффективную перезагрузку памяти на сервере esxi

    Как просмотреть историю процессов для анализа узкого места памяти?

    Использует ли инструмент / usr / bin / top агрегат CPU и GPU в одном значении?

    извлеките 4-й столбец из файла csv с помощью команды unix

    Как использовать USB-адаптер INSIGNIA USB на Debain (Kali Linux)?

    Диагностика узкого места rsync

    Передавать аргументы командной строки скрипту bash

    sed специальный символ заменить не работает в сценарии оболочки

    Cinnamon Mint 18.1 падает после обновления драйвера nvidia

    Имеет ли FreeBSD несвободное программное обеспечение в своей базе?

    Linux и Unix - лучшая ОС в мире.