I think I've found the issue. If I add a "print" in the loop that builds $apackagescachefile:
# Get available package information out of all Packages files foreach (@files) { print "file $_\n"; # Parse Packages file if creation time is newer than packages cache if (! -e $apackagescachefile or -C $_ < -M $apackagescachefile or $cache_file_corrupt) { my ($href, $release) = &parse_file ($_); foreach my $pkg (keys %$href) { foreach my $arch (keys %{$href->{$pkg}}) { $apackages->{$pkg}{$arch}{$release} = $href->{$pkg}{$arch}; } } } } I get: # ./apt-show-versions -i file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_main_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_main_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_contrib_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_contrib_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_non-free_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_stable_non-free_binary-i386_Packages file /var/lib/apt/lists/security.debian.org_debian-security_dists_stable-security_main_binary-amd64_Packages file /var/lib/apt/lists/security.debian.org_debian-security_dists_stable-security_main_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_main_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_main_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_contrib_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_contrib_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_non-free_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_non-free_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_non-free-firmware_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_testing_non-free-firmware_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_main_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_contrib_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_contrib_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_non-free_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_non-free_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_non-free-firmware_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_non-free-firmware_binary-i386_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_experimental_main_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_experimental_main_binary-i386_Packages file /var/lib/apt/lists/debug.mirrors.debian.org_debian-debug_dists_unstable-debug_main_binary-amd64_Packages file /var/lib/apt/lists/debug.mirrors.debian.org_debian-debug_dists_unstable-debug_main_binary-i386_Packages file /var/lib/apt/lists/_var_local_apt_._Packages file /var/lib/apt/lists/_var_local_apt-i386_._Packages in particular: file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_main_binary-amd64_Packages file /var/lib/apt/lists/ftp.debian.org_debian_dists_unstable_main_binary-i386_Packages As for architecture "all", apt-show-versions uses a single entry in the cache file, the i386 data will override the amd64 data, as ...-i386_Packages is read after ...-amd64_Packages. Since ...-i386_Packages still has 4:7.4.5-3, this will give 4:7.4.5-3 as the unstable version instead of 4:7.5.4-4, which is in ...-amd64_Packages. IMHO, for architecture "all", either only the Packages file that corresponds to the main architecture of the machine should be considered, or the latest version between the various packages should be chosen. In the current case, these two strategies are equivalent, but there may be cases where a foreign architecture may have a more recent version. Ideally, the same rule as apt should be chosen. I think that it chooses the latest version, as in the past, IIRC, I was offered the choice to upgrade the "Architecture: all" packages when available for the foreign architecture only. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)