0

I want to find out whether a package that is not installed on Ubuntu is available in my configured repositories using a shell script, preferably not one that needs to examine the output from a command to determine what is happening. I have no problems determining whether a package has been installed, but determining if it is available is another problem.

Jonathan
  • 1,498

1 Answers1

1

Change redis to whatever package you want to check.

grep "^Package: redis" /var/lib/apt/lists/*_binary-$(dpkg --print-architecture)_Packages

In my machine this yield.

$ grep "^Package: redis" /var/lib/apt/lists/*_binary-$(dpkg --print-architecture)_Packages
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-security_universe_binary-amd64_Packages:Package: redis
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-security_universe_binary-amd64_Packages:Package: redis-sentinel
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-security_universe_binary-amd64_Packages:Package: redis-server
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-security_universe_binary-amd64_Packages:Package: redis-tools
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis-redisearch
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis-redisearch-doc
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis-sentinel
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis-server
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_universe_binary-amd64_Packages:Package: redis-tools
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-updates_universe_binary-amd64_Packages:Package: redis
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-updates_universe_binary-amd64_Packages:Package: redis-sentinel
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-updates_universe_binary-amd64_Packages:Package: redis-server
/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic-updates_universe_binary-amd64_Packages:Package: redis-tools
/var/lib/apt/lists/ppa.launchpad.net_chris-lea_redis-server_ubuntu_dists_bionic_main_binary-amd64_Packages:Package: redis
/var/lib/apt/lists/ppa.launchpad.net_chris-lea_redis-server_ubuntu_dists_bionic_main_binary-amd64_Packages:Package: redis-sentinel
/var/lib/apt/lists/ppa.launchpad.net_chris-lea_redis-server_ubuntu_dists_bionic_main_binary-amd64_Packages:Package: redis-server
/var/lib/apt/lists/ppa.launchpad.net_chris-lea_redis-server_ubuntu_dists_bionic_main_binary-amd64_Packages:Package: redis-tools

You can see it output the one from Ubuntu main repository (universe), and external repository chris-lea/redis-server.

You can easily adjust this to your need, assuming you would create a shell script.

Steps taken from https://serverfault.com/questions/252333/list-all-packages-from-a-repository-in-ubuntu-debian.

Liso
  • 15,677