Erstellen einer Umgebung zum Paketebau für PCLinuxOS in Phoenix

von Joble

Haben Sie sich schon einmal gefragt, wie das erstellen von Paketen für PCLinuxOS von statten geht? Der erste und wichtigste Schritt, ist die Umgebung für das erstellen von Paketen. Ich weiß nicht ob meine Methode die richtige ist, jedoch funktioniert diese Methode, die ich nutze. Da ich der Entwickler der Phoenix Edition bin, habe ich für diesen Artikel auch das PCLinuxOS XFCE Remaster genommen.

Um zu beginnen, installieren Sie über Synaptic bitte die folgenden Pakete:

  • a-task-packager-minimal
  • pkgutils-thunar

KDE Fans installieren task-packaging-kde4, hierdurch werden in dem Kontextmenu von Dolphin Verknüpfungen zur Verwendung in der Minime erstellt.

Als nächstes können Sie einige Tools oder Handbücher über die Materie installieren, die Sie verwenden möchten. Ich empfehle zumindest:

Sie benötigen einen PDF Betracher für die PDF Version. Ich empfehle epdfview aus Synaptic. Er ist leicht, schnell und arbeitet außerordentlich gut. Jedoch bietet er keine Steuerung der Fenster für Xfce, so das Sie das Fenster an den Ecken per Mausklick größer ziehen müssen.

Als nächstes sollten Sie sich PCLinuxOS Packager’s Wiki aufmerksam durchlesen. Die Informationen im Wiki werden Ihnen dabei helfen, den Umgang im Paketebau unter PClinuxOS Schritt für Schritt zu erlernen.

Schreiben Sie nun in der Konsole mkrepo --help. Es zeigt Ihnen alle verfügbaren Optionen zum Einrichten Ihrer eigenen lokalen Repository.

[joe@localhost /]$ mkrepo --help
Usage: mkrepo [OPTION]...
Create a local repository including folder structure,
.rpmrc and .rpmmacros files, modify sources.list, and
optionally install prerequisite build packages.
 
Mandatory arguments to long options are mandatory for short options too.
  -d, --distribution=DIST    Distribution [PCLinuxOS]
  -s, --distsuffix=SUFFIX    Distribution suffix [pclos]
  -r, --release=YYYY         Mandriva release [2010]
  -v, --vendor=VENDOR        Vendor
  -p, --packager=NAME        Packager info
  -b, --basedir=DIR          Base folder for src tree [/home/joe]
  -a, --addpkgs              Install packages needed to build rpms
  -n, --noupdate             No apt-get update if installing pkgs
  -u, --usage                Display typical usage and exit
  -h, --help                 Display this help and exit
 
Use a - as the argument to d,s,r,v,p to remove an existing macro.
[joe@localhost /]$
mkrepo -a -d PCLinuxOS -v PCLinuxOS -s <your PCLOS user name> -p <your PCLOS user name>

Ich werde nicht -a nutzen, da ich schon das task-packager-minimal installiert habe, außerdem ändere ich das -s in -s pclos. Das nutzen die meisten Paketebauer. Ich weiß nicht was Tex bevorzugt, jedoch habe ich noch keinen Packer gesehen der -s Benutzername nutzt und so nutze ich -s pclos.

[joe@localhost /]$ mkrepo -d PCLinuxOS -v PCLinuxOS -s pclos -p Joble

Ich werde unter /home/joe die Basis für den Quellcode setzen in /home/joe/src. Folgende Zeilen werden in die ~/.rpmmacros geschrieben:

das Ergebnis wäre:

%_topdir    /home/joe/src/rpm
%_tmppath    /home/joe/src/tmp
%packager    Joble
%distribution    PCLinuxOS
%distsuffix    pclos
%vendor    PCLinuxOS
 
Continue? [Y/n] Y
Please enter root Password:
 
Old local repo line(s) found:
 
