Управление ПО

RPM пакеты

  • RPM - Red Hat Package Manager

  • RPM - формат пакетов для установки ПО, ровно как и база установленных в систему пакетов

  • Пакет содержит в себе архив фалов, сжатых cpio, метаданные и список зависимостей

  • RPM также может содержать скрипт

  • Для установки пакетов используются репозитории

  • Индивидуальные пакеты также могут быть установлены, но такая установка не некомендуется

Работа с репозиториями

Создание локального репозитория на основе ISO RHEL 8:

  • Создание ISO: dd if=/dev/sr0 of=/rhel8.iso bs=1M

  • Создание директории: mkdir /repo

  • Отредактировать /etc/fstab и добавить точку монтирования:

    • /rhel8.iso /repo iso9660 defaults 0 0

    • systemctl daemon-reload

    • mount -a для монтирования ISO

  • Создать файл /etc/yum.repos.d/appstream.repo следующего содержания:

[appstream]
name=appstream
baseurl=file:///repo/AppStream
gpgcheck=0
  • Создать файл /etc/yum.repos.d/base.repo следующего содержания:

[base]
name=base
baseurl=file:///repo/BaseOS
gpgcheck=0
  • Проверяем результат через yum repolist

Модули и Application Stream

  • Новый функционал, доступный в RHEL 8

  • Application Streams используются для разделения пользовательских пакетов от пакетов для ядра

  • Application Streams позволяют работать с различными версиями пакетов

  • Base пакеты предоставляются через BaseOS репозиторий, AppStream предоставляется как отдельный репозиторий

  • Application Streams разделены на два формата:

    • Традиционные RPM

    • Новые модули

  • Модули содержат потоки для того, чтобы предоставить возможность использовать несколько версий приложения

  • Активация модульного потока (module stream) предоставляет доступ к RPM в этом потоке

  • У модулей также могут быть профили

    • Профиль - список пакетов, который характерен для конкретного набора решаемых задач

  • Список пакетов в модуле может содержать пакеты за пределами потока модуля

  • yum module используется для управления модулями

Управление пакетами через yum

  • yum search - поиск нужного пакета

  • yum install - установка нужного пакета

[admin@centos8 ~]$ yum search nmap
Last metadata expiration check: 0:00:09 ago on Sun 01 Mar 2020 01:08:38 PM MSK.
========================== Name Exactly Matched: nmap ==========================
nmap.x86_64 : Network exploration tool and security scanner
========================= Name & Summary Matched: nmap =========================
nmap-ncat.x86_64 : Nmap's Netcat replacement
[admin@centos8 ~]$ sudo yum install nmap
Dependencies resolved.
================================================================================
 Package       Architecture    Version                 Repository          Size
================================================================================
Installing:
 nmap          x86_64          2:7.70-5.el8            AppStream          5.8 M

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

Total download size: 5.8 M
Installed size: 24 M
Is this ok [y/N]: y
Downloading Packages:
nmap-7.70-5.el8.x86_64.rpm                      3.1 MB/s | 5.8 MB     00:01    
--------------------------------------------------------------------------------
Total                                           2.4 MB/s | 5.8 MB     00:02     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : nmap-2:7.70-5.el8.x86_64                               1/1 
  Running scriptlet: nmap-2:7.70-5.el8.x86_64                               1/1 
  Verifying        : nmap-2:7.70-5.el8.x86_64                               1/1 

Installed:
  nmap-2:7.70-5.el8.x86_64                                                      

Complete!
  • yum remove - удаление пакетов

  • yum update - обновление ПО через репозиторий

  • yum provides - глубокий поиск по пакетам, включая их содержимое

  • yum info - информация о пакете

  • yum list - отображение списка пакетов

    • yum list all

    • yum list installed

Управление модулями и потоками

  • Для управления модулями используется yum module

  • yum module list - отображает список модулей

