Local Ubuntu APT repo mirror on CentOS 7 v2

     

I’ve done this using apt-mirror already, but it turns out, apt-mirror has a few caveats:

  • it’s unmaintained
  • it requires debootstrap + chroot

On top of that, I’ve been having issues enabling multi-arch for my repo. So I tried out apt-cacher-ng too, but it turned out to not play too well with reverse proxies. Then I tried debmirror, and guess what? It produced the exact same problem as apt-mirror. At this point it became clear the problem lies within the client, and my current workaround is as simple as:

sudo sed -i 's/NATIVE_ARCHITECTURE/ARCHITECTURE/' /etc/apt/apt.conf.d/50appstream

I have no idea if this will break anything, anywhere, ever. This is what I’m using now, and it seems to be working fine so far.


Anyway, using debmirror on CentOS is really simple. Just install it:

yum install epel-release
yum install debmirror

Then you also gotta make sure you trust the mirror key. If you’re using archive.ubuntu.com, it should be:

gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Now you can decide if you use /etc/debmirror.conf which won’t allow for a multi-arch mirror, since ports reside on a different URL. You can also choose to provide all parameters on the command line, which results in a lot of redundancy, since the vast majority of parameters will be the same.

So I decided to write up my own wrapper script:

debmirror-runner

The repo has example config files, so it should be pretty straightforward to get going. Cheers 🙂