Bug 17028 - apt-get build-dep не может определиться с виртуальной build-requires
: apt-get build-dep не может определиться с виртуальной build-requires
Status: ASSIGNED
: Sisyphus
(All bugs in Sisyphus/apt)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-09-05 14:00 by
Modified: 2018-11-19 23:13 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-09-05 14:00:53
Видно из примера:
# 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 From 2008-09-06 00:28:02 -------
Надо заметить, что это старый и хорошо известный баг (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 From 2018-11-19 23:13:01 -------
(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