===== Was macht das Packman-Team? ===== Wir packen Softwarepakete zusammen um eine einfache Installation und Deinstallation von Software unter Linux zu ermöglichen. Dabei wollen wir vor allem Software einpacken, die in den Distributionen gar nicht oder nur in einer älteren Version vorhanden ist. ===== Kann ich euren Paketen vertrauen? ===== Ich habe gehört, mit Binärpaketen lässt sich jede Menge Unfug treiben. Ist das nicht zu unsicher, eure Pakete zu installieren? Bevor du ein Paket installierst, kannst du es erst mal auf Herz und Nieren überprüfen, damit dir nichts untergeschoben wird. # rpm -qpil --changelog --scripts paketname.rpm | less Jetzt wird dir angezeigt, wer das Paket gebaut hat, was sich seit dem letzten Release getan hat, welche Dateien auf deinem System installiert werden und welche Skripte vor oder nach der Installation ausgeführt werden. Zusätzlich dazu sind alle Pakete signiert, so dass du überprüfen kannst, von wem das Paket gebaut wurde, ob es von irgendjemandem anders manipuliert wurde und ob es fehlerfrei heruntergeladen wurde. Dies kannst du über verschiedene Wege überprüfen: du solltest GnuPG (ab Version 1.x) oder PGP (ab Version 5.x) installiert haben. (PGP Version 2.x funktioniert nicht!) GNU Privacy Guard Homepage: http://www.gnupg.org/ Pretty Good Privacy Homepage: http://www.pgpi.net/ Als erstes brauchst du die öffentlichen Schlüssel der Packager: Im Falle von GnuPG: $ lynx --dump ftp://ftp.links2linux.de/pub/packman/public-keys.asc | gpg --import Oder die Datei ftp://ftp.links2linux.de/pub/packman/public-keys.asc herunterladen und folgendermaßen importieren: $ gpg --import public-keys.asc Im Falle von PGP: $ lynx --dump ftp://ftp.links2linux.de/pub/packman/public-keys.asc | pgp -fka Oder die Datei ftp://ftp.links2linux.de/pub/packman/public-keys.asc herunterladen und folgendermaßen importieren: $ pgp -ka public-keys.asc Mit RPM und GNU Privacy Guard: Zuerst musst du noch die Packman-Schlüssel in die RPM-Datenbank importieren: $ rpm --import public-keys.asc Dann musst du als User die Datei .rpmmacros mit folgendem Inhalt anlegen: $ vi ~/.rpmmacros %_signature gpg %_gpg_name Waldemar Brodkorb (Linux rulez!) %_gpg_path /home/waldemar/.gnupg/ %_gpg_bin /usr/bin/gpg Natürlich angepasst an deine Daten. :-) Nun kannst du alle heruntergeladenen Pakete vor dem Installieren prüfen: $ rpm -vK paketname.rpm Mit RPM und Pretty Good Privacy: Zuerst musst du noch die Packman-Schlüssel in die RPM-Datenbank importieren: $ rpm --import public-keys.asc Dann musst du als User die Datei .rpmmacros mit folgendem Inhalt anlegen: $ vi ~/.rpmmacros %_signature pgp %_pgp_name Waldemar Brodkorb (Linux rulez!) %_pgp_path /home/waldemar/.pgp/ %_pgp_bin /usr/bin/pgp Natürlich angepasst an deine Daten. :-) Nun kannst du alle heruntergeladenen Pakete vor dem Installieren prüfen: $ rpm -vK paketname.rpm ==== Probleme mit apt ==== Ich habe unter SuSE 10.0 Probleme mit dem Key-Import über //rpm --import// gehabt. Apt wollte dann die heruntergeladenen Pakete wegen fehlgeschlagener Signatur-Prüfung nicht installieren. $ apt-get upgrade ... Checking GPG signatures... Unknown signature /var/cache/apt/archives/alsa_1.0.13-0.pm.0_i586.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#5277a2fa) ... E: Error(s) while checking package signatures: 0 unsigned package(s) 9 package(s) with unknown signatures 0 package(s) with illegal/corrupted signatures E: Handler silently failed Ein Import der Public-Keys wie oben beschrieben hat nicht funktioniert: $ rpm -qa gpg-pubkey* > ~/gpg-pubkey1 $ rpm --import ftp://ftp.links2linux.de/pub/packman/public-keys.asc $ rpm -qa gpg-pubkey* > ~/gpg-pubkey2 $ diff -u ~/gpg-pubkey? --- /root/gpg-pubkey1 2006-10-20 17:44:57.000000000 +0200 +++ /root/gpg-pubkey2 2006-10-20 17:45:44.000000000 +0200 @@ -1,5 +1,6 @@ gpg-pubkey-15c17deb-3f9e80c9 gpg-pubkey-3d25d3d9-36e12d04 gpg-pubkey-9c800aca-40d8063e +gpg-pubkey-ddaf6454-3777ac55 gpg-pubkey-0dfb3188-41ed929b gpg-pubkey-ddaf6454-3777ac55 Anscheinend hat RPM Probleme mit dem Import mehrerer Schlüssel aus einer Datei und es wird nur der erste Public-Key importiert. Daher habe ich das Paket //rpmkey-packman// installiert, welches alle Autoren-Schlüssel als einzelne Dateien beinhaltet: $ rpm -i ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/10.0-i386/RPMS.rpmkeys/rpmkey-packman-0.3.2-0.pm.1.noarch.rpm warning: /var/tmp/rpm-xfer.G9W6RC: V3 DSA signature: NOKEY, key ID 5277a2fa $ rpm -ql rpmkey-packman /etc/yum.repos.d/packman.repo /usr/lib/rpm/gnupg/packman-andsch.asc /usr/lib/rpm/gnupg/packman-andsch_alt.asc /usr/lib/rpm/gnupg/packman-bwalle.asc /usr/lib/rpm/gnupg/packman-chrhae.asc /usr/lib/rpm/gnupg/packman-detrei.asc /usr/lib/rpm/gnupg/packman-henmuh.asc /usr/lib/rpm/gnupg/packman-henvol.asc /usr/lib/rpm/gnupg/packman-henvol_alt.asc /usr/lib/rpm/gnupg/packman-hergra.asc /usr/lib/rpm/gnupg/packman-hergra_alt.asc /usr/lib/rpm/gnupg/packman-konmal.asc /usr/lib/rpm/gnupg/packman-leofre.asc /usr/lib/rpm/gnupg/packman-leofre_alt.asc /usr/lib/rpm/gnupg/packman-leofre_alt2.asc /usr/lib/rpm/gnupg/packman-mantre.asc /usr/lib/rpm/gnupg/packman-marhue.asc /usr/lib/rpm/gnupg/packman-marsch.asc /usr/lib/rpm/gnupg/packman-oliben.asc /usr/lib/rpm/gnupg/packman-pasble.asc /usr/lib/rpm/gnupg/packman-pasble_alt.asc /usr/lib/rpm/gnupg/packman-queden.asc /usr/lib/rpm/gnupg/packman-railay.asc /usr/lib/rpm/gnupg/packman-railay_alt.asc /usr/lib/rpm/gnupg/packman-ralcor.asc /usr/lib/rpm/gnupg/packman-robrak.asc /usr/lib/rpm/gnupg/packman-thomue.asc /usr/lib/rpm/gnupg/packman-tongra.asc Das reicht aber noch nicht aus, die //asc-Dateien// müssen noch importiert werden: $ rpm -ql rpmkey-packman | grep asc | xargs rpm --import Jetzt kennt RPM auch die anderen Autoren: $ rpm -qa gpg-pubkey* > ~/gpg-pubkey3 $ diff -u ~/gpg-pubkey{1,3} --- /root/gpg-pubkey1 2006-10-20 17:44:57.000000000 +0200 +++ /root/gpg-pubkey3 2006-10-20 17:55:29.000000000 +0200 @@ -1,5 +1,33 @@ +gpg-pubkey-5f6842a4-40b09936 +gpg-pubkey-f9558872-430f586f +gpg-pubkey-8ff214b4-3afa5d46 gpg-pubkey-15c17deb-3f9e80c9 +gpg-pubkey-3ab2ce5e-41a4c011 +gpg-pubkey-f2c6a54e-43d171bc +gpg-pubkey-27db6f5b-4140d446 gpg-pubkey-3d25d3d9-36e12d04 +gpg-pubkey-f33e3fc6-443ed5fc +gpg-pubkey-7fdcef8b-3da540d4 +gpg-pubkey-1be4d89e-434835df +gpg-pubkey-4efd697e-4453afce +gpg-pubkey-a16ea024-4374cbc5 +gpg-pubkey-807235a8-3e26a1bc +gpg-pubkey-95702b3b-3c6a5ee4 gpg-pubkey-9c800aca-40d8063e +gpg-pubkey-ddaf6454-3777ac55 +gpg-pubkey-ddaf6454-3a577225 +gpg-pubkey-03775059-3f045e14 +gpg-pubkey-08a568c6-3be86b1b +gpg-pubkey-5277a2fa-40bf6e67 +gpg-pubkey-58857177-3d946b70 +gpg-pubkey-cd3140cd-3d468b40 +gpg-pubkey-1dfa8f0c-41540ae2 gpg-pubkey-0dfb3188-41ed929b gpg-pubkey-ddaf6454-3777ac55 +gpg-pubkey-cddd4d64-450c55e0 +gpg-pubkey-4efd697e-4453aa9e +gpg-pubkey-58857177-3fbba87b +gpg-pubkey-f4500075-43fde72f +gpg-pubkey-dcb8fafe-3eca9611 +gpg-pubkey-35a64134-3a57e000 +gpg-pubkey-42d5f51f-2f05e27b Lösung für dieses Problem: es muss apt install rpmkey-* lauten. Nur das wrapper-Skript apt importiert die keys auch wirklich in die RPM-Datenbank ! ===== Wo finde ich sonst noch RPMs für SuSE? ===== Manche Projekte im Netz bauen eigene RPMs für SuSE, im Zweifelsfall also zuerst auf der Homepage des Projektes nachschauen, sonst: * http://software.opensuse.org/search openSUSE Buildservice - aktuelle Pakete, mit Suchinterface und Benji Weber's One-Click-Install * http://www.mathematik.uni-wuerzburg.de/~vaeth/specs/ einige .spec-dateien, aus den sich RPMs bauen lassen, und RPMs selbst * http://www.usr-local-bin.org/linux.php Hauptsächlich Gnome/GTK-Upgrades und -Programme ====== Software installieren, aktualisieren, löschen ====== ===== Wie installiere ich die Softwarepakete? ===== Dazu gibt es drei Möglichkeiten: über YaST, zypper, manuell oder über apt4rpm. ==== YaST ==== Über YaST geht es am einfachsten. Dazu gehst du in YaST auf "Installationsquelle Hinzufügen" und trägst als Server einen aus der Datei http://packman.links2linux.de/MIRRORS.html in einem Browser als URL ein. Dort hangelst Du Dich dann weiter durch: suse, . Den Server der URL kopierst Du dann als Server in den Installationsmanger (aber nur z.B. //packman.jacobs-university.de// ohne das //http://// und ohne den ///// am Ende). Den restlichen Pfad der URL kopierst Du dann in das Feld Verzeichnis (z.B.///suse/10.3// - oder entsprechend deiner openSUSE-Version). Das dann bestätigen und schon hast Du eine zusätzliche Installationsquelle. Dann auf "Software Installieren" und schon kannst Du Packman-RPMs auswählen und installieren. Die Abhängigkeiten zwischen Paketen werden automatisch aufgelöst. ==== zypper ==== Mit zypper lässt sich die Packman repsitory sehr einfach hinzufügen. Ähnlich wie bei YaST wird die URL benötigt. Diese lautet für SuSE 11.1 z.B. http://packman.mirrors.skynet.be/pub/packman/suse/11.1/packman.repo Für andere Versionen sind entsprechend andere URLs zu nutzen! Im weiteren wird immer SuSE 11.1 als Beispiel genutzt! Diese wird als //root// hinzugefügt zypper addrepo 'http://packman.mirrors.skynet.be/pub/packman/suse/11.1/packman.repo' Nun erscheint einer Ausgabe ähnlich dieser Adding repository 'Packman repository (openSUSE_11.1)' [[done]] Repository 'Packman repository (openSUSE_11.1)' successfully added Enabled: Yes Autorefresh: No URI: http://packman.mirrors.skynet.be/pub/packman/suse/11.1/ Der Vollständigkeit halber sollten nun die Repositories Informationen abgerufen werden zypper refresh Während dessen wird mit hoher Wahrscheinlichkeit eine Abfrage erfolgen ob der neuen (packman) Repository vertraut werden kann. Dies kann mit //a// "trust always" bejaht werden. New repository or package signing key received: Key ID: 45A1D0671ABD1AFB Key Name: PackMan Project (signing key) Key Fingerprint: F8875B880D518B6B8C530D1345A1D0671ABD1AFB Repository: Packman repository (openSUSE_11.1) Do you want to reject the key, trust temporarily, or trust always? [[R/t/a/?]]: a Retrieving repository 'Packman repository (openSUSE_11.1)' metadata [[done]] Building repository 'Packman repository (openSUSE_11.1)' cache [[done]] Repository 'openSUSE-11.1-OSS' is up to date. Repository 'openSUSE-11.1-Updates' is up to date. Repository 'openSUSE-11.1-non-OSS' is up to date. All repositories have been refreshed. Nun wird zypper zukünftig auch die Packman Repository nutzen. ==== Manuelle Installation ==== du musst dir die Pakete mit deinem WWW-Browser oder mit einem FTP-Client von dieser Seite downloaden. Bei größeren Dateien empfiehlt sich ein Downloadmanger, wie beispielsweise wget. Zur Verwendung einfach mit der rechten Mausklick auf den Link, »Verknüpfungsadresse kopieren« wählen und in der Konsole mit folgendem Befehl die Datei herunterladen: $ wget -nH -nd -c "Adresse" Dann kannst du das Paket als root in dein System installieren. # rpm -Uvh paketname1.rpm paketname2.rpm ... Bitte achte darauf, dass du alle abhängige Pakete heruntergeladen hast und diese zusammen (d.h. mit einem rpm -Uhv .. -Befehl) installierst. ==== apt4rpm ==== Falls du apt4rpm [[http://linux01.gwdg.de/apt4rpm/]] verwendest, erweitere bitte in /etc/apt/sources.list folgende Zeilen: rpm ftp://ftp.gwdg.de/pub/linux/suse/apt - hier trägst du noch packman packman-i686 ein. rpm-src ftp://ftp.gwdg.de/pub/linux/suse/apt - hier trägst du auch packman packman-i686 ein. Nach dem nächsten apt-get update stehen dir die Packman-RPMs zur Verfügung! ===== Wie aktualisiere ich die Softwarepakete? ===== Das hängt wieder davon ab, ob du pakete über YaST, manuell oder über apt4rpm installierst. ==== YaST ==== Zur Aktualisierung der Pakete muss unter "Installationsquelle Hinzufügen" der Packman-Eintrag ausgewählt und mit "Bearbeiten" -> "Status aktualisieren..." die Paketliste auf den neusten Stand gebracht werden. Anschließend kann über "Software installieren oder löschen" und Filter "Zusammenfassung" eine Übersicht aller Pakete angezeigt werden, die nicht direkt von SuSE stammen, denn diese Pakete werden in YaST automatisch auf den Status "Geschützt" gesetzt. Geschützte Pakete werden nicht automatisch (z.B. durch YOU) überschrieben, weshalb wir auch leider keine automatische Aktualisierung per YOU anbieten können. An der Schriftfarbe der Paketnamen lässt sich der Status der Pakete schnell erkennen: * zu Paketen mit blauer Schrift existiert inzwischen eine neuere Version (zur Aktualisierung mit der rechten Maustaste anklicken und den Status auf "Aktualisieren" ändern) * bei schwarzer Schrift existiert keine neuere Version * rote Schrift zeigt ein Paket das aktueller ist als auf einer der Installationsquellen vorhanden (stammt demzufolge aus anderen Quellen) ==== Manuell ==== Zur manuellen Aktualisierung gehst du wie oben beschrieben vor; manuelle Installation und Aktualisierung unterscheiden sich nicht. ==== apt4rpm ==== Wenn du packman-Quellen wie oben beschrieben konfiguriert hast, aktualisiert du Packman-Pakete wie sonst mit apt-get upgrade. ===== Wie kann ich mich über neue oder aktualisierte Pakete informieren lassen? ===== Dazu gibt es mehrere Möglichkeiten: * Auf der Packman-Einstiegsseite http://www.links2linux.de/ werden neue und aktualisierte Pakete aufgelistet * Es gibt ein News(RDF)-Feed zu den neuen und aktualisierten Paketen: http://packman.links2linux.de/rdf/packman_de.rdf. Diesen benutzt du mit deinem Lieblings-Newsfeed-Programm und hast dann ein Packman-Newsticker ;-). Oder wenn du mit Mozilla/Firefox surfst, reicht es auf die Packman-Seite http://packman.links2linux.de/ zu gehen. Du hast dann unten rechts im Browser ein Symbol, das zeigt, dass für diese Seite ein News-Feed vorhanden ist. Mit einem Klick auf das Symbol kannst du den Packman-Newsfeed als Live-Bookmark einbinden. Diese Lesezeichen aktualisieren sich selbst jedesmal wenn du darauf gehst und führen direkt zu den Seiten mit neuen und aktualisierten Paketen * Falls du apt4rpm verwendest (http://linux01.gwdg.de/apt4rpm/), werden Pakete automatisch mit apt update/apt upgrade aktualisiert. Um nach neuen Paketen zu suchen, kannst du wie oben beschrieben vorgehen oder auch apt search benutzen * mit YaST gehst du wie oben beschrieben ===== Wie deinstalliere ich die Softwarepakete? ===== Entweder du startest YaST, findest dort den(die) Paket(e) und löschst diese(n), oder einfach als root: # rpm -e paketname Fällt dir der exakte Name des Paketes nicht mehr ein? Kein Problem: # rpm -qa |grep -i suchbegriff Oder du kennst eine Datei aus dem Paket: # rpm -qf /pfad/zur/datei/dateiname ===== Was mache ich wenn sich das Paket nicht problemlos installieren lässt? ===== Schicke einfach eine e-Mail mit der genauen Fehlerbeschreibung an die packman-Liste: packman@links2linux.de. Du weißt nicht genau welche Informationen wir über dein System benötigen? Gib mindestens deine SUSE-Version und den Download-Pfad zum Paket an. ===== Baut ihr neuerdings keine devel-RPMs mehr? ===== Doch, aber die heißen jetzt anders, da SuSE für 10.3 die SuSE-library-packaging-Policy geändert hat http://en.opensuse.org/Shared_Library_Packaging_Policy und wir das jetzt schon umsetzen. Ein wichtiger Grund ist, daß sich dadurch die Anzahl der Abhängigkeiten reduziert. Ein Beispiel: Das Paket ktoblzcheck wird künftig zerlegt in * ktoblzcheck (nur die Programme) * **lib**ktoblzcheck**X** (nur die Bibliothek libktoblzcheck.X.so) und * **lib**ktoblzcheck-devel (alle header und linklibs) ====== Pakete selbst bauen, auseinander nehmen... ====== ===== Was mache ich wenn die Pakete nicht für meine Version der Distribution vorhanden sind? ===== Da von allen Paketen auch Source-RPMs verfügbar sind, kannst du dir das Paket auf deinem System neu zusammenbauen. # rpmbuild --rebuild paketname.src.rpm Wenn du Glück hast und alle benötigten Libraries und Include-Files installiert sind und gefunden werden, hast du am Schluss ein fertiges RPM, das du sogleich installieren kannst: # rpm -Uvh /usr/src/packages/RPMS/i386/paketname.rpm Beachte aber das manche Software eventuell auf älteren Distributionen nicht lauffähig ist. ===== Was mache ich, wenn in dem Paket ein Feature oder Patch fehlt? ===== Nochmal, da von allen Paketen auch Source-RPMs verfügbar sind, kannst du dir das Paket auf deinem System neu zusammenbauen. Source-RPM installieren: # rpm -i paketname.src.rpm Die SPEC-Files findest du unter /usr/src/packages/SPECS/. Es enthält alle Informationen, die der Paketmanager benötigt, um aus den Sourcen ein Paket zu bauen. Unter anderem sind dies die Schritte zur Installation, eine Liste aller in dem Paket enthaltenen Dateien und die Headerinfos. Erst das Spec-File editieren und dann mit # rpmbuild -bb paketname.spec ein RPM erzeugen, welches du dann installieren kannst. Eine Mail an den Packager wäre auch noch schön, damit er weiß was eventuell fehlt oder falsch konfiguriert ist. ===== Wie extrahiere ich nur einzelne Bestandteile aus den RPM's/SRPM's ===== Ganz einfach lass dir erstmal alle Dateien die im RPM enhalten sind auflisten: $ rpm2cpio paket.rpm | cpio --list Einzelne Dateien kannst du dann folgendermaßen extrahieren: $ rpm2cpio paket.rpm | cpio --extract dateiname ===== Wo finde ich Informationen zu Änderungen am Programm bei neuen Paketversionen? ===== Paketänderungen finden sich im Changelog des Paketes, das mit folgendem Befehl angezeigt werden kann: # rpm -qp --changelog Paketname.rpm Meist sind aber die Änderungen am Programm selber, die vom Autor durchgeführt wurden, interessanter. Diese werden meist in einer Datei CHANGES oder ChangeLog festgehalten, die sich bei fertig installiertem Paket unter /usr/share/doc/packages// befindet. Welche Paket-Dokumentation es sonst noch gibt, erfährst du mit: # rpm -qd Paketname.rpm Darüber hinaus sind die Änderungen meist auf der Homepage des Programmes im Internet zu finden. Normalerweise wird die URL zu der Homepage in der PackMan-Übersicht zu den Paketen angegeben. Sollte sie hier nicht zu finden sein oder ist auf dieser Seite kein ChangeLog zu finden, so ist es eine gute Idee, über Freshmeat.NET die Homepage oder gleich den direkten Link zum ChangeLog ausfindig zu machen. Fast jedes Programm wird über Freshmeat registiert! ===== Wo finde ich mehr Informationen zu RPM? ===== * Maximum RPM: http://www.rpm.org/max-rpm/ (sehr empfehlenswert zu lesen für jeden, der RPMs baut) * RPM-HowTo: http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/RPM-HOWTO.html * Manpage: $ man rpm ====== Ich habe etwas für Packman-Team! ====== ===== Ich habe ein interessantes Paket für Packman. Könnt ihr dieses Paket bei euch aufnehmen? ===== Wenn dein Paket mit rpmbuild gebaut ist und nicht etwa mit checkinstall, wende dich dann an die Mailingliste von Packman: packman@links2linux.de. Grundsätzlich stellen wir bei uns keine "fremden" Pakete ein. Alle RPMs die du bei uns findest sind digital signiert. Außerdem versuchen wir dass unsere RPMs gewissen Qualitätsansprüchen genügen. Wenn jemand von Packman-Team dein RPM übernehmen wird, wird er das RPM neu bauen und zum Download bereitstellen. Oder du entscheidest dich für eine dauerhafte Beteiligung bei Packman, dann kannst du Mitglied werden und dein RPM selbst (weiter)pflegen. Lies aber bitte vorher die nächste Antwort! ===== Kann ich bei dem Projekt helfen? ===== Ja, melde dich bei uns am Besten im freenode IRC unter #packman und wir klären mit dir alles nötige ab. Eine dauerhafte Beteiligung bei Packman ist mit gewissen Zeitaufwänden verbunden. Die einmal eingestellten Pakete werden in der Regel weitergepflegt, sobald es eine Version der Software gibt die aktueller ist als SUSE zur Verfügung stellt. Du musst auch ein gewisses Know-How im Bereich RPM-Bau mitbringen. Wir haben einige Skripte die die Pflege und die Aktualisierung von RPMs erleichtern, aber diese können dir die richtige Arbeit nicht abnehmen. Es gibt auch einige Richtlinien die bei der Erstellung von RPMs zu beachten sind. Du musst bei dir auch mit einem erhöhten Internet-Traffic rechnen, da du die aktuelle Software-Versionen herunterladen musst, dein SUSE-System auf dem aktuellen Stand halten und deine Pakete auf Packman-FTP hochladen musst. Ideal wäre, wenn du Pakete jeweils für die aktuelle SUSE-Version und für die eine davor bauen könntest. Das bedeutet aber auch doppelten Pflege-Aufwand für dein System!