Internet Explorer is no longer supported. Many things will still work, but your experience will be degraded and some things won't function. Please use a modern browser such as Edge, Chrome, or Firefox.

Debian (Apt)

view on GitHub

Debian packages are used by any Linux distribution that uses Apt, such as Debian and Ubuntu.

PGP Keys and Repository Signing

Debian repositories typically use PGP public/private keys to verify server identity. By default, ProGet will generate a key pair for a Debian feed when the feed is created, but you may generate a new one, delete the key entirely, or upload your own secret key to use instead.

If you are using PGP signing for your feed, you can download the public key from: https://{proget-server}/debian/{feed-name}/keys/{feed-name}.asc

To view information about your feed's signing key or to make changes to it, navigate to the Feed Properties page and click the configure link under Debian Settings >> Signing Key. From here you can download the public key, generate a new secret key, delete your secret key, update its expiration date, or upload your own secret key. Note that to use your own secret key in ProGet it must be RSA 2048-4096 bit. Passphrase protection is optional, but if your key file uses it, you must also supply ProGet with the passphrase. Passphrase or not, ProGet will securely store your key encrypted in its database.

Adding a Public Key to Apt

Regardless of whether you generate the secret key with ProGet or upload your own, you will need to add its matching public key to apt.

To add a feed's public key for Apt to use, first you need to download the public key file:

sudo curl -fsSL -o /etc/apt/keyrings/{feed-name}.gpg https://{proget-server}/debian/keys/{feed-name}.gpg

Next, you need to tell Apt that the key is trusted:

echo "deb [signed-by=/etc/apt/keyrings/{feed-name}.gpg] https://{proget-server}/debian/{feed-name}/ {distribution} [components]" | sudo tee "/etc/apt/sources.list.d/{feed-name}.list"

Test the key configuration by updating your local index:

sudo apt update

Common Tasks

Installing Packages

Debian packages are installed using apt-get. To install a package hosted by ProGet, use the command:

sudo apt install "{package-name}"

Creating Packages

To learn how to create a Debian package, visit the Creating a Debian package chapter of the Debian Administrator's handbook.

Publishing Packages

apt does not support uploading a package, so ProGet offers a few alternative methods to publish Debian packages:

Upload from ProGet Web Application

On the feed overview page, select "Add Package" and "Upload Debian Package" to upload a .deb file generated from the dpkg-deb command.

Publish via HTTP

To push a Debian package via HTTP, issue a PUT or POST request with the package file as the content to: http://{proget-server}/debian/{feed-name}/upload/{distro-name}/{component-name}

Examples:

cURL:

curl http://{proget-server}/debian/{feed-name}/upload/{distro-name}/{component-name} --user <user>:<password> --upload-file {my-package}.deb

wget:

wget http://{proget-server}/debian/{feed-name}/upload/{distro-name}/{component-name} --http-user <user> --http-password <password> --method POST --body-file {my-package}.deb

PowerShell:

Invoke-WebRequest http://{proget-server}/debian/{feed-name}/upload/{distro-name}/{component-name} -Credential [System.Net.NetworkCredential]::new('<user>', '<password>') -Method PUT -InFile {my-package}.deb

Debian Feed Index File Generation

Debian feeds act like standard Debian repositories and tools such as Apt can request a Release file and all associated indexes. ProGet has two modes for creating these index/Release files:

  • On-demand: This is the only mode used for versions of ProGet before 2025.14, and remains the default for compatibility reasons. However, it is only appropriate for feeds with few packages. With this mode, your indexes will almost never be stale, but clients will often be kept waiting for ProGet to regenerate its data.
  • Background: ProGet will monitor the feed for changes and proactively generate updated indexes in the background as needed. Indexes could be slightly out of date based on the user-defined maximum age setting, but users will never be kept waiting when requesting an updated index.

We recommend using the background mode for almost all feeds, and this will likely become the default in ProGet 2026. The only reason on-demand remains the default is that we did not want to introduce an automatic behavior change as part of a maintenance release.

Enabling Background Index File Generation

To enable background index generation for a feed, navigate to the Feed Properties page and click the configure link for the Index File Generation setting. Check the box and optionally change the default max age value.

Connectors for Debian Feeds

Debian feeds support connectors to other ProGet Debian (Apt) feeds, official repositories, and other third-party repositories.

Connector Index File Generation

ProGet has to download the index file for any connector repositories. For official repositories (or any that are very large), we strongly recommending enabling background index updating for the connector. You can enable this by clicking the edit link on the Basic Properties section of the connector page and specifying a value (in minutes) for the Index poll frequency field. When a value is specified for that field, ProGet will check the remote index for changes with this frequency and keep its local indexes up to date with minimal impact to users. If this field is left blank, ProGet will continue to use its old behavior of only updating this index on demand, which could result in very slow response times for large, frequently updated repositories.

Official Repositories

When creating a connector to an official repository, we recommend a name based on the distribution and components (if specified). For example:

URL:https://ftp.debian.org/debian/
Distribution:buster
Components:all
Connector name:debian-buster

Limitations

  • ProGet cannot create a Debian repository snapshot