Debian Repo og custom .deb pakker.

Lav dit egen debian repository.

= SERVER =

== REPO OPRETTELSE ==

Install lidt pakker der skal bruges

apt-get install gnupg rng-tools reprepro dpkg-sig

ændre i rng-tools

nano /etc/default/rng-tools

skift til
HRNGDEVICE=/dev/urandom

Start rng-tools
/etc/init.d/rng-tools start

Nu kan du lave en pgp key til dit repository (husk at gem dit password)
gpg --gen-key

Lad os sige at /var/www/repo.myrepo.com/www er root for repositoriet.
Så skal der oprettet et par mapper og filer

mkdir -p /var/www/repo.myrepo.com/www/debian/conf

list din pgp key den skal bruges nu
gpg --list-keys

Eksempel

root@server1:~# gpg –list-keys
/root/.gnupg/pubring.gpg
————————
pub 2048R/134433F2 2016-06-27
uid Thomas Adams (Test)
sub 2048R/97C1365D 2016-06-27

lav en distributions fil

nano /var/www/repo.myrepo.com/www/debian/conf/distributions

Indsæt følgenden husk SignWith skal være din pubkey i dette eksempel (97C1365D)

Origin: repo.myrepo.com
Label: repo.myrepo.com
Codename: testing
Architectures: amd64
Components: main
Description: My overdejligt repo
SignWith: 97C1365D
DebOverride: override.testing
DscOverride: override.testing

opret en tom fil
touch /var/www/repo.myrepo.com/www/debian/conf/override.testing

opret en options fil
nano /var/www/repo.myrepo.com/www/debian/conf/options

indsæt følgende

verbose
ask-passphrase
basedir /var/www/repo.myrepo.com/www/debian

Følgende skal i din nginx conf
Indsæt:

location / {
root /var/www/repo.myrepo.com/www;
index index.html;
autoindex on;
}

location ~ /(.*)/conf {
deny all;
}

location ~ /(.*)/db {
deny all;
}

Opret en key andre servere skal bruge for at bruge valide pakker
gpg --armor --output /var/www/repo.myrepo.com/www/repo.myrepo.com.gpg.key --export 97C1365D

== PAKKE OG SIGNING AF DEM ==

start med at lav et sted hvor pakkerne bør laves
mkdir -p /temp/path/for/packages
cd /temp/path/for/packages
mkdir superfedpakke
cd superfedpakke
mkdir DEBIAN

opret en control fil og indsæt

nano DEBIAN/control

Package: superfedpakke
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: Thomas Adams
Description: Dette er en test med en super fed pakke

Opret en struktur som den skal være på debian (eksemplet her kopiere vi alle filer fra /bin til en pakke hvor den så lægger dem i /opt/bin)
mkdir opt/bin
cp /bin/* opt/bin

hop ud af superfedpakke dir og lav pakken
cd /temp/path/for/packages
dpkg-deb --build superfedpakke

Sign pakker med din key
dpkg-sig -k 97C1365D --sign builder /temp/path/for/packages/*.deb

Import pakker til repo
cd /var/www/repo.myrepo.com/www
reprepro includedeb testing /temp/path/for/packages/*.deb

= CLIENT =

nano /etc/apt/sources.list

Indsæt:
deb http://repo.myrepo.com/debian/ testing main
Hvis den brokker sig over mangelden i386 struktur ved update kan du indsætte følgende istedet
deb [arch=amd64] http://repo.myrepo.com/debian/ testing main

Kør følngende for at få keyen til repo
wget -O - -q http://repo.myrepo.com/repo.myrepo.com.gpg.key | apt-key add -

Update forhåbentligt uden fejl 🙂
apt-get update

herefter kan du install dine pakker du selv har lavet

apt-get install superfedpakke