This is a note to self about the release procedure and distro packaging of a development library.
This instructions expect aptly and createrepo to be preinstalled on your repo server together with a valid GPG key.
Packaging a .deb
1. Checkout the release tag and build the deb according to README. Each build should be done on the same machine as the target distribution. If I am packaging for Centos 6 I am also building on Centos 6. If CMake and CPack are set up correctly it usually boils down to:
|
cmake -G "Unix makefiles" -H./ -B./build cd build make cpack -G "DEB" |
If the project is missing CMake, refuse to package it.
2. Check that deb info is correct:
|
dpkg-deb -I bncsutil-1.4.1-Linux.deb |
3. Rename it to distro you are building on, then scp to your repo server
|
mv bncsutil-1.4.1-Linux.deb bncsutil-1.4.1-Debian9.deb |
4. If aptly repo does not exist yet, create it
|
aptly repo create -comment="Debian 9 repo" -component="main" -distribution="bnetdocs-stretch" debian9 |
Ideally you only create the repo the first time, for future updates you create a snapshot of it, add a package, then switch the repo to new snapshot. See aptly docs for more.
Alternatively, you can just add more packages and update the repo with
|
aptly publish update bnetdocs-stretch debian9 |
5. Add package to repo
|
aptly repo add debian9 deb_archives/bncsutil-1.4.1-Debian9.deb |
6. Publish repo
|
aptly publish repo debian9 debian9 |
7. On target machine, add repo to /etc/apt/sources.list and fetch public key
|
deb http://apt.xpam.pl/debian8/ bnetdocs-stretch main |
|
wget -qO - https://apt.xpam.pl/xpam.pl-pubkey.asc | sudo apt-key add - |
8. Update and then check if package info is correct
9. If big mistakes were made
|
aptly publish drop debian9 debian9 |
..and start over. Repeat for Debian 8 etc.
Packaging an .rpm
1. See the previous #1. The only difference is
2. Check that rpm info is correct
|
rpm -qip bncsutil-1.4.1-Linux.rpm |
3. Rename it to distro you are building on, then scp to your repo server
|
mv bncsutil-1.4.1-Linux.rpm bncsutil-1.4.1-Centos7.rpm |
4. Make sure you have .rpmmacros file in home dir with uid of gpg signing key (check out your keys with gpg –list-keys). If you don't have one, generate it. Entry in the file should look like:
5. Sign rpm
|
rpm --addsign rpm_archives/bncsutil-1.4.1-Centos7.rpm |
4. Move to appropriate repo that was created by createrepo earlier (see createrepo docs)
|
mv rpm_archives/bncsutil-1.4.1-Centos7.rpm .createrepo-centos7/ |
5. Update repo metadata
|
createrepo --update ./.createrepo-centos7/ |
6. Add your repo on the target machine
|
yum -y install yum-utils yum-config-manager --add-repo https://centos7.rpm.xpam.pl yum-config-manager --enable https://centos7.rpm.xpam.pl rpm --import https://centos7.rpm.xpam.pl/xpam.pl-pubkey.asc |
Since createrepo is pretty much just an http server you can simply delete an rpm and update the metadata in case things go south.
Repeat for Centos 6 etc.

Cen
GitHub
Eurobattle.net
Lagabuse.com
Bnetdocs