X

dnf вместо yum в CentOS 7

Начиная с Fedora 22, в качестве менеджера пакетов, вместо yum, начал использоваться dnf. И ясно, что совсем скоро мы увидим его в CentOS и в RedHat. Менеджер давно работает стабильно, и нет ни каких причин, к тому, что бы не заменить на него устаревший yum.

Давайте поглядим, в чем преимущества над yum:

  1. Более качественно разрешает зависимости;
  2. Работает быстрее и кушает меньше памяти;
  3. Может работать, как с Python 2 так и с Python 3. Следовательно можно отказаться от 2 версии и использовать Python 3 по умолчанию;
  4. Синтаксис совместим с yum, переучиваться не придётся.

По сути достаточно уже первых двух пунктов. Давайте устанавливать.

Установка dnf

Сначала нам понадобиться репозиторий EPEL:

# yum -y install epel-release

Затем собственно ставим сам менеджер пакетов:

# yum install -y dnf

На это по вроде как бы все, можно было бы начать пользоваться, но неожиданно полезли ошибки. Так что переходим ко второй части :).

Решаем проблемы

Собственно, если сразу после установки запустить менеджер, получим ошибку – что то типа:

# dnf repolist
Failed to open: /var/cache/dnf/x86_64/7/x86_64/7/epel/repodata/dc79e1e8ec5d81d08795bbbe9ecec4750dfba572879cf4b9a6e87a2ee61952b6-updateinfo.xml.bz2.

Очевидно репозиторий epel не пришелся ко двору.
Удаляем, проверяем:

# dnf -y remove epel-release

Чистим кеш:

# dnf clean all

Проверяем:

# dnf repolist
Using metadata from Fri Jul 29 13:58:24 2016
repo id                                   repo name                                             status
base                                      CentOS-7 - Base                                       9,007
extras                                    CentOS-7 - Extras                                       356
updates                                   CentOS-7 - Updates                                    2,070

Отлично, все заработало! Но как жить без epel и remi?
Покопавшись на багтрекере обнаружилось, что проблема имеет место быть и находиться в стадии решения. Всему виной библиотека libsolv. Текущая версия в epel 0.6.11-1, для корректной работы требуется минимально 14 версия. Такая обнаружилась тут – http://koji.fedoraproject.org/koji/buildinfo?buildID=704417. Ставим:

# rpm -Uhv https://kojipkgs.fedoraproject.org//packages/libsolv/0.6.14/1.el7/x86_64/libsolv-0.6.14-1.el7.x86_64.rpm
Retrieving https://kojipkgs.fedoraproject.org//packages/libsolv/0.6.14/1.el7/x86_64/libsolv-0.6.14-1.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:libsolv-0.6.14-1.el7             ################################# [ 50%]
Cleaning up / removing...
   2:libsolv-0.6.11-1.el7             ################################# [100%]

Проверяем:

# dnf repolist
Safe Remi's RPM repository for Enterprise Linux 961 kB/s | 615 kB     00:00
CentOS-7 - Base                                 3.3 MB/s | 8.8 MB     00:02
CentOS-7 - Updates                              3.6 MB/s | 7.6 MB     00:02
Remi's RPM repository for Enterprise Linux 7 -  3.0 MB/s | 2.1 MB     00:00
CentOS-7 - Extras                               779 kB/s | 468 kB     00:00
Using metadata from Tue Aug  2 11:47:13 2016
repo id     repo name                                                     status
base        CentOS-7 - Base                                                9,007
epel        Extra Packages for Enterprise Linux 7 - x86_64                10,388
extras      CentOS-7 - Extras                                                356
remi        Remi's RPM repository for Enterprise Linux 7 - x86_64          3,140
remi-safe   Safe Remi's RPM repository for Enterprise Linux 7 - x86_64     1,040
updates     CentOS-7 - Updates

Теперь все работает.

hc:

View Comments (1)

  • Спасибо!

    Помогло быстро решить проблему.