Complete Guide to Installing and Configuring APT Local Repository in Linux


An APT (Advanced Package Tool) local repository is a powerful way to manage software packages in Linux distributions such as Ubuntu and Debian. In addition to setting up a local repository, you can also configure it to mirror or sync with an existing repository. This article will guide you through the process of installing and configuring an APT local repository in Linux, including mirroring and syncing options.

Step 1: Installing Required Packages

Before setting up the local repository, ensure that the necessary packages are installed on your system. Open the terminal and execute the following command:

sudo apt-get install dpkg-dev apache2

The ‘dpkg-dev’ package provides essential tools for creating Debian packages, while ‘apache2’ is a popular web server used to serve the repository.

Step 2: Creating Repository Directory

Create a directory where you will store the packages for the local repository. For example:

sudo mkdir -p /var/www/html/localrepo

This command creates the ‘/var/www/html/localrepo’ directory to store the packages.

Step 3: Copying Packages

Copy the packages you want to include in the local repository to the repository directory created in the previous step. Use the ‘cp’ command:

sudo cp package1.deb package2.deb /var/www/html/localrepo

Replace ‘package1.deb’ and ‘package2.deb’ with the actual package names.

Step 4: Generating Repository Metadata

To generate metadata files required by APT, navigate to the repository directory and execute the following command:

cd /var/www/html/localrepo
sudo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

This command generates the ‘Packages.gz’ file containing package information.

Step 5: Configuring Apache Web Server

Configure the Apache web server to serve the local repository. Edit the default configuration file:

sudo nano /etc/apache2/sites-available/000-default.conf

Add the following lines within the ‘VirtualHost’ section:

Alias /localrepo /var/www/html/localrepo
<Directory /var/www/html/localrepo>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

Save the changes and exit the text editor.

Step 6: Restarting Apache Web Server

Restart the Apache web server for the changes to take effect:

sudo systemctl restart apache2
Step 7: Updating APT Sources

Update the APT sources on the client machines to include the newly created local repository. Edit the sources.list file:

sudo nano /etc/apt/sources.list

Add the following line at the end:

deb http://your_server_ip/localrepo /

Replace ‘your_server_ip’ with the IP address or hostname of your server.

Step 8: Updating Package Cache

Update the package cache on the client machine to include the packages from the local repository:

sudo apt-get update
Configuring Repositories for Mirroring or Syncing

To configure your local repository for mirroring or syncing with an existing repository, you can use tools like ‘apt-mirror’ or ‘aptly’.

Mirroring with apt-mirror

  1. Install ‘apt-mirror’:
    sudo apt-get install apt-mirror
  2. Configure ‘apt-mirror’ by editing the configuration file:
    sudo nano /etc/apt/mirror.list
  3. Specify the source repository URL and the target mirror directory in the configuration file:
    deb bionic main restricted universe multiverse
    deb bionic-updates main restricted universe multiverse
    deb bionic-security main restricted universe multiverse
    clean http://your_mirror_ip/mirror
  4. Run ‘apt-mirror’ to start the mirroring process:
    sudo apt-mirror
Syncing with aptly
  1. Install ‘aptly’:
    sudo apt-get install aptly
  2. Create a mirror by importing a repository:
    aptly mirror create -architectures=amd64 -filter='Priority (required) | Priority (important) | Priority (standard) | Section (main)' my-mirror bionic
  3. Update the mirror:
    aptly mirror update my-mirror
  4. Publish the mirror to make it available for clients:
    aptly publish snapshot my-mirror


By following these steps, you can install and configure an APT local repository in Linux, and even set it up for mirroring or syncing with an existing repository. This allows for efficient package management within your network, enabling you to install and update software packages seamlessly. Take advantage of these advanced configurations to enhance your package deployment capabilities in your Linux environment.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to top button