Version 001, Stand 12. März 2012

Fedora 16

Gebrauch des Seeburger Fedora Repositorys

Seit dem Jahr 2000 verwenden wir in meiner Firma, der H. Sundermeier GmbH mit Sitz in Hüllhorst, Linux Betriebssysteme, zuerst nur im Serverbereich aber inzwischen auch auf Anwenderseite. Diese Anwenderseite besteht vor allem aus Thin-Clients, die dann remote den üblichen Windows-Desktop ausführen. Anfangs haben wir Red Hat verwendet, doch als Fedora als Comunity-Version von Red Hat abgespalten wurde, sind wir diesen Schritt mitgegangen. Heute verwenden wir durchgängig Fedora. Von der allerersten Version an verwende ich auch privat ausschließlich Fedora, und von Kleinigkeiten abgesehen bin ich begeisterter Anhänger.

Eine der herausragendsten Eigenschaften von Fedora ist die Paketverwaltung mit rpm als Unterbau und yum als Verwaltungsüberbau. Das muß man einfach einmal erlebt haben, wie elegant und systematisch über das gesamte Betriebssystem und sämtliche Anwendungssoftware hinweg Installation, Update und Deinstallation ablaufen. Kein Adobe Reader, kein Adobe Flash, kein Google Chrome und kein Mozilla Firefox nervt Sie fortan mehr mit Update-Genöle, nein, all dies ist einfach so stets aktuell - fantastisch. Bei all dem haben Sie aber dennoch die Freiheit Software auch manuell zu installieren. Allerdings will man nicht mehr wirklich manuell eingreifen, weil dann schnell die Ästhetik, die Eleganz und die Geschlossenheit des Gesamtsystems auf der Strecke bleibt.

Und so hängt dann letztendlich alles an den Softwarerepositorys, auf die yum zugreifen kann. Die Fedora eigenen Repositorys sind riesig. Darüber hinaus gibt es quasi-offizielle Zusatzrepositorys wie z.B. die von rpm-fusion. Trotz alledem fehlt einem doch mal das gewünschte Paket. Wenn man dann nicht manuell installieren will, bleibt einem nur der Weg über das eigene Repository. So auch bei mir. Im November 2010 benötigte ich c-icap und squidclamav. Beides war in den einschlägigen Repositorys nicht zu finden. Und so baute ich mir mein eigenes. Damit andere es leichter haben, habe ich mein Repository öffentlich zugänglich gemacht. Und hier ist die Anleitung dazu:

1.) Wie sieht es aus und was steckt drin?

Zunächst will ich ein Listing zeigen, daß den 16er Zweig meines Repositorys am 08. März 2012 zeigt:

[seeburge@cs01 oliverseeburger.de]$ tree -a --noreport repo/fedora_16
repo/fedora_16
├── src
│   └── extras_seeburger
│       ├── packages
│       │   ├── archivesmtp-1.1.4-3.fc16.src.rpm
│       │   ├── c-icap-0.1.7-1.fc16.src.rpm
│       │   ├── seeburger-release-16-1.fc16.src.rpm
│       │   ├── squidclamav-6.4-1.fc16.src.rpm
│       │   └── squidclamav-6.5-1.fc16.src.rpm
│       ├── repodata
│       │   ├── filelists.sqlite.bz2
│       │   ├── filelists.xml.gz
│       │   ├── other.sqlite.bz2
│       │   ├── other.xml.gz
│       │   ├── primary.sqlite.bz2
│       │   ├── primary.xml.gz
│       │   └── repomd.xml
│       ├── repoinit
│       │   └── fedora_16-src-extras_seeburger.repo
│       └── security
│           └── rpm_gpg_key-src-extras_seeburger.txt
└── x86_64
    └── extras_seeburger
        ├── packages
        │   ├── archivesmtp-1.1.4-3.fc16.x86_64.rpm
        │   ├── c-icap-0.1.7-1.fc16.x86_64.rpm
        │   ├── c-icap-devel-0.1.7-1.fc16.x86_64.rpm
        │   ├── c-icap-ldap-0.1.7-1.fc16.x86_64.rpm
        │   ├── c-icap-libs-0.1.7-1.fc16.x86_64.rpm
        │   ├── c-icap-perl-0.1.7-1.fc16.x86_64.rpm
        │   ├── c-icap-progs-0.1.7-1.fc16.x86_64.rpm
        │   ├── seeburger-release-16-1.fc16.x86_64.rpm
        │   ├── squidclamav-6.4-1.fc16.x86_64.rpm
        │   └── squidclamav-6.5-1.fc16.x86_64.rpm
        ├── repodata
        │   ├── filelists.sqlite.bz2
        │   ├── filelists.xml.gz
        │   ├── other.sqlite.bz2
        │   ├── other.xml.gz
        │   ├── primary.sqlite.bz2
        │   ├── primary.xml.gz
        │   └── repomd.xml
        ├── repoinit
        │   └── fedora_16-x86_64-extras_seeburger.repo
        └── security
            └── rpm_gpg_key-x86_64-extras_seeburger.txt