Can't find folder /media/disk/pclinuxos2010/RPMS.main for Section main in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.updates for Section updates in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.nonfree for Section nonfree in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.kde4 for Section kde4 in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.games for Section games in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS./home/joe/src/apt/ for Section /home/joe/src/apt/ in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.pclinuxos/2010 for Section pclinuxos/2010 in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.athlon for Section athlon in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.i586 for Section i586 in "/etc/apt/sources.list"
Can't find folder /media/disk/pclinuxos2010/RPMS.noarch for Section noarch in "/etc/apt/sources.list"
Check path "/media/disk/pclinuxos2010" for folders (or links) like "RPMS.section"
 
File sources.list backed up as sources.list.old
 
mkrepo is now finished. You can install source rpms
(*.src.rpm) as normal user by typing:
 
$ rpm -i program.src.rpm
 
Enjoy building rpms!
[joe@localhost /]$

Nun ist gerade eine ganze Menge auf Ihrem Computer geschehen. Ich gehe hier nicht auf weitere Erklärungen ein, aber wenn man alles selbst machen wollte, wäre es eine größere Aufgabe. Für eine eingehende Erläuterung des Prozesses, besuchen Sie bitte das Wiki unter:

http://www.pclinuxos.com/wiki/index.php/Category:Packaging

Beachten Sie, dass die sources.list erneuert wurde und die alte als sources.list.old gespeichert wurde. Sollte irgendetwas nicht richtig angezeigt werden, können Sie gegebenenfalls die sources.list wiederherstellen.

[joe@localhost /]$ cat /etc/apt/sources.list
# Package repository URL's
 
# Signed repositories have a [] where  is the name of the key
# as it appears in vendors.list. If you remove it, no digital signature check
# will be made.

..einige Einträge ausgeschnitten..

rpm file:/media/disk/pclinuxos/ 2010 main updates nonfree kde4 games  
rpm file:/home/joe/src/apt/ pclinuxos/2010 athlon i586 noarch  (this one was added by the mkrepo command)
[joe@localhost /]$

Jetzt noch den Thunar Konfigurations Ordner löschen:

[joe@localhost .config]$ rm -rf ~/.config/Thunar

Sobald dies abgeschlossen ist, müssen Sie sich bei Xfce Ab- und wieder Anmelden. Nun ist die Installation abgeschlossen und zur Verwendung bereit.

Klicken Sie im Datei Manager Thunar mit der rechten Maustaste auf eine *.src.rpm und wählen aus dem Kontextmenü “SRPM Install for build” aus.

pic

Im unterem Bild ist die Ausgabe unserer vorherigen Schritte. Ihr Ergebnis sollte in etwa so aussehen.

pic

Diese Meldungen sind normal, also keine Sorge. Es bedeutet nur das Neal die *.src.rpm gebaut hat und er kein Benutzer auf meinen Rechner ist. Jedoch weiß ich nicht warum root genutzt wird, wenn ich nicht als root angemeldet bin.

Nun ein paar Erläuterungen zu der Paketebau Umgebung. Der Befehl mkrepo erstellt die benötigten Verzeichnisse die zum Bau von Paketen erforderlich sind. Zu wissen was die einzelne Verzeichnisse in /home/(dein Benutzername) bedeuten wäre von Vorteil:

src/apt         - Ihre lokale Repo enthält die Links zu rpm/RPMS
src/tmp         - hier wird die Installation erstellt, bevor die RPM entsteht.
src/rpm/BUILD   - hier werden die Quellen entpackt zum erstellen der Programme.
src/rpm/RPMS    - hier landen die RPM Dateien nach erfolgreicher Erstellung.
src/rpm/SOURCES - hier landen die Quellen Dateien beim verwenden von "install a src.rpm".
src/rpm/SPECS   - hier landen die Spec Dateien beim verwenden von "install a src.rpm".
src/rpm/SRPMS   - hier werden die *.src.rpm gespeichert nach erfolgreichen erstellen.

Navigiere in Thunar zu ~/src/rpm/SPECS und klicke mit der rechten Maustaste auf die Spec Datei.

pic

Wichtig:

