Centos 7 yum не работает. Получение и пересборка пакета, не будучи при этом root-ом. Установка пакета из локальной файловой системы

Нам довольно часто приходится устанавливать различные программы. По умолчанию в системе есть только самое необходимое, а если вам понадобится что-либо специфическое, то вам придется устанавливать программы вручную. Установка программ Linux в некотором смысле проще, чем в Windows. Здесь большинство необходимых программ находятся в официальных репозиториях и для их установки или обновления достаточно выполнить несколько команд.

В этой статье мы рассмотрим как выполняется установка пакетов CentOS 7. Рассмотрим основы работы с пакетным менеджером 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 - игнорировать пакет.

Теперь вы знаете все основные возможности утилиты, рассмотрим некоторые примеры работы с ней.

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

Перед тем как переходить к установке пакетов CentOS нужно обновить список репозиториев и систему до самой последней версии. Для этого существует команда:

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

Чтобы установить пакет, который есть в официальных репозиториях вам достаточно использовать команду install. Просто наберите эту команду и имя пакета, например, для firefox:

sudo yum install thunderbird

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

sudo yum -y install thunderbird

Чтобы посмотреть информацию об установленном пакете используйте команду info:

sudo yum info thunderbird

Для удаления пакета используйте команду remove:

sudo yum remove thunderbird

Поиск пакетов CentOS

Мы знаем точные названия далеко не всех пакетов. Но yum поддерживает возможность поиска, которая поможет вам понять какой установить пакет CentOS 7. Существует две команды для поиска. Первая - это search - позволяет найти пакет по названию:

sudo yum search mysql

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

sudo yum provides lspci

Теперь вы знаете какой пакет нужен и установка пакетов rpm CentOS 7 теперь может быть выполнена очень быстро и вам не нужно открывать множество форумов для поиска информации.

Группы пакетов CentOS

Группы пакетов, это тоже достаточно удобный инструмент. С помощью него вы можете не устанавливать пакеты по одному, а установить сразу целую группу. Сначала посмотрите список доступных групп:

sudo yum group list

sudo yum group info "Стандартный веб-сервер"

Затем. чтобы установить группу пакетов наберите:

sudo yum group install "Стандартный веб-сервер"

Точно так же вы можете обновить группу пакетов, чтобы не обновлять всю систему:

sudo yum group update "Стандартный веб-сервер"

Или удалить:

sudo yum group remove "Стандартный веб-сервер"

Репозитории пакетов CentOS

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

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

sudo yum install epel-release

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

Например, на данный момент самая новая

wget http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

Затем установите загруженный пакет с помощью yum:

sudo yum install nux-dextop-release-0-5.el7.nux.noarch.rpm

Затем обновите список репозиториев и можете устанавливать пакеты:

sudo yum install vlc

Ну и смотрим список репозиториев:

sudo yum repolist

Здесь отображаются все доступные репозитории. Для удаления репозитория будет достаточно удалить его пакет.

Установка программ CentOS в GUI

Если вы не любите пользоваться терминалом, то установка программ CentOS 7 может быть выполнена и через графический интерфейс. Но здесь возможностей намного меньше чем в терминале. Используйте утилиту "Программы" , которая расположена в главном меню:

Предназначение 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 "/^\}