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

В чем разница между файлом rpm и исходным кодом make с точки зрения установки

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

В качестве альтернативы я могу загрузить исходный код и использовать './configure'->'make'->'make install'сделать установку. 'make'процесс немного сложен по сравнению с RPM, но'make'решает проблему зависимости.

Не могли бы вы рассказать мне разницу между установкой RPM и 'makeисходный код с точки зрения установки? Спасибо!

РЕДАКТИРОВАТЬ: Например, я устанавливаю RabbitMQ в RH. Мне не удалось установить его из RPM, так как он требует много зависимостей. Но мне удалось установить его с помощью исходного кода make. Так что разница меня смущает.

Предполагая, что RHEL / CentOS, попробуйте локальную установку yum, она выполнит повторные операции для вас, а rpm -Uvh - нет.

Чтобы ответить на ваш вопрос, make-файлы обычно компилируются и устанавливаются из исходного кода, тогда как пакеты rpm представляют собой предварительно скомпилированные двоичные файлы. Make не «решит» проблемы с зависимостями для вас, однако возможно, что исходный пакет включает некоторые зависимости, которых может не быть в пакете распространения.

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

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

Когда вы устанавливаете Rabbitmq с помощью rpm, вы не устанавливаете никаких его зависимостей. Вам необходимо использовать менеджер пакетов (например, yum в CentOS), который будет управлять зависимостями за вас.

Я настоятельно рекомендую использовать пакет rpm.

Сопровождение программного обеспечения, которым занимается configure, make, make install невозможно поддерживать. Вы не видите его там, вы не знаете, какие файлы ему принадлежат, часто вы не можете его удалить, и его обновление является проблемой (вы должны запомнить это, проверить сайт на наличие обновлений и сделать все это снова) и опять).

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

Кроме того, если вы устанавливаете программное обеспечение из источника, который имеет определенные зависимости в форме RPM, и вы не удовлетворяете их при установке из исходного кода, вы можете в конечном итоге получить недостающие функции, которые сопровождающий пакета посчитал достаточно важными, чтобы гарантировать наличие зависимости. В качестве примера вы можете создать интерфейс командной строки базы данных, например mysql или psql без readline установлена, но тогда вы упускаете всю историю и функции редактирования, которые предоставляет эта библиотека. Однако во многих / в большинстве случаев сборка не удастся, поскольку зависимость не является необязательной, а обязательной.