Работа с yum
Чтобы yum загружал и устанавливал пакеты из интернет-репозиториев, файлы должны быть расположены в /etc/yum.repos.d/, и они должны иметь расширение .repo. Вот пример файла repo:
name=Base CentOS (local) baseurl=http://7-repo.apps.home.local/yum-repo/7/ enabled=1 gpgcheck=0
Это один из моих локальных репозиториев, что объясняет, почему проверка GPG отключена. Если бы эта проверка была включена, каждый пакет должен быть подписан криптографическим ключом, и соответствующий ключ должен быть импортирован в систему, получающую обновления. Поскольку я сам поддерживаю этот репозиторий, я доверяю пакетам и не буду их подписывать.
Как только файл репозитория на месте, вы можете начать установку пакетов из удаленного репозитория. Основная команда — это yum update, которая обновит каждый установленный пакет. Это не требует отдельного шага для обновления информации о репозиториях; это делается автоматически. Пример команды показан ниже:
$ sudo yum update Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager local_base | 3.6 kB 00:00:00 local_epel | 2.9 kB 00:00:00 local_rpm_forge | 1.9 kB 00:00:00 local_updates | 3.4 kB 00:00:00 spideroak-one-stable | 2.9 kB 00:00:00 zfs | 2.9 kB 00:00:00 (1/6): local_base/group_gz | 166 kB 00:00:00 (2/6): local_updates/primary_db | 2.7 MB 00:00:00 (3/6): local_base/primary_db | 5.9 MB 00:00:00 (4/6): spideroak-one-stable/primary_db | 12 kB 00:00:00 (5/6): local_epel/primary_db | 6.3 MB 00:00:00 (6/6): zfs/x86_64/primary_db | 78 kB 00:00:00 local_rpm_forge/primary_db | 125 kB 00:00:00 Determining fastest mirrors Resolving Dependencies --> Running transaction check
Если вы уверены, что хотите выполнить любую команду без остановки ввода, вы можете поместить в команду флаг -y, например yum update -y.
Установка нового пакета так же проста. Сначала найдите имя пакета с помощью поиска yum:
$ yum search kate artwiz-aleczapka-kates-fonts.noarch : Kates font in Artwiz family ghc-highlighting-kate-devel.x86_64 : Haskell highlighting-kate library development files kate-devel.i686 : Development files for kate kate-devel.x86_64 : Development files for kate kate-libs.i686 : Runtime files for kate kate-libs.x86_64 : Runtime files for kate kate-part.i686 : Kate kpart plugin
После того, как у вас есть имя пакета, вы можете просто установить пакет с помощью команды: sudo yum install kate-devel -y. Если вы установили пакет, который вам больше не нужен, вы можете удалить его с помощью sudo yum remove kate-devel -y. По умолчанию yum удалит пакет и его зависимости.
Бывают случаи, когда вы не знаете имя пакета, но знаете имя утилиты. Например, предположим, что вы ищете утилиту updateb, которая создает/обновляет базу данных, используемую командой locate. Попытка установить updatedb возвращает следующие результаты:
$ sudo yum install updatedb Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile No package updatedb available. Error: Nothing to do
Вы можете узнать, из какого пакета работает утилита:
$ yum whatprovides *updatedb Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile bacula-director-5.2.13-23.1.el7.x86_64 : Bacula Director files Repo : local_base Matched from: Filename : /usr/share/doc/bacula-director-5.2.13/updatedb mlocate-0.26-8.el7.x86_64 : An utility for finding files by name Repo : local_base Matched from: Filename : /usr/bin/updatedb
Причина, по которой я использовал звездочку перед командой, заключается в том, что yum whatprovides использует путь к файлу, чтобы найти совпадение. Поскольку я не был уверен, где находится файл, я использовал звездочку, чтобы указать любой путь.
Есть, конечно, еще много вариантов использования для yum. Я рекомендую вам просмотреть man-страницу yum для изучения дополнительных параметров.
Dandified Yum (DNF) — это новая итерация yum. Представленный в Fedora 18, он еще не принят в промышленных дистрибутивах, и преимущественно используется в Fedora (и ее производных). Его использование почти точно такое же, как у yum, но эта утилита была создана для решения проблем с низкой производительностью, недокументированными API, медленного/неработающего разрешения зависимостей и утечек памяти. DNF представляет собой замену yum, и поэтому я не буду повторять команды — везде, где вы будете использовать yum, просто замените его на dnf.
Создание deb пакетов
Шаг 1. Подготовка
Давайте создадим для этого примера небольшую программу на Си. Она будет называться hellolosst и будет выводить на экран строку Hello from losst.pro в терминал при запуске. Сначала создайте папку hellolosst и перейдите в неё:
Затем поместите в неё файл с исходным кодом:
Для компиляции программы выполните такую команду:
Затем вы можете её выполнить:
Таким образом, теперь у нас есть программа, которую надо упаковать в deb пакет.
2. Создание манифеста
В каждом deb пакете содержаться не только файлы самой программы, но и файл манифеста, в котором описан пакет, его зависимости и параметры. Этот файл имеет название control и должен находится в папке DEBIAN. Для сборки пакета будем использовать папку package, чтобы файлы программы не путались с исходными файлами и те не попали в пакет. Создайте эти папку:
Прежде чем вы сможете создать этот файл надо узнать несколько вещей. Первым делом надо посмотреть размер файлов программы, поскольку в данном случае файл один, достаточно посмотреть его размер:
Если файлов несколько, то можно удалить исходники и посмотреть общий размер папки с файлами программы. Дальше надо понять от каких пакетов будет зависеть ваша программа. Для этого воспользуйтесь командой objdump:
В данном случае программе необходима только libc. Чтобы посмотреть в каком пакете она находится выполните:
Пакет называется libc6. Затем создайте файл манифеста со следующим содержимым:
Это минимальный набор параметров в файле манифеста. Вот их значение:
Package — имя пакета;
Version — версия программы в пакете, будет использована при обновлении пакета;
Section — категория пакета, позволяет определить зачем он нужен;
Priority — важность пакета, для новых пакетов, которые ни с чем не конфликтуют обычно прописывают optional, кроме того доступны значения required, important или standard;
Depends — от каких пакетов зависит ваш пакет, он не может быть установлен, пока не установлены эти пакеты;
Recommends — необязательные пакеты, но тем не менее они обычно устанавливаются по умолчанию в apt;
Conflicts — пакет не будет установлен, пока в системе присутствуют перечисленные здесь пакеты;
Architecture — архитектура системы, в которой можно установить этот пакет, доступные значения: i386, amd64, all, последнее означает, что архитектура не имеет значения;
Installed-Size — общий размер программы после установки;
Maintainer — указывает кто собрал этот пакет и кто отвечает за его поддержку;
Description — краткое описание пакета.
3. Расположение файлов
Манифест готов. Теперь в папке пакета надо создать структуру папок, аналог того, что есть в корневой файловой системе. В данном случае надо создать папку usr/bin и поместить туда исполняемый файл:
4. Скрипты установки
Несмотря на то, что система установки пакетов очень мощная и позволяет делать многое, некоторые вещи всё же сделать нельзя. Для решения этой проблемы была предусмотрена возможность выполнять скрипты перед установкой пакета и после. Аналогично это работает для удаления пакета — перед и после. Эти скрипты называются preinst, postinst, prerm и postrm. Каждый файл просто содержит набор скриптов, которые надо выполнить. Например:
Разработчики Debian не рекомендуют использовать эти скрипты без крайней надобности, поскольку они дают вам полный контроль над системой пользователя и вы можете случайно что-то повредить. Обычно эти скрипты используются для того чтобы задавать пользователям вопросы и на основе этого генерировать конфигурационные файлы.
5. Сборка и проверка пакета
Осталось собрать настроенный пакет. Для этого используйте такую команду:
Теперь вы знаете как как собрать deb пакет. После завершения сборки можете установить его с помощью apt:
После этого исполняемый файл программы появится в /usr/bin, а сообщение из postinst будет выведено после установки.
Управление программным обеспечением поставляемым в исходных кодах.
Управление программным обеспечением в виде исходных кодов на всех дистрибутивах практически не отличается и это управление можно привести к следующей последовательности действий:
- Вы скачиваете пакет с исходными текстами/кодами. Скорее всего это будет пакет в виде архива (*.tar.gz или *.tar.bz2 или др.). Скачивание архива будет происходить, скорее всего, командой wget http://адрес.ру/путь/к/архиву.tar.gz.
- Скачанный архив необходимо распаковать, как и любой архив, скорее всего, . Архив распакуется в подкаталог с именем архив (без .tar.gz). В данную подпапку можно . Распакованные исходники рекомендуется хранить в каталоге /usr/src/.
- Далее необходимо установить скачанное программное обеспечение. Тут есть 2 пути:
- Если вы знаете, что устанавливаете и как оно устанавливается, то производите установку.
- Если Вы первый раз скачали пакет с сорцами (исходниками), то необходимо прочитать документацию об устанавливаемом программном обеспечении. С предоставляемым пакетом всегда идут файлы README, INSTALL или аналогичные, в которых описан порядок установки данного пакета. В общем случае, установка программ из исходников сводится к вводу следующих команд:
./configure make make install
Команда ./configure может выполняться с различными параметрами, в зависимости от устанавливаемого ПО. При выполнении команды с параметрами могут задаваться какие-либо характеристики и особенности компилируемого кода. Весь список параметров в с описанием можно найти, как уже выше говорилось, в файлах README, INSTALL или аналогичных, а так же, выполнив команду с параметром —help. После запуска configure обычно вы видите сообщения, рассказывающие о типе используемой вами системы и о том, какие необходимые инструменты установлены, а какие нет.
По завершении выполнения скрипта configure, он сохраняет информацию о конфигурации в файле с названием config.cache, расположенном в том же каталоге, что и сам скрипт configure.
Если вам необходимо запустить вновь, то убедитесь, что прежде вы удалили файл config.cache, поскольку configure будет использовать настройки из config.cache, если он существует, не производя повторной проверки вашей системы.
Если все идет хорошо, то к концу процесса конфигурирования вы должны получить созданный Makefile. Он называется сборочный файл проекта, программа с именем make используется для его обработки и сборки программы. Make-файл содержит правила, являющиеся инструкциями, которые сообщают программе make как собирать различные компоненты приложения.
make install устанавливает скомпилированную программу. Фактически, производится копирование необходимых файлов в нужные каталоги. Если вы производите установку в /usr/local, то вам могут потребоваться права суперпользователя (root).
ПримечаниеДля запуска make и make install необходим установленный компилятор. (пакет gcc)
В Debian вместе с gcc необходимо установить еще некоторые пакеты. Чтобы не запоминать их все, можно установить просто пакет build-essential.
Существуют две разновидности программ, собираемых из исходников: использующих статическую компоновку и использующие динамическую компоновку. Статическая компоновка отличается от динамической тем, что при сборке программы со динамической компоновкой используются функции разделяемых библиотек, а при статической компоновке используется собственный экземпляр библиотек. Просмотреть список разделяемых библиотек, от которых зависит исполняемый файл можно . При сборке программ использующих библиотеки совместного доступа, к ней добавляется участок кода, вызывающий при запуске программы динамический компоновщик ld.so (/usr/bin/ld), который ищет необходимые библиотеки и подставляет функции библиотек к программе (каталоги поиска библиотек заданы ).
Удаление программ
Для корректного удаления программ, установленных из исходных текстов, есть несколько способов:
- ручное удаление всего, что установила программа make install
- выполнение команды make uninstall в каталоге с исходниками программы. Тут есть нюанс — не всегда разработчики подразумевают параметр uninstall для команды make, поэтому возвращаемся к первому пункту.
В целом, чтобы не было проблем с удалением программы, ее рекомендуют конфигурировать с ключом —prefix=/путь/установки, например ./configure —prefix=/usr/local/apache. Если, конечно, скрипт configure поддерживает данный ключ.
В общих чертах, это была информация о установке программного обеспечения из исходных кодов. Теперь поговорим о бинарных пакетах…
Как работает менеджер пакетов?
Имейте в виду, что менеджер пакетов — это общая концепция, а не только для Linux. Вы часто найдете менеджер пакетов для разных программ или языков программирования. Только для пакетов Python есть менеджер пакетов PIP . Даже в редакторе Atom есть собственный менеджер пакетов.
Поскольку в этой статье основное внимание уделяется Linux, я буду рассматривать ситуацию с точки зрения Linux. Однако большая часть объяснения здесь может быть применена и к диспетчеру пакетов в целом
Я создал эту диаграмму (на основе SUSE Wiki), чтобы вы могли легко понять, как работает менеджер пакетов.
Почти все дистрибутивы Linux имеют репозитории программного обеспечения, которые в основном представляют собой набор программных пакетов. Да, может быть более одного репозитория. Репозитории содержат программные пакеты различного типа
В репозиториях также есть файлы метаданных, которые содержат информацию о пакетах, такую как имя пакета, номер версии, описание пакета и имя репозитория и т. д. Это то, что вы увидите, если используете команду apt show в Ubuntu / Debian.
Менеджер пакетов вашей системы сначала взаимодействует с метаданными. Диспетчер пакетов создает локальный кеш метаданных в вашей системе. Когда вы запускаете параметр обновления диспетчера пакетов (например, apt update), он обновляет этот локальный кеш метаданных, ссылаясь на метаданные из репозитория.
Когда вы запускаете команду установки вашего менеджера пакетов (например, apt install package_name), менеджер пакетов обращается к этому кешу. Если он находит информацию о пакете в кэше, он использует подключение к Интернету для подключения к соответствующему репозиторию и сначала загружает пакет перед установкой в вашу систему.
У пакета могут быть зависимости. Это означает, что может потребоваться установка других пакетов. Диспетчер пакетов часто заботится о зависимостях и автоматически устанавливает его вместе с пакетом, который вы устанавливаете.
Диспетчер пакетов, обрабатывающий зависимости в Linux
Точно так же, когда вы удаляете пакет с помощью диспетчера пакетов, он либо автоматически удаляет, либо сообщает вам, что в вашей системе есть неиспользуемые пакеты, которые можно очистить.
Помимо очевидных задач по установке и удалению, вы можете использовать диспетчер пакетов для настройки пакетов и управления ими в соответствии с вашими потребностями. Например, вы можете запретить обновление версии пакета из регулярных обновлений системы. Есть еще много вещей, на которые может быть способен ваш менеджер пакетов.
Различные типы менеджеров пакетов
Менеджеры пакетов различаются в зависимости от системы упаковки, но одна и та же система упаковки может иметь более одного менеджера пакетов.
Например, в RPM есть менеджеры пакетов Yum и DNF . Для DEB у вас есть менеджеры пакетов на основе командной строки apt-get, aptitude.
Менеджер пакетов Synaptic
Менеджеры пакетов не обязательно основаны на командной строке. У вас есть графические инструменты управления пакетами, такие как Synaptic . Программный центр вашего дистрибутива также является менеджером пакетов, даже если он запускает под ним apt-get или DNF.
Работа с Zypper
Zypper — еще один менеджер пакетов, который помогает управлять RPM. Этот менеджер пакетов чаще всего связывают с SUSE (и openSUSE), но он также принят в MeeGo, Sailfish OS и Tizen. Он был первоначально представлен в 2006 году и с тех пор развивается. Zypper используется в качестве бэкенда для инструмента администрирования системы YaST, и некоторые пользователи считают, что он быстрее, чем yum.
Использование Zypper очень похоже на использование yum. Для поиска, обновления, установки или удаления пакета просто используйте следующие команды:
zypper search kate zypper update zypper install kate zypper remove kate
Некоторые существенные различия имеются в том, как с помощью zypper в систему добавляются репозитории. В отличие от описанных выше менеджеров пакетов, zypper добавляет репозитории, используя сам менеджер пакетов. Наиболее распространенным способом является URL-адрес, но zypper также поддерживает импорт из файлов репо.
suse:~ # zypper addrepo http://download.videolan.org/pub/vlc/SuSE/15.0 vlc
Adding repository ‘vlc’
Repository ‘vlc’ successfully added
Enabled : Yes
Autorefresh : No
GPG Check : Yes
URI : http://download.videolan.org/pub/vlc/SuSE/15.0
Priority : 99
Аналогично вы можете удалять репозитории:
suse:~ # zypper removerepo vlc Removing repository 'vlc' ................................... Repository 'vlc' has been removed.
Используйте команду zypper repos, чтобы узнать статус репозиториев в вашей системе:
suse:~ # zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+-----------------------------------------+---------+-----------+-------- 1 | repo-debug | openSUSE-Leap-15.0-Debug | No | ---- | ---- 2 | repo-debug-non-oss | openSUSE-Leap-15.0-Debug-Non-Oss | No | ---- | ---- 3 | repo-debug-update | openSUSE-Leap-15.0-Update-Debug | No | ---- | ---- 4 | repo-debug-update-non-oss | openSUSE-Leap-15.0-Update-Debug-Non-Oss | No | ---- | ---- 5 | repo-non-oss | openSUSE-Leap-15.0-Non-Oss | Yes | ( p) Yes | Yes 6 | repo-oss | openSUSE-Leap-15.0-Oss | Yes | ( p) Yes | Yes
zypper даже имеет аналогичную способность определять, какой пакет содержит заданные файлы. В отличие от YUM, в команде используется дефис (хотя этот метод поиска устарел):
localhost:~ # zypper what-provides kate Command 'what-provides' is replaced by 'search --provides --match-exact'. See 'help search' for all available options. Loading repository data... Reading installed packages... S | Name | Summary | Type ---+------+----------------------+------------ i+ | Kate | Advanced Text Editor | application i | kate | Advanced Text Editor | package
Как и в случае с YUM и DNF, Zypper имеет гораздо более богатый набор функций, чем мы здесь рассказали. Ознакомьтесь с официальной документацией для получения более подробной информации.
Что такое пакет?
Пакеты были изобретены для борьбы с этими сложностями. Пакеты собирают несколько файлов вместе в один файл архива для упрощения переносимости и хранения или просто сжимают файлы для уменьшения объема. Бинарные файлы, включенные в пакет, предварительно скомпилированы в соответствии со стандартными значениями по умолчанию, выбранными разработчиком. Пакеты также содержат метаданные, такие как имя программы, описание ее назначения, номер версии и список зависимостей, необходимых для правильной работы программы.
Несколько проектов Linux разработали свои собственные форматы пакетов. Некоторые из наиболее часто используемых форматов пакетов:
.deb: Этот формат пакета используется Debian, Ubuntu, Linux Mint и многими другими их производными. Это был первый разработанный тип пакета.
.rpm: Этот формат пакета первоначально назывался Red Hat Package Manager. Он используется Red Hat, Fedora, SUSE и другими меньшими дистрибутивами на их базе.
.tar.xz: это просто архив с файлами программы, это формат, который использует Arch Linux.
Хотя сами пакеты напрямую не управляют зависимостями, они представляют собой огромный шаг вперед в управлении программным обеспечением Linux.
Что такое RPM?
RPM или RPM Package Manager — это пакетный менеджер, используемый в дистрибутивах Linux, основанных на Red Hat. Такое же название имеет формат файлов этого пакетного менеджера.
Этот формат не очень сильно отличается от того же самого Deb. Вы можете посмотреть их детальное сравнение в статье что лучше *.deb или *.rpm. Здесь же, только отмечу, что файл rpm — это обычный cpio архив, в котором содержатся сами файлы программы, а также метаданные, описывающие куда их нужно устанавливать. База всех установленных пакетов находится в каталоге /var/lib/rpm. Из особенностей можно отметить, что rpm не поддерживает рекомендованные пакеты, а также зависимости формата или-или.
Для управления пакетами, так же как и в Debian-системах, здесь существует консольная, низкоуровневая утилита с одноименным названием — rpm. Ее мы и будем рассматривать дальше в статье. В разных системах используются разные пакетные менеджеры, например в Red Hat используется Yum, в Fedora — DNF, а в OpenSUSE — zypper, но во всех этих системах будет работать утилита rpm.
Установка RPM пакетов в Linux
Давайте сначала рассмотрим синтаксис самой утилиты rpm:
$ rpm -режимопции пакет
Утилита может работать в одном из режимов:
- -q, —query — запрос, получение информации;
- -i, —install — установка;
- -V, —verify — проверка пакетов;
- -U, —upgrade — обновление;
- -e, —erase — удаление.
Рассмотрим только самые интересные опции программы, которые понадобятся нам в этой статье:
- -v — показать подробную информацию;
- —vv — выводить отладочную информацию;
- —quiet — выводить как можно меньше информации;
- -h — выводить статус-бар;
- —percent — выводить информацию в процентах о процессе распаковки;
- —force — выполнять действие принудительно;
- —nodeps — не проверять зависимости;
- —replacefiles — заменять все старые файлы на новые без предупреждений;
- -i — получить информацию о пакете;
- -l — список файлов пакета;
- -R — вывести пакеты, от которых зависит этот пакет;
Теперь, когда вы уже имеете представление как работать с этой утилитой, может быть рассмотрена установка rpm пакета в Linux. Самая простая команда установки будет выглядеть вот так:
Для работы с командной текущей директорией должна быть папка с пакетом. Здесь мы устанавливаем режим установки и передаем файл пакета. При успешной установке утилита не выведет ничего, если произойдет ошибка, вы об этом узнаете.
Для того чтобы посмотреть более подробную информацию в процессе установки используйте опцию -v:
Также вы можете включить отображение статус бара в процессе установки:
Чтобы проверить установлен ли пакет, нам уже нужно использовать режим запроса:
Также сразу можно удалить пакет, если он не нужен:
Но у rpm так же как и у dpkg, есть один существенный недостаток. Программа не может разрешать зависимости. В случае отсутствия нужного пакета в системе, вы просто получите сообщение об ошибке и пакет не установится.
Для автоматической загрузки зависимостей во время выполнения установки rpm linux нужно использовать пакетный менеджер дистрибутива. Рассмотрим несколько команд для самых популярных RPM дистрибутивов. В RedHat и других дистрибутивах, использующих Yum используйте такую команду:
Первая опция отключает проверку GPG ключа, а вторая говорит, что мы будем выполнять установку локального пакета. В Fedora, с помощью dnf все делается еще проще:
Пакетный менеджер Zypper и OpenSUSE справляются не хуже:
Вот так очень просто выполняется установка rpm с зависимостями. Но не всем нравится работать в консоли, многие новые пользователи хотят использовать графический интерфейс для решения всех задач, в том числе и этой. Дальше мы рассмотрим несколько таких утилит.
Доставка
Важная задача, которую не решает установщик пакетов — доставка файла пакета в систему для последующей установки. Архивы пакетов обычно не хранятся в самой системе: они слишком велики (тысячи пакетов) и должны регулярно обновляться (выход обновлений программ, т. е. новых версий пакетов). Поэтому для установки обычно требуется сначала скопировать необходимые файлы с того носителя, где они хранятся (это либо установочные диски дистрибутива, либо хранилища в сети Интернет). Чтобы APT мог работать с пакетами, они должны содержаться в организованном по специальным правилам хранилище — репозитории. Список доступных APT репозиториев хранится в файле , для каждого репозитория указан способ доступа (например, «», «», «» и др.) и адрес.
Пример 12. Файл
После каждого изменения файла нужно обновлять кеш APT, в котором хранятся сведения о доступных пакетах, командой . Для того, чтобы добавить в кеш информацию о пакетах, доступных на CD, следует использовать команду «», а не редактировать вручную.
APT позволяет и просто доставить пакет в систему, не устанавливая его. Так, например, всегда происходит с исходными пакетами, которые просто копируются из репозитория в определённый каталог системы по команде «».
Что такое YUM?
YUM ( Yellowdog Updater Modified ) — это пакетный менеджер с открытым исходным кодом, разработанный в компании RedHat для работы с пакетами в формате RPM. С помощью него пользователи и системные администраторы могут устанавливать, удалять и обновлять пакеты в системах, основанных на RedHat.
Программа распространяется под лицензией GPL (General Public License) и любой пользователь может получить доступ к исходникам или даже улучшить код. Пакетный менеджер поддерживает подключение сторонних репозиториев и разрешение зависимостей для установки пакетов. Для улучшения работы Yum могут быть загружены различные плагины.
Утилита работает в консоли, а ее синтаксис очень прост:
$ sudo yum опции команда имя_пакета
Сначала рассмотрим основные команды пакетного менеджера:
- install — установить пакет;
- update — обновить пакет или систему;
- update-to — обновить пакет до версии;
- update-minimal — обновлять только исправления ошибок;
- upgrade — полное обновление с обработкой дополнительных возможностей пакетов и их зависимостей;
- distro-sync — синхронизировать состояния системы или пакета с репозиторием. Например, если была установлена версия пакета 4, а в репозитории только 3, то будет выполнено понижение версии;
- remove — удалить пакет;
- autoremove — очистить больше ненужные пакеты;
- list — показать список пакетов;
- provides — поиск пакета по функциональности;
- search — поиск пакета по имени;
- info — информация о пакете;
- clean — очистить кэш пакетного менеджера;
- groups — управление группами пакетов;
- reinstall — переустановить пакет;
- downgrade — понизить версию пакета;
- deplist — вывести все зависимости пакета;
- repolist — отобразить список репозиториев;
- fssnapshot — управление снимками состояния системы;
- check — проверить базу данных пакетов на целостность.
Еще рассмотрим дополнительные опции, которые могут вам понадобиться когда будет выполняться установка rpm CentOS:
- -y — всегда отвечать на вопросы утилиты утвердительно;
- -q — минимальный вывод;
- -v — максимальный вывод;
- -С — работать из кэша;
- -x — игнорировать пакет.
Теперь вы знаете все основные возможности утилиты, рассмотрим некоторые примеры работы с ней.
Особенности и отличия использования RPM, dpkg и исходных текстов
Как и RPM, так и dpkg возможно установить и на RedHat и на Deb — дистрибутивы, но по моему мнению, это равносильно принципу круглое — носим, квадратное — катаем. И dpkg и RPM очень похожи по своему принципу работы, но все же в них есть кое какие отличия, например: при установке пакета rpm не устанавливает пакет, пока не будут разрешены все зависимости, deb — устанавливает, но говорит, что пакет установлен, но работать не будет, пока не будут установлены все зависимости.
Любой пакетный менеджер хранит информацию о зависимостях пакетов в своей базе (например RPM — в ), соответственно, если какое-то ПО было установлено НЕ из пакетного менеджера, то информации о нем нет в базе данных, соответственно, при установке пакета, который (пакет) зависит от ПО установленного, например, из исходных кодов, будет выдана ошибка об отсутствии зависимого пакета (хотя он установлен). Для решения данной проблемы необходимо использовать ключ —nodeps, который отключает отслеживание зависимостей (актуально для RPM).
В общем случае я бы посоветовал пользоваться ИЛИ пакетным менеджером и соответствующими инструментами ИЛИ собирать все ПО из исходников. Но второй вариант, по моему мнению, разумен только при использовании строго ограниченного набора программ на сервере, иначе, обновление из исходников станет основным развлечением для системного администратора, потому что на остальные задачи просто не останется времени.