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

Re: Bug#825897: horrible infinite loop upon apt-get upgrade



Control: clone -1 -2
Control: reassign -1 dpkg 1.18.7
Control: retitle -1 dpkg-maintscript-helper dir_to_symlink: infinite dpkg-query loop
Control: retitle -2 apt upgrade: empty list of unmet dependencies
Control: tags -2 + moreinfo

(mail relatively lightly trimmed for the benefit of dpkg, see below)

On Tue, May 31, 2016 at 03:11:45PM +0800, 積丹尼 Dan Jacobson wrote:
> # apt-get upgrade
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> You might want to run 'apt-get -f install' to correct these.
> The following packages have unmet dependencies:
> E: Unmet dependencies. Try using -f.
> 
> What "following packages"? BUG! OK I'll use -f?

/var/lib/dpkg/status (or as you seem to have changed your system since
then one of the /var/backups/dpkg.status* reflecting the state of the
system at this moment in time) or it didn't happen as it is impossible
to know what is up otherwise.

(Add here my usual rambling of dpkg.status files including info about
what packages and in which version they are installed, which you might
consider private in which case you can sent it just to me if you want)

[Beware if you answer: The apt portion of this report has a new bugnr!]


> # # apt-get -f upgrade
[… many packages …]
> 92 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.
> 1 not fully installed or removed.
> Need to get 11.4 MB/94.0 MB of archives.
> After this operation, 506 kB disk space will be freed.
> Do you want to continue? [Y/n]

Note that the solution displayed here is a lie. You have fix-missing
enabled by default and this mode says it will do all kinds of things but
only after the display, it lists packages it can't deal with, resulting
potentially in an entirely different solution (well, "just" less
packages being upgraded than it claimed to do).  I worked on that very
recently and changed the code to do the action-potential check before
the display, but that isn't uploaded yet (git commit eb1f04dd).


> Err:1 http://free.nchc.org.tw/debian unstable/main i386 apache2 i386 2.4.20-2
>   Temporary failure resolving 'free.nchc.org.tw'
> Err:2 http://free.nchc.org.tw/debian unstable/main i386 apache2-bin i386 2.4.20-2
>   Temporary failure resolving 'free.nchc.org.tw'
> 
> (This is expected, as I am not connected to the network.)

Use --fix-missing --no-download in such cases.

I would strongly advice against setting --fix-missing by default
through. The intend of this mode is really not to be set permanently.


> Preparing to unpack .../imagemagick_8%3a6.9.2.10+dfsg-2_all.deb ...
> dpkg-query: no packages found matching imagemagick:all
> dpkg-query: package 'imagemagick' is not installed
> Use dpkg --info (= dpkg-deb --info) to examine archive files,
> and dpkg --contents (= dpkg-deb --contents) to list their contents.
> dpkg-query: package 'imagemagick' is not installed
> Use dpkg --info (= dpkg-deb --info) to examine archive files,
> and dpkg --contents (= dpkg-deb --contents) to list their contents.
> dpkg-query: package 'imagemagick' is not installed
> Use dpkg --info (= dpkg-deb --info) to examine archive files,
> and dpkg --contents (= dpkg-deb --contents) to list their contents.
> dpkg-query: package 'imagemagick' is not installed
> Use dpkg --info (= dpkg-deb --info) to examine archive files,
> and dpkg --contents (= dpkg-deb --contents) to list their contents.
> dpkg-query: package 'imagemagick' is not installed
> Use dpkg --info (= dpkg-deb --info) to examine archive files,
> and dpkg --contents (= dpkg-deb --contents) to list their contents.
> dpkg-query: package 'imagemagick' is not installed
> 
> Upon which I must use ^Z to stop the terrible infinite loop.
> 
> pstree -al shows:
> 
>   ├─dpkg --status-fd 23 --unpack --auto-deconfigure
>   /var/cache/apt/archives/imagemagick_8%3a6.9.2.10+dfsg-2_all.deb
>   /var/cache/apt/archives/imagemagick-6.q16_8%3a6.9.2.10+dfsg-2+b1_i386.deb
>   /var/cache/apt/archives/info_6.1.0.dfsg.1-8_i386.deb
>   /var/cache/apt/archives/libapr1_1.5.2-4_i386.deb
>   /var/cache/apt/archives/libatk-bridge2.0-0_2.20.1-2_i386.deb
>   /var/cache/apt/archives/libatk-wrapper-java_0.33.3-7_all.deb
>   /var/cache/apt/archives/libgtk-3-common_3.20.5-4_all.deb
>   /var/cache/apt/archives/libgtk-3-0_3.20.5-4_i386.deb
>   /var/cache/apt/archives/libatk-wrapper-java-jni_0.33.3-7_i386.deb
>   /var/cache/apt/archives/libcamel-1.2-57_3.20.2-2_i386.deb
>   /var/cache/apt/archives/libcupsfilters1_1.8.3-2+b2_i386.deb /va
> ...
>     │   └─preinst /var/lib/dpkg/tmp.ci/preinst upgrade 8:6.8.9.9-7+b1 8:6.9.2.10+dfsg-2
>   │       └─dpkg-maintscrip /usr/bin/dpkg-maintscript-helper dir_to_symlink /usr/share/doc/imagemagick /usr/share/doc/imagemagick-6-common 8:6.9.2.10+dfsg-2~ -- upgrade 8:6.8.9.9-7+b1 8:6.9.2.10+dfsg-2
>   │           └─xargs -0 -n1 sh -c \012\011\011package="$1"\012\011\011file="$2"\012\011\011if ! dpkg-query -L "$package" | grep -F -q -x "$file"; then\012\011\011\011exit 1\012\011\011fi\012\011\011exit 0\012\011 check-files-ownership imagemagick:all
>   │               └─sh -c \012\011\011package="$1"\012\011\011file="$2"\012\011\011if ! dpkg-query -L "$package" | grep -F -q -x "$file"; then\012\011\011\011exit 1\012\011\011fi\012\011\011exit 0\012\011 check-files-ownership imagemagick:all /usr/share/doc/imagemagick/www/api/MagickCore/utility-private_8h_source.html
>   │                   ├─dpkg-query -L imagemagick:all
>   │                   └─grep -F -q -x /usr/share/doc/imagemagick/www/api/MagickCore/utility-private_8h_source.html

Well, that looks like a maintainerscript running amok as apt doesn't
call dpkg-query. As that loop seems to be produced by
dpkg-maintscript-helper itself, reassigning to dpkg (and keeping
a clone), but perhaps its also imagemagick calling it wrong as
imagemagick is only newly 'all', it used to be 'any'…


Best regards

David Kalnischkies

Attachment: signature.asc
Description: PGP signature


Reply to: