[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#229775: apt 2.7.7: build-dep doesn't work if priority is 499



Package: apt
Version: 2.7.7
Followup-For: Bug #229775

This bug (#229775) is still reproducible with current apt version (apt 2.7.7). The bug
can be summarized so: "apt-get build-dep" fails to install a package from a repo
if its priority is slightly less than priority of installed release. In more details:
"apt-get build-dep" fails to install a package from backports if backports priority
is set to 499 and installed release have its default priority (i. e. 500, as well
as I understand).

Here are steps to reproduce.

But please note: the steps to reproduce below involve stretch. But despite
this, please note that the bug is reproducible with apt 2.7.7! Yes, I did run apt 2.7.7 on
stretch! Now let me show you steps to reproduce:

Build docker container using this dockerfile:

FROM debian:stretch
ENV LC_ALL C.UTF-8
RUN echo deb http://archive.debian.org/debian stretch main > /etc/apt/sources.list
RUN echo deb http://archive.debian.org/debian-security stretch/updates main >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y --no-install-recommends apt-utils whiptail
RUN apt-get dist-upgrade -y --no-install-recommends
RUN apt-get install -y --no-install-recommends build-essential
RUN echo deb      http://archive.debian.org/debian      stretch-backports          main >> /etc/apt/sources.list
RUN echo deb-src http://deb.debian.org/debian buster main >> /etc/apt/sources.list
RUN apt-get update
RUN printf 'Package: *\nPin: release n=*backports*\nPin-Priority: 499\n' > /etc/apt/preferences
RUN apt-get build-dep -y --no-install-recommends cmake || : # This command fails
RUN printf 'Package: *\nPin: release n=*backports*\nPin-Priority: 500\n' > /etc/apt/preferences
RUN apt-get build-dep -y --no-install-recommends cmake # Success

If you don't have docker, then you can do this instead:
- Create fresh stretch system using "debootstrap --variant=minbase"
- Then run commands above in this stretch one after one

I tried commands above in docker and was able to reproduce the bug.
I didn't try debootstrap way, but I'm nearly sure the bug will reproduce, too.

If backports priority is set to 499, then "apt-get build-dep -y --no-install-recommends cmake"
will print this:

===
# apt-get build-dep -y --no-install-recommends cmake
Reading package lists... Done
Building dependency tree... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 builddeps:cmake : Depends: libuv1-dev (>= 1.10) but 1.9.1-3 is to be installed
E: Unable to correct problems, you have held broken packages.
===

I think this is a bug: dependecies can be satisfied if one really tries.
If I set backports priority to 500, then "apt-get build-dep" is able
to install needed packages. So, apt-get doesn't try hard enough.

Requirement "libuv1-dev (>= 1.10)" can be satisfied: stretch-backports has
libuv1-dev 1.34.2-1~bpo9+1, but it is ignored, and this is a bug.

I reproduced this bug using apt 2.7.7. To do this I copied apt 2.7.7 binary and
all its .so files to stretch and then I did run this:

/tmp/apt-get.d/ld.so --library-path /tmp/apt-get.d/libs /tmp/apt-get.d/apt-get ...

I. e. I was able to do this using "ld.so --library-path" trickery.

Okay, now you may wonder why I think this is a bug, why I need this and why I
don't like current behavior. Let me answer.

Go to Debian IRC (a. k. a. OFTC IRC), join #debian channel and write to
bot nicknamed "dpkg" the following text: "simple sid backport". The bot
will respond to you with the following *very* helpful text:

===
First, check for a backport on <debian-backports>.  If unavailable:
1) Add a deb-src line for sid (not a deb line!); ask me about <deb-src sid>
2) enable debian-backports (see <bdo>)
3) apt update; apt install build-essential; apt build-dep packagename
4) apt -b source packagename
5) dpkg -i packagename-ver.deb
To change compilation options, see <package recompile>; for versions newer than sid see <uupdate>.
===

