A debian package to fetch direct download links for .deb packages specified by name.
This package is used in combination with LastVersion as part of the system for the Proteus Apt Repository; which is a custom package repository for ZorinOS and Ubuntu. It is used to fetch the direct URL to a package and then is downloaded and added to the repository automatically.
The following are commands you can execute with apt-url:
This option specifies the package you want to search for.
$ apt-url --package reprepro
reprepro_5.4.7-1_amd64.deb
https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/r/reprepro/reprepro_5.4.7-1_amd64.debAlternatively, if you do not specify any options, and only want to provide a package name, you can do so without --package by using:
$ apt-url reprepro
reprepro_5.4.7-1_amd64.deb
https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/r/reprepro/reprepro_5.4.7-1_amd64.debThis returns only the filename of the package
$ apt-url --fileOnly --package reprepro
reprepro_5.4.7-1_amd64.debThis returns only the url of the package
$ apt-url --urlOnly --package reprepro
https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/r/reprepro/reprepro_5.4.7-1_amd64.debThis option allows you to use apt-get to list information about a package, instead of apt-move / fetch:
$ apt-url --aptOnly --urlOnly --package reprepro
https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/r/reprepro/reprepro_5.4.7-1_amd64.debThis allows you to display the results for a package with color and formatting.
$ apt-url --pretty --package reprepro
File reprepro_5.4.7-1_amd64.deb
URL https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/r/reprepro/reprepro_5.4.7-1_amd64.deb
$ apt-url --pretty --package repbad
ERROR 💡 Could not find package repbad Lists all of the available commands for this package; and examples that you can try.
$ apt-url --help
apt-url
A package which allows you to fetch information about a package, including the url of where it is hosted
last update: 2025-23-05
apt-url --package package-name
Syntax:
Command apt-url [ -option [ arg ] ]
Options apt-url [ -h | --help ]
-A required
-A... required; multiple can be specified
[ -A ] optional
[ -A... ] optional; multiple can be specified
{ -A | -B } one or the other; do not use both
Arguments apt-url [ -p package-name | --package package-name ] arg
Examples apt-url package-name
apt-url --package package-name
apt-url --aptOnly --pretty --package package-name
Options:
-p, --package <string> package name to search for
-a, --aptOnly use apt-get to search for packages instead of apt-fetch
-f, --fileOnly only return url for package
-u, --urlOnly only return filename for package
-P, --pretty show results in formatted layout
-v, --version current version of this app
-x, --dev developer mode; verbose logging
-h, --help show this help menu If you do not wish to manually install or build your own copy; you can add it via our Proteus Apt Repository.
Download the GPG key utilized with the repository:
wget -qO - https://github.com/Aetherinox.gpg | \
sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/aetherinox-proteus-archive.gpgAdd the Proteus Apt repo to your Linux sources:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/aetherinox-proteus-archive.gpg] https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/aetherinox-proteus-archive.listNow update your packages so that the new repo is added:
sudo apt update==(Optional)== To test if the correct GPG key was added:
gpg -n -q --import --import-options import-show \
/usr/share/keyrings/aetherinox-proteus-archive.gpg | \
awk -v val=BCA07641EE3FCD7BC5585281488D518ABD3DC629 '/pub/{getline; gsub(/^ +| +$/,"");
if($0 == val)
print "("$0") Found match for Proteus Apt Repo."
else
print "("$0") No match for Proteus Apt Repo."}'You can then install apt-url with:
sudo apt install apt-url==(Optional)== You can test to make sure you are getting the package from the correct source. The URL returned should be the one to the proteus apt repo.
$ apt-get download --print-uris apt-url
'https://raw.githubusercontent.com/Aetherinox/proteus-apt-repo/main/pool/main/a/apt-url/apt-url_1.0.0-2_all.deb' apt-url_1.0.0-2_all.deb 2310 SHA512:5d04d99e636b897e39c7b7b834e845cd7bc98ed82e5ebb7657fc035819e05d585ddc3c7a8c6e2c9c3c47e56d4529d7b2b185addceb1c2115b6ea32982d6f6de6To build, you must have the following structure. In the tree below, the folder share/lintian is optional and only contains Lintian overrides.
📁 src
📁 apt-url_1.1.0-1_amd64
📁 DEBIAN
📄 control
📁 usr
📁 bin
📄 apt-url
📁 share
📁 doc
📁 apt-url
📄 changelog.gz
📄 copyright
📁 lintian
📁 overrides
📄 apt-url
📁 apt-url_1.1.0-1_arm64
📁 DEBIAN
📄 control
📁 usr
📁 bin
📄 apt-url
📁 share
📁 doc
📁 apt-url
📄 changelog.gz
📄 copyright
📁 lintian
📁 overrides
📄 apt-url
Compress the changelog:
cd src
gzip --best -n apt-url_1.1.0-1_amd64/usr/share/doc/apt-url/changelog.Debian
gzip --best -n apt-url_1.1.0-1_arm64/usr/share/doc/apt-url/changelog.DebianGenerate the .deb packages:
cd src
dpkg-deb --root-owner-group --build apt-url_1.1.0-1_amd64
dpkg-deb --root-owner-group --build apt-url_1.1.0-1_arm64Run Lintian:
cd src
lintian apt-url_1.1.0-1_amd64.deb --tag-display-limit 0
lintian apt-url_1.1.0-1_arm64.deb --tag-display-limit 0