If wanted to setup a very simple apt repository on RHEL system to server a small environment with Debian/Mint systems. So the goal is just to place some already built deb packages to some apt repository. Unfortunally it turned to be not a straight forward task like with yum repos. All common ways are based on the Debian/Ubuntu scripts, which are not available on the RHEL platform via packages.
This post covers following:
- Creation of APT repository on very simple way without involvment of usual tools like apt-ftparchive or reporepo
- APT repository will be GPG signed, to allow verification of integrity
- APT repository will be build on the CentOS/RHEL platform and serve Ubuntu/Debian clients
Apt repository on the server
- Create or import gpg keys you want to use for signing
- Create a new folder
apt-repo
and place your deb packages to this folder - Make this folder available via http/https
#install epel as we need dpkg from epel-testing
$ yum -y install epel-release
#install dpkg binaries from epel-testing
$ yum -y install --enablerepo=epel-testing dpkg-dev tar
#lets create the package index
$ cd apt-repo
$ dpkg-scanpackages -m . > Packages
$ cat Packages | gzip -9c > Packages.gz
#create the Release file
$ PKGS=$(wc -c Packages)
$ PKGS_GZ=$(wc -c Packages.gz)
$ cat > Release << EOF
Architectures: all
Date: $(date -R)
MD5Sum:
$(md5sum Packages | cut -d" " -f1) $PKGS
$(md5sum Packages.gz | cut -d" " -f1) $PKGS_GZ
SHA1:
$(sha1sum Packages | cut -d" " -f1) $PKGS
$(sha1sum Packages.gz | cut -d" " -f1) $PKGS_GZ
SHA256:
$(sha256sum Packages | cut -d" " -f1) $PKGS
$(sha256sum Packages.gz | cut -d" " -f1) $PKGS_GZ
EOF
#and sign it
$ gpg -abs -o Release.gpg Release
Configure the clients
#add the public key to the apt keyring
$ apt-key add public-key.file
#add the new repo
$ echo "deb http://some-url/apt-repo/ / " > /etc/apt/sources.list.d/new-repo.list
#and update
$ apt-get update