I'm a bit confused about how getdeb.net works now. The last time I got a package from there was a while ago; at that point the procedure was that you would just download a .deb for each package that you wanted to install/upgrade and then install it using
dpkg -i. However the inexorable march of progress has lent its trumpets to this system as well, and getdeb installs are now done via their repo, which is registered with apt in
/etc/apt/sources.list.d, after you install a single package that makes the changes to the apt database.
I've installed that package, and I've discovered that
aptitude dist-upgrade now wants to upgrade a lot of packages on my system that weren't ready for upgrades prior to the installation of the getdeb package. If I rename the file
/etc/apt/sources.list.d/getdeb.list to something with a different extension, then do
aptitude update && aptitude dist-upgrade, it stops wanting to upgrade packages.
So I gather that the default behaviour is now to upgrade all packages to the version available at getdeb. This is not particularly appropriate, since these packages are not as well tested as the officially released versions.
Is there a config setting somewhere that will prevent upgrading packages to versions from the getdeb repo unless this action is specifically selected? I'd like to be able to pick and choose what packages are upgraded via getdeb.
As recommended by @~joaopinto, I've created the file
/etc/apt/preferences, containing the following:
Package: * Pin: release o=GetDeb Pin-Priority: 50
In the process of learning about this, I discovered that there is a bug in apt that prevents the
/etc/preferences.d directory from being searched. So... don't try to use that directory.
With the preferences file set up as noted,
aptitude dist-upgrade won't try to upgrade packages to their getdeb versions. The priority of 50 basically means that packages will be installed from getdeb only if they are not available from anywhere else.
At this point I'm looking for a convenient way to upgrade a package to the getdeb version or to the most recent version (either is okay) and upgrade/install dependencies as required. I usually do this stuff from the command line, but I found that I needed to go into the curses version of
aptitude in order to upgrade a package to a specific version. This is not to say that there's not a way to do this from the command line, but if there is it is not readily discernible from aptitude's quick documentation.
Within aptitude I had to select the desired version of the desired package for upgrade, and then deal with 'conflicts' created because of that package version's dependencies on newer versions of other packages. This was easy enough to resolve —I just had to select the getdeb-originated versions of those packages— but it seems like an unnecessary hassle. Is there a neater way to do this?
As @Ryan Thompson explains, versions can be passed to
apt-get —or, as I discovered,
aptitude's command-line mode— by suffixing
=VERSION to the package name, where VERSION is the same string listed by
So doing something like
aptitude install rosegarden=1:10.04-1~getdeb1 will install that package from the getdeb repo even if GetDeb packages are pinned as explained above. I did this and was prompted to confirm upgrade of the depended-upon package
rosegarden-data to the version provided by getdeb.