Проверка целостности пакетов linux

Управление пакетами

Большинство дистрибутивов Linux поддерживают репозитории совместимого программного обеспечения и ту или иную систему управления процессом установки программ из репозитория — менеджер пакетов. Чаще всего менеджер пакетов делится на две составляющие. Низкоуровневая часть менеджера, управляет локальной базой установленных пакетов. Высокоуровневая часть менеджера умеет вычислять зависимости пакетов между собой, находить необходимые пакеты в репозиториях и скачивать их для локальной установки через низкоуровневую компоненту.

Название дистрибутива: cat /etc/os-release или lsb_release -a

Существует несколько популярных менеджеров пакетов, которые используются большинством дистрибутивов.

Debian и его производные (в частности Ubuntu) используют связку dpkg, apt, aptitude и пакеты в формате DEB. RedHat (CentOS, SciLinux и т.д.) используют rpm, yum и пакеты в формате RPM. ArchLinux использует менеджер pacman.

Программа Alien позволяет конвертировать пакеты RPM в DEB и обратно.

К сожалению, даже использование единой системы управления пакетами не всегда обеспечивает автоматическую переносимость пакетов из дистрибутива в дистрибутив. Разные дистрибутивы могут строить различные схемы зависимостей и установка пакета от «чужого» дистрибутива может привести к конфликтам в версиях используемых библиотек.

Борьба с зависимостями в Debian

При установке kleopatra в Antix Linux выдается ошибка

$sudo apt install kleopatra . Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: kleopatra : Depends: libkf5kcmutils5 (>= 5.2.0+git20141003) but it is not going to be installed Depends: libkf5notifications5 (>= 5.12.0) but it is not going to be installed E: Unable to correct problems, you have held broken packages. 

последовательные попытки ручной установки пакетов по цепочке приводят к

$sudo apt install libpulse-mainloop-glib0 . The following packages have unmet dependencies: libpulse-mainloop-glib0 : Depends: libpulse0 (= 10.0-1+deb9u1) but 10.0-1.0nosystemd1 is to be installed 
apt-get download libpulse-mainloop-glib0 sudo dpkg -i --force-all libpulse-mainloop-glib0_10.0-1+deb9u1_i386.deb sudo vim /var/lib/dpkg/status # Находим зависимости для libpulse-mainloop-glib0 # и удаляем libpulse0 sudo apt-get install kleopatra 

Управление пакетами в Debian — dpkg

Утилита управления пакетами dpkg используется в дистрибутиве Debian, а так же в Ubuntu и многих других. Файлы пакетов имеют расширение .deb

Читайте также:  Kali linux partition resize

Самые важные опции

dpkg -i mc-3.14.deb — установка пакета

dpkg -r mc — удаление пакета с сохранением файлов конфигурации

dpkg —purge mc -полное удаление пакета

dpkg -V mc — проверка целостности установленного пакета

Поисковые запросы

dpkg-query -L mc — список файлов в пакете

dpkg-query -S /etc/mc.ini — поиск пакета, которому принадлежит файл или каталог

Манипуляции с файлом .deb

dpkg-deb —contents mc-3.14.deb — просмотр содержимого

dpkg-deb -x mc-3.14.deb /tmp — извлечение файлов из архива

Управление пакетами в RHEL — rpm

Для установки, удаления и обновления программ в дистрибутивах RHEL, Fedora, Mandriva, AltLinux и некоторых других используется менеджер пакетов rpm. Менеджер пакетов rpm позволяет устанавливать, удалять, верифицировать пакеты соответствующего формата, но не имеет средств для автоматического разрешения зависимостей и поиска в репозиториях. Для автоматизации установки пакетов можно воспользоваться программой yum (Yellowdog Update Manager), которая автоматически разрешает зависимости между пакетами и подгружает необходимые файлы. При необходимости собрать пакет с программой из исходных текстов можно воспользоваться rpmbuild. Для этого необходимо подготовить пакет в формате .src.rpm, включающий исходные тексты программы и .spec файл, описывающий процесс сборки.

Структура пакета

