Команды RPM: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
м (→‎Удаление пакета: убрал пробел между строк)
 
(не показаны 33 промежуточные версии этого же участника)
Строка 1: Строка 1:
'''RPM''' - система управления пакетами, которая устанавливает, обновляет и удаляет программные пакеты в дистрибутивах Linux.
'''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>


Строка 50: Строка 113:


==Узнать пакет по файлу==
==Узнать пакет по файлу==
Если у Вас есть файл в системе, но Вы не знаете, к какому пакету он относится, это можно разрешить следующим способом:
Если у Вас есть файл в системе, но вы не знаете, к какому пакету он относится, это можно разрешить с помощью команды {{cmd|whereis}}:
 
Сначала, если это исполняемый файл, нужно найти, где он находится.


<source lang="bash">
<source lang="bash">
Строка 59: Строка 120:
</source>
</source>


А потом, выбрав нужный путь использовать следующую команду:
А потом, указав путь, использовать следующую команду:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr ~]# rpm -qf /bin/bash
[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">
<source lang="bash">
Строка 92: Строка 172:
<source lang="bash">
<source lang="bash">
# rpm -qa --qf '%{NAME}\n' | sort
# 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>


Строка 97: Строка 191:
Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!):
Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!):
<source lang="bash">
<source lang="bash">
rpm -qg  
# rpm -qg  
</source>
</source>


Строка 104: Строка 198:
И после qg введите одну из отобразившихся категорий:
И после qg введите одну из отобразившихся категорий:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr archives]# rpm -qg  
# 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
Строка 126: Строка 220:


<source lang="bash">
<source lang="bash">
[root@comp-alt-petr archives]# rpm -qg Graphics
# 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
Строка 156: Строка 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  
Строка 170: Строка 264:
Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет.
Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет.
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr archives]# rpm -qd mytetra
# rpm -qd mytetra
/usr/share/doc/mytetra-1.42.2/readme.txt
/usr/share/doc/mytetra-1.42.2/readme.txt
</source>
</source>
Строка 177: Строка 271:
Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой:
Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr archives]# rpm -ql mytetra
# 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
Строка 187: Строка 285:
Если Вы попробуете указать неустановленный rpm-пакет, то получите ошибку:
Если Вы попробуете указать неустановленный rpm-пакет, то получите ошибку:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr ~]# rpm -ql /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.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 не установлен
пакет /home/petr/libvitastor-blk-0.9.0-alt1.x86_64.rpm не установлен
</source>
</source>


=== ===
=== Где искать исполняемые файлы этого пакета? ===
==== Где искать исполняемые файлы этого пакета? ====
Чтобы найти исполняемые файлы указанного пакета, можно воспользоваться следующей конструкцией:
<source lang="bash">
# rpm -ql имя_пакета | grep bin/
</source>
Пример использования:
<source lang="bash">
<source lang="bash">
$ rpm -ql bash | grep bin/
# rpm -ql bash | grep bin/
/bin/bash
/bin/bash
/bin/bash2
/bin/bash2
Строка 201: Строка 303:
</source>
</source>


==== Что отвечает за запуск служб в этом пакете? ====
=== Что отвечает за запуск служб в этом пакете? ===
Чтобы выяснить, какие части пакета отвечают за запуск его служб, используйте конструкцию
Чтобы выяснить, какие части пакета отвечают за запуск его служб, используйте конструкцию
<source lang="bash">
<source lang="bash">
$ rpm -ql имя_пакета | grep /etc/rc.d/init.d/
# rpm -ql имя_пакета | grep /etc/rc.d/init.d/
</source>
</source>
если используется SysVinit.
если используется SysVinit.
Строка 210: Строка 312:
Пример:
Пример:
<source lang="bash">
<source lang="bash">
$ rpm -ql udev | grep /etc/rc.d/init.d/
# rpm -ql udev | grep /etc/rc.d/init.d/
/etc/rc.d/init.d/udevd
/etc/rc.d/init.d/udevd
</source>
</source>
Строка 216: Строка 318:
Или
Или
<source lang="bash">
<source lang="bash">
$ rpm -ql имя_пакета | grep /lib/systemd/system/
# rpm -ql имя_пакета | grep /lib/systemd/system/
</source>
</source>
если используется Systemd.
если используется Systemd.
Строка 222: Строка 324:
Пример:
Пример:
<source lang="bash">
<source lang="bash">
$ rpm -ql udev | grep /lib/systemd/system/
# rpm -ql udev | grep /lib/systemd/system/
/lib/systemd/system/initrd-udevadm-cleanup-db.service
/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-control.socket
Строка 238: Строка 340:
</source>
</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">
<source lang="bash">
$ rpm -qc bash
# rpm -qc bash
/etc/bashrc
/etc/bashrc
/etc/bashrc.d/alias.sh
/etc/bashrc.d/alias.sh
Строка 249: Строка 368:
Так же, можно использовать конструкцию с командой для списка файлов установленного пакета:
Так же, можно использовать конструкцию с командой для списка файлов установленного пакета:
<source lang="bash">
<source lang="bash">
$ rpm -ql bash | grep /etc/
# rpm -ql bash | grep /etc/
/etc/bashrc
/etc/bashrc
/etc/bashrc.d
/etc/bashrc.d
Строка 255: Строка 374:
</source>
</source>


==Состояние перечисленных файлов==
==Состояние установленных файлов==
Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду:
Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr archives]# rpm -qs mytetra
# rpm -qs mytetra
нормальный    /usr/bin/mytetra
нормальный    /usr/bin/mytetra
нормальный    /usr/share/applications/mytetra.desktop
нормальный    /usr/share/applications/mytetra.desktop
Строка 269: Строка 388:
Чтобы узнать какие последние пакеты были установлены, выполните следующую команду:
Чтобы узнать какие последние пакеты были установлены, выполните следующую команду:
<source lang="bash">
<source lang="bash">
[root@comp-alt-petr]# rpm -qa -last | less
# rpm -qa -last
</source>
 
Пример выполнения:
<source lang="bash">
# rpm -qa -last
apf-0.3-alt2.noarch                          Пн 22 мая 2023 15:35:23
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-gtk-common-1.10.3-alt0.p10.1.ge1c5978.x86_64 Пн 22 мая 2023 14:34:13
Строка 278: Строка 402:
NetworkManager-tui-1.40.18-alt1.p10.1.x86_64  Пн 22 мая 2023 11:22:50
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
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>
</source>


Строка 314: Строка 653:
Должен вывестись список установленных пакетов.
Должен вывестись список установленных пакетов.


==Дополнительно==
===Проверить цифровые подписи указанного пакета===
<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>
<noinclude>
[[Категория:RPM]]
[[Категория:RPM]]
{{Category navigation|title=Управление пакетами|category=Управление пакетами|sortkey=*}}
{{Category navigation|title=Управление пакетами|category=Управление пакетами|sortkey=*}}
</noinclude>
</noinclude>
[[Категория:Управление ПО]]

Текущая версия от 16: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 указывать не нужно.
# 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
Примечание: здесь вместо 5 можете подставить любое свое число


Пример выполнения:

# 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

Цель достигнута.

Примечание: В предпоследней команде мы взяли из вывода modinfo первую строку (head -n1) и отщипнули от неё второе по счёту поле (awk '{print $2}') с полным путём к файлу модуля. Этот путь к файлу мы передали в качестве параметра команде rpm. В данном случае нам сообщили, что модуль ahci входит в пакет самого ядра. Но далеко не всегда это так и если, например, не работает сетевая карта, возможно, в системе просто не установлен пакет с нужным модулем.