Create a local mirror of a Percona repository¶
Enterprises introduce various security policies: for example, allow Internet access only on one server or deny root privileges to database administrators.
To comply with these policies and install Percona software in your environment, a solution is to set up the local mirror of Percona repositories. This document provides instructions how to do it.
Important
The instructions below are for AMD/Intel x64 architectures.
Prerequisites¶
To create a local mirror of a Percona repository, you need the following software:
- Rsync to download packages from Percona repositories and upload them to your mirror
-
Repository creation tools:
dpkg-dev
for Debian and Ubuntucreaterepo
for RHEL and derivatives
Debian and Ubuntu¶
Run the following commands as the root user or via sudo:
-
Install
dpkg-dev
utility to unpack, build and upload Debian source packages.$ sudo apt install dpkg-dev
-
Create the folder where your mirror repository resides. For example,
/opt/debs/
$ sudo mkdir -p /opt/debs/
-
Download the
.deb
packages relevant to your operating system from Percona repository into your repository usingrsync
:$ sudo rsync -avrt rsync://rsync.percona.com/rsync/<repo-name>/apt/pool/main/p/<product_name>/*.<os-version>*.deb /opt/debs/
For example, to download Percona Backup for MongoDB packages on Ubuntu 22.04, the command is the following:
$ sudo rsync -avrt rsync://rsync.percona.com/rsync/pbm/apt/pool/main/p/percona-backup-mongodb/*.jammy*.deb /opt/debs/
Check the list of available repositories for MySQL, MongoDB, PostgreSQL and Percona Tools.
-
Create the Packages file. This is the file that the package manager uses to retrieve the information about new and updated packages when you run
apt-get update
. Use thedpkg-scanpackages
command:$ cd /opt/debs $ sudo dpkg-scanpackages . /dev/null > Packages
The command adds the latest version of the packages to the Packages file.
-
Import the GPG key to sign the repository.
$ sudo curl -fsSL https://github.com/percona/percona-repositories/raw/main/deb/percona-keyring.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/percona-keyring.gpg >/dev/null
-
Add your repository to the
etc/apt/sources.list
file for the package manager to find new or updated packages from your repository:$ echo "deb [trusted=yes] file:///opt/debs ./" | sudo tee -a /etc/apt/sources.list
-
Run
apt-get update
to check that the package manager can read from your repository. -
(Optional) Check your mirror repository contents:
$ sudo apt-cache policy percona-backup-mongodb
Sample output
percona-backup-mongodb: Installed: (none) Candidate: 2.3.1-1.jammy Version table: 2.3.1-1.jammy 500 500 file:/opt/debs ./ Packages
RHEL and derivatives¶
Run the following commands as the root user or via sudo:
-
Install the
createrepo
utility. It creates yum repositories and their metadata caches$ sudo yum install createrepo
-
Create the directory where your mirror repository resides. For example,
/opt/rpms
$ sudo mkdir /opt/rpms
-
Download RPM packages from Percona repository to your local mirror using
rsync
:$ sudo rsync -avrt rsync://rsync.percona.com/rsync/<repo_name>/yum/release/<os_version>/RPMS/x86_64/ /opt/rpms/
For example, to download packages for Percona Distribution for PostgreSQL 15 on Oracle Linux 9, the command is the following:
$ sudo rsync -avrt rsync://rsync.percona.com/rsync/ppg-15/yum/release/9/RPMS/x86_64/ /opt/rpms/
Check the list of available repositories for MySQL, MongoDB, PostgreSQL and Percona Tools.
-
Create the repository metadata using
createrepo
:$ sudo createrepo --update /opt/rpms
-
Import the GPG key to sign the repository:
$ sudo rpm --import https://raw.githubusercontent.com/percona/percona-repositories/release-1.0-27/rpm/RPM-GPG-KEY-Percona
-
Check that the key has been imported successfully:
$ sudo rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
Sample output
gpg-pubkey-8507efa5-5b02c2fb gpg(Percona MySQL Development Team (Packaging key) <mysql-dev@percona.com>)
-
Create the repository configuration file. It must meet the following criteria:
- It must be located in
/etc/yum.repos.d/
- It must have the extension
.repo
to be recognized byyum
.
The following is the example of the configuration file:
/etc/yum.repos.d/percona-local.repo[percona-local] name=Local Percona repository baseurl=file:///opt/rpms/ gpgcheck=1 enabled=1
- It must be located in
-
Check the setup:
$ sudo yum repolist
Sample output
percona-local Local Percona repository
Keep the mirror repository up-to-date¶
To update your local mirror, do the following:
-
Download new packages relevant to your operating system from Percona repository
$ rsync -avrt rsync://rsync.percona.com/rsync/<repo-name>/apt/pool/main/p/<product_name>/*.<os-version>*.deb /opt/debs/
-
Update the Packages file.
$ cd /opt/debs dpkg-scanpackages . /dev/null > Packages
-
Update the local cache.
$ apt update
-
Download new packages from Percona repository
$ rsync -avrt rsync://rsync.percona.com/rsync/<repo_name>/yum/release/<os_version>/RPMS/x86_64/ /opt/rpms/
-
Update the repository metadata
$ sudo createrepo --update /opt/rpms
Tip
You can automate the download process by adding the task to crontab
.
Based on the blog post How to Create Your Own Repositories for Packages by Evgeniy Patlan
Get expert help¶
If you need assistance, visit the community forum for comprehensive and free database knowledge, or contact our Percona Database Experts for professional support and services.