Hobbynet repository
doel
Het makkelijk verspreiden van de hobbynet instellingen door middel van deb packages
waar
Onder www.hobby.nl draait onze repository. Alles staat in subdir REPO met de volgende onderverdeling
- src
(hier bevinden zich de bron bestanden) - pool
(hier bevinden zich de deb files.
Deze staan gecategoriseerd in contrib / dists / main / non-free
Bijna al onze packages staan in main - dists
(hier worden de index en Package files voor ubuntu neer gezet)
Bewerken van de repostory doen we op backup2bit ( dit is enige server die bij de benodigde bestanden kan en alle development tools heeft, dit wil je niet op 1 van de storage servers doen).
hoe
file structuur deb file
Dit is de file structuur waar aan een standaard moet voldoen
|-- debian | |-- DEBIAN | | |-- conffiles (optioneel) | | |-- control (omschrijving van pakket) | | |-- md5sums (controle file) | | |-- postinst | | |-- preinst (optioneel) | | |-- postrm (mag leeg) | | `-- prerm (mag leeg) | `-- usr | `-- share | `-- doc | `-- hobby-pakketnaam | |-- changelog.gz (verplicht!) | `-- copyright (verplicht!) |-- debian-binary
conffiles
In dit bestand staat de lijst met configuratie files
control
In deze file staat aangeven wat de pakket naam is, wat de versie is, in welke sectie hoort hij thuis, voor welke proccesor is deze, waar is hij van afhankelijk en tenslotte de omschrijving van het pakket.
Een control file ziet er als volgt uit:
Package: hobby-install Version: 1.3 Section: admin Priority: optional Architecture: all Depends: hobby-grub,linux-image-server,linux-headers-server,build-essential,hobby-insusers,hobby-ipv6,hobby-logging,hobby-mail,hobby-mc,hobby-nfs,hobby-nrpe,hobby-ntp,hobby-proxy,hobby-snmp,hobby-ssh,hobby-firewall Maintainer: Bas van den Dikkenberg <bas@hobby.nl> Description: De hobbynet-install package Dit pakket zorgt dat server conform hobbynet standaard wordt geinstalleerd
md5sums
Dit bestand bevat de md5sums van alle files met uitzondering van de DEBIAN directory.
Deze output kan in één keer worden gegenereerd met het script make-md5sums:
b4bc6f4600bed8fff8522b91cc1a7258 usr/share/doc/hobby-install/changelog 638e612a375a44d66bcc6efa34992734 usr/share/doc/hobby-install/copyright
Voor het maken van een package is het niet nodig dit met de hand te doen. Het wordt in het script maakdeb gebruikt.
preinst
Deze file bevat een script naar keuze die voor de installatie wordt uitgevoerd.
prerm
Deze file bevat een script naar keuze die voor de de-installatie wordt uitgevoerd.
postinst
Deze file bevat een script naar keuze die na de installatie wordt uitgevoerd.
postrm
Deze file bevat een script naar keuze die na de de-installatie wordt uitgevoerd.
changelog
Deze file moet de changelog bevatten van het pakket. Dit bestand moet worden gecomprimeerd (gzip -9)
copyright
Een pakket moet verplicht een copyrightfile bevatten. De onze ziet er zo uit:
Copyright: HCC!hobbynet beheer@hobby.nl 2011-10-27 The entire code base may be distributed under the terms of the GNU General Public License (GPL), which appears immediately below. Alternatively, all of the source code as any code derived from that code may instead be distributed under the GNU Lesser General Public License (LGPL), at the choice of the distributor. The complete text of the LGPL appears at the bottom of this file. See /usr/share/common-licenses/(GPL|LGPL)
eigen bestanden
In de directory debian (kleine letters) kan je de tree neerzetten zoals hij gezien vanaf de root op de server geplaatst moeten worden.
Let op: Wil je configuratie files overschrijven dan moet je die eerst op een andere locatie neer zetten (bijvoorbeeld /tmp) en daarna moven met het postinst script
scripts
maakdeb
Dit script voer je uit van de root vanuit src directory van package, bijvoorbeeld /disk/site/hobbynet/www/repo/src/hobby-fail2ban
Het script moet je met de volgende syntax uitvoeren
root@backup2bit:/disk/site/hobbynet/www/repo/src/hobby-install# maakdeb hobby-fail2ban_all dpkg-deb: building package `hobby-fail2ban' in `hobby-fail2ban_all.deb'. warning: lintian's authors do not recommend running it with root privileges! E: hobby-install: changelog-file-not-compressed changelog kopieer naar main pool
Je geeft dus aan hoe de .deb file moet gaan heten. Aangezien de pakketten die wij maken over het algemeen voor alle procesoren zijn, zo niet kijk in de source van het script, dan zie je hoe je het met de hand kan doen. Na het maken van het pakket wordt het door lintian gecontroleerd. De meldingen die genegeerd mogen worden worden door het script weg gelaten.
Stel je maakt een non-free pakket, dan moet je dat achter het script typen, dus bijvoorbeeld maakdeb hobby-vmware non-free
make-md5sums
Dit script maakt de md5sum file. Dit moet uitgevoerd worden in de debian directory dus bv /disk/site/hobbynet/www/repo/src/hobby-install/debian
De melding "Is a directory" mag genegeerd worden:
root@backup2bit:/disk/site/hobbynet/www/repo/src/hobby-install/debian# make-md5sums removing old md5sum file md5sum: .: Is a directory md5sum: usr: Is a directory md5sum: usr/share: Is a directory md5sum: usr/share/doc: Is a directory md5sum: usr/share/doc/hobby-install: Is a directory removing temp files root@backup2bit:/disk/site/hobbynet/www/repo/src/hobby-install/debian#
mkpackages
mkpackages zorgt er voor dat de index files in de dists directory wordt aangemaakt op basis van de pool directory
installatie hobbynet repo op client
De installatie is heel eenvoudig
Automatisch via PXE
Via een automatische PXE installatie hoef je niks te doen, dan gebeurt het vanzelf
handmatig als de hobbynet repo nog niet is geïnstalleerd
Als je onderstaande stappen doorloopt wordt de repo vanzelf geïnstalleerd
wget https://www.hobby.nl/repo/pool/main/h/hobby-repo_all.deb --no-check-certificate -O /tmp/hobby-repo_all.deb dpkg -i /tmp/hobby-repo_all.deb rm /tmp/hobby-repo_all.deb
via de repo
Als repo er al instaat, maar er is geen hobby-repo pakket gebruikt voor installatie, dan is het raadzaam alsnog het hobbynet repo pakket te installeren. Dat kan makkelijk via
apt-get install hobby-repo