Пакеты именуются по следующей схеме: имя-версия-сборка . Распространяются пакеты в виде файлов, в название которых добавляется .архитектура.rpm . Например, squid-2.5.STABLE8–1.FC3.1.i386.rpm расшифровывается так: программа squid , версия 2.5.STABLE8 , сборка 1.FC3.1 , архитектура i386 (неоптимизированное приложение под i386 совместимые процессоры). Номер сборки может включать название дистрибутива (FC3 в данном случае, а может и не включать). Архитектура noarch означает скрипты, независимые от архитектуры процессора. Файлы .src.rpm содержат исходные тексты программ и устанавливаются особым образом.

Каждый пакет содержит файлы программ, библиотек, конфигурации, документации и пр., упакованные архиватором cpio . Также пакет содержит дополнительные секции:

  • PROVIDE – предоставляемая функциональность (например, “mail server”) плюс файлы пакета;
  • REQUIRENAME – необходимые для корректной работы пакеты, файлы и т.п. (то, что требуется в REQUIRENAME, должно присутствовать в PROVIDE ранее установленных пакетов);
  • OBSOLETES – список пакетов, которые могут быть удалены т.к. их функциональность и/или файлы заменяютя данным пакетом;
  • PREIN, POSTIN – скрипты, выполняемые до установки (например, остановка обновляемого демона), и скрипты, выполняемые после установки (например, правка конфигурационных файлов под конкретную машину);
  • PREUN, POSTUN – скрипты, выполняемые при удалении;
  • SUMMARY – краткое описание пакета;
  • DESCRIPTION – подробное описание.

Кроме того, каждый пакет принадлежит к некоторой группе Интернет, Разработка Программ, Развлечения и т.п. Просмотреть секции rpm файла можно в mc.

В дальнейших описаниях означает имя пакета без i386.rpm (если установлена одна версия программы, то номер версии и сборки тоже можно опустить), а означает имя файла .rpm. В качестве файла можно указывать его URL, например, http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/i386/yum-2.2.0-0.fc3.noarch.rpm

Читайте также:  Linux mint language packs

Установка, удаление, обновление программ

Вспомогательные опции: -v – подробный вывод сообщений, -h – показ индикатора прогресса установки.

rpm -ivh . – установить пакет(ы)
rpm -Uvh . – обновить пакет(ы), если не установлены – установить
rpm -Fvh . – обновить уже установленный(е) пакет(ы)
rpm -e . – удалить пакет(ы)

Просмотр информации об установленных пакетах или файлах rpm

Вспомогательные опции: -a – все установленные пакеты, -p – информация о файле rpm (в примерах будут приведены не везде).

rpm -q . – проверка на наличие установленного пакета и его версии
rpm -qa — список всех пакетов
rpm -qi . – DESCRIPTION пакета
rpm -qip . – DESCRIPTION файла
rpm -qR . – REQUIERS пакета
rpm -ql . – список файлов пакета
rpm -qf . – определение принадлежности произвольного файла к одному из установленных пакетов

Проверка целостности rpm пакета

Файлы, размещенные в rpm пакете, сопровождаются вычисленной контрольной суммой и, как правило, подписаны цифровой подписью сборщика пакета. После установки пакета контрольные суммы и подписи сохраняются в базе установленных пакетов. Эти вспомогательные данные позволяют выполнить несколько проверок, например, можно проверить, что пакет создан доверенным издателем и что файлы пакета не были подменены после установки.

Первая проверка очень важна при скачивании пакетов из интернета, а вторая при подозрении на взлом компьютера.

Публичные ключи для проверки подписи автоматически устанавливаются при установке из дистрибутива, а также полуавтоматически добавляются при установке rpm пакетов для подключения репозиториев yum . Файлы с ключами в CentOS устанавливаются в каталог /etc/pki/rpm-gpg/ . Можно добавить ключ вручную, указав путь к локальному файлу или его url. Файл с ключем должен иметь текстовый формат ‘ASCII armored’

После инсталляции к ключам применимы те же команды, что и к установленным пакетам

rpm -qa gpg-pubkey* – список всех ключей
rpm -qi gpg-pubkey-db42a60e – информация (в том числе имя хозяина) о конкретном ключе
rpm -e gpg-pubkey-db42a60e – удаление ключа

