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.
Update
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?
update too
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 aptitude
or apt-cache
show
.
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.
apt-cache policy PACKAGE-NAME
to show the available versions of a package. To install a specific version, useapt-get install PACKAGE-NAME=SPECIFIC-VERSION
.aptitude
, which I prefer to use because it tracks explicit vs. automatic installation, and b) thataptitude
wouldn't realize that it should install pinned dependencies. However I've just tried it out and it seems to work quite well.man apt-mark
.\n\n
Is there no advantage to usingaptitude
? Seems to me I've read recent advice recommending to use it overapt-*
.