Nous réalisons des paquets de programmes permettant l'installation et la désinstallation simple de logiciels fonctionnant sous Linux. Nous voulons surtout réaliser des paquets de logiciels n'existant pas du tout ou dont la version présente dans la distribution est ancienne.
J'ai entendu dire qu'installer des paquets binaires pouvait poser problème. Est-ce vraiment sûr d'installer vos paquets ?
Si tu veux en être sûr, avant d'installer un paquet tu peux en examiner les détails.
# rpm -qpil --changelog --scripts nom_du_paquet.rpm | less
On t'indique alors l'auteur du paquet, ce qui a changé depuis la dernière mise à jour, quels fichiers sont installés sur ton système et quels scripts sont exécutés avant et après l'installation.
Les paquets sont signés, de sorte que tu puisses vérifier que la signature corresponde bien à l'auteur du paquet, qu'il n'a pas été manipulé par quelqu'un de différent ou qu'il n'est pas corrompu.
Tu peux vérifier cela de différentes manières : il faut avoir installé GnuPG (à partir de la version 1.x) ou GnuPG (à partir de la version 1.x). (PGP version 2.x ne fonctionne pas !) Page d'acceuil de GNU Privacy Guard : http://www.gnupg.org Page d'acceuil de Pretty Good Privacy : http://www.pgpi.net
Premièrement tu as besoin des clés publiques des auteurs de paquets : Dans le cas de GnuPG :
$ lynx --dump ftp://ftp.links2linux.de/pub/packman/public-keys.asc | gpg --import
Ou bien télécharge le fichier ftp://ftp.links2linux.de/pub/packman/public-keys.asc et importe les clés comme suit :
$ gpg --import public-keys.asc
Dans le cas de PGP :
$ lynx --dump ftp://ftp.links2linux.de/pub/packman/public-keys.asc | pgp -fka
Ou bien télécharge le fichier ftp://ftp.links2linux.de/pub/packman/public-keys.asc et importe les clés comme suit :
$ pgp -ka public-keys.asc
Avec un RPM et GNU Privacy Guard :
D'abord tu dois importer les clés Packman dans la base de données RPM :
$ rpm --import public-keys.asc
Ensuite, en tant qu'utilisateur dois créer le fichier .rpmmacros avec le contenu suivant :
$ vi ~/.rpmmacros %_signature gpg %_gpg_name Waldemar Brodkorb (Linux rulez!) <brodkorb@onlinehome.de> %_gpg_path /home/waldemar/.gnupg/ %_gpg_bin /usr/bin/gpg
Naturellement à adapter en fonction de ton installation. : -)
Maintenant tu peux vérifier les paquets téléchargés avant de les installer :
$ rpm -vK nom_du_paquet.rpm
Avec un RPM et Pretty Good Privacy :
D'abord tu dois importer les clés Packman dans la base de données RPM :
$ rpm --import public-keys.asc
Ensuite, en tant qu'utilisateur dois créer le fichier .rpmmacros avec le contenu suivant :
$ vi ~/.rpmmacros %_signature pgp %_pgp_name Waldemar Brodkorb (Linux rulez!) <brodkorb@onlinehome.de> %_pgp_path /home/waldemar/.pgp/ %_pgp_bin /usr/bin/pgp
Naturellement à adapter en fonction de ton installation. : -)
Maintenant tu peux vérifier les paquets téléchargés avant de les installer :
$ rpm -vK nom_du_paquet.rpm
J'ai eu des problèmes sous SuSE 10.0 pour importer les clés avec rpm –import. Apt ne voulais pas installer les paquets téléchargés à cause d'une vérification de signature qui échouait :
$ 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
L'importation des clés publiques comme décrit plus haut n'a pas fonctionné :
$ 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
Apparemment avec le RPM, l'importation de plusieurs clés d'un fichier pose problème, seule la première clé publique est importée. C'est pourqu'oi j'ai installé le paquet rpmkey-packman qui comporte toutes les clés d'auteur dans des fichiers différents :
$ 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
Cela ne suffit toutefois pas, il faut encore importer fichiers-asc :
$ rpm -ql rpmkey-packman | grep asc | xargs rpm --import
RPM reconnaît maintenant tous les autres auteurs :
$ 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
Solution pour ce problème : Il faut installer avec apt rpmkey-*. Seulement il faut également que le wrapper-script d'apt importe réellement les clés dans la base de données RPM!
Quelques projets présents sur Internet construisent leurs propres RPMs pour SuSE, en cas de doute allez visiter en premier lieu leurs pages d'acceuil :
Il existe trois possibilités : avec YaST, manuellement ou avec apt4rpm.
Avec YaST c'est le plus simple. Tu ajoutes dans YaST une “source d'installation”, en plus de la source d'installation originale (SuSE DVD/CD), en mettant comme serveur ftp://packman.links2linux.de/pub/packman/MIRRORS et comme répertoire suse/9.1 (à modifier suivant ta version). Tu peux à présent choisir et installer des RPMs-Packman en te rendant à “installer des logiciels”. Les dépendances des paquets sont résolues automatiquement.
Il faut se servir d'un navigateur web ou d'un client FTP pour télécharger les paquets.
Avec les plus gros fichiers, un gestionnaire de téléchargement est recommandé, par exemple wget. Il suffit simplement de faire un clic droit “Copier l'adresse du lien”, puis de faire un coller dans une Konsole comme cela pour télécharger :
$ wget -nH -nd -c "Adresse"
A présent tu peux installer ton paquet en tant que root :
# rpm -Uvh nom_du_paquet1.rpm nom_du_paquet2.rpm ...
Merci de bien respecter le fait d'installer toutes les dépendances nécessaires et enregistrées au même endroit (c.-à-d. avec RPM - Uhv… - dans l'ordre).
Si tu utilises apt4rpm http://linux01.gwdg.de/apt4rpm/, veilles à rajouter les lignes suivantes dans /etc/apt/sources.list :
rpm ftp://ftp.gwdg.de/pub/linux/suse/apt - ici tu mets packman packman-i686. rpm-src ftp://ftp.gwdg.de/pub/linux/suse/apt - ici tu mets également packman packman-i686.
Avec cela, tu disposeras des RPMs Packman dans les prochaines mises à jour !
Cela dépend à nouveau du fait de savoir si tu installes les paquets avec YaST, manuellement ou avec apt4rpm.