- Аналог статьи про Ubuntu, Gentoo
- (Centos, Ubuntu) PackageKit — открытый и свободный набор приложений для обеспечения высокоуровнего интерфейса для различных пакетных менеджеров. Он используется RHEL в качестве графического интерфейса (по факту нескольких интерфейсов/утилит – add/remove software, package updater, settings) управления пакетами.
- Включаем в себя ряд приложений
- gpk-application: Добавить/удалить приложение
- gpk-update-viewer: Обновление системы
- gpk-prefs: Настройка параметров обновления приложений
- gpk-repo: Включение/выключение источников приложений
- gpk-log: Журнал установки, удаления и обновления приложений
- gpk-install-file: Устанавливает локальный пакет приложения
- gpk-update-icon: Когда PackageKit установлен, автоматически запускает значок сеанса при входе в систему
- gpk-backend-status: Показывает техническое состояние поддержки пакетным менеджером
- Поддерживает работу с:
- APT
- yum
- Conary
- Pacman
- Portage
- Zypper
- urpmi
- Включаем в себя ряд приложений
- База пакетов находится по пути /var/lib/rpm , с ней могут работать разные утилиты
- rpm (redhat package manager) – аналог dpkg (только локальная работа без репо, не устраняет проблемы с зависимостями)
- yum (yellowdog update manager) – аналог apt-get
- dnf (dandified yum) – аналог apt, рекомендуется использовать dnf (причем так же как с apt-get yum в актуальных версиях rhel 8 и старше это просто ссылка на dnf), он так же как и apt лучше работает с зависимостями, при этом использует команды на входе и конфигурационные файлы yum в /etc/yum.repos.d/* Например для rhel по умолчанию redhat.repo , причем в одном файле может быть прописано много репозиториев и часть из них могут быть с аутентификацией по ключам ssl (например, платные redhat).
- При установке софта weak dependencies – это необязательные для работы пакета зависимости, но чаще всего устанавливаемые/нужные
- Установка из repo в среднем предпочтительнее установки из файла т.к. (одна из причин) в репо будут обновления как основного софта, так и зависимого, при этом RHEL в целом рекомендует крайне аккуратно относится к апдейтам софта т.к. это может повлиять на стабильность, по умолчанию при установке dnf-automatic автоматически устанавливаются только security updates, а не все апдейты софта
- Поиск драйверов для ядра (напр. bnx2)
- CentOS работает с .rpm пакетами (так же как и RHEL, Fedora, Suse, Mandriva).
- Вот тут есть очень хорошая шапаргалка. Ниже только самое используемое, остальное проще взять оттуда.
Базовая/типовая работа
Проверка обновлений по всем репозиториям.
yum check-update
Проверка обновлений в конкретном репозитории mariadb, без установки.
sudo yum/dnf check-update --disablerepo "*" --enablerepo=mariadb
Обновление всех приложений (сразу и обновляем данные из репозиториев о пакетах и ставим эти пакеты) и ядра системы, можно отключать конкретные репозитории или наоборот
sudo yum/dnf update
sudo yum/dnf update —disablerepo=epel
sudoyum/dnf update --disablerepo "*" --enablerepo=mariadb
Если в списке обновлений было ядро – без перезагрузки не обойтись (если нужно проверить что код нового ядра запустится корректно прямо сейчас).
(37/37): kernel-3.10.0-957.10.1.el7.x86_64.rpm uname -a
Приложения из репозиториев ставятся через команду install.
sudo yum/dnf install python36
Обновление конкретного приложения
sudo yum/dnf update certbot
Список всех приложений, можно так же искать по имени и в конкретном репозитории, про добавление репозиториев отдельно
sudo yum/dnf list <name> sudo yum/dnf repo-pkgs epel list <name>
Список установленных приложений с краткой информацией по ним
sudo yum/dnf list installed
Поиск приложения (не только по имени)
yum/dnf search python36
Просмотр информации о приложении
yum/dnf info python36u-pip
Удаление ненужных приложений
sudo yum/dnf autoremove
Удаление конкретного приложения remove только удаляет, erase так же счищает cache копию пакета, которая остается по умолчанию в системе после удаления (на случай необходимости быстрого rollback).
sudo yum/dnf -y remove vsftpd sudo yum/dnf -y erase vsftpd
Пример обновления ядра centos
[root@localhost ~]# uname -r 3.10.0-327.el7.x86_64
[root@localhost ~]# yum -y update kernel
[root@localhost ~]# yum list installed kernel Installed Packages kernel.x86_64 3.10.0-327.el7 @anaconda kernel.x86_64 3.10.0-327.36.2.el7 @updates
[root@localhost ~]# cat /boot/grub2/grub.cfg | grep menuentry | grep el7 menuentry 'CentOS Linux (3.10.0-327.36.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-9de934e4-f41b-4169-ab46-d4d8e9e43664' { menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-9de934e4-f41b-4169-ab46-d4d8e9e43664' {
[user1@localhost ~]$ uname -r 3.10.0-327.36.2.el7.x86_64
YUM
- yum group commands
- yum info LibreOffice – просмотр списка пакетов группы пакетов LibreOffice
-
yum grouplist Lists installed groups and groups that are available for installation. yum groupinfo groupname
Displays detailed information about a group. yum groupinstall groupname
Installs all the packages in a group. yum groupupdate groupname
Updates all the packages in a group. yum groupremove groupname
Removes all the packages in a group. - yumdownloader позволяет выкачать как отдельные пакеты, так и все необходимые зависимости без установки
- yumdownloader mc
- yumdownloader samba –destdir ~/samba –resolve
- можно работать с группами пакетов, например обновить или удалить группу:
- sudo yum group update “Стандартный веб-сервер”
- sudo yum group remove “Стандартный веб-сервер”
rpm
-
- извлечение файлов пакета
- rpm2cpio – старый способ (до 4ГБ), извлекает из cpio архив
- rpm2archive – более новый
- опции
- -q – query – просмотреть информации, не установка
- (-qa) -a (all) – все пакеты, просмотр всех установленных пакетов
- (-ql) -l (list) – вывести список файлов в пакете
- -F – freshing vs upgrading package – fresh не устанавливает пакет если в системе не было старой его версии в отличии от upgrade
- -ivh
- -i – установка файла
- -v (verbose) – более подробная информация при установке
- -h – статус бар
- -q – query – просмотреть информации, не установка
- извлечение файлов пакета
rpm -Fvh foo-2.0-1.el6.x86_64.rpm RPM's freshen option checks the versions of the packages specified on the command line against the versions of packages that have already been installed on your system. When a newer version of an already-installed package is processed by RPM's freshen option, it is upgraded to the newer version. However, RPM's freshen option does not install a package if no previously-installed package of the same name exists. This differs from RPM's upgrade option, as an upgrade does install packages whether or not an older version of the package was already installed.
Установка приложения из .rpm пакета делается с помощью утилиты rpm, но можно rpm пакет указать и на вход yum/dnf. Можно отключить проверку на зависимостей, в случае с tcpdump работает. Если не использовать этот подход, то можно получить dependency hell (tcpdump -> libpcap -> glibc…).
sudo rpm --force --nodeps -i tcpdump-4.9.2-3.el7.x86_64.rpm sudo yum install ./tcpdump-4.9.2-3.el7.x86_64.rpm
ПОДПИСКА red hat
- subscription-manager register -auto-attach – регистрация системы в RedHat Network (RHN) / Red Hat Subscription Management (RHSM)
-
rhnsd – демон обеспечивающий работу RHN
rhnsd - a program for quering the Red Hat Network for updates and information
настройка/добавление репозитория
- Базовая инструкция
- файлы с репозиториями имеют расширение .repo
Для установки разных утилит зачастую требуется установка репозиториев – например для python может понадобиться добавление репозитория epel (оффициальный репо fedora).
Простейшее добавление репозитория на CentOS7 (проверено, работает)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
базовая настройка
в самом простом случае просто добавляем репозиторий через его установку (yum/dnf install)
sudo yum/dnf install epel-release
в чуть более сложном первой командой (rpm import) добавляем публичные ключи, которые будут использоваться для проверки подписанных приватным ключем файлов из репо, второй (yum install) добавляем уже сам репо
The following command installs the Red Hat Enterprise Linux 8 EPEL repo packagesudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8
sudo yum install http://dl.fedoraproject.org/pub/epel/8/x86_64/e/epel-release-8-2.noarch.rpm
ручная настройка
Создаем файл в директории репозиториев /etc/yum.repos.d/mariadb.repo , задаем настройки (enabled позволяет управлять включением/отключением репо)
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos73-amd64/ gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=1
(Необязательно) После этого, нужно сбросить кэш в yum и пересоздать его заново:
yum clean all
yum makecache
Для удаления репозиториев используется утилита yum-config-manager, которая входит в набор yum-utils. Удалите репозиторий, например remi:
yum -y install yum-utils
yum-config-manager --disable remi
Для полного удаления репозиторий нужно удалить его конфигурационные файлы и обновить кэш yum.
Создание своего репозитория
- createrepo – основная утилита для создания
Проблемы
Если ни одно из приложений при обновлении не устанавливается с ошибкой невозможности аллоцировать память – скорей всего память утекла, поможет перезагрузка. Так же имеет смысл в будущем:
-
- разобраться с тем, какое приложение послужило проблемой (напр. sql, apache)
- нарастить память RAM или
- как минимум создать SWAP файл, чтобы система могла в случае необходимости использовать память на ЖД как RAM
[Errno 5] [Errno 12] Невозможно выделить память Пример OOM из-за mysql (сервис mysql падает в activating до перезагрузки) ~$ dmesg [Fri Mar 27 11:16:03 2020] Out of memory: Kill process 20533 (mysqld) score 62 or sacrifice child
[Fri Mar 27 11:16:03 2020] Killed process 20533 (mysqld), UID 27, total-vm:1433124kB, anon-rss:116248kB, file-rss:0kB, shmem-rss:0kB
[Fri Mar 27 11:16:03 2020] httpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 ~$ sudo service mysql status ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: activating (start-post) since Пт 2020-03-27 11:16:06 MSK; 6min ago
Если жалуется на недостаток места в разделе /boot – удаляем старые ядра через утилиту package-cleanup из пакета yum-utils.
Transaction check error: installing package kernel-3.10.0-957.5.1.el7.x86_64 needs 15MB on the /boot filesystem Error Summary ------------- Disk Requirements: At least 15MB more space needed on the /boot filesystem. ~$ df -h /boot Filesystem Size Used Avail Use% Mounted on /dev/vda1 240M 206M 18M 93% /boot ~$ rpm -q kernel kernel-3.10.0-327.28.2.el7.x86_64 kernel-3.10.0-327.28.3.el7.x86_64 kernel-3.10.0-862.14.4.el7.x86_64 kernel-3.10.0-957.1.3.el7.x86_64 ~$ sudo yum install yum-utils ~$ sudo package-cleanup --oldkernels --count=2
Чтобы в будущем не возникало таких же проблем можно по умолчанию оставлять только одно или два старых ядра в системе (при установке нового будут удалятся старые, если количество старых превышает лимит).
sudo vi /etc/yum.conf installonly_limit=2 # меняем с 5 до 1 или 2
Если возникли проблемы с совместимостью пакетов и в целом работе пакетного менеджера yum, то возможно поможет чистка кеша пакетов.
sudo yum/dnf clean all
Если Centos 7 не обновляются репозитории с ошибкой резолва mirrorlist.centos.org – меняем его на vault.centos.org. mirrorlist.centos.org вывели из эксплуатации т. к. CentOS EOL.
-bash-4.2$ sudo yum update Loaded plugins: elrepo, fastestmirror, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" -bash-4.2$ ping mirrorlist.centos.org ping: mirrorlist.centos.org: Name or service not known -bash-4.2$ sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* -bash-4.2$ sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
questions
Which of the following commands updates the already installed RPM package rpmname?
A. rpm –update rpmname
B. rpm –U rpmname
C. rpm –q rpmname
D. rpm –force rpmname
E. rpm –u rpmname
Answer: B
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... This upgrades or installs the package currently installed to a newer version. This is the same as install, except all other version(s) of the package are removed after the new package is installed.
Which of the following commands lists the dependencies of the RPM package file foo.rpm?
A. rpm –qpR foo.rpm
B. rpm –dep foo
C. rpm –ld foo.rpm
D. rpm –R foo.rpm
E. rpm –pD foo
Answer: A The command that lists the dependencies of the RPM package file foo.rpm is rpm -qpR foo.rpm. The rpm command is the low-level tool for managing RPM packages on Linux systems.
The -q or --query option is used to query information about installed or uninstalled packages. The -p or --package option is used to specify a package file instead of an installed package name. The -R or --requires option is used to list the capabilities that the package requires. The capabilities are usually the names of other packages, libraries, or files that the package depends on. The rpm command is part of the 101.1 Determine and configure hardware settings topic of the LPI Linux Essentials certification program .
The other options are either invalid or do not perform the desired task. The rpm -dep foo command does not exist, as -dep is not a valid option for rpm. The rpm -ld foo.rpm command does not list the dependencies of the package file, but the files in the package. The rpm -R foo.rpm command does not list the dependencies of the package file, but the capabilities that the package provides. The rpm -pD foo command does not exist, as -pD is not a valid option for rpm.
Which option to the yum command will update the entire system? (Specify ONLY the option name without any additional parameters.)
update/upgrade
The yum command is a tool for managing software packages on Red Hat Enterprise Linux and other RPM-based systems. The yum update option will update the entire system by checking the versions of the installed packages and installing the latest available versions from the repositories. The yum upgrade option will do the same, but it will also remove any obsolete packages that are no longer needed by the system. Both options will prompt the user to confirm before proceeding with the update or upgrade process.
How can the list of files that would be installed by the RPM package file apache-xml.rpm be previewed?
A. rpm –qp apache-xml.rpm
B. rpm –qv apache-xml.rpm
C. rpm –ql apache-xml.rpm
D. rpm –qpl apache-xml.rpm
Answer: D https://stackoverflow.com/questions/5616668/view-rpm-scripts-with-rpm-scripts-qp When I runrpm -qlp
I get the file contents of the RPM$ rpm -qlp CS0.0.0_10.0.i386.rpm /home/thy_diff/rt /home/thy_diff/rt/Cerse-zip /home/thy_diff/rt/Configure_rht.properties /home/thy_diff/rt/UFE_Install.sh /home/thy_diff/M_client /home/thy_diff/M_client/Crse-CLIENT.zip /home/thy_diff/M_client/Configure_client.properties /home/thy_diff/M_client/UF_Install.sh