APT-Repository für eigene RPM-Pakete anlegen

31. Oktober 2005

Ihr Vorhaben

Sie haben RPM Pakete erstellt oder heruntergeladen und wollen diese für SUSE LINUX 10.0 per APT auf einfachst mögliche Weise zur Verfügung stellen.

Voraussetzungen

Sie haben bereits einen FTP-Server konfiguriert. Dieser gibt z.B. das Verzeichnis /var/lib/ftp frei.

Vorgehen

Kopieren Sie Ihre RPM-Pakete in ein Unterverzeichnis des FTP-Servers, z.B. nach rpms:

root@linux# cd /var/lib/ftp
root@linux# mkdir rpms
root@linux# cp /tmp/*.rpm rpms

Um das APT-Repository anzulegen, benötigen Sie das Programm aptate, welches sich bei SUSE im Paket apt4rpm befindet. Dieses benötigt eine Konfigurationsdatei /etc/apt/aptate.conf, welche wie folgt aussehen muss:


/etc/apt/aptate.conf:
<?xml version='1.0' encoding="iso-8859-1"?>
<!DOCTYPE opt SYSTEM "/usr/share/apt4rpm/aptate.dtd">

<opt signed-pkgs-only="no">
  <topdir>/var/lib/ftp</topdir>
  <distribution id="eigenerpms">
    <name>eigenerpms</name>
    <version>1</version>
    <architecture>noarch</architecture>
    <component>
      <name>eigenerpms</name>
      <url>rpms</url>
    </component>
  </distribution>
</opt>

Wichtig hier: Der Pfad /var/lib/ftp und das Verzeichnis rpms bei <name>.

Das Repositorium kann nun generiert werden mit einem einfachen Aufruf von aptate. Dieser Schritt ist auch jedesmal notwendig, wenn im Repositorium ein RPM-Paket hinzukommt, geändert oder gelöscht wird:

root@linux# cd /var/lib/ftp
root@linux# aptate
Distribution(s) to be processed: eigenerpms
Processing: eigenerpms
Archive structure: 1 => eigenerpms/1-noarch
Entering cache build stage
 eigenerpms        -> RPMs added:     30
                   -> RPMs removed:    0
Entering apt repository creation stage
 eigenerpms        -> Bin: MD5/GPG:   30/3
                   -> Src: MD5/GPG:    0/0
Entering apt database building stage
 eigenerpms        -> Bin:  0030/0030
 eigenerpms        -> Src: 
Creating global release file: done
Installing apt repository at: /var/lib/ftp/apt/eigenerpms/1-noarch 
aptate: finished successfully

Verwendung auf dem Client

Der Client muss das Paket apt installiert haben. In der Datei /etc/apt/sources.list benötigen Sie einen Eintrag mit der URL zu der neuen Quelle:


/etc/apt/sources.list:
rpm ftp://Aptserver/apt eigenerpms/1-noarch eigenerpms 

Wichtig: Damit der Client auch nicht signierte Pakete akzeptiert, müssen Sie die Überprüfung der Signatur in der Datei gpg-checker.conf abschalten:


/etc/apt/apt.conf.d/gpg-checker.conf:
GPG::Check false;

Test

Wenn alles klappt, können Sie jetzt auf dem Client mit apt-get update zunächst die Paketbeschreibungen herunterladen:

root@linux# apt-get update
Hole:1 ftp://Aptserver eigenerpms/1-noarch release [469B]
469B in 0s (0B/s) geholt
Treffer ftp://Aptserver eigenerpms/1-noarch/eigenerpms pkglist
Treffer ftp://Aptserver eigenerpms/1-noarch/eigenerpms release
Lese Paketlisten... Fertig
Erzeuge Abhängigkeitsbaum... Fertig

... und wie gewohnt Pakete mit apt-get install installieren:

root@linux# apt-get install sendmail-cf
Lese Paketlisten... Fertig
Erzeuge Abhängigkeitsbaum... Fertig
Die folgenden NEUEN Pakete werden installiert werden:
  sendmail-cf
0 upgraded, 1 newly installed, 0 entfernt und 0 nicht upgegradet.
Muss 297kB an Archiven holen.
Nach dem Auspacken werden 911kB zusätzlicher Plattenplatz benutzt werden.
Hole:1 ftp://Aptserver eigenerpms/1-noarch/eigenerpms sendmail-cf 8.12.11-3 [297kB]
297kB in 0s (18,5MB/s) geholt
Committing changes...
Preparing...                ########################################### [100%]
   1:sendmail-cf            ########################################### [100%]
Done.