Installpackages — различия между версиями
Andy (обсуждение | вклад) |
Andy (обсуждение | вклад) |
||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 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>. | Для того, что бы не запоминать команды утилиты <code>yum</code> поможет наличие установленного пакета <code>bash-completion</code>. | ||
Строка 41: | Строка 42: | ||
! Команда !! Значение | ! Команда !! Значение | ||
|- | |- | ||
− | | install || | + | | install || установка пакета |
|- | |- | ||
− | | update || | + | | update || обновление одного или всех пакетов, в случае, если не указано имя пакета |
|- | |- | ||
− | | upgrade || | + | | upgrade || то же самое, что и <code>update</code>, только с опцией <code>--obsoletes</code> (которая включена по-умолчанию у <code>update</code>) |
|- | |- | ||
− | | localinstall || | + | | localinstall || установка пакета находящегося в локальной директории |
|- | |- | ||
− | | downgrade || | + | | downgrade || откат пакета до нужной версии |
|- | |- | ||
− | | reinstall || | + | | reinstall || переустановка пакета |
|- | |- | ||
− | | swap || | + | | swap || удаление одного пакета и установка другого |
|- | |- | ||
− | | remove (erase) || | + | | remove (erase) || удаление пакета |
|- | |- | ||
− | | autoremove || | + | | autoremove || то же, что и <code>remove</code>, но и удаляет зависимости |
|- | |- | ||
− | | groupinstall || | + | | 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 ~]#