Альманах пакетных менеджеров Linux. Обзор пакетных менеджеров Linux Как исправить сломанные пакеты

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

Как работают менеджеры пакетов

У каждого пакетного менеджера есть файл с настройками, в котором нам нужно указать от каких пакетов зависит наш код, чтобы пакетный менеджер их скачал и установил к нам в систему. При этом каждый пакет может зависеть от других пакетов. Пакетный менеджер распутывает эту систему зависимостей и устанавливает всё что нужно, поэтому их ещё называют менеджерами зависимостей. Вот пример: для работы я использую фрэймоворк Twitter Bootstrap и для его работы нужен jQuery. Поэтому если я укажу своему менеджеру пакетов установить Twitter Bootstrap, то он автоматически установит и jQuery.

Какие пакетные менеджеры использовать

Я в своей работе использую три разных пакетных менеджера:

  • — пакетный менеджер для мира PHP. Использую для загрузки чужого PHP-кода;

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


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

Debian и родственные

Популярность и образ дружественного к пользователю Linux дистрибутива сыграли с Ubuntu злую шутку. Некоторым новичкам кажется, что можно на нем делать все, что угодно без помощи командной строки. Это заблуждение и лучше от него поскорее избавиться.


То, что в примерах aptitude не значит, что он правильнее, чем apt-get . Для меня это всего лишь дело привычки.


$ aptitude install package #установить пакет; $ aptitude safe-upgrade package #обновить пакет; $ aptitude update #проверить и установить обновления; $ aptitude remove package #удалить пакет; $ aptitude purge package #удалить пакета с концами, все данные и настройки; $ apt-get dist-upgrade #обновить ОС, killer-feature и оно работает! $ aptitude search package #искать пакет. $ apt-cache depends package #зависимости пакета; $ apt-cache rdepends package #обратные зависимости от пакета.

Некоторые функции доступны с дополнительным МП dpkg .


$ dpkg -l #список установленных программ; $ dpkg -L package #список файлов пакета

Одна из первых вещей, с которой столкнуться новые пользователи при выборе своего дистрибутива Linux, это существование нескольких дистрибутивов с различными способами управления пакетами.

Управление пакетами очень важно в Linux, если вы знаете как использовать несколько менеджеров пакетов, это еще один аспект, показывающий, что вы уже опытный пользователь. Установка программного обеспечения, обновление, обработка зависимостей, удаление программ это очень важные действия для администрирования операционной системы linux.

Чтобы стать более опытным пользователем в linux нужно понять, каким образом основные дистрибутивы обрабатывают пакеты программного обеспечения. Поэтому тема сегодняшней статьи - обзор пакетных менеджеров linux. Мы рассмотрим только лучшие пакетные менеджеры linux.

Главная цель, предоставить основную информацию об этих пакетных менеджерах, но об их использовании будет сказано только несколько слов.

1. DPKG - система управления пакетами Debian

Dpkg - это базовая система управления пакетами в Debian. Может использоваться для установки, удаления, хранения и получения информации о.deb пакетах.

Это инструмент низкого уровня и есть дополнительные утилиты, которые помогают пользователям устанавливать пакеты из репозиториев, разрешать зависимости и искать пакеты по названию. Это такие программы, как:

APT (Advanced Packaging Tool)

Очень популярный, мощный инструмент командной строки с открытым исходным кодом для управления пакетами, который намного увеличивает возможности dpkg. Эта утилита используется в Debian и его производных, таких как Ubuntu, Linux Mint.

Aptitude Package Manager

Это еще одна популярная утилита командной строки для управления пакетами в Debian. Она работает аналогично Apt, но между ними есть некоторые различия. Первоначально он был разработан для Debian, но сейчас может применяться и в Red Hat дистрибутивах.

Synaptic Package Manager

Synaptic - это графический менеджер пакетов linux, написанный на GTK и использующий apt в качестве бэкенда. Он отлично подходит для пользователей, которые не хотят работать в командной строке. Здесь есть все те же необходимые функции что и в apt.

2. RPM (Red Hat Package Manager)

Это базовый формат и система управления пакетами, созданная в компании Red Hat. Так же как и dpkg, это низкоуровневый инструмент, для которого существует несколько утилит, это такие пакетные менеджеры linux:

YUM (Yellowdog Updater, Modified)

Это популярный менеджер пакетов linux с открытым исходным кодом для командной строки. Он используется для управления пакетами в дистрибутиве Red Hat. Если сравнивать с инструментом apt, то здесь есть все те же функциональные возможности, правда, работает немного медленнее. Написан на Python 2. Немного больше об отличиях формата пакетов можно прочитать в отдельной статье.

DNF – Улучшенный Yum

Это пакетный менеджер linux, используемый в дистрибутиве Fedora начиная с версии 18. Он представляет из себя следующее поколение YUM.

Сначала он был создан только для экспериментов, но начиная с Fedora 22 он используется как пакетный менеджер по умолчанию. Он работает почти также как и YUM, для разрешения зависимостей используется библиотека libsolv и hawkey, но отличие от YUM, написан на Python 3. Здесь можно наблюдать увеличение скорости работы, а также уменьшение потребления памяти.

3. Pacman - менеджер пакетов Arch Linux

Этот менеджер пакетов linux разработан командой программистов для дистрибутива ArchLinux. Сейчас, кроме ArchLinux, он используется в Manjaro и еще нескольких малоизвестных дистрибутивах, основанных на ArchLinux.

Здесь поддерживаются все основные возможности - установка программного обеспечения, автоматическое разрешение зависимостей, обновление, удаление пакетов, а также загрузка пакетов программ для последующей установки.