Проверка файла пакета на целостность

Проверка установленного пакета на целостность

После выполнения этой команды будет выдан список изменившихся файлов с указанием, что именно в них поменялось. Информация о типе изменений состоит из строки аббревиатур, включающих:

  • S – размер (Size)
  • M – тип файла или права доступа (Mode)
  • 5 – контрольная сумма (MD5)
  • D – мажор или минор устройства устройства (Device)
  • L – содержимое символической ссылки (Link)
  • U – владелец (User)
  • G – группа (Group)
  • T – время модификации (mTime)
  • P – капабилити (caPabilities)

Извлечение и упаковка файлов rpm пакета

Программа rpm2cpio извлекает файлы из RPM пакета в формате архива cpio . Для распаковки файлов вместе со структурой каталогов используется команда cpio с опциями -i – распаковать и -d – создать каталоги:

Читайте также:  Invalid argument error in linux

Если необходимо сохранить установленный пакет в файл, то можно воспользоваться программой rpmrebuild :

Особые случаи

Eсли пакет уже установлен и его надо переустановить или необходимо понизить версию пакета, то можно к командам инсталяции или обновления добавить опцию —force .

Если установка или удаление пакета формально нарушает зависимости, но известно, что все будет хорошо, то используется опция —nodeps .

Менеджер пакетов Debian — apt

Менеджер пакетов Apt (Advanced Package Tool) надстроен над утилитой dpkg и предназначен для кэширования списков пакетов из локальных и сетевых репозиториев, вычисления зависимостей между пакетами и автоматизированных скачивания и установки пакетов.

Функциональность менеджера пакетов распределена между несколькими командами ( apt-get , apt-cache и др.).

Информационные запросы apt-cache

apt-cache search Midnight — поиск пакета по регулярному выражению в названии или кратком описании

apt-cache show pkg — основные сведения о пакете

Обновление кэша, установка/обновление/удаление пакетов apt-get

apt-get update — обновление кэша

apt-get upgrade — обновление установленных пакетов до последней версии

apt-get install pkg — установка пакета

apt-get remove pkg — удаление пакета

Управление репозиториями

apt-cdrom add — добавить репозиторий на смонтированном CD

Менеджер пакетов RHEL — yum

Основные операции с yum

yum search – поиск текстовой строки в названиях пакетов и комментариях

yum install . – установка пакетов и всего для них необходимого
yum install – установка из локального файла
yum upgrade . – обновление пакетов до самой последней версии
yum downgrade . – откат обновления до определённой версии
yum remove . – удаление пакета. Если этот пакет необходим другим, то будут удалены все

yum list z\* – список пакетов на букву z. Пакеты разбиты на установленные и доступные.
yum info – просмотр информации о пакете
yum repolist – список всех репозиториев

Описания репозиториев для yum

Описания репозиториев находятся в каталоге /etc/yum.repos.d/ в файлах с расширением .repo .

#в одном файле могут быть описаны несколько репозиториев, каждый размещается в своей секции [epel] # человекочитаемое имя. $basearch - архитектура процессора, $releasever - версия дистрибутива name=Extra Packages for Enterprise Linux $releasever - $basearch #местоположение репозитория; если репозиторий локальный, то url может иметь вид #baseurl=file:///var/repos/myrepo baseurl=http://download.fedoraproject.org/pub/epel/$releasever/$basearch #если у проекта есть несколько зеркал, то baseurl может быть заменен на путь к списку зеркал в формате xml #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch #репозиторий можно отключить, поставив enabled=0 enabled=1 #надо ли проверять цифровую подпись пакетов и путь к файлу ключа gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 #если мы предпочитаем получать определённые пакеты из другого репозитория, # то можем выборочно отключить их в этом exclude=nagios* 

Подготовка локального репозитория для программы yum

  1. Скопировать rpm пакеты своего репозитория в каталог
  2. Проверить, что установлен пакет createrepo, и установить, если необходимо
 rpm -q createrepo sudo yum install createrepo 

Источник

Оцените статью
Adblock
detector