DEB package notes - dpkg, apt, aptitude, and friends

From Noah.org
Revision as of 13:56, 16 March 2010 by Root (talk | contribs)
Jump to navigationJump to search


Notes on APT, apt-get, aptittude, dpkg, and friends

Download a specific DEB package from a repository

This will force a download of the given PACKAGE_NAME. The file will be stored in /var/cache/apt/archives and the exact name might be different than the package name. It will at least have a version number appended to it.

apt-get --download-only --force-yes -yy install --reinstall [PACKAGE_NAME]

This script will download into the current directory:

#!/bin/sh
# deb-download

PACKAGE_NAME=$1
DESTINATION_DIR=$(readlink -f .)
PARTIAL_DIR=${DESTINATION_DIR}/partial
[ -d ./partial/ ] && PARTIAL_EXISTS=1

if [ -z "${PARTIAL_EXISTS}" ]; then
    mkdir ${DESTINATION_DIR}/partial
fi

apt-get -d --force-yes -y install --reinstall -o Dir::Cache::archives=${DESTINATION_DIR} ${PACKAGE_NAME}

if [ -z "${PARTIAL_EXISTS}" ]; then
    rmdir ${DESTINATION_DIR}/partial
fi

You can also see the URL of where the package would be downloaded from:

--print-uris

Creating DEB packages

debian control directory

debian/
root name of a package control directory.
dh-make
Convert an existing source package to your own package for modification.
aptitude -q -y install dh-make fakeroot pbuilder cdebootstrap

How To

  1. Put all source into a directory named package-version.
  2. Modify source directory as specified in http://www.debian.org/doc/maint-guide/ch-modify.en.html
  3. When you are done cd above this directory: cd ..
  4. create package-version.tar.gz source tarball: `tar czf package-version.tar.gz package-version`.
  5. Create initial debian package environment: `cd package-version/;dh_make -e user@example.com -f ../package-version.tar.gz`. This will create a new "debian" directory.
  6. Edit these files ./debian/control ./debian/copyright ./debian/license
  7. Run `dpkg-buildpackage -rfakeroot`

clean environment and workspace

This depends on `cdebootstrap`. This will take a while as it create an entire Debian chroot directory that looks like a fresh install.

sudo pbuilder create