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

Bug#933859: apt-cudf doesn't work with "apt install ./*.deb"



Hi,

Quoting Simon McVittie (2019-08-04 15:38:57)
> I tried to solve <https://salsa.debian.org/salsa-ci-team/pipeline/issues/58>
> by configuring piuparts to be willing to take the versioned dependencies
> of the package under test from experimental, by configuring apt in the
> piuparts chroot to use apt-cudf and aspcud, but I was not successful.
> 
> Steps to reproduce outside piuparts (I used a sid VM):
> 
> * Have sid and experimental apt sources
> * sudo apt install apt-cudf aspcud
> * Have a .deb whose dependencies cannot be satisfied in sid, for example
>   gnome-shell 3.32.2-2 as of today:
>   apt-get -t experimental download gnome-shell
> * Configure aspcud resolver with the same setup as official Debian
>   experimental buildds:
>   (<https://salsa.debian.org/dsa-team/mirror/dsa-puppet/blob/master/modules/buildd/files/sbuild.conf>)
> 
> sudo tee /etc/apt/apt.conf.d/aspcud <<EOF
> APT::Solver "aspcud";
> APT::Solver::Strict-Pinning "no";
> APT::Solver::aspcud::Preferences "-removed,-changed,-new,-count(solution,APT-Release:=/experimental/)";
> EOF
> 
> * sudo apt install ./gnome-shell_3.32.2-2_amd64.deb
> 
> Expected result:
> 
> apt-cudf selects gnome-shell's dependency libmutter-4-0 (and probably
> others) from experimental
> 
> Actual result:
> 
> > Fatal error: exception Common.Format822.ParseError(_, "Provides", "Field Provides has a wrong value (character 0-1: character 0-1: Unexpected token : '.'.. (vpkglist)): './gnome-shell_3.32.2-2_amd64.deb (= 3.32.2-2), polkit-1-auth-agent, notification-daemon'")
> 
> I'm not sure whether this is an apt bug (giving wrong data to apt-cudf)
> or an apt-cudf bug (not accepting valid data from apt). Any ideas?

here are some further observations.

It is not necessary to pick a package whose dependencies cannot be satisfied in
sid. This problem also happens with packages that apt can resolve just fine.

To see what the problem is, just switch the solver from "aspcud" to "dump" like
so:

APT_EDSP_DUMP_FILENAME=/tmp/out.edsp apt-get --simulate install --solver dump -o APT::Solver::Strict-Pinning=false ./gnome-shell_3.32.2-2_amd64.deb

Using apt's -o options it is also not necessary to write to
/etc/apt/apt.conf.d/aspcud. Using the "dump" solver is helpful because it
allows us to look into the data that apt-cudf receives from apt. In
/tmp/out.edsp we then see this:

Package: gnome-shell
Architecture: amd64
Version: 3.32.2-2
APT-ID: 781
Source: gnome-shell
Source-Version: 3.32.2-2
Priority: optional
Section: gnome
APT-Release:
 a=local-deb
 o=Debian,a=experimental,n=experimental,l=Debian,c=main,b=amd64
APT-Pin: 500
APT-Candidate: yes
Depends: [...]
[...dependencies snipped for brevity...]
Provides: ./gnome-shell_3.32.2-2_amd64.deb (= 3.32.2-2), polkit-1-auth-agent, notification-daemon

Have a look at the last line. This is where apt-cudf chokes. Because what apt
chose as a package name is not a legal package name according to Debian policy
so apt-cudf throws the fatal error you see above.

I suggest that apt fixes their EDSP output. Then this will work again.

Thanks!

cheers, josch

Attachment: signature.asc
Description: signature


Reply to: