Bug 17028

Summary: apt-get build-dep не может определиться с виртуальной build-requires
Product: Sisyphus Reporter: Konstantin Pavlov <thresh>
Component: aptAssignee: Ivan Zakharyaschev <imz>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: boot.efi, boyarsh, glebfm, imz, ldv, placeholder, rider
Version: unstable   
Hardware: all   
OS: Linux   

Description Konstantin Pavlov 2008-09-05 14:00:53 MSD
Видно из примера:
# apt-get build-dep vlc
E: Build-Depends dependency for vlc-0.9.1-alt2.src.rpm cannot be satisfied because no available versions of package liblive-devel can satisfy version requirements

#apt-cache show liblive-devel
Package liblive-devel is a virtual package provided by:
  liblive555-devel 0.0.0-alt0.2008.07.25
You should explicitly select one to show.
E: Package liblive-devel is a virtual package with multiple providers.
Comment 1 avm 2008-09-06 00:28:02 MSD
Надо заметить, что это старый и хорошо известный баг (http://b23.ru/l3k). Когда-то его уже чинили (http://b23.ru/l3y), но потом отломали снова. Текущий хозяин apt-rpm Panu Matilainen признаётся, что build-dep надо переписать нафиг (http://b23.ru/l3h).

Простейший вариант (вынуть из пакета зависимости и сделать на них install) не работает, потому что смысл получается другой: install подразумевает обновление имеющихся пакетов, а build-dep должен по возможности удовлетворяться тем, что есть.

Почитал код. Особенная прелесть заключена в последних строчках функции DoBuildDep в apt-get.cc:

if(condition == true)
  return true;
return true;

Чудеса копи-пейстного программирования (ср. функцию DoInstall).
Comment 2 Ivan Zakharyaschev 2018-11-19 23:13:01 MSK
(In reply to comment #1)

> Простейший вариант (вынуть из пакета зависимости и сделать на них install) не
> работает, потому что смысл получается другой: install подразумевает обновление
> имеющихся пакетов, а build-dep должен по возможности удовлетворяться тем, что
> есть.

Вот реализация этого простейшего workaround:

rpm -qp NAME.src.rpm -R | fgrep -v 'rpmlib(' | tr -d ' ' | xargs apt-get --yes install
Comment 3 Anton Farygin 2022-11-10 13:53:24 MSK
# apt-get build-dep curl
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
E: зависимость Build-Depends для curl-7.86.0-alt1.src.rpm не может быть удовлетворена, потому что отсутствует пакет rpmlib(PayloadIsLzma).

Собственно вопрос возник опять - как поставить в систему сборочные зависимости для удовлетворения процесса сборки какого-то пакета.

Можно придумывать workaround'ы, но лучше всё-таки заставить работать apt