• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[HOWTO] apt erweitern um eigene RPM-Repositories

Status
Für weitere Antworten geschlossen.

oc2pus

Ultimate Guru
Wer oft eigene Pakete compiliert und diese mit checkinstall oder krpmbuilder in RPMs umwandelt, kann diese Pakete ebenfalls mit apt installieren und deinstallieren.

Dazu braucht man zunächst eine funktionierende apt-Installation (siehe Forum)

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:
Code:
<?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 Repoitory 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

Das Ergebnis von aptate sieht dann ungefähr so aus:
Code:
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)
Damit werden die Pakete in EigenePakete-9.1 in das apt-Verzeichnis mit aufgenommen. Danch 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.

Ein Tip am Rande:
Ich erstelle eigene Pakete mit der Releasenummer 0.oc2pus.x. z.Bsp:
xchat-1.8-0.oc2pus.1, damit wird das Paket durch die SuSE-Version ersetzt, wenn sie verfügnar ist. Da SuSE NIE Releasenummern mit 0-beginnend verwendet. (xchat-1.8-23 ist aktueller als x-chat-1.8-0.oc2pus.1 jedenfalls für rpm).
Wenn ich einen neuen eigenen compile von x-chat erstelle setze ich dann die Releasenummer hoch auf 0.oc2pus.2 und kopiere dieses Paket dann nach EigenePakete-9.1, lasse aptate laufen, apt-get update, apt-get upgrade und siehe da es wird jetzt x-chat-1.8-0.oc2pus.2 installiert.
Nach dem gleichen Schema arbeitet übrigends auch Packmann (0.pm.x)
 
OP
oc2pus

oc2pus

Ultimate Guru
Fragen, Anregungen, Diskussionen, Erweiterungen etc ... bitte in diesem Thread:

[FRAGEN ZU] apt erweitern um eigene RPM-Repositories
http://www.linux-club.de/viewtopic.php?t=26043
 
OP
oc2pus

oc2pus

Ultimate Guru
Hier wurde noch ein anderes Verfahren ohne den Einsatz von aptate entdeckt:

SoeDib schrieb:
Gibt es Gründe, das eigene Repository über aptate anzulegen, und nicht einfach über
Code:
rpm-dir file:///usr/src/packages apt local
in der sources.list (für das Verzeichnis /usr/src/packages/apt/RPMS.local)?

(vgl. http://lwn.net/Articles/60650/ )
 
OP
oc2pus

oc2pus

Ultimate Guru
und hier noch eine Variante, thx to Martin Breidenbach ;)

Martin Breidenbach schrieb:
Ergänzung zu

[HOWTO] apt erweitern um eigene RPM-Repositories
http://www.linux-club.de/viewtopic.php?t=14576

Mit 'createrepo' geht das noch einfacher. Bei SuSE 10.1 liegt 'createrepo' in base.

rpms in Verzeichnis '/hier/ist/meinrepo' kopieren

Dann
Code:
createrepo /hier/ist/meinrepo
ausführen

Repository in sources.list aufnehmen:

Code:
repomd file:/hier/ist meinrepo

Fertig !

und weil der martin heute fleissig war, gleich noch eine:
http://www.linux-club.de/ftopic64077.html
 
Status
Für weitere Antworten geschlossen.
Oben