QuickStart/PkgManagment
Основы управления пакетами
Почему так важно уметь пользоваться пакетным менеджером?
Чтобы научиться управлять любым дистрибутивом Linux, первым делом необходимо освоить работу с его пакетным менеджером. Пакетный менеджер – самая важная отличительная черта любой Linux-системы, ALT – не исключение. Почему так важно им владеть? Всё просто: 90% ответов на вопросы управления системой даёт пакетный менеджер. За редким исключением практически вся система построена на пакетах, каждый из которых является своего рода архивом файлов. Таким образом, почти все файлы, каталоги и ссылки в системе принадлежат каким-то пакетам.
Какому пакету принадлежит этот файл?
$ rpm -qf /etc/bashrc bash-3.2.57-alt1
То есть, файл /etc/bashrc попал в систему в результате установки пакета bash. В настоящий момент этот пакет установлен (версия 3.2.57, релиз alt1).
Какие файлы входят в этот пакет?
$ rpm -ql bash $ rpm -ql bash-3.2.57 $ rpm -ql bash-3.2.57-alt1
Где искать конфигурационные файлы этого пакета?
$ rpm -ql bash | grep /etc/ /etc/bashrc /etc/bashrc.d /etc/bashrc.d/alias.sh
Оказывается, их всего ДВА! И оба откроют вам тонкости работы с командной строкой, специфичные для дистрибутивов АЛЬТ, поскольку там – принятые сокращения. Так, вы узнаете, что вместо длинного «df -h -x supermount» достаточно скомандовать просто «df». А вместо «ls -lapt» – просто «l».
Где искать исполняемые файлы этого пакета?
$ rpm -ql bash | grep /bin/ /bin/bash /bin/bash2 /bin/rbash /usr/bin/bashbug
Что отвечает за запуск служб в этом пакете?
$ rpm -ql udev | grep /etc/rc.d/init.d/ /etc/rc.d/init.d/udevd $ rpm -ql udev | grep /lib/systemd/system/ …
Где почитать документацию к этому пакету?
$ rpm -ql bash | grep /usr/share/doc … /usr/share/doc/bash-3.2.57/INTRO … $ rpm -ql bash | grep /usr/share/info /usr/share/info/bash.info.xz $ rpm -ql udev | grep man … /usr/share/man/man8/udevd.8.xz $ less /usr/share/doc/bash-3.2.57/INTRO $ info bash $ man 8 udev
Кроме того, документация может быть упакована в отдельный пакет, а этот пакет ещё не установлен. Проверить довольно легко: обычно это такое же имя пакета с допиской «-doc».
Где найти man-страницы на русском языке?
$ apt-cache search man-pages | grep ru man-pages-ru - Русские переводы страниц руководства по ОС GNU/*/Linux man-pages-ru-extra - Дополнительный набор русских переводов страниц руководства по ОС GNU/*/Linux
Как посмотреть подробную информацию о пакете?
# Об уже установленном пакете: $ rpm -qi bash # О возможно ещё не установленном пакете: $ apt-cache show bash
Как найти пакет по имени файла, которого нет в системе?
$ apf search wimlib-imagex wimtools
Но это не единственный способ. И по умолчанию apf не установлен, а после установки требуется его настройка.
...
Пакеты с ядром и модулями
Как посмотреть установленные пакеты с модулями ядра?
# Текущее ядро $ uname -r 4.9.131-std-def-alt0.M80P.1 # Пакеты с модулями ядра $ rpm -qa | grep -E '^kernel\-(image|modules)\-' | grep 'std-def' 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 -nnk … 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31) Subsystem: Intel Corporation Device [8086:2064] Kernel driver in use: e1000e … $ lsmod | grep e1000e e1000e 188416 0 ptp 20480 1 e1000e # Подробная информация о модуле ядра # modinfo e1000e filename: /lib/modules/4.9.131-std-def-alt0.M80P.1/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.gz … # К какому пакету относится модуль ядра? # rpm -qf $(modinfo e1000e | head -n1 | awk '{print $2}') kernel-image-std-def-4.9.131-alt0.M80P.1
В последней команде мы взяли из вывода modinfo первую строку (head -n1) и отщипнули от неё второе по счёту поле (awk '{print $2}') с полным путём к файлу модуля. Этот путь к файлу мы передали в качестве параметра команде rpm. В данном случае нам сообщили, что модуль e1000e входит в пакет самого ядра. Но далеко не всегда это так и если сетевая карта не работает, возможно, в системе просто не установлен пакет с нужным модулем.
Продолжение следует…