I use stretch as my main system. So I often need to backport packages. And I
do this using instruction above. When I do 3rd step, i. e. "apt-get build-dep",
I want apt to search in stretch and then in stretch-backports.

Unfortunately, I was unable to find configuration, which achieve this.
If I do not set apt_preferences at all, then stretch-backports is ignored by
"apt-get build-dep" (reproduction steps listed above). If I set backports
priority to 499, then the same happens. If I set backports
priority to 500, then stretch-backports is prefered if its package is newer than
stretch's. But stretch-backports always has newer packages than stretch, so
stretch-backports is always prefered! But I want stretch to be prefered.

Hence there is simply no configuration, which meets my goals.

Again: I want stretch-backports to be visible, but I want stretch to
be prefered over stretch-backports. Because stretch seems to be more
stable than stretch-backports, but stretch-backports still can contain
something useful.

You may say: "Okay, what is problem? If "apt-get build-dep" doesn't
work, then simply raise stretch-backports priority or
type "apt-get build-dep -t stretch-backports"".

Well, this will work if I do everything manually. But I currently
write script, which automates that instruction from IRC bot.

You may say: okay, just add to your script this:

===
if ! apt-get build-dep -y "$PKG"; then
  apt-get build-dep -t "$CODENAME"-backports -y "$PKG"
fi
===

Well, I can write this. But this is a hack. Workaround for a bug!

Okay, so I hope I described the bug well.

Now let me tell you how I sent this mail. I sent it from
docker container (with stretch inside), described above,
using "reportbug". The container has apt 1.4.11 installed
(as well as I understand, this is default stretch version). When "reportbug"
spawned editor I manually replaced reportbug-generated header "Version: 1.4.11"
with "Version: 2.7.7". But again: this is not lie! I actually was able to
reproduce this bug using apt 2.7.7 using "ld.so --library-path".

Again: the mail was sent from very same environment I used for reproducing this bug.
I typed "apt-get build-dep -y --no-install-recommends cmake", saw that it fails
and then typed "reportbug".

Julian Klode said to me ( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1005752#10 )
that letters from @mail.ru are not delivered properly. So I sent
this report from @gmail.com . I hope this time the letter will be delivered
properly


-- Package-specific info:

-- apt-config dump --

APT "";
APT::Architecture "amd64";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Install-Recommends "1";
APT::Install-Suggests "0";
APT::Sandbox "";
APT::Sandbox::User "_apt";
APT::NeverAutoRemove "";
APT::NeverAutoRemove:: "^firmware-linux.*";
APT::NeverAutoRemove:: "^linux-firmware$";
APT::VersionedKernelPackages "";
APT::VersionedKernelPackages:: "linux-image";
APT::VersionedKernelPackages:: "linux-headers";
APT::VersionedKernelPackages:: "linux-image-extra";
APT::VersionedKernelPackages:: "linux-signed-image";
APT::VersionedKernelPackages:: "kfreebsd-image";
APT::VersionedKernelPackages:: "kfreebsd-headers";
APT::VersionedKernelPackages:: "gnumach-image";
APT::VersionedKernelPackages:: ".*-modules";
APT::VersionedKernelPackages:: ".*-kernel";
APT::VersionedKernelPackages:: "linux-backports-modules-.*";
APT::VersionedKernelPackages:: "linux-tools";
APT::Never-MarkAuto-Sections "";
APT::Never-MarkAuto-Sections:: "metapackages";
APT::Never-MarkAuto-Sections:: "contrib/metapackages";
APT::Never-MarkAuto-Sections:: "non-free/metapackages";
APT::Never-MarkAuto-Sections:: "restricted/metapackages";
APT::Never-MarkAuto-Sections:: "universe/metapackages";
APT::Never-MarkAuto-Sections:: "multiverse/metapackages";
APT::Move-Autobit-Sections "";
APT::Move-Autobit-Sections:: "oldlibs";
APT::Move-Autobit-Sections:: "contrib/oldlibs";
APT::Move-Autobit-Sections:: "non-free/oldlibs";
APT::Move-Autobit-Sections:: "restricted/oldlibs";
APT::Move-Autobit-Sections:: "universe/oldlibs";
APT::Move-Autobit-Sections:: "multiverse/oldlibs";
APT::AutoRemove "";
APT::AutoRemove::SuggestsImportant "false";
APT::Update "";
APT::Update::Post-Invoke "";
APT::Update::Post-Invoke:: "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true";
APT::Architectures "";
APT::Architectures:: "amd64";
APT::Compressor "";
APT::Compressor::. "";
APT::Compressor::.::Name ".";
APT::Compressor::.::Extension "";
APT::Compressor::.::Binary "";
APT::Compressor::.::Cost "0";
APT::Compressor::lz4 "";
APT::Compressor::lz4::Name "lz4";
APT::Compressor::lz4::Extension ".lz4";
APT::Compressor::lz4::Binary "false";
APT::Compressor::lz4::Cost "50";
APT::Compressor::gzip "";
APT::Compressor::gzip::Name "gzip";
APT::Compressor::gzip::Extension ".gz";
APT::Compressor::gzip::Binary "gzip";
APT::Compressor::gzip::Cost "100";
APT::Compressor::gzip::CompressArg "";
APT::Compressor::gzip::CompressArg:: "-6n";
APT::Compressor::gzip::UncompressArg "";
APT::Compressor::gzip::UncompressArg:: "-d";
APT::Compressor::xz "";
APT::Compressor::xz::Name "xz";
APT::Compressor::xz::Extension ".xz";
APT::Compressor::xz::Binary "xz";
APT::Compressor::xz::Cost "200";
APT::Compressor::xz::CompressArg "";
APT::Compressor::xz::CompressArg:: "-6";
APT::Compressor::xz::UncompressArg "";
APT::Compressor::xz::UncompressArg:: "-d";
APT::Compressor::bzip2 "";
APT::Compressor::bzip2::Name "bzip2";
APT::Compressor::bzip2::Extension ".bz2";
APT::Compressor::bzip2::Binary "bzip2";
APT::Compressor::bzip2::Cost "300";
APT::Compressor::bzip2::CompressArg "";
APT::Compressor::bzip2::CompressArg:: "-6";
APT::Compressor::bzip2::UncompressArg "";
APT::Compressor::bzip2::UncompressArg:: "-d";
APT::Compressor::lzma "";
APT::Compressor::lzma::Name "lzma";
APT::Compressor::lzma::Extension ".lzma";
APT::Compressor::lzma::Binary "xz";
APT::Compressor::lzma::Cost "400";
APT::Compressor::lzma::CompressArg "";
APT::Compressor::lzma::CompressArg:: "--format=lzma";
APT::Compressor::lzma::CompressArg:: "-6";
APT::Compressor::lzma::UncompressArg "";
APT::Compressor::lzma::UncompressArg:: "--format=lzma";
APT::Compressor::lzma::UncompressArg:: "-d";
Dir "/";
Dir::State "var/lib/apt";
Dir::State::lists "lists/";
Dir::State::cdroms "cdroms.list";
Dir::State::mirrors "mirrors/";
Dir::State::extended_states "extended_states";
Dir::State::status "/var/lib/dpkg/status";
Dir::Cache "var/cache/apt";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "";
Dir::Cache::pkgcache "";
Dir::Etc "etc/apt";
Dir::Etc::sourcelist "sources.list";
Dir::Etc::sourceparts "sources.list.d";
Dir::Etc::main "apt.conf";
Dir::Etc::netrc "auth.conf";
Dir::Etc::parts "apt.conf.d";
Dir::Etc::preferences "preferences";
Dir::Etc::preferencesparts "preferences.d";
Dir::Etc::trusted "trusted.gpg";
Dir::Etc::trustedparts "trusted.gpg.d";
Dir::Bin "";
Dir::Bin::methods "/usr/lib/apt/methods";
Dir::Bin::solvers "";
Dir::Bin::solvers:: "/usr/lib/apt/solvers";
Dir::Bin::planners "";
Dir::Bin::planners:: "/usr/lib/apt/planners";
Dir::Bin::dpkg "/usr/bin/dpkg";
Dir::Bin::gzip "/bin/gzip";
Dir::Bin::bzip2 "/bin/bzip2";
Dir::Bin::xz "/usr/bin/xz";
Dir::Bin::lz4 "/usr/bin/lz4";
Dir::Bin::lzma "/usr/bin/xz";
Dir::Media "";
Dir::Media::MountPath "/media/apt";
Dir::Log "var/log/apt";
Dir::Log::Terminal "term.log";
Dir::Log::History "history.log";
Dir::Log::Planner "eipp.log.xz";
Dir::Ignore-Files-Silently "";
Dir::Ignore-Files-Silently:: "~$";
Dir::Ignore-Files-Silently:: "\.disabled$";
Dir::Ignore-Files-Silently:: "\.bak$";
Dir::Ignore-Files-Silently:: "\.dpkg-[a-z]+$";
Dir::Ignore-Files-Silently:: "\.ucf-[a-z]+$";
Dir::Ignore-Files-Silently:: "\.save$";
Dir::Ignore-Files-Silently:: "\.orig$";
Dir::Ignore-Files-Silently:: "\.distUpgrade$";
Acquire "";
Acquire::AllowInsecureRepositories "0";
Acquire::AllowWeakRepositories "0";
Acquire::AllowDowngradeToInsecureRepositories "0";
Acquire::cdrom "";
Acquire::cdrom::mount "/media/cdrom/";
Acquire::IndexTargets "";
Acquire::IndexTargets::deb "";
Acquire::IndexTargets::deb::Packages "";
Acquire::IndexTargets::deb::Packages::MetaKey "$(COMPONENT)/binary-$(ARCHITECTURE)/Packages";
Acquire::IndexTargets::deb::Packages::flatMetaKey "Packages";
Acquire::IndexTargets::deb::Packages::ShortDescription "Packages";
Acquire::IndexTargets::deb::Packages::Description "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Packages";
Acquire::IndexTargets::deb::Packages::flatDescription "$(RELEASE) Packages";
Acquire::IndexTargets::deb::Packages::Optional "0";
Acquire::IndexTargets::deb::Translations "";
Acquire::IndexTargets::deb::Translations::MetaKey "$(COMPONENT)/i18n/Translation-$(LANGUAGE)";
Acquire::IndexTargets::deb::Translations::flatMetaKey "$(LANGUAGE)";
Acquire::IndexTargets::deb::Translations::ShortDescription "Translation-$(LANGUAGE)";
Acquire::IndexTargets::deb::Translations::Description "$(RELEASE)/$(COMPONENT) Translation-$(LANGUAGE)";
Acquire::IndexTargets::deb::Translations::flatDescription "$(RELEASE) Translation-$(LANGUAGE)";
Acquire::IndexTargets::deb-src "";
Acquire::IndexTargets::deb-src::Sources "";
Acquire::IndexTargets::deb-src::Sources::MetaKey "$(COMPONENT)/source/Sources";
Acquire::IndexTargets::deb-src::Sources::flatMetaKey "Sources";
Acquire::IndexTargets::deb-src::Sources::ShortDescription "Sources";
Acquire::IndexTargets::deb-src::Sources::Description "$(RELEASE)/$(COMPONENT) Sources";
Acquire::IndexTargets::deb-src::Sources::flatDescription "$(RELEASE) Sources";
Acquire::IndexTargets::deb-src::Sources::Optional "0";
Acquire::Changelogs "";
Acquire::Changelogs::URI "";
Acquire::Changelogs::URI::Origin "";
Acquire::Changelogs::URI::Origin::Debian "http://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog";;
Acquire::Changelogs::URI::Origin::Tanglu "http://metadata.tanglu.org/changelogs/@CHANGEPATH@_changelog";;
Acquire::Changelogs::URI::Origin::Ubuntu "http://changelogs.ubuntu.com/changelogs/pool/@CHANGEPATH@/changelog";;
Acquire::Changelogs::URI::Origin::Ultimedia "http://packages.ultimediaos.com/changelogs/pool/@CHANGEPATH@/changelog.txt";;
Acquire::Changelogs::AlwaysOnline "";
Acquire::Changelogs::AlwaysOnline::Origin "";
Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "1";
Acquire::GzipIndexes "true";
Acquire::Languages "";
Acquire::Languages:: "none";
Acquire::CompressionTypes "";
Acquire::CompressionTypes::xz "xz";
Acquire::CompressionTypes::bz2 "bzip2";
Acquire::CompressionTypes::lzma "lzma";
Acquire::CompressionTypes::gz "gzip";
Acquire::CompressionTypes::lz4 "lz4";
DPkg "";
DPkg::Pre-Install-Pkgs "";
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";
DPkg::Post-Invoke "";
DPkg::Post-Invoke:: "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true";
Binary "apt-config";
Binary::apt "";
Binary::apt::APT "";
Binary::apt::APT::Color "1";
Binary::apt::APT::Cache "";
Binary::apt::APT::Cache::Show "";
Binary::apt::APT::Cache::Show::Version "2";
Binary::apt::APT::Cache::AllVersions "0";
Binary::apt::APT::Cache::ShowVirtuals "1";
Binary::apt::APT::Cache::Search "";
Binary::apt::APT::Cache::Search::Version "2";
Binary::apt::APT::Cache::ShowDependencyType "1";
Binary::apt::APT::Cache::ShowVersion "1";
Binary::apt::APT::Get "";
Binary::apt::APT::Get::Upgrade-Allow-New "1";
Binary::apt::APT::Cmd "";
Binary::apt::APT::Cmd::Show-Update-Stats "1";
Binary::apt::APT::Keep-Downloaded-Packages "0";
Binary::apt::DPkg "";
Binary::apt::DPkg::Progress-Fancy "1";
Binary::apt-get "";
Binary::apt-get::Acquire "";
Binary::apt-get::Acquire::AllowInsecureRepositories "1";
CommandLine "";
CommandLine::AsString "apt-config dump";

-- /etc/apt/preferences --

Package: *
Pin: release n=*backports*
Pin-Priority: 499

-- (no /etc/apt/preferences.d/* present) --


-- /etc/apt/sources.list --

deb http://archive.debian.org/debian stretch main
deb http://archive.debian.org/debian-security stretch/updates main
deb http://archive.debian.org/debian stretch-backports main
deb-src http://deb.debian.org/debian buster main

-- (no /etc/apt/sources.list.d/* present) --


-- System Information:
Debian Release: 9.13
  APT prefers oldoldstable
  APT policy: (500, 'oldoldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-0.deb9.24-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=UTF-8) (ignored: LC_ALL set to C.UTF-8), LANGUAGE=C (charmap=UTF-8) (ignored: LC_ALL set to C.UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages apt depends on:
ii  adduser                 3.115
ii  debian-archive-keyring  2017.5+deb9u2
ii  gpgv                    2.1.18-8~deb9u4
ii  init-system-helpers     1.48
ii  libapt-pkg5.0           1.4.11
ii  libc6                   2.24-11+deb9u4
ii  libgcc1                 1:6.3.0-18+deb9u1
ii  libstdc++6              6.3.0-18+deb9u1

Versions of packages apt recommends:
pn  gnupg | gnupg2 | gnupg1  <none>

Versions of packages apt suggests:
pn  apt-doc                      <none>
pn  aptitude | synaptic | wajig  <none>
ii  dpkg-dev                     1.18.26
pn  powermgmt-base               <none>
pn  python-apt                   <none>

-- no debconf information


Reply to: