The "Couldn't find any package by glob" error means apt cannot match the package name in any configured repository. Usual causes are typos, missing PPAs, or wrong naming.
The "Couldn't find any package by glob" error indicates that the apt package manager searched through all configured repositories and could not find any package matching the name you specified. Apt treats the argument as a name/glob pattern to look up in its package index, so when nothing matches you get this message. This can happen when the exact package doesn't exist, has been removed, is only available in a PPA you haven't added, or uses a different naming convention on your particular Linux distribution. The error is apt's way of telling you that the name doesn't match anything in the currently available package database.
Run apt update to refresh the package database so apt has the latest information about what is available:
sudo apt updateThis fetches the latest package lists from all configured repositories. Without this step, apt may have outdated information and miss packages that are actually available — especially right after adding a new repository.
Search for the package to find its exact name:
apt-cache search package-name
# or
apt search package-nameThis lists all packages whose name or description matches your search term. Copy the exact name from the output. Package names are case-sensitive and often include version numbers or suffixes (for example php8.3-cli rather than php).
Confirm which release you are running and whether the package targets it:
lsb_release -a
# or
cat /etc/os-releaseSome packages are only published for specific releases. For example, older PHP versions are not in the default repositories on newer Ubuntu releases and require a PPA. Check the package maintainer's documentation or the official repository to confirm availability for your release.
If the package only exists in a PPA, add it and refresh before installing:
sudo add-apt-repository ppa:repository/name
sudo apt update
sudo apt install package-nameFor example, to install a specific PHP version, use the widely-used Ondřej Surý PPA:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3Review a PPA's owner and contents before adding it — a PPA can ship packages that override system ones, so only add sources you trust.
On specialized distributions the kernel and tooling packages are renamed, so check that distribution's documentation:
# On Proxmox VE, use pve-headers instead of linux-headers
sudo apt install pve-headers-$(uname -r)
# On stock Ubuntu/Debian, linux-headers is correct
sudo apt install linux-headers-genericRunning apt-cache search on the machine itself is the most reliable way to discover the exact names your distribution provides.
When installing a downloaded .deb, give apt a path so it knows the argument is a file rather than a package name to look up:
# Correct: absolute path
sudo apt install /path/to/package_name.deb
# Correct: relative path with ./
sudo apt install ./package_name.deb
# Fails: bare filename is treated as a package name
sudo apt install package_name.debWithout a / or ./ in the argument, apt searches the repositories for a package by that name and reports the glob error.
The "glob" wording reflects that apt matches your argument against package names in its index, so a non-matching name produces this error rather than a "not found" for a file.
For architecture issues, inspect the system's architectures with dpkg --print-architecture and dpkg --print-foreign-architectures. On multi-arch systems you can request a specific build explicitly, e.g. sudo apt install package-name:amd64, but the architecture must be enabled (sudo dpkg --add-architecture i386 && sudo apt update) for it to resolve.
To preview what an install would do without changing anything, run a simulation with -s (also spelled --simulate / --dry-run):
apt-get -s install package-name
# equivalently
sudo apt install -s package-nameThere is no apt simulate subcommand — use the -s flag instead. To skip pulling in recommended (but non-essential) packages, add --no-install-recommends. For scripting, prefer apt-get over apt, since apt's output and behavior are intended for interactive use and may change between releases.
E: Cannot set to hold: package 'package-name' is not installed
How to fix "Cannot set to hold" error when package is not installed in APT
debconf: unable to initialize frontend: Dialog
How to fix "debconf: unable to initialize frontend: Dialog" in APT
E: Could not connect to proxy server
Could not connect to proxy server
dpkg: serious warning: files list file for package 'package-name' contains empty filename
How to fix "files list file contains empty filename" in APT
E: Package 'package:i386' has no installation candidate
How to fix "Package package:i386 has no installation candidate" in apt