====== Tout sur RPM ====== Installation/désinstallation de paquetages, mises à jour ======================================================== http://lea-linux.org/software/rpm.php3 http://www.urpmi.org/fr/urpmi_first_fr.php http://personal.riverusers.com/~thegrendel/build-4.html#ss4.1 (=Whats wrong with rpms?) http://www.mandrakehelp.com/RPM-HOWTO.html#1.2 http://speculation.org/garrick/urpmifaq.txt rpm, urpm* en mode graphique, mcc, kpackage rpm === http://www.pcentraide.com/index.php?showtopic=175 Commande / syntaxe rpm Installer # rpm -i nom_paquet.rpm Désintaller # rpm -e nom_paquet.rpm Mise a jour # rpm -U nom_package.rpm Vérifier qu'un paquetage est bien installé ------------------------------------------ $ rpm -V NomDuPaquet rpm -q (ou --query} -------------------------------------------- rpm -qa (-a ou --all) affiche tous les paquets installés rpm -qf foo (-f ou --file) Retourne les paquets contenant le fichier foo rpm -ql paquet (-l ou --list) liste les fichiers contenu dans le paquet rpm -qR paquet (-R ou --requires) liste les paquets nécessaires pour ce paquet (dependances) rpm -qd paquet (-d ou --docfiles) liste uniquement les fichiers de documentation rpm -q --dump paquet infos complètes sur les fichiers rpm -qi paquet infos complètes sur le paquet rpm -q --provides paquet List capabilities this package provides (?) version et libs ? Exemples : - retourne la liste des rpm apache installés $ rpm -qa | grep apache - cherche dans quel paquet se trouve un logiciel : $ rpm -qf $(which perl) perl-base-5.8.8-6mdk $ rpm -qf $(which vmstat) procps-3.2.7-2mdv2007.1 - retourne la liste des fichiers contenus dans les paquets qui contiennent /bin/bash $ rpm -ql $(rpm -qf $(which bash)) - retourne la liste des applis installées, derniers installés en tête $ rpm -qa --last Rechercher et désinstaller un package ------------------------------------- $ rpm -qa nuke PHP-nuke-6.0-1mdk # rpm -e foo <- désinstalle le package foo-x.y.rpm Remplacer, mettre à jour une package ------------------------------------ # rpm -Uvh foo <- installe ou remplace # rpm -Fvh foo <- remplace (mise à jour d'une version préexistante) Remet une package plus ancien : # rpm -Uvh --replacepkgs --nodeps --oldpackage foo.rpm Afficher les dépendances d'un programme ----------------------------------------- Exemple : $ rpm -qR man (-R ou --requires) groff-for-man setup rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 bash libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.3) Rpm "source" (appli.src.rpm) ---------------------------------------------------- cf. http://www.rpm.org/max-rpm/s1-rpm-miscellania-srpms.html Pour recompiler le paquet en tenant compte de l'environnement : rpm --rebuild appli.src.rpm urpm* ===== urpmf ----- Liste les paquets qui contiennent la chaîne passée en argument. NB : il faut que hdlist soit présent, sinon message d'erreur "Note: no hdlist for medium "Main Updates (Official2008.0-1)Mandriva Linux - 2008.0-1)" , unable to return any result for it". Dans ce cas, utiliser urpmq -y (ou urpmq --fuzzy) $ urpmf /usr/bin/kwrite kdebase-progs:/usr/bin/kwrite kdebase-progs:/usr/bin/kwriteconfig $ urpmf avicat avifile-samples:/usr/bin/avicat avifile-samples:/usr/share/man/man1/avicat.1.bz2 urpmi ----- Configurer les sources : plusieurs méthodes : - http://easyurpmi.zarb.org - K -> Configuration -> Packaging -> Software source manager Par exemple menu remove medium pour retirer un CD - urpmi.setup : Pour recharger un CD : urpmi.addmedia CD1_MK9 removable://mnt/cdrom_ide /var/lib/urpmi cf. #urpmi.addmedia Pour ajouter une source ftp (ou http) urpmi.addmedia contrib ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrake/9.0/contrib/RPMS Pour mettre à jour la base des sources # urpmi.update --all (urpmi.update -a à partir de MDK10) La liste des sources est dans /etc/urpmi/urpmi.cfg La liste des logiciels et les index sont dans /var/lib/urpmi/ Dévérouiller la base de donnée urpmi : supprimer le fichier /var/lib/urpmi/LOCK Pour supprimer toutes les sources # urpmi.removemedia -a Pour installer un paquetage --------------------------- Exemple # urpmi kdenet (recherche les paquets qui contiennent "kdenet") The following packages contain kdenet: kdenetwork-devel kdenetwork kdenetwork-kppp # urpmi kdenetwork et répondre aux questions Pour installer automatiquement les mises à jour ----------------------------------------------- # urpmi --auto-select NB : faire au préalable une mise à jour des sources avec : # urpmi.update -a Au lieu de ces 2 commandes, utiliser : # urpmi --auto-update qui fait une mise à jour des sources suivie de la mise à jour du système. Pour éviter la mise à jour de certains paquets ---------------------------------------------- /etc/urpmi/skip.list Pour contrôler si l'installation s'est bien passée --------------------------------------------------- # less /var/log/urpmi.log Faire une base locale de mises à jour ------------------------------------- Le but est double : 1 - pouvoir faire les mises à jour sur des PCs non connectés au réseau ou avec une connexion trop lente pour être utilisable 2 - pouvoir, lors d'une installation de machine, charger les mises à jour de sécurité avant de la connecter au réseau : ça permet d'éviter son piratage éventuel alors qu'elle est encore vulnérable. Les étapes : 1 - récupérer le répertoire ad hoc (actuellement /mandrake/updates/9.1/RPMS) à l'aide de wget directement sur un support amovible (ou sur un disque dur, puis graver un CD) 2 - Démonter le support amovible, le monter sur la machine à mettre à jour 3 - Mettre à jour la base urpmi avec urpmi.update 4 - Faire les mises à jour des logiciels avec urpmi --auto-select En détail 1 - Récupérer sur l'un des nombreux serveurs disponibles les rpms des mises à jour à l'aide de wget : $ wget -mirror -P /mnt/disk -nH --cut-dirs=3 ftp://NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS avec : -mirror pour créer localement un "mirroir" du répertoire RPMS du serveur. Avantage : si on lance à nouveau cette commande, seuls les fichiers nouveaux ou modifiés sont transférés -P /mnt/disk pour écrire à un endroit donné (ici un support amovible monté en /mnt/disk) -nH et --cut-dirs options facultatives : -nH pour effacer le nom du serveur de l'arborescence créée --cut-dirs=3 pour effacer /pub/linux/distributions de l'arborescence créée Dans cet exemple l'ajout de -P et --cut-dirs permet de simplifier l'arborescence créée en : /mnt/disk/mandrake/updates/9.1/RPMS au lieu de : /mnt/disk/NomDuServeurFTP/pub/linux/distributions/mandrake/updates/9.1/RPMS 2 - Démonter le disque amovible et le monter sur la machine à mettre à jour de façon à avoir (par exemple) les rpms dans : /mnt/disk/mandrake/updates/9.1/RPMS 3 - Ajouter le répertoire contenant les rpm à la base urpmi Ca peut se faire soit en mode graphique, soit en ligne de commande : Mode graphique : K -> Configuration -> Packaging -> Software Sources Manager et ajouter le répertoire contenant les rpms dans les sources à utiliser, dans cet exemple : /mnt/disk/mandrake/updates/9.1/RPMS Mode ligne de commande : # urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS Puis mettre à jour la base : # urpmi.update updates 4 - Faire toutes les mises à jour en mode automatique : # urpmi --auto-select Les fichiers "hdlist" ne sont pas indispensables : urpmi.update les crée. Ceci dit, on peut les récupérer sur le serveur dans /9.1/base. Dans ce cas les ajouter (ici hdlist.cz) : # urpmi.addmedia updates file:/mnt/disk/mandrake/updates/9.1/RPMS with ../base/hdlist.cz Sinon on peut les créer, avec la commande : $ genhdlist nom_du_répertoire Attention : les hdlists vont dans le répertoire contenant les rpms. Il ne semble pas y avoir d'option dans genhdlist pour rediriger les fichiers créés dans un répertoire "base" : le faire "à la main". Dans les messages urpmi ----------------------- ETA = Estimated Time of Arrival Lister les sources ------------------ $ urpmq --list-media $ urpmq --list-media active Lister les paquets disponibles ------------------------------ urpmq --list urpmq --list -f Exemples : $ urpmq --list | grep ekiga ekiga ekiga $ urpmq --list -f | grep ekiga ekiga-2.0.11-1mdv2008.0.i586 ekiga-2.0.12-1mdv2008.0.i586 $ urpmq -f ekiga ekiga-2.0.12-1mdv2008.0.i586|ekiga-2.0.11-1mdv2008.0.i586 $ urpmq -f kernel-2.6.22.18 No package named kernel-2.6.22.18 The following packages contain kernel-2.6.22.18: actuator-kernel-2.6.22.18-desktop-1mdv actuator-kernel-2.6.22.18-desktop586-1mdv ... Paquets (installés ou non ?) --------------------------- $ urpmq --fuzzy nom_paquet (ou urpmq -y nom_paquet ou urpmq -y nom_paquet) $ urpmq -l nom_paquet liste en plus les fichiers Information (questions) sur un paquet -------------------------------------- $ urpmq -h Mode d'emploi de urpmq $ urpmq --summary paquet (ou urmpq -S paquet) Affiche une courte infomation sur le paquet $ urpmq -i paquet Affiche plus d'informations $ urpmq -l paquet Liste les fichiers du paquet $ urpmq -d paquet Affiche les dépendances Voir où un paquet est installé : -------------------------------- $ urpmq arpw no package named arpw The following packages contain arpw: arpwatch arpwatch2html ou bien : $ urpmq --fuzzy arpw arpwatch arpwatch2html Puis : $ rpm -ql arpwatch /etc/rc.d/init.d/arpwatch /etc/sysconfig/arpwatch /usr/sbin/arpsnmp /usr/sbin/arpwatch ... Installer un ensemble de paquets (metapaquets, meta packages dans mcc à partir de MDV 2008.1) -------------------------------- Le nom des paquets qui regroupent un ensemble de paquets commence par task- : $ urpmq --list | grep task- task-3ddesktop task-c++-devel task-c-devel task-gnome task-kde task-kde-devel task-kde4 task-kde4-devel etc. urpmi problèmes =============== urpmi database locked --------------------- # rm -f /var/lib/urpmi/.LOCK # rm -f /var/lib/urpmi/.RPMLOCK Installations en mode graphique =============================== # rpmdrake Installation en mode graphique : # rpmdrake-remove Configuration des media : # edit-urpm-sources.pl (/usr/bin/perl /usr/bin/edit-urpm-sources.pl) Mises à jour # MandrivaUpdate ou bien passer par le menu System / Configuration /Packaging ... ou bien encore y accéder par mcc En cas de problème, essayer : rpm --rebuilddb (compter plusieurs minutes pour le mise à jour des index de la db) Problèmes --------- "Les paquetages suivants ont des signatures non valides" Plusieurs causes (Les paquetages suivants ont des signatures non valides) Vérifier en particulier sue les bonnes clés sont installées : # mcc > Gérér les clés > Ajouter les clés correspondant aux média utilisés Les clés sont dans les paquetages gpg-pubkey