Installpackages — различия между версиями

Материал из pNp Wiki
Перейти к: навигация, поиск
(Общая информация)
 
(не показано 11 промежуточных версий этого же участника)
Строка 9: Строка 9:
 
<code>yum</code> является "высокоуровневой" и позволяет устанавливать пакеты как из репозиториев (хранилищ), так и локально  
 
<code>yum</code> является "высокоуровневой" и позволяет устанавливать пакеты как из репозиториев (хранилищ), так и локально  
 
из директорий. <code>yum</code> в отличие от <code>rpm</code> осуществляет разрешение зависимостей, то есть устанавливает
 
из директорий. <code>yum</code> в отличие от <code>rpm</code> осуществляет разрешение зависимостей, то есть устанавливает
все необходимое программное обеспечение (библиотеки, документацию и тому подобное), для функционирования утилиты и/или демона.
+
все необходимое программное обеспечение (библиотеки, документацию и тому подобное), для функционирования утилиты и/или демона. Информация
 +
о пакетах и зависимостях хранится в базе данных <code>Berkley DB</code>, в директории <code>/var/lib/rpm</code>.
 +
Для того, что бы не запоминать команды утилиты <code>yum</code> поможет наличие установленного пакета <code>bash-completion</code>.
 +
 
 +
== Применение утилиты yum ==
 +
В общем случае использование команды состоит вызова утилиты с указанием команды и имени пакета:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 +
</syntaxhighlight>
 +
 
 +
==== Установка, удаление и обновление пакетов ====
 +
{| class="wikitable"
 +
|-
 +
! Команда !! Значение
 +
|-
 +
| install || установка пакета
 +
|-
 +
| update || обновление одного или всех пакетов, в случае, если не указано имя пакета
 +
|-
 +
| upgrade || то же самое, что и <code>update</code>, только с опцией <code>--obsoletes</code> (которая включена по-умолчанию у <code>update</code>)
 +
|-
 +
| localinstall || установка пакета находящегося в локальной директории
 +
|-
 +
| downgrade || откат пакета до нужной версии
 +
|-
 +
| reinstall || переустановка пакета
 +
|-
 +
| swap || удаление одного пакета и установка другого
 +
|-
 +
| remove (erase) || удаление пакета
 +
|-
 +
| autoremove || то же, что и <code>remove</code>, но и удаляет зависимости
 +
|-
 +
| groupinstall || установить все пакеты, принадлежащие группе
 +
|}
 +
 
 +
==== Управление репозиториями ====
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Команда !! Значение
 +
|-
 +
| repolist || просмотр списка подключенных репозиториев
 +
|-
 +
| repoinfo || показывает информацию о подключенном репозитории
 +
|-
 +
| repo-pkgs || работа с пакетами конкретного репозитория. после команды <code>repo-pkgs</code> надо указать имя репозитория, затем имя пакета и действие.
 +
|-
 +
| makecache || обновление метаданных подключенных репозиториев
 +
|-
 +
|}
 +
 
 +
==== Общие команды ====
 +
{| class="wikitable"
 +
|-
 +
! Команда !! Значение
 +
|-
 +
| help || краткое описание команд и аргуметов
 +
|-
 +
| list || список пакетов во всех подключенных репозиториях
 +
|-
 +
| info || отображение информации о пакете
 +
|-
 +
| deplist || отображение информации о зависимостях пакета
 +
|-
 +
| provides (whatprovides) || поиск пакетов содержащих в себе имя файла (перед именем следует указывать <code>*/</code> для более точного поиска)
 +
|-
 +
| search || поиск пакета по имени и описанию
 +
|-
 +
| updateinfo || отображает информацию об обновлениях для машины
 +
|-
 +
| grouplist || отображает информацию об инсталлированных и доступных группах пакетов
 +
|-
 +
| groupinfo || отборажает описание и содержимое группы пакетов
 +
|-
 +
| check-update || отображает информацию о доступных обновлениях пактов
 +
|}
 +
 
 +
== Применение утилиты rpm ==
 +
Как уже упоминалось, <code>rpm</code> может оказаться удобным, когда <code>yum</code>, к примеру, может отказаться
 +
удалять пакет из-за ошибок в скриптах, выполняющихся после удаления пакета. Использование схоже с <code>yum</code>,
 +
использование команды состоит вызова утилиты с определенными ключами и имени пакета:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 +
</syntaxhighlight>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Команда !! Значение
 +
|-
 +
| rpm -qf [имя файла] || команда отображает какому пакету принадлежит файл
 +
|-
 +
| rpm -ql [имя пакета] || команда отображает список файлов, принадлежащих пакету
 +
|-
 +
| rpm -qi [имя пакета] || команда отображает информацию о пакете
 +
|-
 +
| rpm -qc [имя пакета] || команда отображает список конфигурационных файлов, входящих в пакет
 +
|-
 +
| rpm -q --scripts || команда отображает скрипты, которые вызываются в момент определенных действий с пакетом (установка, удаление)
 +
|-
 +
| rpm -qp [имя rpm файла] || опция <code>-p</code> используется в комбинации с вышеприведенными опциями для получения информации о пакете, который не установлен в системе
 +
|-
 +
| rpm -qR || команда отображает список зависимостей указанного пакета
 +
|-
 +
| rpm -V [имя пакета] || команда отображает изменения файлов указанного пакета после его инсталляции
 +
|-
 +
| rpm -Va || команда отображает изменения файлов всех пакетов после их инсталляции
 +
|-
 +
| rpm -qa || список всех пакетов, установленных в системе
 +
|}
 +
 
 +
Отображение имени и версии пакетов установленных на машине:
 +
<syntaxhighlight lang="bash">
 +
$ rpm -qa --qf "%{NAME}-%{VERSION}\n"
 +
</syntaxhighlight>
 +
 
 +
== Создание локального репозитория ==
 +
Для увеличения скорости установки, необходимо скопировать содержимое директорий <code>Packages> и <code>repodata</code> из образа в директорию, которая будет являться нашим репозиторием:
 +
<syntaxhighlight lang="bash">
 +
[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/
 +
</syntaxhighlight>
 +
Приведем файл <code>/etc/yum.repos.d/media.repo</code> к следующему виду:
 +
<syntaxhighlight lang="bash">
 +
[localrepo]
 +
name="RHEL-7.0 Server - Local Repo"
 +
baseurl=file:///srv/repo
 +
metadata_expire=-1
 +
gpgcheck=0
 +
</syntaxhighlight>
 +
Проверим подключение репозитория:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 +
</syntaxhighlight>
 +
И проверим установку пакетов:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 +
</syntaxhighlight>
 +
 
 +
== Ссылки ==
 +
[https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf Yum Cheatsheet]<br />

Текущая версия на 18:41, 1 марта 2018

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

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

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: 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