Linux package management

From Ever changing code
Jump to navigation Jump to search


List all configured software sources

grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/

List all installed packages, search wit dash '/'. Remove grep to display headers

dpkg -l | grep ii | less

Search within the package descriptions you've already downloaded to find the package that's got the feature you're looking for. REGEX (regular expressions) is expected after 'search' and any keystrokes that mean something to your command shell (e.g. [|?*] ) you'll need to quote them so that apt-cache will be able to see them instead of having the shell expand the term to a list of file names that mean something else entirely.

apt-cache search tunnel
apt-cache search 'php.*sql'
apt-cache search apache.\*perl
apt-cache search elvis\|vim
Display info about a package
apt-cache show gns3
Check an available package verison in a repository
$ apt-cache policy gns3
  Installed: (none)
  Candidate: 0.8.6-3ubuntu1
  Version table:
     0.8.6-3ubuntu1 0
        500 trusty/multiverse amd64 Packages

Install a specific version

sudo apt-get install ansible=<version>
sudo apt-cache policy ansible      #show available packages and its primary install candidate 
sudo apt-cache showpkg ansible     #shows details about available packages including dependencies
sudo apt-cache showpkg ansible
Package: ansible
Versions: (/var/lib/apt/lists/ppa.launchpad.net_ansible_ansible_ubuntu_dists_trusty_main_binary-amd64_Packages)
Description Language: 
                File: /var/lib/apt/lists/ppa.launchpad.net_ansible_ansible_ubuntu_dists_trusty_main_binary-amd64_Packages
                 MD5: ddfdff3530378f98f78630ce2aed5fe8
Description Language: en
                File: /var/lib/apt/lists/ppa.launchpad.net_ansible_ansible_ubuntu_dists_trusty_main_i18n_Translation-en
                 MD5: ddfdff3530378f98f78630ce2aed5fe8

1.7.2+dfsg-1~ubuntu14.04.1 (/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_trusty-backports_universe_binary-amd64_Packages)
Description Language: 
                File: /var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages
                 MD5: db2b21b0d2286fccc4401d5982361488

1.5.4+dfsg-1 (/var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages)
Description Language: 
                File: /var/lib/apt/lists/gb.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages
                 MD5: db2b21b0d2286fccc4401d5982361488

Reverse Depends: 
Dependencies: - python (0 (null)) python-support (2 0.90) python-jinja2 (0 (null)) python-yaml (0 (null)) python-paramiko (0 (null)) python-httplib2 (0 (null)) python-six (0  sshpass (0 (null)) 
Provides: - 
1.7.2+dfsg-1~ubuntu14.04.1 - 
1.5.4+dfsg-1 - 
Reverse Provides: 
sudo apt-cache policy ansible
  Installed: (none)
  Version table: 0
        500 trusty/main amd64 Packages
     1.7.2+dfsg-1~ubuntu14.04.1 0
        100 trusty-backports/universe amd64 Packages
     1.5.4+dfsg-1 0
        500 trusty/universe amd64 Packages

Package sources management

sudo add-apt-repository
sudo add-apt-repository --remove

Signed packages

Fix missing package signing key

The apt packaging system has a set of trusted keys that determine whether a package can be authenticated and therefore trusted to be installed on the system. Sometimes the system does not have all the keys it needs and runs into this issue. Fortunately, there is a quick fix. Each key that is listed as missing needs to be added to the apt key manager so that it can authenticate the packages.


Error: focal InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA16FCBCA621E701


sudo apt-key adv --keyserver --recv-keys AA16FCBCA621E701
Executing: /tmp/apt-key-gpghome.qhiPACEaom/ --keyserver --recv-keys AA16FCBCA621E701
gpg: key AA16FCBCA621E701: public key "HashiCorp Security (HashiCorp Package Signing) <>" imported
gpg: Total number processed: 1
gpg:               imported: 1

HashiCorp missing key

# cat /etc/apt/sources.list.d/hashicorp.list 
deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] jammy main

rm /usr/share/keyrings/hashicorp-archive-keyring.gpg
curl | gpg --dearmor > /tmp/hashicorp-archive-keyring.gpg
sudo mv /tmp/hashicorp-archive-keyring.gpg /usr/share/keyrings/


# Error
GPG error: cloud-sdk InRelease: The following signatures couldnt be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05

# Fix
curl | sudo apt-key --keyring /usr/share/keyrings/ add -


It it a default package management in the following and many other RPM-based Linux distributions:

  • Amazon Linux AMI
  • Red Hat Enterprise Linux
  • Fedora
  • CentOS


System update

sudo yum update

Install package

sudo yum install nagios

Package description

$ yum info nagios
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name        : nagios
Arch        : x86_64
Version     : 3.5.1
Release     : 1.6.amzn1
Size        : 5.3 M
Repo        : installed
From repo   : amzn-main
Summary     : Nagios monitors hosts and services and yells if somethings breaks
URL         :
License     : GPLv2
Description : Nagios is a program that will monitor hosts and services on your
            : network.  It has the ability to send email or page alerts when a
            : problem arises and when a problem is resolved.  Nagios is written
            : in C and is designed to run under Linux (and some other *NIX
            : variants) as a background process, intermittently running checks
            : on various services that you specify.
            : The actual service checks are performed by separate "plugin" programs
            : which return the status of the checks to Nagios. The plugins are
            : available at
            : This package provides the core program, web interface, and documentation
            : files for Nagios. Development files are built as a separate package.

List available packages

yum list [available|installed|extras|updates|obsoletes|all|recent] [pkgspec] 
yum list available | less
yum list available | grep package


Nala is a front-end for libapt-pkg, the interface is using the python-apt api. It takes the most of the apt-get options and it aims to show specifically what will happen with a package during install, removal, or an upgrade.

# Install
## Option 1. Ubuntu 22.04 / Debian Testing/Sid
echo "deb-src scar main" | sudo tee -a /etc/apt/sources.list.d/volian-archive-scar-unstable.list
wget -qO - | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null
sudo apt update && sudo apt install nala

## Option 2.
Navigate to releases page

# Usage
sudo nala update
nala list --upgradable
sudo nala upgrade

  autopurge   Autopurge packages that are no longer needed.
  autoremove  Autoremove packages that are no longer needed.
  clean       Clear out the local archive of downloaded package files.
  fetch       Fetch fast mirrors to speed up downloads.
  history     Show transaction history.
  install     Install packages.
  list        List packages based on package names.
  purge       Purge packages.
  remove      Remove packages.
  search      Search package names and descriptions.
  show        Show package details.
  update      Update package list.
  upgrade     Update package list and upgrade the system.

# Auto completion
nala --install-completion bash
  bash completion installed in /home/vagrant/.local/share/bash-completion/completions/nala.bash
  Completion will take effect once you restart the terminal


sudo nala update
[sudo] password for piotr: 
Error: cloud-sdk InRelease
  The following signatures couldn t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
╭─ Updating Package List ───────────────────────────────────────────────────────────────────────────────────────────╮
│No Change: jammy InRelease                                                      │
│No Change: xenial InRelease                                                 │
│No Change: jammy InRelease                                                        │
│No Change: stable InRelease                                                 │
│Updated: jammy-updates InRelease [114 KB]                                       │
│Updated: jammy-security/universe amd64 DEP-11 Metadata [13 KB]                  │
│Fetched 3.6 MB in 1s (0 Bytes/s)                                                                                   │