Difference between revisions of "DEB package notes - dpkg, apt, aptitude, and friends"
m |
|||
Line 72: | Line 72: | ||
<pre> | <pre> | ||
sudo pbuilder create | sudo pbuilder create | ||
+ | </pre> | ||
+ | |||
+ | = Errors = | ||
+ | |||
+ | == Package is in a very bad inconsistent state - you should reinstall it before attempting a removal.== | ||
+ | |||
+ | If an install or remove gets interrupted the package database might get left in an inconsistent state. This can cause errors like the one below: | ||
+ | |||
+ | <pre> | ||
+ | dpkg: error processing xserver-xorg-video-s3virge (--remove): | ||
+ | Package is in a very bad inconsistent state - you should | ||
+ | reinstall it before attempting a removal. | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | The following may resolve the issue. This forces dpkg to remove the package despite the errors. This may break stuff! | ||
+ | |||
+ | <pre> | ||
+ | dpkg --force-remove-reinstreq --remove xserver-xorg-video-s3virge | ||
</pre> | </pre> |
Revision as of 12:52, 7 September 2010
Notes on APT, apt-get, aptittude, dpkg, and friends
open and extract files from a DEB package
This will create the destination directory that you give as the last argument.
dpkg-deb -x example-package-name.deb /tmp/example-package-name
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
- Put all source into a directory named package-version.
- Modify source directory as specified in http://www.debian.org/doc/maint-guide/ch-modify.en.html
- When you are done cd above this directory: cd ..
- create package-version.tar.gz source tarball: `tar czf package-version.tar.gz package-version`.
- 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.
- Edit these files ./debian/control ./debian/copyright ./debian/license
- 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
Errors
Package is in a very bad inconsistent state - you should reinstall it before attempting a removal.
If an install or remove gets interrupted the package database might get left in an inconsistent state. This can cause errors like the one below:
dpkg: error processing xserver-xorg-video-s3virge (--remove): Package is in a very bad inconsistent state - you should reinstall it before attempting a removal.
The following may resolve the issue. This forces dpkg to remove the package despite the errors. This may break stuff!
dpkg --force-remove-reinstreq --remove xserver-xorg-video-s3virge