[seeburge@cs01 oliverseeburger.de]$

In diesem 16er Zweig gibt es zwei Haupt-Äste, nämlich src und x86_64. Der src-Ast wird Sie vermutlich weniger interessieren. In diesem Ast finden sich die Softwarequellen und die Anleitungen, wie aus diesen Quellen lauffähige Programme kompiliert werden. Hier fühlen sich die Entwickler und Tüftler zu Hause. Des andere Ast, der x86_64 tituliert ist, beinhaltet die installierbare Software. Hier spielt die Musik für die normalen Computeranwender. Deshalb konzentrieren wir uns nun kurz auf diesen x86_64-Ast. Im Unterverzeichnis packages stecken die eigentlichen rpm Pakete. Man sieht 10 verschiedene Pakete, aber eigentlich sind es nur 4 verschiedene Applikationen. Und zwar zum Ersten archivesmtp. Zum Zweiten c-icap aufgespalten in 6 Unterpakete. Drittens seeburger-release - dazu später mehr - und viertens squidclamav in jeweils zwei Versionen (6.4 und 6.5). Das ist der eigentliche Kern meines Repositorys. Dann findet man noch das Unterverzeichnis repodata. Hierbei handelt es sich um die Metainformationen, also die Informationen über die oben genannten 10 Pakete, die yum für seine Arbeit braucht. Im Verzeichnis repoinit finden Sie die Datei, die Sie später importieren müssen um auf mein Repository zuzugreifen und im Verzeichnis security finden Sie den öffentlichen Teil des Schlüssels, mit dem meine Pakete signiert wurden.

2.) Wo finde ich dieses Repository im Internet?

Das Seeburger Fedora Repository ist im Internet unter der URL http://oliverseeburger.de/repo/ zu finden. Man kann dort mit jedem gewöhnlichen Browser in den Unterverzeichnissen navigieren.

3.) Wer kann es verwenden?

Ganz offensichtlich zunächst einmal nur Nutzer von Fedora Linux. Genauer gesagt nur diejenigen, die auch die passende Fedora-Version - für den 16er Zweig also die Fedora-Version 16 - einsetzen. Unter der kommenden Version 17 wird der 16er Zweig sehr wahrscheinlich auch funktionieren, aber das ist eigentlich schon unzulässige Verwendung und 16er Pakete in 17er Versionen finde ich persönlich auch unschön. Ganz gewiß können es aber nur Leute verwenden, die eine 64bit Intel oder Intel-kompatible (z.B. von AMD) Prozessor-Architektur verwenden, unter 32bit Betriebssystemen läuft das Ding bestimmt nicht.

4.) Was muß man tun, um das Repository benutzen zu können?

Werden Sie nunächst zu root. Wechseln Sie sodann in das Verzeichnis "/etc/yum.repo.d". In dieses Verzeichnis downloaden Sie die Datei "fedora_16-x86_64-extras_seeburger.repo". Das können Sie auf vier verschiedene Arten tun, je nachdem, ob sie curl, wget, yum oder direkt ihren Browser als Downloadmechanismus bevorzugen. Nach dem Download wäre das Repository dann sofort einsatzbereit. Doch zunächst ein Blick in das besagte Verzeichnis, danach erkläre ich Ihnen die vier Downloadmöglichkeiten:

[seeburge@cs01 oliverseeburger.de]$ su
Passwort: mein_root_passwort
[root@cs01 oliver_seeburger]# cd /etc/yum.repos.d
[root@cs01 yum.repos.d]# ls -al
insgesamt 52
drwxr-xr-x.   2 root root  4096 20. Dez 14:55 .
drwxr-xr-x. 114 root root 12288  6. Jan 04:45 ..
-rw-r--r--.   1 root root  1213 24. Nov 10:06 fedora_16-x86_64-base_release.repo
-rw-r--r--.   1 root root  1213 23. Nov 14:02 fedora_16-x86_64-base_updates.repo
[root@cs01 yum.repos.d]#

Bei Ihnen werden andere Dateien in diesem Verzeichnis zu sehen sein. Da kommt es aber nicht drauf an. Ich will hier nur den Zustand vor dem Download dokumentieren. Wichtig ist nur die Veränderung, die nach dem nun folgenden Download mit einer der vier besagten Methoden zu sehen sein wird.

