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

Материал из ALT Linux Wiki
Строка 30: Строка 30:
[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>



Версия от 14:02, 22 мая 2023

RPM - система управления пакетами, которая устанавливает, обновляет и удаляет программные пакеты в дистрибутивах Linux.

Установка пакета из файла

Примечание: В команде должен быть указан файл пакета или полный путь к нему

Для установки программы из пакета (например, которой нет в репозитории), воспользуйтесь следующей конструкцией:

# rpm -i package.rpm

где package.rpm - нужный Вам файл.

В конце команды Вы можете указать дополнительные опции:

  • --nodeps не проверять зависимости пакета
  • --replacepkgs или --reinstall переустановить пакет

Удаление пакета

Примечание: В команде указывается установленный пакет, который хранится в специальном списке в системе. Файл rpm указывать не нужно.


# rpm -e 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

Узнать пакет по файлу

Если у Вас есть файл в системе, но Вы не знаете, к какому пакету он относится, это можно разрешить следующим способом:

Сначала, если это исполняемый файл, нужно найти, где он находится.

[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 /bin/bash
bash-4.4.23-alt1.noarch
Примечание: Без полного пути команда работать не будет.


Вывести все пакеты определенной категории

Чтобы вывести все установленные пакеты определенной категории, введите команду (с пробелом в конце!):

rpm -qg

Нажмите Tab

И после qg введите одну из отобразившихся категорий:

[root@comp-alt-petr archives]# 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
[root@comp-alt-petr archives]# 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 -qp "путь к файлу"

Пример:

# rpm -qp /home/petr/0ad.rpm 
supertuxkart-1.4-alt1.x86_64

Определить место хранения документации пакета

Часто в пакете поставляется документация. Узнать, где она хранится, можно следующей командой. Указывается не rpm-файл, а установленный пакет.

[root@comp-alt-petr archives]# rpm -qd mytetra
/usr/share/doc/mytetra-1.42.2/readme.txt

Список файлов пакета

Чтобы вывести список файлов, который содержит пакет, воспользуйтесь следующей командой:

[root@comp-alt-petr archives]# 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

Состояние перечисленных файлов

Чтобы узнать состояние перечисленных файлов из установленного пакета, выполните следующую команду:

[root@comp-alt-petr archives]# 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

Просмотр списка последних установленных пакетов

Чтобы узнать какие последние пакеты были установлены, выполните следующую команду:

[root@comp-alt-petr]# rpm -qa -last | less
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

Восстановление поврежденной БД 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

Должен вывестись список установленных пакетов.