Compiled below for personal use are a few random examples of dealing with Debian packages.
Setting A Package On Hold
There are reasons for not wanting to automatically upgrade a package, for instance if you know the new version to be buggy. In that situation you want to put this package on hold.
$ echo packagename hold | dpkg --set-selections
apt-get dist-upgrade now won't update this package anymore. To release a package from hold again:
$ echo packagename install | dpkg --set-selections
To learn about the packages that are on hold:
$ dpkg --get-selections
Individual packages can be installed via
dpkg -i package.deb. This won't, however, take care of dependencies. If you have lots of those packages you might want to have a local repository that you can add to
sources.list and use in conjunction with commands as
$ mkdir repository $ cd repository user:~/repository $ mkdir binary user:~/repository $ mkdir source
Now, you can copy
.deb packages to
binary and source files as
source. Then you need to generate information about these files:
user:~/repository $ dpkg-scanpackages binary /dev/null \ > | gzip -9c > binary/Packages.gz user:~/repository $ dpkg-scansources source /dev/null \ > | gzip -9c > source/Sources.gz
Finally, to make the freshly created repository available to e.g.
apt-get we add the following to
Downgrading A Package
To install a particular version of a package:
$ sudo apt-get install packagename=version
Older versions of packages can be found for example at http://snapshot.debian.net.
When you use packages from third-parties that are not official part of a distribution it's likely that you run into errors. For instance,
$ apt-get install ... ... dpkg: error processing packageX.deb (--unpack): trying to overwrite `...', which is also in package ... dpkg-deb: subprocess paste killed by signal (Broken pipe) Errors were encountered while processing: packageX.deb E: Sub-process /usr/bin/dpkg returned an error code (1)Then you can work around as:
$ dpkg -i --force-overwrite packageX.deb