On 2016-06-15 13:44:50, Paul Wise wrote:
> Package: apt-show-versions
> Version: 0.22.7
> Severity: wishlist
>
> I pin most packages to testing and then have progressively lower pin
> values for less desirable suites. I also pin some particular packages
> to other suites. I also pin security updates using the script in bug
> #725934 to the suite that they come from (mostly unstable). I would
> like to have an option to hide packages that are at the right version
> based on pinning. So for most packages, hide if they are the version in
> testing. For specific packages pinned to a different release, hide if
> they are the version from the pinned release. For security updates
> pinned to unstable release, hide if they are the version from unstable.
I have a similar requirement, at least I think it is. I'm running
testing and pin some packages to "unstable until it hits testing". For
example, I have this for Firefox right now:
Package: firefox-esr
Pin: release n=sid
Pin-Priority: 501
Package: firefox-esr
Pin: release n=buster
Pin: release v=60
Pin-Priority: 502
It gives me a quantum-enabled firefox in buster, from sid, but will
transition to the buster version when it makes it. I also manually
install some packages from sid that are missing from buster in the hope
they transition.
I use apt-show-versions to keep track of those transitions. This
requires me to add a filter to hide "uptodate" entries from
"buster". For example, here's the output I am looking at right now:
$ apt-show-versions | grep -v '/buster [^ ]* uptodate'
firefox-esr:amd64/sid 60.3.0esr-1 uptodate
network-manager-iodine:amd64/sid 1.2.0-3 uptodate
network-manager-iodine-gnome:amd64/sid 1.2.0-3 uptodate
printer-driver-postscript-hp:amd64 not installed
python-hvac:amd64 0.6.4-1 installed: No available version in archive
wireguard:all/sid 0.0.20181018-1 uptodate
wireguard-dkms:all/sid 0.0.20181018-1 uptodate
wireguard-tools:amd64/sid 0.0.20181018-1 uptodate
The first three and last three are normal there: both firefox-esr,
wireguard, and nm-iodine have excuses for not migrating to testing. The
`not installed` bit doesn't belong there but that's #783781. The
python-hvac one is interesting: it's a package that is currently in WNPP
(#875603) that I've worked on. Hopefully it will get there as well.
So that's really nice, but I always forget that cute regex. I wished
there was a way to simply add an option to get that clean output. I
tried this patch:
diff --git i/apt-show-versions w/apt-show-versions
index 3df13c7..6266b10 100755
--- i/apt-show-versions
+++ w/apt-show-versions
@@ -79,6 +79,7 @@ unless (GetOptions (\%opts,
'upgradeable|u',
'brief|b',
'nohold|nh',
+'nouptodate|nu',
'initialize|i',
'verbose|v',
'version|V',
@@ -143,6 +144,7 @@ Options:
-a|--allversions Print all available versions.
-b|--brief Short output.
-nh|--nohold Don't treat holded packages.
+ -nu|--nouptodate Don't display up to date packages.
-i|--initializeInitialize or update package cache only (as root).
-v|--verbose Verbose messages.
-V|--version Prints apt-show-versions version
@@ -458,7 +460,9 @@ sub print_package_internal {
($found, @version_info) =
_version(($irelease ? $irelease :
_rel_name($_->{$RELEASE})),
$pkgarch, $iversion, $version, $cand);
-push @print_info, @version_info if ($found);
+if ($found and ($found != 1 or !$opts{'nouptodate'})) {
+push @print_info, @version_info;
+}
$aversion = $version;
}
$is_upgradeable = 1 if ($found == 2);
But that doesn't give the right output:
$ ./apt-show-versions --nouptodate
python-hvac:amd64 0.6.4-1 installed: No available version in archive
Obviously, it removes just all uptodate packages, regardless of
suite. There should be a way to figure out if the found release (the
$irelease thing above) is the default release, but unfortunately
apt-show-versions does not have a good notion of what that is. It only
relies on APT::Default-Release (#875603) and that's usually not defined.
What *is* the proper way of figuring out what the default release is? Or
should we have a --ignore flag that would ignore a certain suite?
So I'm not sure if there's a clean way of fixing this.
A.
--
No animal has more liberty than the cat; but it buries the mess it
makes. The cat is the best anarchist. Until they learn that from the cat
I cannot respect them.
- For whom the bell tolls, Ernest Hemingway