Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 20. Nov 2018 16:17

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: 14. Feb 2007 4:59 
Offline

Registriert: 03. Mär 2006 23:16
Beiträge: 430
HOWTO für ein debian-etch-Repository/Depot/Archiv
--------------------------------------------------------------------------------------------------------
EDIT 2007-02-15
So ein unnötiger Beitrag, :oops:
habe vorhin apt-move gefunden, welches meinen Klüngelkram auf ein breiteres Fundament stellt:
Code:
# alle Pakete in den Cache schieben, dann:
apt-move update  # erstellt einen ganzen Baum in $LOCALDIR (standardmässig /mirrors/debian/...)
Jetzt müssen die Signierungen durchgeführt werden:
( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=320827 danach gibt es bald eine Option in der Konf-Datei, zur Behebung für lokale Quellen)
Code:
cd /mirrors/debian/dists/$DIST/
gpg --homedir [Verzeichnis_mit_secring.gpg] -a --yes --output Release.gpg -b Release
# 'gpg' muss jedesmal gemacht werden, da Datum+Zeit in die Release kommt.
# In die sources.list: file:/mirrors/debian $DIST main;  fertig!
Die Signierung für alle entstehenden $DIST-Unterbäume.
(jedoch muss ich die Erstellung einer Packages wählen (PKGCOMP=none), mit einer Packages.gz klappte es nicht.)
EDIT 20070804: Richtiger ist: Mit einer Packages.gz alleine funktioniert es nicht, aber mit PKGCOMP="none gzip", also beiden Versionen.

Außer apt-move gibt es noch debarchiver http://debian.wgdd.de/howto/howto-aptrep.de.html
--------------------------------------------------------------------------------------------------------





