Linux x64 rpm что это такое
Что это за форматы файлов и чем они отличаются от .msi формата в Windows? И каковы плюсы и минусы этих схем управления пакетами?
примечание: вопрос "каковы плюсы и минусы rpm vs deb / dpkg" в других местах в интернете влечет за собой возможность разжигания пламенной войны.Файлы, такие как .deb и .rpm более сродни .zip файлу. Это дерево каталогов файлов и подкаталогов, которые содержат файлы, относящиеся к конкретному приложению и / или библиотеке файлов.
дистрибутивы
Эти .deb файлы предназначены для распределения Linux , которые вытекают из Debian (Ubuntu, Linux Mint и т.д.). Эти .rpm файлы используются в первую очередь распределениями , которые вытекают из дистрибутивов Redhat основы (Fedora, CentOS, RHEL), а также в дистрибутиве OpenSUSE.
Что в них особенного?
У этих файлов есть еще одна особенность, отличающая их от .zip файлов: они могут включать спецификацию, содержащую правила, которые сообщают программному обеспечению менеджера пакетов, работающему в системе, которая устанавливает один из этих файлов, выполнять дополнительные задачи. Эти задачи будут включать такие вещи, как:
- создание учетных записей пользователей в системе
- создание / изменение файлов конфигурации, которые на самом деле не содержатся в файле .deb или .rpm
- установить права собственности на файлы после установки
- запускать команды от имени root в системе, которая устанавливает пакет
- зависимости, оба формата могут включать имена или пакеты и / или имена служб, которые они должны присутствовать в системе перед установкой.
Как насчет файлов .msi?
.msi файлы похожи на .deb & .rpm файлы, но, вероятно, еще более сложные. Эти .msi файлы используются установщиком Windows и предлагают дополнительные функции, такие как:
- GUI Framework
- генерация последовательностей удаления
- Фреймворк внутри себя - для использования сторонними установщиками
- Rollbacks
- Рекламное объявление
- Пользовательский интерфейс
- и т.п.
Я бы посоветовал взглянуть на различные страницы Википедии на эти темы, если вы хотите получить более подробное объяснение.
Ссылки
Поскольку ответ начинается с «Файлы, такие как .deb и .rpm, больше похожи на файл .zip», возможно, стоит упомянуть, что пакеты deb на самом деле являются ar архивами, а rpms - (возможно, частично) архивами cpio. В случае с debs легко убедиться, что deb можно распаковать ar -x . В случае rpm я не знаю, возможно ли это. @ninjalj - спасибо, я забыл добавить эту команду. Я использовал его для распаковки rpms, когда мне нужен только один или два файла из них. Обычно файлы .spec.Другие ответы касаются качеств .deb и .rpm сходных с ними .msi . Все они содержат программное обеспечение в сжатом формате, которое может делать некоторые дополнительные вещи. Эти дополнительные вещи, которые уже упоминались, включали добавление пользователей, задачи до и после установки, регистрацию программы в системе (например, реестр Windows, xdg-dirs, OpenRC / systemd init и т. Д.).
Что отличает форматы (и это огромный профессионал), это зависимости. И файлы, .deb и .rpm файлы могут и делать список имен и версий других программ, которые должны быть установлены в качестве обязательного программного обеспечения. Сами по себе это просто информационные, но .
Вы , как правило , непосредственно не взаимодействуют с .deb и .rpm файлы , как вы делаете с .msi файлами. На самом деле, как упоминалось ранее, a, .deb как правило, представляет собой просто архив (ar или tar), сжатый с помощью xz с содержащимися файлами в определенной структуре каталогов. Вместо этого вы используете такие инструменты, как dpkg и rpm для управления этими файлами.
dpkg и rpm установит содержимое .deb и .rpm файлы и проверит, установлено ли все необходимое программное обеспечение. Запуск этих программ аналогичен нажатию на .msi файл. Пользователи, однако, обычно не взаимодействуют с dpkg или rpm вместо этого используют apt-get и yum для установки пакетов. Эти инструменты не имеют точных аналогов на окнах.
Оба apt-get и yum имеют возможность получить файлы с удаленных (или локальных) хранилищ и использовать информацию о зависимостях , хранящуюся в .deb и .rpm файлы для загрузки и установки каких - либо предпосылок не встречались. С этими инструментами мне не нужно знать или беспокоиться о том, какое другое программное обеспечение мне нужно, я могу просто указать apt-get install chromium и знать, что apt-get будет гарантировать, что у меня установлены gtk +, alsa, некоторые библиотеки X и т. Д., Без необходимости вручную находить и устанавливать их .deb и .rpm файлы.
apt-get и yum является большими два менеджером пакетов, вы также найдете emerge и pacman там, которые делают ту же работу , хотя и с различными основными механизмами.
Как уже упоминалось в разделе "Добавление и удаление пакетов", rpm (Redhat Package Manager) служит для работы с пакетами -- установка, удаление, проверка и т.д.
При установке пакета rpm записывает информацию о нем в свою базу данных, что и позволяет в дальнейшем удалять пакет, просматривать информацию о нем и т.д.
- Унифицированная работа с разными пакетами (в частности, не надо помнить, куда какая-либо программа положила при инсталляции свои файлы -- постоянная головная боль в Dos/Windows).
- Отслеживание зависимостей между пакетами выполняется автоматически (не надо помнить, что программа такая-то требует некоей библиотеки с версией не ниже какой-то -- сравните с вечными проблемами, к примеру, с DirectX в Windows).
- Непротиворечивость между разными пакетами -- в частности, корректно "разводится" ситуация, когда несколько пакетов содержат один и тот же файл (например, в /etc/).
Режимы работы rpm
Если вызвать rpm без параметров, то он покажет "краткий" список ключей. Обычно же формат вызова rpm такой:
КлючРежима, указываемый первым, определяет режим работы. Самые частоиспользуемые режимы перечислены в таблице.
Установку, обновление и удаление пакетов мы рассмотрели ранее, поэтому сейчас остановимся лишь на общих параметрах, получении информации и проверке.
Ключи и параметры, общие для разных режимов
В аргументах обычно используется два варианта ссылок на пакеты.
Имя-файла-пакета.rpm для режимов -i и -U -- это полное (с директорией) имя файла. Например,
/RPMS/apache-1.3.3-1.i386.rpm . В принципе, rpm понимает имена файлов в виде ftp-URL, т.е. ftp://сервер/директория/файл.rpm , но ими имеет смысл пользоваться только в быстрой и надежной сети (в нашей стране -- в локальной). Впрочем, в локальной сети (и любой быстрой) удобнее пользоваться NFS-сервером, если он есть.
Пакет -- это имя уже установленного пакета для режимов -e, -q и -y. Оно может указываться как с номером версии, так и без него. Примеры: acroread-3.01-4 , acroread . Если вместо списка пакетов указать ключ " -a " ( a ll), то это будет означать "все пакеты". Кроме того, ключ " -f " позволяет вместо имени пакета указать какой-либо файл, принадлежащий этому пакету (см. ниже).
Можно указывать не один файл-пакета или пакет, а сразу несколько, разделяя их пробелами.
Получение информации
- Версию пакета.
- Список файлов.
- Чего требует пакет.
- Можно узнать, какому пакету принадлежит указанный файл.
Просто " rpm -q имя-пакета " выдает полное название пакета, вместе с версией:
Но чаще всего команда " rpm -q " используется для получения списка файлов пакета.
Краткая информация о пакете -- rpm -qi
Команда " rpm -qi " ( i nfo) выдает сводку информации о пакете -- название, версия, объем и т.д., плюс краткую аннотацию:
Список файлов пакета -- rpm -ql
Для получения списка файлов используется ключ " -l " ( l ist):
Поскольку некоторые пакеты содержат очень большое количество файлов, то стоит отправлять вывод от rpm -ql команде less :
Для получения "полной" информации о пакете (аннотации и списка файлов) можно указать ключи " -i " и " -l " одновременно:
Какому пакету принадлежит файл
Часто возникает необходимость узнать, какому пакету принадлежит какой-то файл (например, чтобы знать, где искать к нему документацию). Для этого можно воспользоваться ключом " -f " ( f ile):
При этом надо указывать полное имя файла -- с директорией. Кроме того, если к файлу есть "несколько путей" (из-за символьных линков на директории), то следует указывать "основной" (обычно тот, который без символьных линков), иначе rpm не сможет дать ответ:
Вообще-то действие ключа " -f " не ограничивается простым запросом "скажи кому принадлежит файл". Этот ключ позволяет другим способом сослаться на пакет, т.е. вместо имени пакета указать один из принадлежащих ему файлов. Так, команды
А как там назывался пакет.
Иногда возникает такая ситуация: примерно помнишь, как назывался некий пакет, но только примерно (а мало ли где в имени были заглавные буквы, где маленькие, где дефисы. ). В этой ситуации можно заставить rpm выдать список всех пакетов (ключ " -a ") и найти нужное при помощи grep . Пример ("как назывались пакеты, содержащие netscape?"):
Другой пример ("к чему там относится afterstep?"):
Где же был этот файл.
Аналогично иногда возникает необходимость найти некий файл, имя которого помнишь весьма приблизительно, а уж в какой он лежит директории.
Вместо того, чтобы делать поиск по всему диску (что очень долго), можно заставить rpm выдать список файлов всех пакетов (ключ " -al ") и отфильтровать нужное при помощи grep . Пример ("где там был файл с параметрами разных мониторов?"):
Искомый файл в данном примере -- второй.
Информация о неинсталлированном пакете
Перед установкой нового пакета обычно имеет смысл посмотреть информацию о нем и/или список содержащихся в нем файлов.
Чего требует пакет -- rpm -qR
Ключ " -R " ( R equirements) позволяет узнать, какие пакеты и библиотеки требуются пакету. Особенно часто это требуется перед установкой пакета. Пример:
В вышеприведенном примере видно, что данный пакет установить не удастся, как минимум потому, что установленная версия пакета gtk+ слишком старая.
Проверка
Команда rpm -y пакет позволяет сравнить текущее состояние файлов пакета с информацией, записанной в базе данных. Это требуется, например, при проверке, не испорчены ли какие-нибудь важные для системы файлы (такое случается после внезапного отключения питания).
При нахождении различий печатается ключевая строка, с обозначением отличий и имя файла, в котором они найдены.
Сравниваются следующие параметры: 5 Контрольная сумма (подсчитанная по алгоритму MD5) S Размер файла L Куда указывает символьный линк (если проверяемый файл является симлинком) T Время модификации D Устройство (раздел), на котором расположен файл U Владелец G Группа-владелец M Права доступа
Проверку лучше выполнять как " root ", так как некоторые файлы (например, /usr/X11R6/bin/xterm ) могут быть недоступны на чтение другим пользователям и для них всегда будет выдаваться несовпадение по контрольной сумме.
Как видно из этого примера, в некоторых файлах обязательно будут отличия, поскольку тот же /etc/passwd изменяется при создании и изменении пользователей.
Аналогично команде rpm -q , rpm -y можно вместо имени пакета указывать " -f файл " или " -a ".
Команда rpm -ya полезна для проверки всей системы, но ее исполнение занимает много времени.
| Иногда в документации вместо " -y " указывается " -V " ( V erify) -- эти два ключа эквивалентны. |
Где еще брать информацию про rpm
Основные сведения содержатся в man-странице по rpm. Кроме того, с системой поставляется "HOWTO" документация --
Самое лучшее справочное пособие по rpm -- книга Ed Bailey "Maximum RPM" . Она есть в электронном виде на сайте rpm :
В этой статье я расскажу о некоторых наиболее распространенных командах Linux rpm для системного администратора.
Как получить пакеты RPM
Существует несколько способов получения пакетов RPM, как показано ниже:
- программное обеспечение CD / DVD
- CentOS Mirror
- RedHat (нужна учетная запись)
- Любые открытые веб-сайты репозитория
Основные режимы для команды RPM
Install : он используется для установки любого пакета RPM.
Remove : используется для удаления
Upgrade : используется для обновления существующего пакета RPM.
Query : используется для запроса любого пакета RPM.
Verify : используется для проверки пакетов RPM.
Примеры пакетов RPM
GeoIP-приложение GeoIP-1.5.0-11.el7.x86_64.rpm представляет собой библиотеку пакетов RPM для страны / города / организации для IP-адреса или сопоставления имен хостов.
Установка
1) Как узнать информацию о пакете RPM без установки
После того, как мы загрузили пакет, мы допустим хотим узнать информацию о пакете перед установкой.
Мы можем использовать -qip (query info package), чтобы перечислить информацию о пакете.
2) Как установить пакет RPM
Мы можем использовать параметры -ivh для установки определенного пакета, как показано ниже.
3) Как проверить установленный пакет RPM
Мы можем использовать опцию -q с именем пакета, и она покажет, установлен ли пакет rpm или нет.
4) Как просмотреть все файлы определенного установленного пакета RPM
Мы можем перечислить все файлы установленных пакетов rpm, используя параметр -ql с командой rpm.
5) Как просмотреть недавно установленные пакеты RPM
6) Как установить пакет RPM без зависимостей
Чтобы установить конкретный пакет без зависимостей:
7) Как заменить установленный пакет RPM
Удаление
8) Как удалить пакет RPM
Мы можем использовать -e параметры для удаления определенного пакета, установленного без зависимостей (не проверяя зависимости), как показано ниже:
Теперь введите команду ниже, чтобы гарантировать себе, что GeoIP не установлен.
Обновление
9) Как обновить пакет RPM
Мы можем использовать параметры -Uvh для обновления определенного пакета, как показано ниже:
Запросы
10) Как запросить все установленные пакеты
Мы можем использовать параметры -qa для запроса всех установленных пакетов на сервере, как показано ниже.
11) Как запросить конкретный пакет
Мы можем использовать команду grep для определения того, какой конкретный пакет установлен или нет, как показано ниже.
12) Как запросить файл, относящийся к пакету RPM
В примере номер 9 мы выводили файлы пакета RPM, а теперь мы хотим знать, что файл /usr/lib64/libGeoIP.so.1.5.0 принадлежит RPM-пакету.
Проверка
13) Как получить информацию для определенного пакета
Мы можем использовать параметры -i вместе с q для получения информации для определенного пакета, как показано ниже:
14) Как проверить пакет RPM
Мы можем проверить пакет, сравнив информацию об установленных файлах пакета с базой данных rpm, используя опцию -Vp .
В этом руководстве мы поговорим о том, как использовать команду rpm для установки, обновления, удаления, проверки, запроса и иного управления пакетами RPM.
Установка, обновление и удаление пакетов RPM
Обычно для установки нового пакета в дистрибутивах на основе Red Hat вы используете команды yum или dnf , которые могут разрешить и установить все зависимости пакетов.
Вы всегда должны предпочитать использовать yum или dnf rpm при установке, обновлении и удалении пакетов.
Перед установкой пакета RPM вы должны сначала загрузить пакет в свою систему с помощью браузера или инструментов командной строки, таких как curl или wget .
При установке пакетов RPM убедитесь, что они созданы для вашей системной архитектуры и вашей версии CentOS . Будьте особенно осторожны при замене или обновлении важных системных пакетов, таких как glibc, systemd или других служб и библиотек, которые необходимы для правильного функционирования вашей системы.
Только root или пользователи с привилегиями sudo могут устанавливать или удалять пакеты RPM.
Чтобы установить пакет RPM с rpm , используйте параметр -i , за которым следует имя пакета:
Параметр -v указывает rpm показывать подробный вывод, а параметр -h показывает индикатор выполнения, отмеченный хешем.
Вы можете пропустить загрузку и указать URL-адрес RPM-пакета команде rpm :
Чтобы обновить пакет RPM, используйте параметр -U . Если пакет не установлен, он будет установлен:
Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm отобразит список всех недостающих зависимостей. Вам придется скачать и установить все зависимости вручную.
Чтобы установить пакет RPM без установки всех необходимых зависимостей в системе, используйте параметр --nodeps :
Чтобы удалить (стереть) пакет RPM, используйте параметр -e :
Параметр --nodeps также полезен, когда вы хотите удалить пакет, не удаляя его зависимости:
Параметр --test указывает rpm запускать команду установки или удаления, фактически ничего не делая. Он только показывает, будет ли команда работать или нет:
Запрос пакетов RPM
Параметр -q указывает команде rpm выполнить запрос.
Чтобы запросить (найти), установлен ли определенный пакет, передайте имя пакета команде rpm -q . Следующая команда покажет вам, установлен ли в системе пакет OpenJDK 11 :
Если пакет установлен, вы увидите что-то вроде этого:
Передайте -i чтобы получить больше информации о запрошенном пакете:
Чтобы получить список всех файлов в установленном пакете RPM:
Если вы хотите узнать, к какому установленному пакету принадлежит конкретный файл, введите:
Чтобы получить список всех установленных пакетов в вашей системе, используйте параметр -a :
Проверка пакетов RPM
При проверке пакета команда rpm проверяет, существует ли каждый файл, установленный пакетом, в системе, дайджест файла, право собственности, разрешения и т. Д.
Чтобы проверить установленный пакет, используйте параметр -V . Например, чтобы проверить пакет openldap, вы должны запустить:
Если проверка прошла успешно, команда не выведет никаких результатов. В противном случае, если некоторые из проверок не пройдут, отобразится символ, указывающий на неудачный тест.
Например, следующий результат показывает, что mTime файла был изменен («T»):
Обратитесь к странице руководства RMP о том, что означает каждый символ.
Чтобы проверить все установленные пакеты rpm, выполните следующую команду:
Выводы
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Читайте также: