Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Железо
  • Основы управления пакетами: apt, yum, dnf, pkg. Использование Yum с прокси-сервером

Основы управления пакетами: apt, yum, dnf, pkg. Использование Yum с прокси-сервером

Yum и RPM являются отличными инструментами управления пакетами, но они имеют несколько малоизвестных вариантов и возможностей, которые позволяют делать некоторые весьма интересные вещи. Вам не обязательно непременно использовать их, но они могут вам пригодится когда-нибудь.

1. Отображение типа архитектуры в получаемом RPM

Эту простую мелочь довольно легко выполнить, и она будет очнь полезна людям, использующих x86_64 системы. Одна строка в файле ~/.rpmmacros спасет от неприятностей в дальнейшем.

Echo "%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}" >> ~/.rpmmacros

2. Запрос пакетов не из CentOS

Хотите получить список пакетов установленных из сторонних репозиториев, не CentOS?

Rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep -v CentOS

3. Сбросить права доступа на файлы

У вас возникла полная неразбериха с правами доступа на файлы в пакете? Не беда, RPM об этом позаботится.

Rpm --setperms

4. Просмотр изменений

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

Rpm -q --changelog | less

Использование "less" не является обязательным, но для некоторых пакетов, таких как ядро, изменения могут быть довольно обширными. Поэтому данное дополнение делает вывод более читабельным.

5. Где документация?

Чтобы быстро получить документацию, связанную с пакетом, вы можете использовать следующие два варианта:

  • Это покажет вам документацию, содержащуюся в этом rpm. Если у вас есть только название файла то:
rpm -qdf /path/to/file
  • и rpm покажет вам документацию в пакете, который владеет этим файлом.

6. Происхождение пакета

Иногда хочется знать, где вы получили пакет или пакеты, сколько в вашей системе пакетов от конкретного репозитория или поставщика. Есть несколько параметров поиска, которые можно использовать. Хотя они не 100% совершенны, тем не менее они могут помочь. Большинство пакетов из репозиториев имеют теги с идентификатором в строке Release. Например rpmforge использует rf в качестве идентификатора. Вы можете использовать это, чтобы посмотреть, что у вас установлено оттуда:

Rpm -qa release="*rf*"

а если вы хотите увидеть, как много пакетов у вас установлено от Johnny Hughes-а можно использовать:

Rpm -qa packager="Johnny*"

Этот метод работает на большинстве категорий вида rpm -qi

Данная команда выдаст весь список установленных пакетов.

7. Извлечение только одного файла

Если вам нужно извлечь только один файл из rpm без переустановки всего пакета, вы можете сделать это с rpm2cpio. Например, чтобы извлечь только один файл из logrotate rpm, используйте следующее:

Rpm2cpio logrotate-1.0-1.i386.rpm |cpio -ivd etc/logrotate.conf

8. Запрос даты установки пакета

Полезно после обновления найти старые пакеты, которые не были обновлены.

Rpm -qa --last >~/RPMS_by_Install_Date

Можно использовать "less" для вывода, чтобы найти все RPMS старше, чем дата установки. Используя также grep - конкретизировать пакеты и дату установки.

9. Запрос имеющихся пакетов из репозитория

Найти все пакеты, доступные из определенного репозитория, например RPMforge. Пакеты уже установленные из этого репозитория показываться не будут.

Yum --disable "*" --enable "rpmforge" list available

10. Поиск с помощью YUM в репозитории пакета по заданной строке

Поиск пакетов, содержащих нужную строку в названии или описании пакета.

Yum search buildrpmtree | less

11. Использование Yum с прокси-сервером

Для того чтобы заставить Yum работать через прокси-сервер необходимо добавить следующий параметр в /etc/yum.conf:

Proxy=http://yourproxy:8080/

где - yourproxy это имя прокси-сервера, а 8080 это порт прокси-сервера. Если сервер требует аутентификации, вы можете указать логин как:

Proxy=http://username:password@yourproxy:8080/

RPM Package Manager позволяет использовать прокси-переменные среды. Это может быть задано в /etc/profile или специфизированно для конкретного пользователя в файле ~/.bash_profile::

Export http_proxy=http://yourproxy:8080/ export ftp_proxy=http://yourproxy:8080/

Для использования wget через прокси-сервер, добавте следующие строки в /etc/wgetrc

Http_proxy = http://yourproxy:8080/ ftp_proxy = http://yourproxy:8080/

В обоих случаях логин и пароль могут быть заданы как в примере выше.

12. Использование Yum для установки локального пакета, автоматически проверяя и удовлетворяя зависимости

yum --nogpgcheck localinstall packagename.arch.rpm

13. Получение и пересборка пакета, не будучи при этом root-ом

Иногда вам просто необходимо пересобрать определенный пакет - возможно, лишь добавить конфигурационные опции, которые просто не существуют в основном пакете. Или потому, что вы нашли необходимый пакет, который отсутствует в репозитории, а на сайте разработчика RPMs для другого дистрибутива. Таким образом, вы должны получить src.rpm и востановить его под себя. Но в действительности вы не хотите делать этого в качестве суперпользователя. Итак, как пересобрать свои пакеты в вашей домашней директории под собственной учетной записью.

13.1 Метод А

Для начало необходимо настроить каталог для работы. Он имеет довольно полное сходство по структуре с каталогом /usr/src/redhat:

$ cd $ mkdir -p redhat/{SRPMS,RPMS,SPECS,BUILD,SOURCES} $ ls redhat/ BUILD RPMS SOURCES SPECS SRPMS $

С помощью rpm макроса произведем подмену, для того чтобы rpmbuild узнал о нас и о том что нужно собрать:

$ echo "%_topdir /home/testuser/redhat" >> .rpmmacros $ echo "%packager Test User " >> .rpmmacros $ cat .rpmmacros %_topdir /home/testuser/redhat %packager Test User $

Именно так. Следующее действие - задание rpmbuild-у --rebuild foo.src.rpm, результат работы будет в файле ~/redhat/RPMS/i386 (или та архитектура с которой вы строили пакет).

13.2 Метод Б

Для CentOS-4, настроить репозиторий kbs-Extras repo (опционально добавить kbs-Misk) со страницы и "yum install fedora-rpmdevtools" под root-ом используя "sudo" или "su -". Завести юзера (возможно вы захотите использовать специальный аккаунт для того, чтобы избежать проблем в своей обычной домашней директории) и выполнить "fedora-buildrpmtree" и ~/rpmbuild/...в дереве каталогов и ~/.rpmmacros файл будет автоматически создан. (Примечание "rpmbuild" против "RedHat" в методе А.)

Для CentOS-5 - пакет rpmdevtools отсутствует в наличии. В FC6 SRPM rpmdevtools-5.3-1.fc6.src.rpm собирается и работает.

Ниже представлен макрос для получения надлежащих имен некоторых пакетов (замените соответствующую версию дистрибутива для "el4" на свою):

$ echo "%dist .el4" >> .rpmmacros

14. Отображение приоритетов для всех установленных репозиториев

Вы можете получить список всех установленных у вас репозиториев - yum repolist all . Однако, он не показывает индекс приоритета. Вот строка необходимая для этого. Если номер не определен, по умолчанию, это самый низкий приоритет (99).

Cat /etc/yum.repos.d/*.repo | sed -n -e "/^\# yum list "vim*" Installed Packages vim-minimal.i386 2:7.0.109-7.el5 installed Available Packages vim-X11.i386 2:7.0.109-7.el5 base vim-augeas.i386 0.9.0-2.el5.rf rpmforge vim-clustershell.noarch 1.5.1-1.el5 epel vim-common.i386 2:7.0.109-7.el5 base vim-enhanced.i386 2:7.0.109-7.el5 base vim-halibut.i386 1.0-2.20100504svn8934.el5.1 epel vim-puppet.noarch 2.7.9-1.el5.rf rpmforge

16. Показать все установленные ключи GPG

Показать список всех ключей с соответствующей информацией репозитория:

Rpm -q gpg-pubkey --qf "%{name}-%{version}-%{release} --> %{summary}\n"

17. Подпись пакетов

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

Примечание: для CentOS 5 и 4, будет лучше, если вы будете использовать для подписи ключ DSA (так как для версии 4 RSA были выявлены проблемы с подтверждением).

18. Метапакеты YUM

Метапакет - это специальный пакет, не содержащий никакого программного обеспечения, но имеющий в зависимостях определенный набор софта. Например: установка X-ов на сервер .

Чтобы посмотреть список всех метапакетов, необходимо выполнить команду: yum grouplist . Но если у вас стоит русская локаль, то список будет выдан на русском языке. Чтобы получить список пригодный для установки (на английском), задайте язык вывода команды на английском:

LANG=C yum grouplist

19. Как вывести список установленных пакетов

Установленные пакеты могут показать команды

Yum list installed

Пример, порлучить список установленных пакетов из репозитория :

# yum list installed | grep ius php71u-cli.x86_64 7.1.17-1.ius.el6 @ius php71u-common.x86_64 7.1.17-1.ius.el6 @ius php71u-embedded.x86_64 7.1.17-1.ius.el6 @ius php71u-fpm.x86_64 7.1.17-1.ius.el6 @ius 7.1.17-1.ius.el6 @ius php71u-gd.x86_64 7.1.17-1.ius.el6 @ius php71u-intl.x86_64 7.1.17-1.ius.el6 @ius php71u-json.x86_64 7.1.17-1.ius.el6 @ius php71u-mbstring.x86_64 7.1.17-1.ius.el6 @ius php71u-pdo.x86_64 7.1.17-1.ius.el6 @ius 3.4.3-2.ius.el6 @ius php71u-pgsql.x86_64 7.1.17-1.ius.el6 @ius php71u-xml.x86_64 7.1.17-1.ius.el6 @ius php71u-xmlrpc.x86_64 7.1.17-1.ius.el6 @ius

Сегодня хотелось бы кратко описать команды менеджера пакетов yum - официальная сборка FreePBX основана на CentOS, в котором yum установлен по умолчанию. Он пригодится для установки, удаления, обновления пакетов.

Установка пакета

К примеру, для установки пакета mc нужно ввести команду yum install mc . После ввода команды, система попросит подтверждение. Чтобы подтверждение было одобрено по умолчанию, нужно добавить ключ -y , к примеру yum –y install mc:

# yum install mc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.corbina.net * epel: mirror.datacenter.by * extras: mirror.corbina.net * updates: mirror.corbina.net Resolving Dependencies --> Running transaction check ---> Package mc.x86_64 1:4.8.7-11.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mc x86_64 1:4.8.7-11.el7 base 1.7 M Transaction Summary ================================================================================ Install 1 Package Total download size: 1.7 M Installed size: 5.6 M Is this ok : y Downloading packages: mc-4.8.7-11.el7.x86_64.rpm | 1.7 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing: 1:mc-4.8.7-11.el7.x86_64 1/1 Verifying: 1:mc-4.8.7-11.el7.x86_64 1/1 Installed: mc.x86_64 1:4.8.7-11.el7 Complete!

Удаление пакета

Для удаления пакета, соответственно, нужно ввести команду yum remove mc . Точно также можно использовать ключ для подтверждения -y:

# yum remove mc Loaded plugins: fastestmirror Resolving Dependencies --> Running transaction check ---> Package mc.x86_64 1:4.8.7-11.el7 will be erased --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: mc x86_64 1:4.8.7-11.el7 @base 5.6 M Transaction Summary ================================================================================ Remove 1 Package Installed size: 5.6 M Is this ok : y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing: 1:mc-4.8.7-11.el7.x86_64 1/1 Verifying: 1:mc-4.8.7-11.el7.x86_64 1/1 Removed: mc.x86_64 1:4.8.7-11.el7 Complete!

Обновление пакета

Предположим – у вас старая версия mysql и вам необходимо ее обновить – тут используется команда update . Целиком команда будет выглядеть так: yum update mysql .

Поиск пакета

Если хотите проверить наличие установленного конкретного пакета на сервере и доступные для установки – используйте команду list . Целиком команда будет выглядеть так: yum list mysql . Также можно указать точную версию пакета, если вам требуется более скрупулезный поиск.

Вывод информации о пакете

Если хотите вывести информацию о пакете – используйте команду info . Целиком команда будет выглядеть так: yum info mc .

Вывод информации о всех доступных и установленных пакетах

Для этого используется команда list с модификаторами. Для вывода доступных пакетов: yum list | less , а для вывода всех установленных - yum list installed | less

Проверка доступных обновлений для пакетов и само обновление

Для проверки служит команда check-update , а для обновления - update . Ниже три примера использования команд:

  • yum check-update mysql - проверка обновлений пакета mysql;
  • yum list updates - вывод списка обновлений;
  • yum update mc - обновление Midnight Commander’а;
  • yum –y update - обновление всех установленных пакетов;
Групповые пакеты и операции с ними

В Линуксе некоторые пакеты собраны в так называемые групповые пакеты – к примеру, DNS Name Server , Editors , Java Development и так далее. С помощью yum можно устанавливать групповые пакеты с помощью команды groupinstall - пример далее yum groupinstall ‘Clustering . Коротко опишу остальные команды для манипуляций с групповыми пакетами:

  • yum grouplist - вывод всех доступных к установке групповых пакетов;
  • yum groupupdate ‘Base’ - обновление конкретного группового пакета, в данном случае – Base;
  • yum groupremove ‘Editors’ - удаление группового пакета;
Репозитории в yum

Поиск пакетов происходит в так называемых репозиториях, ниже приведу несколько команд для работы с ними – принцип тот же, что и с пакетами (команды list, к примеру). Вывод всех активных репозиториев производится с помощью команды yum repolist , вывод также и неактивных репозиториев – с помощью команды yum repolist all

Для установки пакета из конкретного репозитория, неважно, активного или неактивного, используется ключ --enablerepo . Как пример – установка phpmyadmin: yum –enablerepo=epel install phpmyadmin

Терминал в yum и история

Если Вы собираетесь проводить очень много операций с пакетами, то можно сразу зайти в оболочку yum с помощью команды yum shell и с помощью уже известных вам команд (только уже без первых трёх букв, соответственно), Вы можете устанавливать\удалять\обновлять\whatever пакеты. Также интересной фичей является возможность посмотреть историю установок в yum – с помощью команды yum history .

Полезна ли Вам эта статья?

Пожалуйста, расскажите почему?

Нам жаль, что статья не была полезна для вас:(Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

Предназначение Yum

Yum создан для решения следующих задач:

  • Поиск пакетов в репозитариях
  • Установка пакетов из репозиториев
  • Установка пакетов из.rpm файлов, с разрешением зависимостей с помощью репозитариев
  • Обновление системы
  • Удаление не нужных пакетов
  • Фактически, yum представляет собой оболочку для rpm обеспечивающую работу с репозиториями.

Основные операции над пакетами

Поиск в репозиториях

Для поиска в репозиториях с помощью yum используются три команды: list , search и provides .

Самый простой способ поиска - использование команды list . Команда list просматривает названия пакетов и их версии в поисках совпадений. Например, для просмотра пакетов с названием tsclient используйте:

Yum list tsclient

Команда search ищет в названии пакета и его описании указанную строку. Например, для поиска пакетов связанных с PalmPilot введите:

Yum search PalmPilot

Команда provides позволяет производить поиск пакетов содержащих указанный файл. Например, для поиска пакетов содержащих libneon введите:

Yum provides libneon

Все команды поиска поддерживают групповые символы? и * (экранируйте их символом \ для корректной обработки bash). К примеру, при для поиска пакетов начинающихся на tsc введите:

Yum list tsc\*

для поиска пакетов, содержащих файлы в директории /etc/httpd

Yum provides /etc/httpd\*

или для поиска определённых команд/программ, например для поиска mc(midnight commander)

Yum provides \*/mc

в результате получим следующий вывод

1:mc-4.7.4-1.fc14.i686: User-friendly text console file manager and visual shell Репозиторий: base Совпадения с: Имя файла: /usr/share/mc Имя файла: /usr/libexec/mc Имя файла: /etc/mc Имя файла: /usr/bin/mc

Установка пакетов с помощью Yum

Для установки пакетов с помощью yum используется параметр install

Для установки tsclient введите:

Yum install tsclient

Yum автоматически разрешит (если сможет) зависимости, и предложит установить их:

============================================================================= Package Arch Version Repository Size ============================================================================= Installing: tsclient i386 0.132-6 base 247 k Installing for dependencies: rdesktop i386 1.4.0-2 base 107 k Transaction Summary ============================================================================= Install 2 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 355 k Is this ok :

Установка пакетов из.rpm файлов

Для установки.rpm пакета с автоматическим разрешением зависимостей раньше использовалась команда localinstall . Теперь можно использовать обычный install . Так команда:

Yum install foo.rpm

автоматически найдет зависимости пакета foo.rpm в репозиториях (если сможет) и предложит их установить.
Может возникнуть проблема в отсутствии или неизвестной GPG подписи у RPM пакета, результатом чего будет отказ в установке и как следствие следующая ошибка

Публичный ключ для foo.rpm не установлен

Для того чтобы обойти это (в случае если Вы доверяете источнику предоставляющему пакет) необходимо выключить проверку GPG ключей, добавив в конце команды параметр --nogpgcheck

Обновление системы

Обновление системы осуществляется с помощью одной команды - update . Таким образом:

Yum update

обновит всю вашу систему. А команда

Yum update foo

При использовании обоих методов работоспособность сохраняется.

Использование Yum с прокси-сервером

Для того чтобы заставить Yum работать через прокси-сервер необходимо добавить следующий параметр в /etc/yum.conf:

Proxy=http://yourproxy:8080/

где - yourproxy это имя прокси-сервера, а 8080 это порт прокси-сервера. Если сервер требует аутентификации, вы можете указать логин как:

Proxy=http://username:password@yourproxy:8080/

RPM Package Manager позволяет использовать прокси-переменные среды. Это может быть задано в /etc/profile или специфизированно для конкретного пользователя в файле ~/.bash_profile::

Export http_proxy=http://yourproxy:8080/
export ftp_proxy=http://yourproxy:8080/

Для использования wget через прокси-сервер, добавте следующие строки в /etc/wgetrc

Http_proxy = http://yourproxy:8080/
ftp_proxy = http://yourproxy:8080/

В обоих случаях логин и пароль могут быть заданы как в примере выше.

Использование Yum для установки локального пакета, автоматически проверяя и удовлетворяя зависимости

yum --nogpgcheck localinstall packagename.arch.rpm

Отображение приоритетов для всех установленных репозиториев

Вы можете получить список всех установленных у вас репозиториев - yum repolist all . Однако, он не показывает индекс приоритета. Вот строка необходимая для этого. Если номер не определен, по умолчанию, это самый низкий приоритет (99).

Cat /etc/yum.repos.d/*.repo | sed -n -e "/^\}

Лучшие статьи по теме