SergeHallyn_reprepro

When testing local package builds, particularly for clean upgrading (i.e. after making packaging changes), it can be useful to set up a local mirror so as to test regular apt-get dist-upgrade. There are other ways of doing this, but I find reprepro to be the simplest and most reliable.

Setting up a local mirror with reprepro

* Install:

sudo apt-get install reprepro

* Set up:

sudo mkdir -p /var/packages/ubuntu/conf
cat | sudo tee /var/packages/ubuntu/conf/distributions << EOF
Origin: Local updates
Label: Local updates
Codename: raring
Architectures: i386 amd64 source
Components: main
Description: Local APT repository
EOF

You can drop architectures you won't use, and switch Codename for whichever release you actually intend to use. Now add the .debs you want. You need to be in /var/packages/ubuntu to do so:

cd /var/packages/ubuntu
reprepro includedeb raring /full/path/to/name.deb

i.e.

cd /var/packages/ubuntu
for f in /home/ubuntu/*.deb; do
        reprepro includedeb raring $f
done

Finally, update your sources.conf to include this mirror

cat | sudo tee -a /etc/apt/sources.list << EOF
deb file:/var/packages/ubuntu raring main
EOF

Now you can apt-get update to read your mirror.

Signing

In xenial and beyond, apt by default requires signed archives. To create one with reprepro,

  • create a gpg key with 'gpg --gen-key'
  • export the key, "gpg --export -a > pub.key"

  • import they into apt using "apt-key add pub.key"
  • Get the key id (for the secret key) using gpg --list-keys
  • In the distributions file created above, add the line "SignWith: keyid"

  • If you provided a password for the key, then next to the distributions file, you must create a file called 'options' containing the line "ask-passphrase"

References

I found http://www.jejik.com/articles/2006/09/setting_up_and_managing_an_apt_repository_with_reprepro/ particularly helpful

SergeHallyn_reprepro (last edited 2017-07-10 05:00:04 by serge-hallyn)