Wenn Sie Pakete für die Distro erstellen, so müssen Sie die Informationen in der %changelog Sektion unten in der Spec Datei folgendermaßen hinterlegen:

  • * Datum (hehe, Sternenjahr), DeinPCLOSBenutzername, <deine Email Adresse>, Version und Release Informationen
  • - Was Sie gemacht haben (in englisch). Erste Erstellung, Aktualisierung, Patchen oder was auch immer.
  • * Mon May 24 2010 DeinPCLOSBenutzerName <email at email.com> 0.1.0-1pclos2010
  • - first build

Abhängigkeiten installieren (Install dependencies):

Das erste was Sie nach dem Erstellen oder Bearbeiten einer Spec Datei machen sollten, ist das Installieren der Abhängigkeiten. Sollte irgend eine Abhängigkeit fehlen, wird das die erste Fehlermeldung beim Erstellen sein.

Alles erstellen (Build All):

Build All durch läuft den gesamten Build-Prozess. Wenn alles glatt geht, wird eine Meldung ausgegeben, dass eine RPM und eine *.src.rpm erfolgreich erstellt wurden. Die RPM-Datei kann entweder in rpm/RPMS/i586, athalon oder noarch gefunden werden, abhängig von der Architektur auf der sie erstellt wurde. Der Rest der Optionen sind inkrementelle Schritte des Build-Prozesses, die bei der Fehlersuche helfen können, wenn etwas schief gelaufen ist.

Wie funktioniert das nun mit der lokalen Repo? Ich habe tatsächlich noch nie gbd genutzt, so öffnete ich Synaptic und aktiviert nur die lokale Repo die durch das mkrepo Skript erstellt wurde. (Meine andere Repo ist auch eine lokale Repo, und ich war mir nicht sicher, was passieren könnte). Öffnen Sie eine Konsole/Terminal und geben Sie gbd ein.

[joe@localhost ~]$ gbd
rm -f /home/joe/src/apt/pclinuxos/2010/base/*
genbasedir --flat --bz2only --progress /home/joe/src/apt/pclinuxos/2010 athlon i586 noarch
Components: athlon i586 noarch
Processing pkglists... athlon i586 0002/0002 noarch [done]
Processing srclists... [done]
Updating component releases... athlon i586 noarch [done]
Creating global release file... [done]
Appending MD5Sum... athlon i586 noarch [done]
All your base are belong to us!!!
 
Update apt package list? [y/N] y
 
Please enter root Password:
Reading Package Lists... Done
Building Dependency Tree... Done
[joe@localhost ~]$

Klicken Sie in Synaptic auf "Neu laden" und auf die Status Taste Neu in den Paketquellen ist alles gut verlaufen, wird Ihr Paket dort gelistet und Sie können es installieren. Wird es nicht dort gelistet, dann gehen Sie zurück und schauen ob ihre lokale Repo auch aktiviert wurde. mkrepo aktiviert diese normalerweise als Standard. Sollten Sie vergessen gbd auszuführen, so wird es nicht zum installieren angeboten.

Persönlich mag ich die lokale Repo und gbd nicht. Ich gehe lieber in das Verzeichnis rpm/RPMS/i586 (oder entsprechend ein anderes Verzeichnis) und nutze den Befehl apt-get install (Name der rpm).

Nun ergibt sich hier ein interessantes kleines Nebenprojekt für die Praxis. Wollen Sie wissen, was all die Kontextmenü Einträge in Thunar machen? Jeder ist ein verknüpfter Befehl und kann in einem Terminal ausgeführt werden.

pkgutils-0.1.4-4pclos2010.src.rpm
Anmerkung vom Übersetzer: Link Adresse angepasst, sollte wiedererwartend kein Paket geladen werden, geben Sie mir bitte mir Bescheid (leiche)

Installieren Sie es und schauen Sie sich die Spec Datei an. Können Sie die Zeile finden, in der Thunar die Einträge für das Kontextmenü erhält? Wollen Sie noch immer ein Paketebauer werden? Ich weiß, ich verstehe und bin doch froh, das ich diese Spec Datei nicht bearbeiten muss. Im Changelog findet man MBantz, Neal und travisn000, die zuletzt daran gearbeitet haben. Sie können uns alle in der Packagers Sektion im PCLinuxOS Mutterforum finden.