Команды RPM: различия между версиями
м (→Удаление пакета: убрал пробел между строк) |
|||
(не показано 39 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''RPM''' - система управления пакетами | '''RPM''' - система управления пакетами в дистрибутивах Linux. | ||
==Установка пакета из файла== | ==Установка пакета из файла== | ||
Строка 7: | Строка 7: | ||
# rpm -i package.rpm | # rpm -i package.rpm | ||
</source> | </source> | ||
где package.rpm - нужный Вам файл. | где {{cmd|package.rpm}} - нужный Вам файл. | ||
Пример выполнения команды: | |||
<source lang="bash"> | |||
[root@comp-alt-petr]# rpm -i mytetra_1.42.2-alt2.rpm | |||
</source> | |||
В конце команды Вы можете указать дополнительные опции: | В конце команды Вы можете указать дополнительные опции: | ||
*--nodeps не проверять зависимости пакета | *--nodeps не проверять зависимости пакета | ||
*--replacepkgs или --reinstall переустановить пакет | *--replacepkgs или --reinstall переустановить пакет | ||
===Подробный вывод=== | |||
Для того, чтобы отображался прогресс установки, используйте дополнительные параметры -v и -h. | |||
*-v - выводить более детальные сообщения | |||
*-h - выводить "#" по мере установки пакета (используется с -v) | |||
<source lang="bash"> | |||
# rpm -ivh package.rpm | |||
</source> | |||
Пример выполнения команды: | |||
<source lang="bash"> | |||
# rpm -ivh mytetra_1.42.2-alt2.rpm | |||
Подготовка... #################################################################################################### [100%] | |||
Обновление / установка... | |||
1: mytetra-1.42.2-alt2 #################################################################################################### [100%] | |||
Running /usr/lib/rpm/posttrans-filetriggers | |||
</source> | |||
===Принудительная установка старой версии пакета=== | |||
Следующая команда заменит или установит пакет независимо от наличия и версий пакетов, вплоть до понижения версии. | |||
<source lang="bash"> | |||
# rpm -Uvh --oldpackage foo-1.0-i586.rpm | |||
</source> | |||
===Принудительная установка без удовлетворения зависимостей=== | |||
{{Note|Не рекомендуется использовать данную команду! Вы можете испортить систему!}} | |||
<source lang="bash"> | |||
# rpm -Uvh --nodeps foo-1.0-i586.rpm | |||
</source> | |||
==Обновление пакета== | |||
Если у Вас пакет с более свежей версией, чем та, что установлена в системе, то Вы можете обновить его двумя способами: | |||
===С принудительной установкой=== | |||
Пакет будет обновлён указанным. Если он не стоит в системе, то будет установлен. | |||
<source lang="bash"> | |||
# rpm -Uvh foo-1.0-i586.rpm | |||
</source> | |||
Пример выполнения команды: | |||
<source lang="bash"> | |||
# rpm -Uvh usbids-20230519-alt1.noarch.rpm | |||
Подготовка... #################################################################################################### [100%] | |||
Обновление / установка... | |||
1: usbids-20230519-alt1 #################################################################################################### [ 50%] | |||
Очистка / удаление... | |||
2: usbids-20230428-alt1 #################################################################################################### [100%] | |||
Running /usr/lib/rpm/posttrans-filetriggers | |||
</source> | |||
===Без принудительной установки=== | |||
Пакет будет обновлён указанным. Если он не стоит в системе, то он не будет установлен. | |||
<source lang="bash"> | |||
# rpm -Fvh boswars-2.7-alt1_24.svn160110.x86_64.rpm | |||
</source> | |||
Команда не подробная. | |||
==Удаление пакета== | ==Удаление пакета== | ||
{{Note|В команде указывается установленный пакет, который хранится в специальном списке в системе. Файл rpm указывать не нужно.}} | {{Note|В команде указывается установленный пакет, который хранится в специальном списке в системе. Файл rpm указывать не нужно.}} | ||
<source lang="bash"> | |||
# rpm -e package | |||
</source> | |||
===Удаление пакета без учёта зависимых от него пакетов=== | |||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -e package | # rpm -e --nodeps package | ||
</source> | </source> | ||
Строка 30: | Строка 93: | ||
[root@comp-alt-petr ~]# rpm -qa supertuxkart | [root@comp-alt-petr ~]# rpm -qa supertuxkart | ||
supertuxkart-1.4-alt1.x86_64 | supertuxkart-1.4-alt1.x86_64 | ||
</source> | |||
===Найти пакет по части имени=== | |||
Указав специальной командой часть названия пакета, можно найти все пакеты содержащие эту фразу. | |||
<source lang="bash"> | |||
# rpm -qa | grep часть_названия | |||
</source> | |||
Пример: | |||
<source lang="bash"> | |||
[root@comp-alt-petr ~]# rpm -qa | grep tux | |||
supertuxkart-data-1.4-alt1.noarch | |||
tuxcmd-0.6.70-alt2.x86_64 | |||
supertux2-0.6.3-alt2.x86_64 | |||
supertuxkart-1.4-alt1.x86_64 | |||
supertux2-data-0.6.3-alt2.noarch | |||
</source> | </source> | ||
==Узнать пакет по файлу== | ==Узнать пакет по файлу== | ||
Если у Вас есть файл в системе, но | Если у Вас есть файл в системе, но вы не знаете, к какому пакету он относится, это можно разрешить с помощью команды {{cmd|whereis}}: | ||
<source lang="bash"> | <source lang="bash"> | ||
Строка 42: | Строка 120: | ||
</source> | </source> | ||
А потом, | А потом, указав путь, использовать следующую команду: | ||
<source lang="bash"> | <source lang="bash"> | ||
[root@comp-alt-petr ~]# rpm -qf / | [root@comp-alt-petr ~]# rpm -qf /usr/share/man/man1/bash.1.xz | ||
bash-4.4.23-alt1.noarch | bash-4.4.23-alt1.noarch | ||
</source> | |||
Если это исполняемый файл, сначала нужно найти, где он находится с помощью команды {{cmd|which}}. | |||
<source lang="bash"> | |||
[root@comp-alt-petr ~]# which kpat | |||
/usr/lib/kf5/bin/kpat | |||
</source> | |||
А потом, указав путь, использовать следующую команду: | |||
<source lang="bash"> | |||
[root@comp-alt-petr ~]# rpm -qf /usr/lib/kf5/bin/kpat | |||
kde5-kpat-22.12.3-alt1.x86_64 | |||
</source> | </source> | ||
{{Note|Без полного пути команда работать не будет.}} | {{Note|Без полного пути команда работать не будет.}} | ||
Так же в качестве аргумента для параметра {{cmd|rpm -qf}} можно сразу указать команду, например: | |||
<source lang="bash"> | |||
[root@comp-alt-petr ~]# rpm -qf $(which kpat) | |||
kde5-kpat-22.12.3-alt1.x86_64 | |||
</source> | |||
==Вывести список всех установленных пакетов с номерами версий и релизов== | |||
Чтобы вывести список всех установленных пакетов, используйте следующую конструкцию: | |||
<source lang="bash"> | |||
# rpm -qa | |||
</source> | |||
===Дополнительные параметры=== | |||
Чтобы вывести список построчно, укажите параметр less: | |||
<source lang="bash"> | |||
# rpm -qa | less | |||
</source> | |||
Чтобы вывести список в алфавитном порядке, укажите параметр sort: | |||
<source lang="bash"> | |||
# rpm -qa | sort | |||
</source> | |||
Чтобы использовать оба параметра, укажите их следующим образом: | |||
<source lang="bash"> | |||
# rpm -qa | sort | less | |||
</source> | |||
Чтобы вывести только названия пакетов, без версии, используйте команду: | |||
<source lang="bash"> | |||
# rpm -qa --qf '%{NAME}\n' | sort | |||
</source> | |||
==Проверить, установлен ли пакет== | |||
Чтобы проверить, установлен ли пакет, введите следующую команду: | |||
<source lang="bash"> | |||
# rpm -q 'Имя пакета' | |||
</source> | |||
Пример: | |||
<source lang="bash"> | |||
# rpm -q 0ad | |||
0ad-0.0.26-alt0_1_alpha.p10.x86_64 | |||
# rpm -q boswars | |||
пакет boswars не установлен | |||
</source> | |||
==Вывести все пакеты определенной категории== | ==Вывести все пакеты определенной категории== | ||
Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!): | Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!): | ||
<source lang="bash"> | <source lang="bash"> | ||
rpm -qg | # rpm -qg | ||
</source> | </source> | ||
Строка 60: | Строка 198: | ||
И после qg введите одну из отобразившихся категорий: | И после qg введите одну из отобразившихся категорий: | ||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -qg | |||
Accessibility Development/Python Networking/File transfer System/Configuration/Networking | Accessibility Development/Python Networking/File transfer System/Configuration/Networking | ||
Archiving/Backup Development/Python3 Networking/Instant messaging System/Configuration/Other | Archiving/Backup Development/Python3 Networking/Instant messaging System/Configuration/Other | ||
Строка 82: | Строка 220: | ||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -qg Graphics | |||
kde5-kolourpaint-22.12.3-alt1.x86_64 | kde5-kolourpaint-22.12.3-alt1.x86_64 | ||
kde5-kruler-22.12.3-alt1.x86_64 | kde5-kruler-22.12.3-alt1.x86_64 | ||
Строка 112: | Строка 250: | ||
</source> | </source> | ||
==Определить имя пакета по файлу== | ==Определить имя пакета по rpm-файлу== | ||
Если у Вас какой-то rpm-файл с непонятным именем, узнать, что именно он установит, можно следующей командой: | Если у Вас какой-то rpm-файл с непонятным именем, узнать, что именно он установит, можно следующей командой: | ||
<source lang="bash"> | <source lang="bash"> | ||
rpm -qp "путь к файлу" | # rpm -qp "путь к файлу" | ||
</source> | </source> | ||
Например, у нас следующая ситуация. Пакет содержит в себе игру supertuxkart. Кто-то его переименовал в 0ad (или в любое непонятное имя) и предлагает нам его установить как эту игру. Чтобы узнать, какое имя на самом деле было прописано при сборке, выполните следующую команду: | |||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -qp /home/petr/0ad.rpm | # rpm -qp /home/petr/0ad.rpm | ||
Строка 126: | Строка 264: | ||
Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет. | Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет. | ||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -qd mytetra | |||
/usr/share/doc/mytetra-1.42.2/readme.txt | /usr/share/doc/mytetra-1.42.2/readme.txt | ||
</source> | </source> | ||
==Список файлов пакета== | ==Список файлов установленного пакета== | ||
Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой: | Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой: | ||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -ql имя_пакета | |||
</source> | |||
Пример использования: | |||
<source lang="bash"> | |||
# rpm -ql mytetra | |||
/usr/bin/mytetra | /usr/bin/mytetra | ||
/usr/share/applications/mytetra.desktop | /usr/share/applications/mytetra.desktop | ||
Строка 140: | Строка 282: | ||
/usr/share/icons/hicolor/48x48/apps/mytetra.png | /usr/share/icons/hicolor/48x48/apps/mytetra.png | ||
</source> | </source> | ||
==Состояние | |||
Если Вы попробуете указать неустановленный rpm-пакет, то получите ошибку: | |||
<source lang="bash"> | |||
# rpm -ql /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.rpm | |||
пакет /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.rpm не установлен | |||
</source> | |||
=== Где искать исполняемые файлы этого пакета? === | |||
Чтобы найти исполняемые файлы указанного пакета, можно воспользоваться следующей конструкцией: | |||
<source lang="bash"> | |||
# rpm -ql имя_пакета | grep bin/ | |||
</source> | |||
Пример использования: | |||
<source lang="bash"> | |||
# rpm -ql bash | grep bin/ | |||
/bin/bash | |||
/bin/bash2 | |||
/bin/rbash | |||
/usr/bin/bashbug | |||
</source> | |||
=== Что отвечает за запуск служб в этом пакете? === | |||
Чтобы выяснить, какие части пакета отвечают за запуск его служб, используйте конструкцию | |||
<source lang="bash"> | |||
# rpm -ql имя_пакета | grep /etc/rc.d/init.d/ | |||
</source> | |||
если используется SysVinit. | |||
Пример: | |||
<source lang="bash"> | |||
# rpm -ql udev | grep /etc/rc.d/init.d/ | |||
/etc/rc.d/init.d/udevd | |||
</source> | |||
Или | |||
<source lang="bash"> | |||
# rpm -ql имя_пакета | grep /lib/systemd/system/ | |||
</source> | |||
если используется Systemd. | |||
Пример: | |||
<source lang="bash"> | |||
# rpm -ql udev | grep /lib/systemd/system/ | |||
/lib/systemd/system/initrd-udevadm-cleanup-db.service | |||
/lib/systemd/system/sockets.target.wants/systemd-udevd-control.socket | |||
/lib/systemd/system/sockets.target.wants/systemd-udevd-kernel.socket | |||
/lib/systemd/system/sysinit.target.wants/systemd-udev-trigger.service | |||
/lib/systemd/system/sysinit.target.wants/systemd-udevd.service | |||
/lib/systemd/system/systemd-udev-settle.service | |||
/lib/systemd/system/systemd-udev-trigger.service | |||
/lib/systemd/system/systemd-udev-trigger.service.d | |||
/lib/systemd/system/systemd-udev-trigger.service.d/systemd-udev-trigger-no-reload.conf | |||
/lib/systemd/system/systemd-udevd-control.socket | |||
/lib/systemd/system/systemd-udevd-kernel.socket | |||
/lib/systemd/system/systemd-udevd.service | |||
/lib/systemd/system/udevd.service | |||
</source> | |||
==Список файлов неустановленного пакета== | |||
Чтобы узнать содержимое неустановленного rpm-пакета, используйте команду: | |||
<source lang="bash"> | |||
# rpm -qlp имя_пакета.rpm | |||
</source> | |||
Пример выполнения команды: | |||
<source lang="bash"> | |||
# rpm -qlp xkill_1.0.5-alt1.rpm | |||
/usr/bin/xkill | |||
/usr/share/applications/xkill.desktop | |||
/usr/share/icons/hicolor/16x16/apps/xkill.xpm | |||
/usr/share/icons/hicolor/32x32/apps/xkill.xpm | |||
/usr/share/icons/hicolor/48x48/apps/xkill.xpm | |||
/usr/share/man/man1/xkill.1.xz | |||
</source> | |||
==Список конфигурационных файлов пакета== | |||
Чтобы вывести все файлы с настройками, входящими в пакет, выполните следующую команду: | |||
<source lang="bash"> | |||
# rpm -qc bash | |||
/etc/bashrc | |||
/etc/bashrc.d/alias.sh | |||
</source> | |||
Так же, можно использовать конструкцию с командой для списка файлов установленного пакета: | |||
<source lang="bash"> | |||
# rpm -ql bash | grep /etc/ | |||
/etc/bashrc | |||
/etc/bashrc.d | |||
/etc/bashrc.d/alias.sh | |||
</source> | |||
==Состояние установленных файлов== | |||
Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду: | Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду: | ||
<source lang="bash"> | <source lang="bash"> | ||
# rpm -qs mytetra | |||
нормальный /usr/bin/mytetra | нормальный /usr/bin/mytetra | ||
нормальный /usr/share/applications/mytetra.desktop | нормальный /usr/share/applications/mytetra.desktop | ||
Строка 150: | Строка 384: | ||
нормальный /usr/share/icons/hicolor/48x48/apps/mytetra.png | нормальный /usr/share/icons/hicolor/48x48/apps/mytetra.png | ||
</source> | </source> | ||
==Просмотр списка последних установленных пакетов== | |||
Чтобы узнать какие последние пакеты были установлены, выполните следующую команду: | |||
<source lang="bash"> | |||
# rpm -qa -last | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -qa -last | |||
apf-0.3-alt2.noarch Пн 22 мая 2023 15:35:23 | |||
NetworkManager-openvpn-gtk-common-1.10.3-alt0.p10.1.ge1c5978.x86_64 Пн 22 мая 2023 14:34:13 | |||
NetworkManager-openvpn-gtk3-1.10.3-alt0.p10.1.ge1c5978.x86_64 Пн 22 мая 2023 14:34:13 | |||
xkill-1.0.5-alt1.x86_64 Пн 22 мая 2023 14:24:44 | |||
mate-applets-1.26.1-alt2.x86_64 Пн 22 мая 2023 11:26:35 | |||
libgucharmap-14.0.1-alt1.x86_64 Пн 22 мая 2023 11:26:34 | |||
NetworkManager-tui-1.40.18-alt1.p10.1.x86_64 Пн 22 мая 2023 11:22:50 | |||
libnewt52-0.52.16-alt1.x86_64 Пн 22 мая 2023 11:22:50 | |||
... | |||
</source> | |||
===Сокращенный прокручивающийся вариант=== | |||
Чтобы список прокручивался, укажите параметр less: | |||
<source lang="bash"> | |||
# rpm -qa -last | less | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -qa -last | less | |||
LibreOffice-still-integrated-7.3.7.2-alt2.x86_64 Пт 19 мая 2023 13:20:01 | |||
LibreOffice-still-common-7.3.7.2-alt2.x86_64 Пт 19 мая 2023 13:20:01 | |||
systemd-sysvinit-249.16-alt2.noarch Пт 19 мая 2023 13:16:52 | |||
systemd-oomd-defaults-249.16-alt2.noarch Пт 19 мая 2023 13:16:52 | |||
systemd-analyze-249.16-alt2.x86_64 Пт 19 мая 2023 13:16:52 | |||
systemd-249.16-alt2.x86_64 Пт 19 мая 2023 13:16:52 | |||
qemu-guest-agent-8.0.0-alt1.p10.x86_64 Пт 19 мая 2023 13:16:52 | |||
python3-module-libvirt-9.3.0-alt1.x86_64 Пт 19 мая 2023 13:16:52 | |||
openssl-gost-engine-1.1.0.3.0.255.ge3af41d.p1-alt4.x86_64 Пт 19 мая 2023 13:16:52 | |||
i586-libudev1-249.16-alt2.i586 Пт 19 мая 2023 13:16:52 | |||
i586-libsystemd-249.16-alt2.i586 Пт 19 мая 2023 13:16:52 | |||
i586-libnss-myhostname-249.16-alt2.i586 Пт 19 мая 2023 13:16:52 | |||
systemd-utils-filetriggers-249.16-alt2.noarch Пт 19 мая 2023 13:16:51 | |||
systemd-tmpfiles-common-249.16-alt2.noarch Пт 19 мая 2023 13:16:51 | |||
lines 1-14 | |||
</source> | |||
Прервать программу можно клавишами Ctrl+Z. | |||
===Показать последние 5 пунктов=== | |||
<source lang="bash"> | |||
# rpm -qa --last | head -n5 | |||
</source> | |||
{{Note|здесь вместо 5 можете подставить любое свое число}} | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -qa --last | head -n5 | |||
usbids-20230519-alt1.noarch Вт 23 мая 2023 14:00:45 | |||
mytetra-1.42.2-alt2.x86_64 Вт 23 мая 2023 12:35:25 | |||
pciids-20230519-alt1.noarch Вт 23 мая 2023 10:56:58 | |||
alterator-auth-0.44.2-alt1.x86_64 Пн 22 мая 2023 17:41:40 | |||
tuxcmd-0.6.70-alt2.x86_64 Пн 22 мая 2023 16:59:33 | |||
</source> | |||
==Проверка целостности установленных пакетов== | |||
===Проверка целостности указанной программы=== | |||
Чтобы проверить целостность программы, используйте следующую команду: | |||
<source lang="bash"> | |||
# rpm -Vf /путь/к/программе | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -Vf /bin/mount | |||
.M....... /bin/mount | |||
.M....... /bin/umount | |||
</source> | |||
===Проверка целостности всех установленных пакетов=== | |||
<source lang="bash"> | |||
# rpm -Va | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -Va | |||
......G.. /usr/bin/fusermount3 | |||
.M....G.. /var/cache/man | |||
S.5....T. c /etc/gtk-2.0/gtkrc | |||
........P /usr/lib/kf5/bin/kwin_wayland | |||
missing /var/lock/sane | |||
.M....G.. /usr/bin/mtr | |||
S.5....T. c /etc/skel.be_BY.CP1251/.xprofile | |||
S.5....T. c /etc/skel.de_DE/.xprofile | |||
... | |||
</source> | |||
==Зависимости пакетов== | |||
===От каких пакетов зависит указанный пакет=== | |||
Чтобы узнать, от каких пакетов зависит указанный пакет используйте конструкцию: | |||
<source lang="bash"> | |||
# rpm -q --requires пакет | |||
</source> | |||
Пример: | |||
<source lang="bash"> | |||
# rpm -q --requires mytetra | |||
/lib64/ld-linux-x86-64.so.2 | |||
libQt5Core.so.5()(64bit) | |||
rpmlib(SetVersions) | |||
libQt5Core.so.5(Qt_5)(64bit) | |||
libQt5Core.so.5(Qt_5.15)(64bit) | |||
libQt5Gui.so.5()(64bit) | |||
libQt5Gui.so.5(Qt_5)(64bit) | |||
libQt5Network.so.5()(64bit) | |||
libQt5Network.so.5(Qt_5)(64bit) | |||
libQt5PrintSupport.so.5()(64bit) | |||
libQt5PrintSupport.so.5(Qt_5)(64bit) | |||
libQt5Widgets.so.5()(64bit) | |||
libQt5Widgets.so.5(Qt_5)(64bit) | |||
libQt5Xml.so.5()(64bit) >= | |||
libQt5Xml.so.5(Qt_5)(64bit) | |||
libc.so.6(GLIBC_2.14)(64bit) | |||
libc.so.6(GLIBC_2.2.5)(64bit) | |||
libc.so.6(GLIBC_2.3.4)(64bit) | |||
libc.so.6(GLIBC_2.4)(64bit) | |||
libgcc_s.so.1(GCC_3.0)(64bit) | |||
libpthread.so.0(GLIBC_2.2.5)(64bit) | |||
libstdc++.so.6(CXXABI_1.3)(64bit) | |||
libstdc++.so.6(GLIBCXX_3.4)(64bit) | |||
libstdc++.so.6(GLIBCXX_3.4.14)(64bit) | |||
rtld(GNU_HASH) | |||
rpmlib(PayloadIsLzma) | |||
</source> | |||
===Какие из установленных пакетов зависят от указанного=== | |||
Чтобы узнать, какие установленные пакеты зависят от указанного, используйте следующую конструкцию: | |||
<source lang="bash"> | |||
# rpm -q --whatrequires пакет | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -q --whatrequires bash | |||
bash-completion-2.11-alt1.git.157.g59d2322e.noarch | |||
eepm-3.28.1-alt1.noarch | |||
systemd-249.16-alt2.x86_64 | |||
rpm-build-4.0.4-alt170.1.x86_64 | |||
basesystem-sisyphus-alt23.noarch | |||
plasma5-desktop-5.27.4-alt3.x86_64 | |||
gdb-10.1-alt1.x86_64 | |||
make-initrd-2.31.0-alt4.x86_64 | |||
</source> | |||
===Какие зависимости предоставляет указанный пакет=== | |||
Чтобы узнать, какие зависимости предоставляет указанный пакет, используйте следующую конструкцию: | |||
<source lang="bash"> | |||
# rpm -q --whatprovides пакет | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -q --whatprovides bash | |||
bash-4.4.23-alt1.noarch | |||
</source> | |||
==Информация о пакетах== | |||
===Вывод подробной информации об уже установленном пакете=== | |||
Чтобы получить информацию об уже установленном пакете, используйте команду: | |||
<source lang="bash"> | |||
# rpm -qi bash | |||
</source> | |||
Обратите внимание, что в ней указывается пакет из списка уже установленных пакетов из системы. | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -qi bash | |||
Name : bash | |||
Version : 4.4.23 | |||
Release : alt1 | |||
DistTag : sisyphus+221902.500.4.1 | |||
Architecture: noarch | |||
Install Date: Ср 17 мая 2023 17:44:51 | |||
Group : Shells | |||
Size : 0 | |||
License : None | |||
Signature : DSA/SHA1, Вт 19 фев 2019 17:40:44, Key ID 95c584d5ae4ae412 | |||
Source RPM : bash-defaults-4.4.23-alt1.src.rpm | |||
Build Date : Вт 19 фев 2019 17:40:42 | |||
Build Host : ldv-sisyphus.hasher.altlinux.org | |||
Relocations : (not relocatable) | |||
Packager : Dmitry V. Levin <ldv@altlinux.org> | |||
Vendor : ALT Linux Team | |||
Summary : The GNU Bourne Again SHell (/bin/bash) | |||
Description : | |||
This package provides default setup for the GNU Bourne Again SHell (/bin/bash). | |||
</source> | |||
===Вывод подробной информации о ещё не установленном пакете=== | |||
Чтобы получить информацию о неустановленном пакете используйте следующую команду. | |||
Обратите внимание, что в ней указывается файл пакета rpm расположенный на диске. | |||
<source lang="bash"> | |||
# rpm -qip /путь/к/пакету/foo-1.0-i586.rpm | |||
</source> | |||
Пример выполнения: | |||
<source lang="bash"> | |||
# rpm -qip /home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm | |||
Name : boswars | |||
Version : 2.7 | |||
Release : alt1_24.svn160110 | |||
DistTag : sisyphus+264006.100.1.2 | |||
Architecture: x86_64 | |||
Install Date: (not installed) | |||
Group : Games/Other | |||
Size : 91808512 | |||
License : GPLv2 | |||
Signature : DSA/SHA1, Сб 26 дек 2020 20:16:37, Key ID 95c584d5ae4ae412 | |||
Source RPM : boswars-2.7-alt1_24.svn160110.src.rpm | |||
Build Date : Сб 26 дек 2020 20:16:05 | |||
Build Host : viy-sisyphus.hasher.altlinux.org | |||
Relocations : (not relocatable) | |||
Packager : Igor Vlasenko <viy@altlinux.ru> | |||
Vendor : ALT Linux Team | |||
URL : http://www.boswars.org/ | |||
Summary : Bos Wars is a futuristic real-time strategy game | |||
Description : | |||
Bos Wars is a futuristic real-time strategy game. It is possible to play | |||
against human opponents over LAN, internet, or against the computer. | |||
Bos Wars aims to create a completly original and fun open source RTS game. | |||
</source> | |||
==Восстановление поврежденной БД RPM== | |||
Иногда, например из-за зависания компьютера или отключения электричества при работе RPM с пакетами (установка, удаление, обновление и пр.) база данных, содержащая информацию об установленных пакетах повреждается и пакетный менеджер может вообще не заработать и будет выдавать ошибку о поврежденной БД. | |||
Типа такой: | |||
<source lang="bash"> | |||
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery | |||
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery | |||
error: rpmdb: BDB1581 File handles still open at environment close | |||
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.001 | |||
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.002 | |||
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.003 | |||
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Packages | |||
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery | |||
error: db5 error(-30973) from dbenv->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery | |||
</source> | |||
Несмотря на критичность, данная проблема решается довольно просто. | |||
Первым делом мы очищаем старую базу данных: | |||
<source lang="bash"> | |||
# rm -f /var/lib/rpm/__db* | |||
</source> | |||
А после, генерируем новую заново: | |||
<source lang="bash"> | |||
# rpm -vv --rebuilddb | |||
</source> | |||
После генерации попробуйте получить список пакетов: | |||
<source lang="bash"> | |||
# rpm -qa | |||
</source> | |||
Должен вывестись список установленных пакетов. | |||
==Дополнительно== | |||
===Проверить цифровые подписи указанного пакета=== | |||
<source lang="bash"> | |||
# rpm --checksig foo-1.0-i586.rpm | |||
</source> | |||
Пример выполнения команды: | |||
<source lang="bash"> | |||
# rpm --checksig /home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm | |||
/home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm: ((SHA1) DSA) sha1 md5 (GPG) НЕ ОК (ОТСУТСТВУЮТ КЛЮЧИ: (SHA1) DSA#ae4ae412 GPG#ae4ae412) | |||
</source> | |||
===Вывод текущей конфигурации RPM=== | |||
<source lang="bash"> | |||
# rpm --showrc | |||
</source> | |||
Вы получите длинную простыню конфигурации. | |||
===Получение справки по другим возможностям и опциям=== | |||
<source lang="bash"> | |||
# rpm --help | |||
$ man rpm | |||
</source> | |||
===Ядра и их модули=== | |||
==== Как узнать версию текущего ядра? ==== | |||
<source lang="bash"> | |||
$ uname -r | |||
4.9.131-std-def-alt0.M80P.1 | |||
</source> | |||
====Как посмотреть установленные пакеты с модулями ядра?==== | |||
<source lang="bash"> | |||
$ rpm -qa | grep -E '^kernel\-(image|modules)\-' | |||
kernel-modules-bcmwl-std-def-6.30.223.248-alt13.264579.0.M80P.1 | |||
kernel-modules-virtualbox-std-def-5.1.30-alt2.264579.0.M80P.1 | |||
kernel-modules-zfs-std-def-0.7.9-alt1.264579.0.M80P.1 | |||
kernel-image-std-def-4.9.131-alt0.M80P.1 | |||
kernel-modules-kvm-std-def-4.9.131-alt0.M80P.1 | |||
kernel-modules-staging-std-def-4.9.131-alt0.M80P.1 | |||
kernel-modules-drm-std-def-4.9.131-alt0.M80P.1 | |||
kernel-modules-v4l-std-def-4.9.131-alt0.M80P.1 | |||
</source> | |||
==== Сопоставление модулей ядра файлам и пакетам ==== | |||
Какие модули ядра сейчас используются/загружены? | |||
<source lang="bash"> | |||
# lspci -k | |||
</source> | |||
{|class="mw-collapsible mw-collapsed" | |||
!Будет выведен следующий список: | |||
|- | |||
|<source lang="bash"> | |||
# lspci -k | |||
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne Root Complex | |||
Subsystem: Lenovo Device 3831 | |||
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne IOMMU | |||
Subsystem: Lenovo Device 382d | |||
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge | |||
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge | |||
00:02.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge | |||
Kernel driver in use: pcieport | |||
00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge | |||
Kernel driver in use: pcieport | |||
00:02.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge | |||
Kernel driver in use: pcieport | |||
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge | |||
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus | |||
Kernel driver in use: pcieport | |||
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus | |||
Kernel driver in use: pcieport | |||
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 51) | |||
Subsystem: Lenovo Device 3868 | |||
Kernel driver in use: piix4_smbus | |||
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51) | |||
Subsystem: Lenovo Device 3856 | |||
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 0 | |||
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 1 | |||
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 2 | |||
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 3 | |||
Kernel driver in use: k10temp | |||
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 4 | |||
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 5 | |||
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 6 | |||
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 7 | |||
01:00.0 SD Host controller: O2 Micro, Inc. SD/MMC Card Reader Controller (rev 01) | |||
Subsystem: Lenovo Device 3877 | |||
Kernel driver in use: sdhci-pci | |||
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device b852 | |||
Subsystem: Lenovo Device 4853 | |||
Kernel driver in use: rtw89_8852be | |||
03:00.0 Non-Volatile memory controller: Intel Corporation Device f1aa (rev 03) | |||
Subsystem: Intel Corporation Device 390f | |||
Kernel driver in use: nvme | |||
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Barcelo (rev c2) | |||
Subsystem: Lenovo Device 3801 | |||
Kernel driver in use: amdgpu | |||
04:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller | |||
Subsystem: Lenovo Device 382e | |||
Kernel driver in use: snd_hda_intel | |||
04:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor | |||
Subsystem: Lenovo Device 384a | |||
Kernel driver in use: ccp | |||
04:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 | |||
Subsystem: Lenovo Device 3860 | |||
Kernel driver in use: xhci_hcd | |||
04:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 | |||
Subsystem: Lenovo Device 3860 | |||
Kernel driver in use: xhci_hcd | |||
04:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor (rev 01) | |||
Subsystem: Lenovo Device 3853 | |||
04:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller | |||
Subsystem: Lenovo Device 3851 | |||
Kernel driver in use: snd_hda_intel | |||
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81) | |||
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] | |||
Kernel driver in use: ahci | |||
05:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81) | |||
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] | |||
Kernel driver in use: ahci | |||
</source> | |||
|} | |||
Смотрите у нужного устройства строчку | |||
<source lang="bash"> | |||
Kernel driver in use | |||
</source> | |||
Например: | |||
<source lang="bash"> | |||
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81) | |||
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] | |||
Kernel driver in use: ahci | |||
</source> | |||
Здесь строчка: | |||
<source lang="bash"> | |||
Kernel driver in use: ahci | |||
</source> | |||
Чтобы узнать расположение модуля ядра введите: | |||
<source lang="bash"> | |||
# modinfo ahci | head -n1 | |||
</source> | |||
Вывод будет, приблизительно, таким: | |||
<source lang="bash"> | |||
# modinfo ahci | head -n1 | |||
filename: /lib/modules/6.1.28-un-def-alt1/kernel/drivers/ata/ahci.ko | |||
</source> | |||
К какому пакету относится модуль ядра? | |||
<source lang="bash"> | |||
# rpm -qf $(modinfo ahci | head -n1 | awk '{print $2}') | |||
kernel-image-un-def-6.1.28-alt1.x86_64 | |||
</source> | |||
ИЛИ | |||
<source lang="bash"> | |||
# rpm -qf /lib/modules/6.1.28-un-def-alt1/kernel/drivers/ata/ahci.ko | |||
kernel-image-un-def-6.1.28-alt1.x86_64 | |||
</source> | |||
Цель достигнута. | |||
{{Note|В предпоследней команде мы взяли из вывода '''modinfo''' первую строку ('''head -n1''') и отщипнули от неё второе по счёту поле ('''awk '{print $2}'''') с полным путём к файлу модуля. Этот путь к файлу мы передали в качестве параметра команде '''rpm'''. В данном случае нам сообщили, что модуль '''ahci''' входит в пакет самого ядра. Но далеко не всегда это так и если, например, не работает сетевая карта, возможно, в системе просто не установлен пакет с нужным модулем.}} | |||
<noinclude> | |||
[[Категория:RPM]] | |||
{{Category navigation|title=Управление пакетами|category=Управление пакетами|sortkey=*}} | |||
</noinclude> | |||
[[Категория:Управление ПО]] |
Текущая версия от 13:18, 4 мая 2024
RPM - система управления пакетами в дистрибутивах Linux.
Установка пакета из файла
Для установки программы из пакета (например, которой нет в репозитории), воспользуйтесь следующей конструкцией:
# rpm -i package.rpm
где package.rpm - нужный Вам файл.
Пример выполнения команды:
[root@comp-alt-petr]# rpm -i mytetra_1.42.2-alt2.rpm
В конце команды Вы можете указать дополнительные опции:
- --nodeps не проверять зависимости пакета
- --replacepkgs или --reinstall переустановить пакет
Подробный вывод
Для того, чтобы отображался прогресс установки, используйте дополнительные параметры -v и -h.
- -v - выводить более детальные сообщения
- -h - выводить "#" по мере установки пакета (используется с -v)
# rpm -ivh package.rpm
Пример выполнения команды:
# rpm -ivh mytetra_1.42.2-alt2.rpm
Подготовка... #################################################################################################### [100%]
Обновление / установка...
1: mytetra-1.42.2-alt2 #################################################################################################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Принудительная установка старой версии пакета
Следующая команда заменит или установит пакет независимо от наличия и версий пакетов, вплоть до понижения версии.
# rpm -Uvh --oldpackage foo-1.0-i586.rpm
Принудительная установка без удовлетворения зависимостей
# rpm -Uvh --nodeps foo-1.0-i586.rpm
Обновление пакета
Если у Вас пакет с более свежей версией, чем та, что установлена в системе, то Вы можете обновить его двумя способами:
С принудительной установкой
Пакет будет обновлён указанным. Если он не стоит в системе, то будет установлен.
# rpm -Uvh foo-1.0-i586.rpm
Пример выполнения команды:
# rpm -Uvh usbids-20230519-alt1.noarch.rpm
Подготовка... #################################################################################################### [100%]
Обновление / установка...
1: usbids-20230519-alt1 #################################################################################################### [ 50%]
Очистка / удаление...
2: usbids-20230428-alt1 #################################################################################################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Без принудительной установки
Пакет будет обновлён указанным. Если он не стоит в системе, то он не будет установлен.
# rpm -Fvh boswars-2.7-alt1_24.svn160110.x86_64.rpm
Команда не подробная.
Удаление пакета
# rpm -e package
Удаление пакета без учёта зависимых от него пакетов
# rpm -e --nodeps package
Узнать полное имя пакета
Обычно, из Synaptic или apt пакет устанавливается коротким именем. Чтобы узнать его полное имя - архитектуру, версию и пр., введите следующую команду:
# rpm -qa пакет
Пример:
[root@comp-alt-petr ~]# rpm -qa supertuxkart
supertuxkart-1.4-alt1.x86_64
Найти пакет по части имени
Указав специальной командой часть названия пакета, можно найти все пакеты содержащие эту фразу.
# rpm -qa | grep часть_названия
Пример:
[root@comp-alt-petr ~]# rpm -qa | grep tux
supertuxkart-data-1.4-alt1.noarch
tuxcmd-0.6.70-alt2.x86_64
supertux2-0.6.3-alt2.x86_64
supertuxkart-1.4-alt1.x86_64
supertux2-data-0.6.3-alt2.noarch
Узнать пакет по файлу
Если у Вас есть файл в системе, но вы не знаете, к какому пакету он относится, это можно разрешить с помощью команды whereis:
[root@comp-alt-petr ~]# whereis bash
bash: /bin/bash /usr/lib/bash /usr/share/man/man1/bash.1.xz /usr/share/info/bash.info.xz
А потом, указав путь, использовать следующую команду:
[root@comp-alt-petr ~]# rpm -qf /usr/share/man/man1/bash.1.xz
bash-4.4.23-alt1.noarch
Если это исполняемый файл, сначала нужно найти, где он находится с помощью команды which.
[root@comp-alt-petr ~]# which kpat
/usr/lib/kf5/bin/kpat
А потом, указав путь, использовать следующую команду:
[root@comp-alt-petr ~]# rpm -qf /usr/lib/kf5/bin/kpat
kde5-kpat-22.12.3-alt1.x86_64
Так же в качестве аргумента для параметра rpm -qf можно сразу указать команду, например:
[root@comp-alt-petr ~]# rpm -qf $(which kpat)
kde5-kpat-22.12.3-alt1.x86_64
Вывести список всех установленных пакетов с номерами версий и релизов
Чтобы вывести список всех установленных пакетов, используйте следующую конструкцию:
# rpm -qa
Дополнительные параметры
Чтобы вывести список построчно, укажите параметр less:
# rpm -qa | less
Чтобы вывести список в алфавитном порядке, укажите параметр sort:
# rpm -qa | sort
Чтобы использовать оба параметра, укажите их следующим образом:
# rpm -qa | sort | less
Чтобы вывести только названия пакетов, без версии, используйте команду:
# rpm -qa --qf '%{NAME}\n' | sort
Проверить, установлен ли пакет
Чтобы проверить, установлен ли пакет, введите следующую команду:
# rpm -q 'Имя пакета'
Пример:
# rpm -q 0ad
0ad-0.0.26-alt0_1_alpha.p10.x86_64
# rpm -q boswars
пакет boswars не установлен
Вывести все пакеты определенной категории
Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!):
# rpm -qg
Нажмите Tab
И после qg введите одну из отобразившихся категорий:
# rpm -qg
Accessibility Development/Python Networking/File transfer System/Configuration/Networking
Archiving/Backup Development/Python3 Networking/Instant messaging System/Configuration/Other
Archiving/Cd burning Development/Scheme Networking/Mail System/Configuration/Packaging
Archiving/Compression Development/Tcl Networking/News System/Configuration/Printing
Archiving/Other Development/Tools Networking/Other System/Fonts/True type
Communications Documentation Networking/Remote access System/Fonts/Type1
Converted/ Editors Networking/WWW System/Fonts/X11 bitmap
Databases Education Office System/Internationalization
Development/C Emulators Other System/Kernel and hardware
Development/C++ File tools Publishing System/Legacy libraries
Development/Databases Games/Arcade Sciences/Geosciences System/Libraries
Development/Debug Games/Strategy Sciences/Mathematics System/Servers
Development/Debuggers Graphical desktop/GNOME Security/Networking System/X11
Development/Java Graphical desktop/KDE Shells System/XFree86
Development/KDE and QT Graphical desktop/Other Sound Terminals
Development/Kernel Graphics System/Base Text tools
Development/Other Monitoring System/Configuration/Boot and Init Video
Development/Perl Networking/DNS System/Configuration/Hardware
# rpm -qg Graphics
kde5-kolourpaint-22.12.3-alt1.x86_64
kde5-kruler-22.12.3-alt1.x86_64
tesseract-langpack-ru-4.1.0-alt1.noarch
iscan-free-2.30.4-alt2.x86_64
kde5-printing-22.12.1-alt1.x86_64
tesseract-5.2.0-alt1.x86_64
kde5-scanning-22.12.1-alt1.x86_64
sane-1.2.1-alt1.x86_64
icon-theme-oxygen-5.104.0-alt1.noarch
icon-theme-breeze-5.104.0-alt1.noarch
xsane-doc-0.999-alt6.2.noarch
sane-airscan-0.99.25-alt1.x86_64
xsane-doc-ru-0.999-alt1.noarch
colord-1.4.6-alt1.x86_64
tesseract-langpack-en-4.1.0-alt1.noarch
libexiv2-0.27.5-alt1.x86_64
sane-doc-1.2.1-alt1.noarch
iscan-data-1.39.1-alt1.noarch
branding-xalt-kworkstation-graphics-10.1.1-alt2.noarch
netpbm-10.85.04-alt1.x86_64
xsane-0.999-alt6.2.x86_64
mypaint-brushes1.0-1.3.1-alt1.noarch
icc-profiles-1.0.1-alt1.noarch
gimp-2.10.30-alt1.x86_64
optipng-0.7.7-alt1.x86_64
libjpeg-utils-2.0.6-alt3.x86_64
ImageMagick-tools-6.9.12.64-alt1.x86_64
Определить имя пакета по rpm-файлу
Если у Вас какой-то rpm-файл с непонятным именем, узнать, что именно он установит, можно следующей командой:
# rpm -qp "путь к файлу"
Например, у нас следующая ситуация. Пакет содержит в себе игру supertuxkart. Кто-то его переименовал в 0ad (или в любое непонятное имя) и предлагает нам его установить как эту игру. Чтобы узнать, какое имя на самом деле было прописано при сборке, выполните следующую команду:
# rpm -qp /home/petr/0ad.rpm
supertuxkart-1.4-alt1.x86_64
Определить место хранения документации пакета
Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет.
# rpm -qd mytetra
/usr/share/doc/mytetra-1.42.2/readme.txt
Список файлов установленного пакета
Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой:
# rpm -ql имя_пакета
Пример использования:
# rpm -ql mytetra
/usr/bin/mytetra
/usr/share/applications/mytetra.desktop
/usr/share/doc/mytetra-1.42.2
/usr/share/doc/mytetra-1.42.2/readme.txt
/usr/share/icons/hicolor/48x48/apps/mytetra.png
Если Вы попробуете указать неустановленный rpm-пакет, то получите ошибку:
# rpm -ql /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.rpm
пакет /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.rpm не установлен
Где искать исполняемые файлы этого пакета?
Чтобы найти исполняемые файлы указанного пакета, можно воспользоваться следующей конструкцией:
# rpm -ql имя_пакета | grep bin/
Пример использования:
# rpm -ql bash | grep bin/
/bin/bash
/bin/bash2
/bin/rbash
/usr/bin/bashbug
Что отвечает за запуск служб в этом пакете?
Чтобы выяснить, какие части пакета отвечают за запуск его служб, используйте конструкцию
# rpm -ql имя_пакета | grep /etc/rc.d/init.d/
если используется SysVinit.
Пример:
# rpm -ql udev | grep /etc/rc.d/init.d/
/etc/rc.d/init.d/udevd
Или
# rpm -ql имя_пакета | grep /lib/systemd/system/
если используется Systemd.
Пример:
# rpm -ql udev | grep /lib/systemd/system/
/lib/systemd/system/initrd-udevadm-cleanup-db.service
/lib/systemd/system/sockets.target.wants/systemd-udevd-control.socket
/lib/systemd/system/sockets.target.wants/systemd-udevd-kernel.socket
/lib/systemd/system/sysinit.target.wants/systemd-udev-trigger.service
/lib/systemd/system/sysinit.target.wants/systemd-udevd.service
/lib/systemd/system/systemd-udev-settle.service
/lib/systemd/system/systemd-udev-trigger.service
/lib/systemd/system/systemd-udev-trigger.service.d
/lib/systemd/system/systemd-udev-trigger.service.d/systemd-udev-trigger-no-reload.conf
/lib/systemd/system/systemd-udevd-control.socket
/lib/systemd/system/systemd-udevd-kernel.socket
/lib/systemd/system/systemd-udevd.service
/lib/systemd/system/udevd.service
Список файлов неустановленного пакета
Чтобы узнать содержимое неустановленного rpm-пакета, используйте команду:
# rpm -qlp имя_пакета.rpm
Пример выполнения команды:
# rpm -qlp xkill_1.0.5-alt1.rpm
/usr/bin/xkill
/usr/share/applications/xkill.desktop
/usr/share/icons/hicolor/16x16/apps/xkill.xpm
/usr/share/icons/hicolor/32x32/apps/xkill.xpm
/usr/share/icons/hicolor/48x48/apps/xkill.xpm
/usr/share/man/man1/xkill.1.xz
Список конфигурационных файлов пакета
Чтобы вывести все файлы с настройками, входящими в пакет, выполните следующую команду:
# rpm -qc bash
/etc/bashrc
/etc/bashrc.d/alias.sh
Так же, можно использовать конструкцию с командой для списка файлов установленного пакета:
# rpm -ql bash | grep /etc/
/etc/bashrc
/etc/bashrc.d
/etc/bashrc.d/alias.sh
Состояние установленных файлов
Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду:
# rpm -qs mytetra
нормальный /usr/bin/mytetra
нормальный /usr/share/applications/mytetra.desktop
нормальный /usr/share/doc/mytetra-1.42.2
нормальный /usr/share/doc/mytetra-1.42.2/readme.txt
нормальный /usr/share/icons/hicolor/48x48/apps/mytetra.png
Просмотр списка последних установленных пакетов
Чтобы узнать какие последние пакеты были установлены, выполните следующую команду:
# rpm -qa -last
Пример выполнения:
# rpm -qa -last
apf-0.3-alt2.noarch Пн 22 мая 2023 15:35:23
NetworkManager-openvpn-gtk-common-1.10.3-alt0.p10.1.ge1c5978.x86_64 Пн 22 мая 2023 14:34:13
NetworkManager-openvpn-gtk3-1.10.3-alt0.p10.1.ge1c5978.x86_64 Пн 22 мая 2023 14:34:13
xkill-1.0.5-alt1.x86_64 Пн 22 мая 2023 14:24:44
mate-applets-1.26.1-alt2.x86_64 Пн 22 мая 2023 11:26:35
libgucharmap-14.0.1-alt1.x86_64 Пн 22 мая 2023 11:26:34
NetworkManager-tui-1.40.18-alt1.p10.1.x86_64 Пн 22 мая 2023 11:22:50
libnewt52-0.52.16-alt1.x86_64 Пн 22 мая 2023 11:22:50
...
Сокращенный прокручивающийся вариант
Чтобы список прокручивался, укажите параметр less:
# rpm -qa -last | less
Пример выполнения:
# rpm -qa -last | less
LibreOffice-still-integrated-7.3.7.2-alt2.x86_64 Пт 19 мая 2023 13:20:01
LibreOffice-still-common-7.3.7.2-alt2.x86_64 Пт 19 мая 2023 13:20:01
systemd-sysvinit-249.16-alt2.noarch Пт 19 мая 2023 13:16:52
systemd-oomd-defaults-249.16-alt2.noarch Пт 19 мая 2023 13:16:52
systemd-analyze-249.16-alt2.x86_64 Пт 19 мая 2023 13:16:52
systemd-249.16-alt2.x86_64 Пт 19 мая 2023 13:16:52
qemu-guest-agent-8.0.0-alt1.p10.x86_64 Пт 19 мая 2023 13:16:52
python3-module-libvirt-9.3.0-alt1.x86_64 Пт 19 мая 2023 13:16:52
openssl-gost-engine-1.1.0.3.0.255.ge3af41d.p1-alt4.x86_64 Пт 19 мая 2023 13:16:52
i586-libudev1-249.16-alt2.i586 Пт 19 мая 2023 13:16:52
i586-libsystemd-249.16-alt2.i586 Пт 19 мая 2023 13:16:52
i586-libnss-myhostname-249.16-alt2.i586 Пт 19 мая 2023 13:16:52
systemd-utils-filetriggers-249.16-alt2.noarch Пт 19 мая 2023 13:16:51
systemd-tmpfiles-common-249.16-alt2.noarch Пт 19 мая 2023 13:16:51
lines 1-14
Прервать программу можно клавишами Ctrl+Z.
Показать последние 5 пунктов
# rpm -qa --last | head -n5
Пример выполнения:
# rpm -qa --last | head -n5
usbids-20230519-alt1.noarch Вт 23 мая 2023 14:00:45
mytetra-1.42.2-alt2.x86_64 Вт 23 мая 2023 12:35:25
pciids-20230519-alt1.noarch Вт 23 мая 2023 10:56:58
alterator-auth-0.44.2-alt1.x86_64 Пн 22 мая 2023 17:41:40
tuxcmd-0.6.70-alt2.x86_64 Пн 22 мая 2023 16:59:33
Проверка целостности установленных пакетов
Проверка целостности указанной программы
Чтобы проверить целостность программы, используйте следующую команду:
# rpm -Vf /путь/к/программе
Пример выполнения:
# rpm -Vf /bin/mount
.M....... /bin/mount
.M....... /bin/umount
Проверка целостности всех установленных пакетов
# rpm -Va
Пример выполнения:
# rpm -Va
......G.. /usr/bin/fusermount3
.M....G.. /var/cache/man
S.5....T. c /etc/gtk-2.0/gtkrc
........P /usr/lib/kf5/bin/kwin_wayland
missing /var/lock/sane
.M....G.. /usr/bin/mtr
S.5....T. c /etc/skel.be_BY.CP1251/.xprofile
S.5....T. c /etc/skel.de_DE/.xprofile
...
Зависимости пакетов
От каких пакетов зависит указанный пакет
Чтобы узнать, от каких пакетов зависит указанный пакет используйте конструкцию:
# rpm -q --requires пакет
Пример:
# rpm -q --requires mytetra
/lib64/ld-linux-x86-64.so.2
libQt5Core.so.5()(64bit)
rpmlib(SetVersions)
libQt5Core.so.5(Qt_5)(64bit)
libQt5Core.so.5(Qt_5.15)(64bit)
libQt5Gui.so.5()(64bit)
libQt5Gui.so.5(Qt_5)(64bit)
libQt5Network.so.5()(64bit)
libQt5Network.so.5(Qt_5)(64bit)
libQt5PrintSupport.so.5()(64bit)
libQt5PrintSupport.so.5(Qt_5)(64bit)
libQt5Widgets.so.5()(64bit)
libQt5Widgets.so.5(Qt_5)(64bit)
libQt5Xml.so.5()(64bit) >=
libQt5Xml.so.5(Qt_5)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
rtld(GNU_HASH)
rpmlib(PayloadIsLzma)
Какие из установленных пакетов зависят от указанного
Чтобы узнать, какие установленные пакеты зависят от указанного, используйте следующую конструкцию:
# rpm -q --whatrequires пакет
Пример выполнения:
# rpm -q --whatrequires bash
bash-completion-2.11-alt1.git.157.g59d2322e.noarch
eepm-3.28.1-alt1.noarch
systemd-249.16-alt2.x86_64
rpm-build-4.0.4-alt170.1.x86_64
basesystem-sisyphus-alt23.noarch
plasma5-desktop-5.27.4-alt3.x86_64
gdb-10.1-alt1.x86_64
make-initrd-2.31.0-alt4.x86_64
Какие зависимости предоставляет указанный пакет
Чтобы узнать, какие зависимости предоставляет указанный пакет, используйте следующую конструкцию:
# rpm -q --whatprovides пакет
Пример выполнения:
# rpm -q --whatprovides bash
bash-4.4.23-alt1.noarch
Информация о пакетах
Вывод подробной информации об уже установленном пакете
Чтобы получить информацию об уже установленном пакете, используйте команду:
# rpm -qi bash
Обратите внимание, что в ней указывается пакет из списка уже установленных пакетов из системы.
Пример выполнения:
# rpm -qi bash
Name : bash
Version : 4.4.23
Release : alt1
DistTag : sisyphus+221902.500.4.1
Architecture: noarch
Install Date: Ср 17 мая 2023 17:44:51
Group : Shells
Size : 0
License : None
Signature : DSA/SHA1, Вт 19 фев 2019 17:40:44, Key ID 95c584d5ae4ae412
Source RPM : bash-defaults-4.4.23-alt1.src.rpm
Build Date : Вт 19 фев 2019 17:40:42
Build Host : ldv-sisyphus.hasher.altlinux.org
Relocations : (not relocatable)
Packager : Dmitry V. Levin <ldv@altlinux.org>
Vendor : ALT Linux Team
Summary : The GNU Bourne Again SHell (/bin/bash)
Description :
This package provides default setup for the GNU Bourne Again SHell (/bin/bash).
Вывод подробной информации о ещё не установленном пакете
Чтобы получить информацию о неустановленном пакете используйте следующую команду.
Обратите внимание, что в ней указывается файл пакета rpm расположенный на диске.
# rpm -qip /путь/к/пакету/foo-1.0-i586.rpm
Пример выполнения:
# rpm -qip /home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm
Name : boswars
Version : 2.7
Release : alt1_24.svn160110
DistTag : sisyphus+264006.100.1.2
Architecture: x86_64
Install Date: (not installed)
Group : Games/Other
Size : 91808512
License : GPLv2
Signature : DSA/SHA1, Сб 26 дек 2020 20:16:37, Key ID 95c584d5ae4ae412
Source RPM : boswars-2.7-alt1_24.svn160110.src.rpm
Build Date : Сб 26 дек 2020 20:16:05
Build Host : viy-sisyphus.hasher.altlinux.org
Relocations : (not relocatable)
Packager : Igor Vlasenko <viy@altlinux.ru>
Vendor : ALT Linux Team
URL : http://www.boswars.org/
Summary : Bos Wars is a futuristic real-time strategy game
Description :
Bos Wars is a futuristic real-time strategy game. It is possible to play
against human opponents over LAN, internet, or against the computer.
Bos Wars aims to create a completly original and fun open source RTS game.
Восстановление поврежденной БД RPM
Иногда, например из-за зависания компьютера или отключения электричества при работе RPM с пакетами (установка, удаление, обновление и пр.) база данных, содержащая информацию об установленных пакетах повреждается и пакетный менеджер может вообще не заработать и будет выдавать ошибку о поврежденной БД.
Типа такой:
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB1581 File handles still open at environment close
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.001
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.002
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.003
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Packages
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from dbenv->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
Несмотря на критичность, данная проблема решается довольно просто.
Первым делом мы очищаем старую базу данных:
# rm -f /var/lib/rpm/__db*
А после, генерируем новую заново:
# rpm -vv --rebuilddb
После генерации попробуйте получить список пакетов:
# rpm -qa
Должен вывестись список установленных пакетов.
Дополнительно
Проверить цифровые подписи указанного пакета
# rpm --checksig foo-1.0-i586.rpm
Пример выполнения команды:
# rpm --checksig /home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm
/home/petr/Загрузки/boswars-2.7-alt1_24.svn160110.x86_64.rpm: ((SHA1) DSA) sha1 md5 (GPG) НЕ ОК (ОТСУТСТВУЮТ КЛЮЧИ: (SHA1) DSA#ae4ae412 GPG#ae4ae412)
Вывод текущей конфигурации RPM
# rpm --showrc
Вы получите длинную простыню конфигурации.
Получение справки по другим возможностям и опциям
# rpm --help
$ man rpm
Ядра и их модули
Как узнать версию текущего ядра?
$ uname -r
4.9.131-std-def-alt0.M80P.1
Как посмотреть установленные пакеты с модулями ядра?
$ rpm -qa | grep -E '^kernel\-(image|modules)\-'
kernel-modules-bcmwl-std-def-6.30.223.248-alt13.264579.0.M80P.1
kernel-modules-virtualbox-std-def-5.1.30-alt2.264579.0.M80P.1
kernel-modules-zfs-std-def-0.7.9-alt1.264579.0.M80P.1
kernel-image-std-def-4.9.131-alt0.M80P.1
kernel-modules-kvm-std-def-4.9.131-alt0.M80P.1
kernel-modules-staging-std-def-4.9.131-alt0.M80P.1
kernel-modules-drm-std-def-4.9.131-alt0.M80P.1
kernel-modules-v4l-std-def-4.9.131-alt0.M80P.1
Сопоставление модулей ядра файлам и пакетам
Какие модули ядра сейчас используются/загружены?
# lspci -k
Будет выведен следующий список: |
---|
# lspci -k
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne Root Complex
Subsystem: Lenovo Device 3831
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne IOMMU
Subsystem: Lenovo Device 382d
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:02.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge
Kernel driver in use: pcieport
00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge
Kernel driver in use: pcieport
00:02.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge
Kernel driver in use: pcieport
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
Kernel driver in use: pcieport
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
Kernel driver in use: pcieport
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 51)
Subsystem: Lenovo Device 3868
Kernel driver in use: piix4_smbus
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
Subsystem: Lenovo Device 3856
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 3
Kernel driver in use: k10temp
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 7
01:00.0 SD Host controller: O2 Micro, Inc. SD/MMC Card Reader Controller (rev 01)
Subsystem: Lenovo Device 3877
Kernel driver in use: sdhci-pci
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device b852
Subsystem: Lenovo Device 4853
Kernel driver in use: rtw89_8852be
03:00.0 Non-Volatile memory controller: Intel Corporation Device f1aa (rev 03)
Subsystem: Intel Corporation Device 390f
Kernel driver in use: nvme
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Barcelo (rev c2)
Subsystem: Lenovo Device 3801
Kernel driver in use: amdgpu
04:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller
Subsystem: Lenovo Device 382e
Kernel driver in use: snd_hda_intel
04:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
Subsystem: Lenovo Device 384a
Kernel driver in use: ccp
04:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1
Subsystem: Lenovo Device 3860
Kernel driver in use: xhci_hcd
04:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1
Subsystem: Lenovo Device 3860
Kernel driver in use: xhci_hcd
04:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor (rev 01)
Subsystem: Lenovo Device 3853
04:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller
Subsystem: Lenovo Device 3851
Kernel driver in use: snd_hda_intel
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
Kernel driver in use: ahci
05:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
Kernel driver in use: ahci
|
Смотрите у нужного устройства строчку
Kernel driver in use
Например:
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)
Subsystem: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode]
Kernel driver in use: ahci
Здесь строчка:
Kernel driver in use: ahci
Чтобы узнать расположение модуля ядра введите:
# modinfo ahci | head -n1
Вывод будет, приблизительно, таким:
# modinfo ahci | head -n1
filename: /lib/modules/6.1.28-un-def-alt1/kernel/drivers/ata/ahci.ko
К какому пакету относится модуль ядра?
# rpm -qf $(modinfo ahci | head -n1 | awk '{print $2}')
kernel-image-un-def-6.1.28-alt1.x86_64
ИЛИ
# rpm -qf /lib/modules/6.1.28-un-def-alt1/kernel/drivers/ata/ahci.ko
kernel-image-un-def-6.1.28-alt1.x86_64
Цель достигнута.