[root@centos8 ~]# yum module list
Last metadata expiration check: 0:02:42 ago on Sun 01 Mar 2020 08:25:03 PM MSK.
CentOS-8 - AppStream
Name                 Stream       Profiles           Summary                                                
389-ds               1.4                             389 Directory Server (base)                            
ant                  1.10 [d]     common [d]         Java build tool                                        
container-tools      rhel8 [d][e] common [d]         Common tools and dependencies for container runtimes   

python27             2.7 [d]      common [d]         Python programming language, version 2.7               
python36             3.6 [d][e]   build, common [d]  Python programming language, version 3.6               
redis                5 [d]        common [d]         Redis persistent key-value database                    
rhn-tools            1.0 [d]      common [d]         Red Hat Satellite 5 tools for RHEL                     
ruby                 2.5 [d]      common [d]         An interpreter of object-oriented scripting language   
ruby                 2.6          common             An interpreter of object-oriented scripting language   
rust-toolset         rhel8 [d]    common [d]         Rust                                                   
satellite-5-client   1.0 [d][e]   common [d], gui    Red Hat Satellite 5 client packages                    
scala                2.10 [d]     common [d]         A hybrid functional/object-oriented language for the JV
                                                     M
squid                4 [d]        common [d]         Squid - Optimising Web Delivery                        
              rhel [d][e]  common [d]         Virtualization module                                  

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
  • yum module provides <package_name> - позволяет найти модуль, который содержит необходимый пакет

[root@centos8 ~]# yum module provides python36
Last metadata expiration check: 0:04:04 ago on Sun 01 Mar 2020 08:25:03 PM MSK.
python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64
Module   : python36:3.6:8010020191115015851:a920e634:x86_64
Profiles : build common
Repo     : AppStream
Summary  : Python programming language, version 3.6

python36-3.6.8-2.module_el8.1.0+245+c39af44f.x86_64
Module   : python36:3.6:8010020191115015851:a920e634:x86_64
Profiles : build common
Repo     : Stream-AppStream
Summary  : Python programming language, version 3.6
  • yum module info <module_name> - информация о модуле

[root@centos8 ~]# yum module info python36
Last metadata expiration check: 0:04:44 ago on Sun 01 Mar 2020 08:25:03 PM MSK.
Name             : python36
Stream           : 3.6 [d][e]
Version          : 8010020191115015851
Context          : a920e634
Architecture     : x86_64
Profiles         : build, common [d]
Default profiles : common
Repo             : Stream-AppStream
Summary          : Python programming language, version 3.6
Description      : This module gives users access to the internal Python 3.6 in RHEL8, as
                 : well as provides some additional Python packages the users might need.
                 : In addition to these you can install any python3-* package available
                 : in RHEL and use it with Python from this module.
Requires         : platform:[el8]
Artifacts        : python-PyMySQL-0:0.8.0-10.module_el8.1.0+245+c39af44f.src
                 : python-distro-0:1.4.0-2.module_el8.1.0+245+c39af44f.src
<...>
                 : python36-devel-0:3.6.8-2.module_el8.1.0+245+c39af44f.x86_64
                 : python36-rpm-macros-0:3.6.8-2.module_el8.1.0+245+c39af44f.noarch
                 : scipy-0:1.0.0-20.module_el8.1.0+245+c39af44f.src


Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
  • yum module info --profile <module_name> - профили, к которым относится модуль

  • yum module list <module_name> - отобразить доступные потоки

  • yum module install php:7.1 или yum install @php:7.1 - установка из необходимого модуля

    • при последующем вводе другой версии стрима, старый будет деактивирован

  • yum module install php:7.1/devel - установка конкретного профиля

  • yum install <package_name> - позволяет yum автоматически активировать модульный поток, в котором содержится данный пакет, перед установкой этого пакета

  • yum module enable php:7.1 - активация модуля, но без установки чего-либо

  • Для отката пакета из другого модульного стрима, отсутствующего в профилях, необходимо использовать yum distro-sync

Работа с yum группами

  • you groups определяют доступ к определенным категориям ПО

  • yum group list отобразит список наиболее доступных групп

    • yum groups list hidden - для отображения всех групп

[root@centos8 ~]# yum groups list
Available Environment Groups:
   Server with GUI
   Server
   Minimal Install
   Virtualization Host
   Custom Operating System
Installed Environment Groups:
   Workstation
Available Groups:
   Container Management
   .NET Core Development
   RPM Development Tools
   Development Tools
   Graphical Administration Tools
   Headless Management
   Legacy UNIX Compatibility
   Network Servers
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
  • yum groups info <groupname> - установит заданную группу

[root@centos8 ~]# yum groups info Workstation
Last metadata expiration check: 0:00:47 ago on Sun 01 Mar 2020 08:35:01 PM MSK.
Environment Group: Workstation
 Description: Workstation is a user-friendly desktop system for laptops and PCs.
 Mandatory Groups:
   Common NetworkManager submodules
   Core
   Fonts
   GNOME
   Guest Desktop Agents
   Hardware Support
   Internet Browser
   Multimedia
   Printing Client
   Standard
   Workstation product core
   base-x
 Optional Groups:
   Backup Client
   GNOME Applications
   Headless Management
   Internet Applications
   Office Suite and Productivity
   Remote Desktop Clients
   Smart Card Support

Обновления yum и история

  • yum history - отобразит список недавно выполненных команд

[root@centos8 ~]# yum history
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     8 | update --skip-broken --n | 2020-03-01 13:26 | I, U           |   13   
     7 | install nmap             | 2020-03-01 13:10 | Install        |    1   
     6 | install -y yum-utils     | 2020-02-29 21:36 | Install        |    1   
     5 | install -y nodejs        | 2020-02-29 20:59 | Install        |    2  <
     4 | install dhcp-server.x86_ | 2020-02-28 23:07 | Install        |    1 >E
     3 | install docker-ce --nobe | 2020-02-17 23:22 | Install        |    5   
     2 | update                   | 2020-02-17 23:17 | I, U           |  178 EE
     1 |                          | 2020-01-07 12:23 | Install        | 1403 EE
  • yum history info - позволяет откатить заданную команду, основанную на ID в истории

  • yum update - обновит все пакеты в системе

  • yum update <packagename> - обновит пакет и его зависимости

  • yumdownloader - скачать пакет с репозитория

RPM запросы

  • rpm - устаревшая команда для установки пакетов RPM

    • rpm не учитывает зависимости и не рекомендуется для установки пакетов

  • Однако rpm используется для выполнения запросов по пакетам

    • По-умолчанию запросы обрабатываются по базе установленных пакетов, флаг "-p" создаст запрос по файлам пакетов

    • rpm -qf /any/file - отобразит пакет, с которым был файл создан

    • rpm -ql mypackage - отобразит файлы в пакете

    • rpm -qc mypackage - отобразит конфигурационные файлы

    • rpm -qd mypackage - отобразит документацию по пакету

    • rpm -qp --scripts mypackage-file.rpm - запрос неустановленного пакета на содержание в нем скриптов

[root@centos8 ~]# rpm -qf /etc/tcsd.conf
trousers-0.3.14-4.el8.x86_64
[root@centos8 ~]# rpm -ql nano
/etc/nanorc
/usr/bin/nano
/usr/bin/rnano
/usr/share/doc/nano
/usr/share/doc/nano/AUTHORS
/usr/share/doc/nano/COPYING
<....>
[root@centos8 ~]# rpm -qc nano
/etc/nanorc

Red Hat Subscription Manager

  • Для работы с репозиториями необходимо иметь подписку

  • Для тестового периода используется бесплатная подписка для разработчиков

    • берется с https://developer.redhat.com

  • Для управления подпиской используется Subscription Manager

    • subscription-manager register используется для регистрации

    • Используются учетные данные аккаунта Red Hat

    • subscription-manager attach --auto для активации подписки

Last updated