debget(1) download source and binary Debian packages


debget [switch]... { package | section/package | file.dsc | file.deb }...


debget downloads source and binary Debian packages by name and optionally unpacks, compiles and installs them. The default behavior is to download the source for packages, to unpack and build *.dsc files and to install *.deb files. For detailed defaults on FTP server names and such run "debget --help".

debget doesn't require a local copy of the Packages files, instead it lists directories on the FTP site to find out what versions are available.

Non-switch arguments are *.dsc files, *.deb files, and package names or section/package, eg base/dpkg or non-free/games/quake2. There are two cases in which you've got to specify the section:

Information about the package isn't in the local available file (as shown by "dpkg --print-avail"), or the information there is wrong.
You're downloading a source package which doesn't generate a binary package of the same name. Normally debget infers the correct source package to download based on the "dpkg --print-avail" output. (Eg, if you say to download the source for perl-base, it will really download the perl sources.) This isn't possible if the source package doesn't have an available file entry (which is the case when the source package doesn't generate a binary package of the same name). In this case debget will use the section for the package which you specified (perl-base in this case). If the section for that package isn't available, or if it's not the same as the section for the source package, you have to specify the section yourself.

To handle either of these cases, specify the package with the section prepended, as it would appear in the available file. Eg, base/dpkg or non-free/games/quake2.


--arch arch
Specify the installation architecture (used to find binary packages). The default is the output of "dpkg --print-architecture".
-b, --binary
Download binary packages. The default is not to download them.
-B, --nobinary
Don't download binary packages. This is the default.
-u, --build
Build downloaded source packages. This implies --unpack. --build is turned off by default, but it is turned on if you specify any *.dsc or *.deb files on the command line.
Turn debugging on. Specify multiple times for more detail.
--dir dir
Specify the path to the top of the Debian hierarchy on the primary FTP server.
-d dist, --dist dist
Specify the distribution from which to download packages. The default is unstable. You can use the name of any subdirectory in the dists directory in the Debian archive, or experimental (which is special-cased).
Show the usage message and die.
-h host, --host host
Specify the host name of the primary FTP server.
-i, --install
Install binary packages. This turns on --unpack and --build, so specifying it will cause debget to install just about everything you mention on the command line. Packages will be downloaded, unpacked, built, and installed, *.dsc files will be unpacked, built, and installed, and *.deb files will be installed.
-n, --no
Go through the motions, but don't actually download any packages.
-f, --no-config
Don't process either /etc/debget.rc or ~/.debget.rc.
--no-download-re re
Don't download files whose name match the Perl regexp re. This option can be specified multiple times.
Don't download *.tar.gz files. This is normally used when downloading sources, when specified you'll just fetch the *.diff.gz and *.dsc files.
Don't run dscverify before unpacking sources. dscverify checks that the .dsc file is signed by a Debian developer and that the MD5 sums and file sizes given in it match the files about to be unpacked. These are good things, so debget will try to run dscverify by default. The dscverify program is in the devscripts package.
-F, --no-user-config
Don't process ~/.debget.rc.
--non-us-dir dir
Specify the path to the top of the Debian hierarchy for non-US packages.
-H host, --non-us-host host
Specify the host name of the non-US FTP server.
-r cmd, --root-build cmd
Use cmd to become root when building a package from source. The default is the first of fakeroot, sudo, super, or su which is present on the system.
-R cmd, --root-install cmd
Use cmd to become root when installing a package. The default is what you gave for --root-build if you specified anything, otherwise the first of sudo, super, or su which is present on the system.
-s, --source
Download source packages. This is the default.
-S, --nosource
Don't download source packages. The default is to download them.
Unpack downloaded source packages.
-v, --verbose
Be verbose.
Print the version number and exit.


The default behavior of debget can be modified by the configuration files /etc/debget.rc and ~/.debget.rc (unless modified by the -f or -F switches). These files are processed as Perl code. They can set these variables to control the program (with their corresponding switches):
--binary, boolean
--build, boolean
--debug, integer
--install, boolean
--no, boolean
--no-config, boolean
--no-download-re, array reference
--no-download-tar, boolean
--no-dscverify, boolean
--no-user-config, boolean
--source, boolean
--unpack, boolean
--verbose, boolean

Here's an example configuration file:

    $O{'host'} = '';
    $O{'verbose'} = 1;


If you specify --install all produced binary packages will be installed, even ones you didn't specify on the command line. Eg, if you run "debget --install ssh" it will install both ssh and ssh-askpass.

I'd like to add a --clean switch which will make the program remove intermediate files.

See /usr/share/doc/debget/README.Debian if your transfers are failing because you need to use passive FTP or a proxy.


The code is licensed under the GNU GPL and distributed as part of Debian.


Roderick Schertler <[email protected]>