4.1.) Download mit curl

Der curl-Befehl hat eine etwas kryptische Syntax. Das ist sicherlich seiner unglaublichen Leistungsfähigkeit geschuldet. Allerdings hat curl den Vorteil, daß er bei Fedora 16 Bestandteil der minimalsten aller Minimalinstallationen ist, d.h. selbst dann wenn alles andere nicht zur Verfügung steht, curl geht eigentlich immer. Mit curl würde der Download so funktionieren. Bitte beachten Sie: Die nun folgende curl-Zeile ist nur eine einzige Zeile. Verwenden Sie die Enter-Taste erst nach ".../fedora_16-x86_64-extras_seeburger.repo".

[root@cs01 yum.repos.d]# curl -o /etc/yum.repos.d/fedora_16-x86_64-extras_seeburger.repo -R http://oliverseeburger.de/repo/fedora_16/x86_64/extras_seeburger/repoinit/fedora_16-x86_64-extras_seeburger.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1262  100  1262    0     0   2651      0 --:--:-- --:--:-- --:--:--  6038
[root@cs01 yum.repos.d]#

Am Anfang der Befehlszeile steht der Befehl curl selber. Am Ende, beginnend mit http:// steht das was sich curl holen soll. Und dazwischen stehen zwei Optionen. Die Option -o sagt curl wo und unter welchem Namen die downgeloadete Datei gespeichert werden soll und die Option -R weist curl an, den Zeitstempel der Datei beizubehalten. Die -R Option ist Geschmackssache, man kann sie auch weglassen, ich möchte allerdings gerne, daß die gespeicherte Datei auf meinem System bis ins kleinste Detail mit der Originaldatei auf dem Internetserver übereinstimmt. Und dazu gehört für mich auch der gleiche Zeitstempel. Ich weiß aber auch, daß viele das anders sehen.

4.2.) Download mit wget

Ich glaube die meisten Textkonsolenjunkies bevorzugen wget. wget ist ein echter Klassiker, darüber hinaus etwas einfacher zu bedienen als curl, ist aber nicht in jedem Fall installiert. Wie dem auch sei, so geht’s mit wget. Auch hier gilt wieder: Die nun folgende wget-Zeile ist nur eine einzige Zeile. Verwenden Sie die Enter-Taste erst nach ".../fedora_16-x86_64-extras_seeburger.repo".

[root@cs01 yum.repos.d]# wget --timestamping http://oliverseeburger.de/repo/fedora_16/x86_64/extras_seeburger/repoinit/fedora_16-x86_64-extras_seeburger.repo
--2012-03-08 14:09:21--  http://oliverseeburger.de/repo/fedora_16/x86_64/extras_seeburger/repoinit/fedora_16-x86_64-extras_seeburger.repo
Auflösen des Hostnamen »oliverseeburger.de«.... 213.133.104.56
Verbindungsaufbau zu oliverseeburger.de|213.133.104.56|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 1231 (1,2K) [text/plain]
In »»fedora_16-x86_64-extras_seeburger.repo«« speichern.

100%[======================================>] 1.231       --.-K/s   in 0s

2012-03-08 14:09:21 (11,1 MB/s) - »»fedora_16-x86_64-extras_seeburger.repo«« gespeichert [1231/1231]
[root@cs01 yum.repos.d]#

wget speichert die downgeloadete Datei genau dahin, von wo es aufgerufen wurde, also nach "/etc/yum.repos.d", und es speichert sie unter dem gleichen Namen wie die Quelldatei, also "fedora_16-x86_64-extras_seeburger.repo". Die Option --timestamping bewirkt hier genau das Selbe wie die -R Option bei curl, nämlich den Zeitstempel zu erhalten.

4.3.) Download mit yum

Jetzt kommt eine echt elegante Möglichkeit die Datei "fedora_16-x86_64-extras_seeburger.repo" an die gewünschte Position zu befördern. Dazu bedienen wir uns des Paketmanagers yum und zwar so:

[root@cs01 yum.repos.d]# yum --nogpgcheck install http://oliverseeburger.de/repo/fedora_16/x86_64/extras_seeburger/packages/seeburger-release-16-1.fc16.x86_64.rpm
Einrichten des Installationsprozess
seeburger-release-16-1.fc16.x86_64.rpm                   | 4.0 kB     00:00
Untersuche /var/tmp/yum-root-6UqEJs/seeburger-release-16-1.fc16.x86_64.rpm: seeburger-release-16-1.fc16.x86_64
Markiere /var/tmp/yum-root-6UqEJs/seeburger-release-16-1.fc16.x86_64.rpm zum Installieren
Löse Abhängigkeiten auf
--> Führe Transaktionsprüfung aus
---> Paket seeburger-release.x86_64 0:16-1.fc16 markiert, um installiert zu werden
--> Abhängigkeitsauflösung beendet

