Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Игнорирование ненужного пакета-зависимости при обновлении

#linux #archlinux #обновление #зависимости


TL;DR Arch Linux, pacman, два пакета конфликтуют, первый нужен, а второй является
зависимостью нужного meta-пакета. Удалил второй пакет, но при обновлении pacman выдаёт
ошибку, как убрать её?



В arch linux есть пакеты openbabel и babel-cli, которые конфликтуют. Пакет openbabel
является зависимостью пакета kalzium, тот является зависимостью пакета kde-meta-kdeedu,
который является зависимостью пакета kde-applications-meta. Вот схема зависимости:

kde-applications-meta
|
v
kde-meta-kdeedu
|
v
kalzium
|
v
openbabel


Пакет kde-applications-meta скорее всего полезный, так что его удалять нельзя. Пакет
openbabel мне не нужен (там что-то, связанное с химией), поэтому при установки пакета
babel-cli я удалил пакет openbabel, выполнив pacman -Rdd openbabel. Однако теперь при
обновлении системы (pacman -Syu) pacman пытается заново установить openbabel (как зависимость
kalzium), и у него, конечно, не получается:

разрешение зависимостей...
проверка конфликтов...
ошибка: обнаружен неразрешимый конфликт пакетов
ошибка: не удалось подготовить транзакцию (конфликтующие зависимости)
:: 'babel-cli' и 'openbabel' конфликтуют


Какой наиболее правильный способ сказать pacman'у, чтобы он при обновлении kalzium
не пытался установить openbabel?



В комментариях советуют добавить пакет openbabel к игнорируем с помощью строки IgnorePkg
в файле /etc/pacman.conf. Совет хороший, но тогда каждый раз при обновлении pacman
будет спрашивать, примерно так:

разрешение зависимостей...
предупреждение: пропуск пакета openbabel-2.4.1-4
предупреждение: не удалось разрешить "openbabel", зависимость "kalzium"
:: Этот пакет не может быть обновлен из-за неразрешимых зависимостей:
      kalzium

:: Вы уверены что хотите пропустить этот пакет при обновлении? [y/N] 


Как тогда убрать этот вопрос?
    


Ответы

Ответ 1



Создай виртуальный пакет openbabel-fake, который будет предоставлять альтернативу openbabel. Не прокатило из-за явного конфликта. Когда-нибудь мейнтейнеры должны с этим разобраться. А пока: extra/kalzium 17.08.1-1 (kde-applications kdeedu) Periodic Table of Elements Кажется не очень нужным пакетом. Заменим его, тогда мета не будет ругаться. Создай виртуальный пакет kalzium-fake, который будет предоставлять альтернативу kalzium Пример aur/akonadi-fake. Если только один раз поставить, то можно прямо на месте исправить PKGBUILD. Создавай свой пакет если ставить не один раз. А полный текст пакета будет такой: # Maintainer: Your Name pkgname=kalzium-fake pkgver=1000.0.0 pkgrel=3 pkgdesc="A fake empty kalzium package for those who don't want openbabel installed on their system" arch=('any') url="https://aur.archlinux.org/packages/${pkgname}/" license=('GPL') provides=('kalzium') replaces=('kalzium') package() { true }

Комментариев нет:

Отправить комментарий