Einleitung:
Um in sarge aus lokalen debs ein Repository zu erstellen wird dpkg-scanpackages verwendet.
(siehe im debian-HOWTO: http://www.debian.org/doc/manuals/repository-howto/ )
Code:
dpkg-scanpackages archives /dev/null > Packages
Die debs liegen im Verzeichnis ./archives
Die entsprechende Zeile in der sources.list waere zBsp (/REPO/archives): 'deb file:/REPO ./'

---------------------------
Anlass:
Unter etch funktioniert das (leider?) so nicht, da apt-get dieses Repository erstmal nicht "trusted" einstuft.
( http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=320827 danach gibt es bald eine Option in der Konf-Datei, zur Behebung für lokale Quellen)
Zusätzlich muss in einer signierten Release-Datei die Packages erwähnt werden.



---------------------------------------------------------------------------------------------------------

Vorbereitung gpg-Schlüssel:
Es wird also ein gpg-Schlüssel gebraucht:
Code:
gpg --gen-key --homedir [beliebig]		
# wird dabei kein Passwort gewählt, eignet sich der Key für eine Skript-basierte Lösung.
Der öffentliche Schlüssel pubring.gpg wird der trusted.db von apt-get hinzugefügt
(er ist im "gpg-Format"; und apt-key kann damit umgehen):
Code:
apt-key add pubring.gpg
Jeder Verwender des Repository muss diesen importieren.



Paketliste:
Jetzt geht es ans Erstellen des Repos in etch-Form.
Erster Schritt ist dpkg-scanpackages:
Code:
dpkg-scanpackages archives /dev/null > Packages
Nun wird eine Release auf diese Packages angepasst.
Ich gehe aus von einem Release_template:
Code:
Origin: Debian-LOKAL-etch
Label: Debian-LOKAL-etch
Suite: testing
Codename: etch
Date:
Architectures: i386
Components: main contrib non-free
Description: Debian LOKAL Repository
MD5Sum:
Danach muss der Eintrag für die Packages folgen, in der Form " MD5-Summe Grösse Name". Das erledigt ein kleines Skript:
Code:
Type=Packages					# Bei Versuchen mit Type=Packages.gz hat 'apt-get update' nicht funktioniert. (warum?)
cp Release_template Release

ADD_DU=`du -Db $Type | awk '{ print $1,$2 }'`	# Format: "Bytes Datei" ('-D', falls $Type ein Link ist)

ADD=`md5sum $Type | awk '{ print $1 }'`		# nur die Summe selbst wird jetzt gebraucht
echo " $ADD $ADD_DU" >> Release			# das wars

#echo SHA1: >> Release
#ADD=`sha1sum $Type | awk '{ print $1 }'`
#echo " $ADD $ADD_DU" >> Release

#echo SHA256: >> Release
#ADD=`sha256sum $Type | awk '{ print $1 }'`
#echo " $ADD $ADD_DU" >> Release

Signierung:
Es ist jetzt vorhanden: eine Packages und eine etch-formal richtige Release.
Die Release muss noch signiert werden, wobei apt-get die Signatur in Release.gpg im Klartext erwartet:
Code:
gpg --homedir [Verzeichnis_mit_secring.gpg] -a --yes --output Release.gpg -b Release
'-a' fuer den Klartext, '--yes' damit ohne Nachfrage eine vorhandene Datei überschrieben wird.
(Ohne '--output' wuerde eine Release.asc erstellt.
Diese müsste in Release.gpg umbenannt oder verlinkt werden: 'ln -s Release.asc Release.gpg')

Die von dpkg-scanpackages erstellte Packages enthält nicht die "Tag:"-Zeilen.
Dazu braucht es die override-Dateien (im Indices-Verzeichnis eines Debian-Servers).



------------------------------------------------------------------------------------------------
Obiges habe ich in einem Skript verpackt, mit dem ich Debian-Pakete von sarge und etch verwalte.
Der Test im Autoclean-Teil "von--bis" sorgt dafuer, dass das Skript gestoppt wird
um nicht zBsp. von etch aus das sarge-Archiv zu leeren.

>> Bei einem Repository mit eigenen oder Nicht-Debian-Paketen muss der Autoclean-Teil "von-bis" ausgelassen werden!
Code:
#!/bin/bash
#Wed Jul 12 20:56:15 CEST 2006
#Tue Jan 30 11:00:26 CET 2007

Type=Packages							# bei mir arbeitet 'update' nicht mit Packages.gz (warum?)
DTE=`date +%F_%H-%M`
DIST=etch; NUM=4.0

# von
[ "$(cat /etc/debian_version)" = "$NUM" ] || { echo Falsche Distribution; exit 1; }
[ `mv /var/cache/apt/archives/*.deb archives/ 2>/dev/null` ] || [ $Type -nt archives/ ] && {
echo Keine Veraenderungen in archives/; exit 0;
}
ohneLOKAL=/LOKAL/$DIST/ohneLOKAL.list
sed 's|^\(deb.*LOKAL.*\)|#\1|' /etc/apt/sources.list > $ohneLOKAL
aptitude	-o Dir::Etc::SourceList="$ohneLOKAL" -o Dir::Cache::Archives="/LOKAL/$DIST/archives" autoclean
echo "---------"
# bis

rm Packages Packages.gz
dpkg-scanpackages archives /dev/null > Packages
gzip -n -c Packages > Packages.$DTE.gz		# fuer Archivierung; und vimdiff arbeitet nur mit *.gz, nicht mit *.gz.$DTE

cp Release_Template Release
#echo MD5Sum: >> Release
ADD_DU=`du -Db $Type | awk '{ print $1,$2 }'`			# Format: "Bytes Datei" ('-D', falls $Type ein Link ist)
ADD=`md5sum $Type | awk '{ print $1 }'`
echo " $ADD $ADD_DU" >> Release


gpg --homedir LOKAL-$DIST-Key -a --yes --output Release.gpg -b Release

dselect update
    # 'dselect', da es die apt.conf-Option fuer '--no-list-cleanup' beachtet, was aptitude nicht macht.
    # Ansonsten kann je nach Geschmack dafuer apt-get, aptitude oder was-weiss-ich verwendet werden.

--------------------------------------------------------------------------------------------------------
EDIT 2007-02-15
So ein unnötiger Beitrag, :oops:
habe vorhin apt-move gefunden, welches den Klüngelkram hier auf ein breiteres Fundament stellt,
Außer apt-move gibt es noch debarchiver http://debian.wgdd.de/howto/howto-aptrep.de.html :wink:

_________________
mfg komsomolze


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de