Installpackages

Материал из pNp Wiki
Перейти к: навигация, поиск

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

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: yum, yum-utils, rpm, bash, bash-completion

Общая информация

Управление пакетами в RHEL осуществляется двумя утилитами - yum и rpm. Утилита yum является "высокоуровневой" и позволяет устанавливать пакеты как из репозиториев (хранилищ), так и локально из директорий. yum в отличие от rpm осуществляет разрешение зависимостей, то есть устанавливает все необходимое программное обеспечение (библиотеки, документацию и тому подобное), для функционирования утилиты и/или демона. Информация о пакетах и зависимостях хранится в базе данных Berkley DB, в директории /var/lib/rpm. Для того, что бы не запоминать команды утилиты yum поможет наличие установленного пакета bash-completion.

Применение утилиты yum

В общем случае использование команды состоит вызова утилиты с указанием команды и имени пакета:

[root@vm-01 ~]# yum info bash-completion
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Installed Packages
Name        : bash-completion
Arch        : noarch
Epoch       : 1
Version     : 2.1
Release     : 6.el7
Size        : 259 k
Repo        : installed
From repo   : RHEL-media
Summary     : Programmable completion for Bash
URL         : http://bash-completion.alioth.debian.org/
License     : GPLv2+
Description : bash-completion is a collection of shell functions that take advantage
            : of the programmable completion feature of bash.

[root@vm-01 ~]#

Установка, удаление и обновление пакетов

Команда Значение
install установка пакета
update обновление одного или всех пакетов, в случае, если не указано имя пакета
upgrade то же самое, что и update, только с опцией --obsoletes (которая включена по-умолчанию у update)
localinstall установка пакета находящегося в локальной директории
downgrade откат пакета до нужной версии
reinstall переустановка пакета
swap удаление одного пакета и установка другого
remove (erase) удаление пакета
autoremove то же, что и remove, но и удаляет зависимости
groupinstall установить все пакеты, принадлежащие группе

Управление репозиториями

Команда Значение
repolist просмотр списка подключенных репозиториев
repoinfo показывает информацию о подключенном репозитории
repo-pkgs работа с пакетами конкретного репозитория. после команды repo-pkgs надо указать имя репозитория, затем имя пакета и действие.
makecache обновление метаданных подключенных репозиториев

Общие команды

Команда Значение
help краткое описание команд и аргуметов
list список пакетов во всех подключенных репозиториях
info отображение информации о пакете
deplist отображение информации о зависимостях пакета
provides (whatprovides) поиск пакетов содержащих в себе имя файла (перед именем следует указывать */ для более точного поиска)
search поиск пакета по имени и описанию
updateinfo отображает информацию об обновлениях для машины
grouplist отображает информацию об инсталлированных и доступных группах пакетов
groupinfo отборажает описание и содержимое группы пакетов
check-update отображает информацию о доступных обновлениях пактов

Применение утилиты rpm

Как уже упоминалось, rpm может оказаться удобным, когда yum, к примеру, может отказаться удалять пакет из-за ошибок в скриптах, выполняющихся после удаления пакета. Использование схоже с yum, использование команды состоит вызова утилиты с определенными ключами и имени пакета:

[root@vm-01 ~]# rpm -qi httpd
Name        : httpd
Version     : 2.4.6
Release     : 45.el7
Architecture: x86_64
Install Date: Thu 22 Feb 2018 03:55:31 AM MSK
Group       : System Environment/Daemons
Size        : 3877656
License     : ASL 2.0
Signature   : RSA/SHA256, Wed 14 Sep 2016 10:02:21 AM MSK, Key ID 199e2f91fd431d51
Source RPM  : httpd-2.4.6-45.el7.src.rpm
Build Date  : Wed 03 Aug 2016 03:34:57 PM MSK
Build Host  : x86-020.build.eng.bos.redhat.com
Relocations : (not relocatable)
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@vm-01 ~]#
Команда Значение
rpm -qf [имя файла] команда отображает какому пакету принадлежит файл
rpm -ql [имя пакета] команда отображает список файлов, принадлежащих пакету
rpm -qi [имя пакета] команда отображает информацию о пакете
rpm -qc [имя пакета] команда отображает список конфигурационных файлов, входящих в пакет
rpm -q --scripts команда отображает скрипты, которые вызываются в момент определенных действий с пакетом (установка, удаление)
rpm -qp [имя rpm файла] опция -p используется в комбинации с вышеприведенными опциями для получения информации о пакете, который не установлен в системе
rpm -qR команда отображает список зависимостей указанного пакета
rpm -V [имя пакета] команда отображает изменения файлов указанного пакета после его инсталляции
rpm -Va команда отображает изменения файлов всех пакетов после их инсталляции
rpm -qa список всех пакетов, установленных в системе

Отображение имени и версии пакетов установленных на машине:

$ rpm -qa --qf "%{NAME}-%{VERSION}\n"

Создание локального репозитория

Для увеличения скорости установки, необходимо скопировать содержимое директорий Packages> и <code>repodata из образа в директорию, которая будет являться нашим репозиторием:

[root@vm-02 ~]# mount -o loop /root/rhel-server-7.0-x86_64-dvd.iso /media/
mount: /dev/loop0 is write-protected, mounting read-only
[root@vm-02 ~]# /bin/cp -ar /media/{Packages,repodata} /srv/repo/
[root@vm-02 ~]# cp /media/media.repo /etc/yum.repos.d/

Приведем файл /etc/yum.repos.d/media.repo к следующему виду:

[localrepo]
name="RHEL-7.0 Server - Local Repo"
baseurl=file:///srv/repo
metadata_expire=-1
gpgcheck=0

Проверим подключение репозитория:

[root@vm-02 ~]# yum repolist
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
localrepo                                                                                                                                                              | 4.1 kB  00:00:00     
(1/2): localrepo/group_gz                                                                                                                                              | 134 kB  00:00:00     
(2/2): localrepo/primary_db                                                                                                                                            | 3.4 MB  00:00:00     
repo id                                                                          repo name                                                                                              status
localrepo                                                                        "RHEL-7.0 Server - Local Repo"                                                                         4,305
repolist: 4,305
[root@vm-02 ~]#

И проверим установку пакетов:

[root@vm-02 ~]# yum install -y telnet
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package telnet.x86_64 1:0.17-59.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================
 Package                                    Arch                                       Version                                            Repository                                     Size
==============================================================================================================================================================================================
Installing:
 telnet                                     x86_64                                     1:0.17-59.el7                                      localrepo                                      63 k

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package

Total download size: 63 k
Installed size: 113 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:telnet-0.17-59.el7.x86_64                                                                                                                                                1/1 
localrepo/productid                                                                                                                                                    | 1.6 kB  00:00:00     
  Verifying  : 1:telnet-0.17-59.el7.x86_64                                                                                                                                                1/1 

Installed:
  telnet.x86_64 1:0.17-59.el7                                                                                                                                                                 

Complete!
[root@vm-02 ~]#

Ссылки

Yum Cheatsheet