Программа специально спроектирована для удобной работы с пакетами в Arch Linux. А поскольку это система с режимом выпуска в виде роллинг релизов, то этот пакетный менеджер подходит наилучшим образом. Pacman поддерживает систему в актуальном состоянии синхронизируя списки пакетов из основного сервера. Причем существует только одна версия системы - текущая.

Программа написана на Си, а в качестве пакетов используются файлы формата tar.xz, которые на самом деле являются обычными архивами, внутри которых находятся файлы программы и файл описания установки PKGBUILD.

4. Zypper - пакетный менеджер OpenSUSE

Это пакетный менеджер linux для командной строки в дистрибутиве OpenSUSE и SUSE Linux. Разработан специально для этого дистрибутива и использует библиотеку libzypp, в которой реализованы такие общие возможности, как доступ к репозиторию, установка пакетов, разрешение зависимостей, работа с репозториями и многое другое.

Zypper написан на Си и работает намного быстрее чем Yum. Поддерживает различные форматы репозиториев, а также расширения репозиториев. Поддерживается как обычное обновление, так и обновление патчами, во время которого только накладываются патчи на установленные пакеты для исправления проблем с безопасностью.

5. Portage - пакетный менеджер Gentoo

Этот менеджер пакетов используется в Gentoo, менее популярном, но не менее мощном дистрибутиве. И это один из лучших менеджеров пакетов. Основное преимущество системы Gentoo, это возможность собирать пакеты из исходников во время установки. Это дает очень много полезных вещей, таких как возможность настроить флаги компиляции, включить только нужные функции, а также собрать пакеты именно под свой процессор. Все это поддерживается Portage, базовая функциональность, такая как обновление, удаление пакетов и разрешение зависимостей здесь тоже есть.

Интересной особенностью есть состояния Portage, а также слоты, позволяющие устанавливать несколько версий одной программы или библиотеки в вашей системе. Здесь нет как такового списка пакетов, есть только дерево портов, в котором и содержаться файлы ebuild с инструкциями для сборки всех пакетов. Сохранив дерево можно очень просто откатить систему к предыдущей версии.

Выводы

Как я уже говорил, основная цель статьи - обзор пакетных менеджеров linux, познакомить пользователей с лучшими пакетными менеджерами, а также показать отличия между ними. Конечно, пользователям определенного дистрибутива придется изучать свой менеджер пакетов более детально. Если я упустил важный момент, об одной из программ, напишите в комментариях!

Что такое менеджер пакетов?

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

Зачастую, пакет представляет собой просто отдельную программу. Например, клиент мгновенных сообщений gaim находится в пакете Debian с таким же именем. С другой стороны, для программ вполне нормально состоять из нескольких взаимосвязанных пакетов. Например, графический редактор gimp состоит не только из пакета gimp , но и из пакета gimp-data ; так же доступны необязательные пакеты с дополнениями (содержащими эзотерические данные, документацию и т.д.). Несколько небольших связанных программ могут входить в один пакет, например, пакет fileutils содержит несколько общих команд Unix, таких как ls , cp и т.д.

Некоторым пакетам для работы требуются другие пакеты. В Debian пакеты могут зависеть от других пакетов, рекомендовать , предлагать , ломать их или конфликтовать с ними.

    Если пакет A зависит от другого пакета B, то B требуется для правильной работы A. Например, пакет gimp зависит от пакета gimp-data , поскольку необходимо гарантировать, что графическому редактору GIMP доступны необходимые файлы данных.

    Если пакет A рекомендует другой пакет B, то пакет B предоставляет важную дополнительную функциональность пакету A, которая желательна в большинстве случаев. Например, пакет mozilla-browser рекомендует пакет mozilla-psm , который добавляет поддержку безопасной передачи данных веб-браузеру Mozilla . В то время как пакет mozilla-psm не строго требуется для работы Mozilla, большинство пользователей хотят, чтобы Mozilla поддерживал безопасную передачу конфиденциальных данных (таких как номера кредитных карт).

    Если пакет A предлагает другой пакет B, то пакет B предоставляет функциональность, которая может улучшить пакет A, но не является необходимой в большинстве случаев. Например, пакет kmail предлагает пакет gnupg , содержащий программу для шифрования, которая может использоваться KMail .

    Если пакет A конфликтует с другим пакетом B, то эти два пакета не могут быть установлены одновременно. Например, пакет fb-music-hi конфликтует с пакетом fb-music-low , поскольку они предоставляют альтернативные наборы музыки для игры Frozen Bubble .

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

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


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

Debian и родственные

Популярность и образ дружественного к пользователю Linux дистрибутива сыграли с Ubuntu злую шутку. Некоторым новичкам кажется, что можно на нем делать все, что угодно без помощи командной строки. Это заблуждение и лучше от него поскорее избавиться.


То, что в примерах aptitude не значит, что он правильнее, чем apt-get . Для меня это всего лишь дело привычки.


$ aptitude install package #установить пакет; $ aptitude safe-upgrade package #обновить пакет; $ aptitude update #проверить и установить обновления; $ aptitude remove package #удалить пакет; $ aptitude purge package #удалить пакета с концами, все данные и настройки; $ apt-get dist-upgrade #обновить ОС, killer-feature и оно работает! $ aptitude search package #искать пакет. $ apt-cache depends package #зависимости пакета; $ apt-cache rdepends package #обратные зависимости от пакета.

Некоторые функции доступны с дополнительным МП dpkg .


$ dpkg -l #список установленных программ; $ dpkg -L package #список файлов пакета