apt / dpkg cheatsheet
Fix broken/aborted installation
- apt-get update --fix-missing
- dpkg --configure -a
- apt-get install -f
Reconfigure
- dpkg-reconfigure package
No questions asked / use old config:
- ??
apt upgrade vs apt-dist upgrade
upgrade upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available. dist-upgrade dist-upgrade in addition to performing the function of upgrade, also intelligently handles changing dependencies with new versions of packages; apt-get has a "smart" conflict resolution system, and it will attempt to upgrade the most important packages at the expense of less important ones if necessary. So, dist-upgrade command may remove some packages. The /etc/apt/sources.list file contains a list of locations from which to retrieve desired package files. See also apt_preferences(5) for a mechanism for overriding the general settings for individual packages.
apt upgrade unattended, use default answers (no) or fallback to old config
export DEBIAN_FRONTEND=noninteractive; apt update; apt --assume-yes -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" dist-upgrade: apt autoremove
- DEBIAN_FRONTEND=noninteractive
- Use default answers
https://linuxhint.com/debian_frontend_noninteractive/
- Use default answers
- --assume-yes
- Answer questions with yes (Do you want to upgrade...)
- -o "Dpkg::Options::=--force-confdef"
- Use default package config for new packages
- -o "Dpkg::Options::=--force-confold"
- Use existing config for already installed packages (to not overwrite the existing config!)
Needed?
-
export DEBIAN_PRIORITY=critical
-
ask only absolutely necessary questions
-
-
apt -q
-
Quiet, don't ask questions
-
Find out if a package is installed
- dpkg -s packageName
List manualy / 3rd party packages
E.g. after dist-upgrade
-
apt list --installed | grep -F "$(gettext 'apt' '[installed,local]')"
Install a package manually
- wget http://de.archive.ubuntu.com/ubuntu/pool/universe/p/packageName/packageName_2.48.3-1ubuntu1_amd64.deb
- dpkg -i packageName_2.48.3-1ubuntu1_amd64.deb
If you installed an older version make sure to set the package on "hold" (see below)
Prevent a package from beeing updated (Hold)
List hold packages
-
apt-mark showhold
Mark hold
- sudo apt-mark hold packageName
- Deprecated: echo "packageName hold" | dpkg --set-selections
Revert hold with
- apt-mark unhold packageName
Uninstall a package manually
- dpkg -r packageName
Information about a .deb package
Basic information
- dpkg-deb -I packageName
List of files
- dpkg-deb -c packageName
Which package does a file belong to?
- dpkg-query -S /path/to/file
Try to install dependencies automatically
- dpkg -i packageName_2.48.3-1ubuntu1_amd64.deb
- dpkg: dependency problems...
- apt-get -f install
Force installation even if dependencies are unmet
- dpkg -i --force-depends packageName_2.48.3-1ubuntu1_amd64.deb
Get a list of manually installed packages
http://askubuntu.com/questions/17823/how-to-list-all-installed-packages
- zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'
Fix errors in pre/post scripts
- The scripts are in /var/lib/dpkg/info
- Example for w3m
- w3m.postinst
w3m.postrm
w3m.preinst
w3m.prerm
- w3m.postinst
Re-Install all Packages
- sudo aptitude reinstall '~i'
- for pkg in `dpkg --get-selections | awk '{print $1}' | egrep -v '(dpkg|apt|mysql|mythtv)'` ; do apt-get -y --force-yes install --reinstall $pkg ; done
Install list of packages, eg. replicate on second computer
- apt install dselect
-
apt update
-
dselect update
-
dpkg --get-selections > selections.txt
-
# copy selections.txt to other computer
-
dpkg --set-selections < selections.txt
-
dselect install
Manage alternatives
- update-alternatives --get-selections
- List items with alternatives
- update-alternatives --get-selections | grep php
- php auto /usr/bin/php8.0
- php --version
- 8.0
- update-alternatives --set php /usr/bin/php7.4
- php --version
- 7.4
APT Cache
- apt autoclean
- removes all stored archives in your cache for packages that can not be downloaded anymore (thus packages that are no longer in the repo or that have a newer version in the repo).
- apt clean
- removes all stored archives in your cache.
Automatic apt clean (does this work?)
vi /etc/apt/apt.conf.d/99custom-conf
- # Remove downloaded .deb files after installation by apt-get
APT::Keep-Downloaded-Packages "false";
Get a list of installed packages ordered by priority
dpkg-query -Wf '${Package;-40}${Priority}\n' | sort -b -k2,2 -k1,1