Apt erweitern um eigene RPM-Repositories

Aus Linupedia.org
Wechseln zu: Navigation, Suche

Wer oft eigene Pakete compiliert und diese mit checkinstall oder krpmbuilder in RPMs umwandelt oder sich z. B. am Arbeitsplatz Pakete herunterlädt, weil zuhause die Bandbreite nicht ausreicht, kann diese Pakete ebenfalls mit apt installieren und deinstallieren. Dazu gibt es zwei Möglichkeiten.

createrepo

Mit createrepo geht das sehr einfach. Bei SuSE 10.1 liegt createrepo in base bzw. auf den Installationsmedien.

Man kopiert die zu installierenden rpms in Verzeichnis /hier/ist/meinrepo.

Dann

createrepo /hier/ist/meinrepo

ausführen

Diesen Eintrag fügen wir dann in die /etc/apt/sources.list ein:

repomd file:/hier/ist meinrepo

Das Leerzeichen zwischen ist und meinrepo ist kein Fehler. Die sources.list ist nach diesen Schema aufgebaut. Siehe auch bereits bestehende Einträge dort. Nach einem apt update sollten die Pakete zur Verfügung stehen.

aptate

Dazu braucht man zunächst eine funktionierende apt-Installation.

Dann installiert man sich das Paket apt4rpm

apt-get install apt4rpm 

Falls beim Starten von aptate perl-Module fehlen sollten, können diese aus dem Repository funktronics (sources.list erweitern) mit apt geladen werden.

apt install perl-XML-Writer perl-XML-Parser perl-XML-LibXML perl-XML-LibXML-Common perl-XML-GDOME perl-XML-NamespaceSupport perl-XML-SAX   

Die Konfiguration von apt4rpm erfolgt in der Datei /etc/apt/aptate.conf Hier ein Beispiel:

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

<opt signed-pkgs-only="no"> 
  <topdir>/local</topdir> 
  <sources-list-file>file:/local//ftp/pub/linux/suse/apt</sources-list-file> 
  <sources-list-ftp>ftp://ftp.gwdg.de/pub/linux/suse/apt</sources-list-ftp> 
  <sources-list-http>http://ftp.gwdg.de/pub/linux/suse/apt</sources-list-http> 

  <distribution id="suse91"> 
    <name>SuSE</name> 
    <version>9.1</version> 
    <architecture>i386</architecture> 

    <component> 
      <name>EigenePakete-9.1</name> 
      <url>EigenePakete-9.1</url> 
    </component> 
  </distribution> 
</opt>
  

In der Sektion <component> gibt man seinem eigenen Repository einen Namen, hier EigenePakete-9.1

Damit apt mit diesem Repository arbeiten kann, wird die /etc/apt/sources.list um den folgenden Eintrag erweitert:

rpm file:/local/apt SuSE/9.1-i386 EigenePakete-9.1 

In /local wird dann ein Verzeichnis EigenePakete-9.1 angelegt

mkdir /local/EigenePakete-9.1

Alle eigenen RPM-Pakete werden dann nach /local/EigenePakete-9.1 kopiert. Dann wird das apt-Repository erzeugt mit dem Befehl

aptate

Das Ergebnis von aptate sieht dann ungefähr so aus:

Distribution(s) to be processed: suse91 
Processing: suse91 
Archive structure: 1 => SuSE/9.1-i386 
Entering cache build stage 
EigenePakete-9.1  -> Check:           1/4,  warning: EigenePakete-9.1/xchat-2.0.7-92.i586.rpm: V3 DSA signature: NOKEY, key ID 9c800aca 
                      RPMs added:      1 
                   -> RPMs removed:    3 
Entering apt repository creation stage 
EigenePakete-9.1  -> Bin: MD5/GPG:   23/1 
                   -> Src: MD5/GPG:    2/0 
Entering apt database building stage 
EigenePakete-9.1  -> Bin: 0023/0023 
EigenePakete-9.1  -> Src: 0002/0002 
Creating global release file: done 
Installing apt repository at: /local/apt/SuSE/9.1-i386 
aptate finished successfully
  

Nun startet man (nach der Änderung an der /etc/apt/sources.list)

apt-get update

Damit werden die Pakete in EigenePakete-9.1 in das apt-Verzeichnis mit aufgenommen. Danach kann man seine eigenen Pakete ganz normal mit apt-get install <paket1> installieren. Wenn das Paket ordentlich gebaut wurde und alle Abhängigkeiten korrekt gesetzt wurden beim Paketbau, wird apt es installieren und die benötigten Abhängigkeiten auflösen.

Wichtig: wenn neue Pakete nach EigenePakete-9.1 kopiert werden, immer zuerst aptate aufrufen, dann apt-get update. Damit wird die apt interne Verwaltungs-Struktur aktualisiert.



Zurück zum Paketmanager