Abhängigkeiten aufgelöst

================================================================================
 Paket             Arch   Version     Repository                          Grösse
================================================================================
Installieren:
 seeburger-release x86_64 16-1.fc16   /seeburger-release-16-1.fc16.x86_64 1.2 k

Vorgangsübersicht
================================================================================
Install       1 Package(s)

Gesamtgrösse: 1.2 k
Installed size: 1.2 k
Ist dies in Ordnung? [j/N] :j
Lade Pakete herunter:
Führe rpm_check_debug durch
Führe Verarbeitungstest durch
Verarbeitungstest erfolgreich
Führe Verarbeitung durch
  Installieren   : seeburger-release-16-1.fc16.x86_64                       1/1

Installiert:
  seeburger-release.x86_64 0:16-1.fc16

Komplett!
[root@cs01 yum.repos.d]#

Bei dieser Methode wird ein eigenes Softwarepaket installiert. Das Softwarepaket trägt den Namen "seeburger-release" und dient der Bekanntmachung meines Repositorys auf Ihrem Computer. Das klingt jedoch weitaus dramatischer als es ist, denn dieses Softwarepaket beinhaltet nur eine einzige Datei, mehr nicht. Sie haben es längst erraten, es ist die Datei "fedora_16-x86_64-extras_seeburger.repo".

Wenn man die Datei "fedora_16-x86_64-extras_seeburger.repo" händisch über die Methoden eins, zwei oder vier installiert, so hat rpm bzw. yum keine Ahnung von deren Existenz. Und weil das so ist kann yum deshalb diese Datei auch nicht aktualisieren. Das ist solange kein Problem, wie ich den Standort meines Repositorys im Internet nicht verändere - was ich auch eigentlich nicht beabsichtige. Aber, man weiß ja nie. Eventuell ziehe ich irgendwann einmal auf einen neuen Server mit einer anderen Domain um oder ich ändere die Verzeichnisstruktur, vielleicht nur um Kleinigkeiten. Ich habe das schon einmal gemacht, so habe ich z.B. aus dem Verzeichnis "fedora-14" ein "fedora_14" gemacht. In einem solchen Fall schlägt die Stunde derer, die mit yum gedownloadet haben, denn wenn ich solche Veränderungen vornehmen würde, so würde ich gleichzeitig auch das Paket seeburger-release aktualisieren und Ihr Computer würde automatisch eine angepaßte Version der Datei "fedora_16-x86_64-extras_seeburger.repo" erhalten. Fortan würde er das veränderte Repository benutzen. Diejenigen die händisch downgeloadet haben würden jetzt ins Leere laufen, ja schlimmer noch, sie würden vermutlich nicht einmal erfahren wohin ich mit meinem Repo umgezogen wäre. Aber wie gesagt, das habe ich ja nicht vor.

4.4.) Download mit Browser

Diese Methode ist elementar. Ich erwähne sie nur der Vollständigkeit halber. Und sie geht auch nur, wenn Sie einen Desktop-Computer mit Internetbrowser aufgesetzt haben. Viele spartanisch ausgestattete Systeme, insbesondere im Server Bereich, haben das nicht und extra einen Browser zu installieren nur um ein Repofile zu downloaden ist ja wohl "von hinten durch die Brust ins Auge". Haben Sie aber einen Browser (und vieles spricht dafür, denn wie sonst sollten Sie diesen Text gerade lesen), dann können Sie einfach zur URL "http://oliverseeburger.de/repo/fedora_16/x86_64/extras_seeburger/repoinit/" navigieren. Dann mit der rechten Maustaste auf "fedora_16-x86_64-extras_seeburger.repo" gehen und "Ziel speichern unter..." anklicken. Wahrscheinlich finden Sie dann die gewünschte Datei in Ihrem Heimatverzeichnis und dort unter "Downloads". Es bleibt noch die Datei nach "/etc/yum.repos.d" zu verschieben.

5.) Das Ergebnis

Ein erneuter Blick in unser Verzeichnis verrät nun:

[root@cs01 yum.repos.d]# ls -al
insgesamt 52
drwxr-xr-x.   2 root root  4096 20. Dez 14:55 .
drwxr-xr-x. 114 root root 12288  6. Jan 04:45 ..
-rw-r--r--.   1 root root  1213 24. Nov 10:06 fedora_16-x86_64-base_release.repo
-rw-r--r--.   1 root root  1213 23. Nov 14:02 fedora_16-x86_64-base_updates.repo
-rw-r--r--.   1 root root  1262 19. Okt 10:57 fedora_16-x86_64-extras_seeburger.repo
[root@cs01 yum.repos.d]# cd
[root@cs01 ~]#

E voila, fertig.

6.) Mal schauen, ob es klappt

Zu Testzwecken werde ich nun versuchen, das Paket c-icap-libs zu installieren.

[root@cs01 ~]# yum install c-icap-libs
Geladene Plugins: langpacks, presto, refresh-packagekit
Adding de_DE to language list
fc16-x86_64-base_release                                 | 2.0 kB     00:00
fc16-x86_64-base_release/primary_db                      |  14 MB     00:01
fc16-x86_64-base_updates                                 | 2.0 kB     00:00
fc16-x86_64-base_updates/primary_db                      | 5.5 MB     00:00
fc16-x86_64-extras_seeburger                             | 2.0 kB     00:00
fc16-x86_64-extras_seeburger/primary_db                  | 8.2 kB     00:00
Einrichten des Installationsprozess
Löse Abhängigkeiten auf
--> Führe Transaktionsprüfung aus
---> Paket c-icap-libs.x86_64 0:0.1.7-1.fc16 markiert, um installiert zu werden
--> Abhängigkeitsauflösung beendet

Abhängigkeiten aufgelöst

================================================================================
 Paket          Arch      Version         Repository                      Grösse
================================================================================
Installieren:
 c-icap-libs    x86_64    0.1.7-1.fc16    fc16-x86_64-extras_seeburger    170 k

Vorgangsübersicht
================================================================================
Install       1 Package(s)

Gesamte Downloadgrösse: 170 k
Installed size: 452 k
Ist dies in Ordnung? [j/N] :j
Lade Pakete herunter:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 170 k
c-icap-libs-0.1.7-1.fc16.x86_64.rpm                      | 170 kB     00:00
Warnung: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, Schlüssel-ID b78e038c: NOKEY
fc14-extras-seeburger/gpgkey                             | 3.3 kB     00:00 ...
Importing GPG key 0xB78E038C:
 Userid: "Oliver Seeburger <oliver.seeburger@sundermeier-werkzeugbau.de>"
 From  : http://sundermeier-werkzeugbau.de/oliver_seeburger/repo/fedora_16/x86_64/extras_seeburger/security/rpm_gpg_key-x86_64-extras_seeburger.txt
Ist dies in Ordnung? [j/N] :j
Führe rpm_check_debug durch
Führe Verarbeitungstest durch
Verarbeitungstest erfolgreich
Führe Verarbeitung durch
  Installieren   : c-icap-libs-0.1.7-1.fc16.x86_64                          1/1

Installiert:
  c-icap-libs.x86_64 0:0.1.7-1.fc16

Komplett!
[root@cs01 ~]#

Na prima, ist installiert. Aber weil ich mir mein System nicht verhunzen will, deinstalliere ich es gleich wieder.

[root@cs01 ~]# yum remove c-icap-libs
Geladene Plugins: langpacks, presto, refresh-packagekit
Adding de_DE to language list
Einrichten des Entfernungsprozess
Löse Abhängigkeiten auf
--> Führe Transaktionsprüfung aus
---> Paket c-icap-libs.x86_64 0:0.1.7-1.fc16 markiert, um gelöscht zu werden
--> Abhängigkeitsauflösung beendet

Abhängigkeiten aufgelöst

================================================================================
 Paket         Arch     Version           Repository                      Grösse
================================================================================
Entfernen:
 c-icap-libs   x86_64   0.1.7-1.fc16      @fc16-x86_64-extras_seeburger   452 k

Vorgangsübersicht
================================================================================
Remove        1 Package(s)

Installed size: 452 k
Ist dies in Ordnung? [j/N] :j
Lade Pakete herunter:
Führe rpm_check_debug durch
Führe Verarbeitungstest durch
Verarbeitungstest erfolgreich
Führe Verarbeitung durch
  Löschen        : c-icap-libs-0.1.7-1.fc16.x86_64                          1/1

Entfernt:
  c-icap-libs.x86_64 0:0.1.7-1.fc16

Komplett!
[root@cs02 ~]#

Das wars. Nun viel Spaß mit meinem Repository. Möge es allen da draußen nützlich sein. Ob ich es weiterpflegen werde? Weiß ich nicht genau. Nach wie vor gilt: I'll do my very best!

Oliver Seeburger, Schwalbenweg 13, 32609 Hüllhorst, Deutschland