Sommaire
Autour des paquets RPM
A partir de 19h30 au RERS-Evry-centre-ville
Pierrick nous initiera à la construction des paquets rpm
Il est nécessaire d'installer sur votre ordinateur les paquets suivants :
- rpm-build
qui devrait vous installer les dossiers suivants dans votre /home/
- /bin/
- /rpm/
- /rpm/BUILD/
- /rpm/BUILDROOT/
- /rpm/RPMS/
- /rpm/RPMS/i586/
- /rpm/RPMS/noarch/
- /rpm/RPMS/x86_64/
- /rpm/SOURCES/
- /rpm/SPECS/
- /rpm/SRPMS/
- /rpm/tmp/
ainsi que les fichiers :
- ~/.rpmmacros
- ~/.rpmrc
Un petit compte rendu de cette soirée
Tout d'abord quelques commandes pour manipuler les paquets rpm
QUELQUES NOTIONS SUR LES COMMANDES RPM
some rpm(8) commands
quelques commandes rpm(8)
rpm : query
rpm : recherche
-
full list of installed rpm packages (without architectures of packages):
- liste la totalité des packages installés (sans l'architecture des packages)
$ rpm -qa
[jipe@localhost:/usr/lib]$ rpm -qa |grep oku libokularcore1-4.4.3-3.1mdv2010.1 okular-4.4.3-3.1mdv2010.1 gnome-sudoku-2.30.1-1mdv2010.1 ksudoku-4.4.3-2mdv2010.1
-
same list with the architecture of each package
- La même liste avec l'architecture de chaque package
$ rpm -qa --qf "%{NAME} %{VERSION} %{RELEASE} %{ARCH}\n " | grep -i -e bash -e gawk -e "glibc " -e compat-libstdc++ -e "perl "
[jipe@localhost:~]$ rpm -qa --qf '%{N}.%{V}.%{ARCH}\n' | grep bash bash.4.1.i586
- grep avec l'option -e permet de faire la demande pour plusieurs packages
- grep avec l'option -i ne tient pas compte de la case
[jipe@localhost:~]$ rpm -qa --qf '%{N}.%{V}.%{ARCH}\n' | grep -i -e bash -e glibc bash.4.1.i586 glibc.2.11.1.i586 glibc-devel.2.11.1.i586
- pour avoir des infos sur un paquet installé
$rpm -qi
[jipe@localhost:/usr/lib]$ rpm -qi okular Name : okular Relocations: (not relocatable) Version : 4.4.3 Vendor: Mandriva Release : 3.1mdv2010.1 Build Date: jeu. 26 août 2010 13:34:52 CEST Install Date: dim. 30 janv. 2011 17:41:51 CET Build Host: titan.mandriva.com Group : Graphical desktop/KDE Source RPM: kdegraphics4-4.4.3-3.1mdv2010.1.src.rpm Size : 3263820 License: GPL Signature : DSA/SHA1, jeu. 26 août 2010 17:07:01 CEST, Key ID 9aa8d0d022458a98 Packager : Mandriva Linux Security Team <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.; URL : http://www.kde.org Summary : A universal document viewer Description : Okular is a universal document viewer based on KPDF for KDE 4. Okular combines the excellent functionalities of KPDF with the versatility of supporting different kind of documents, like PDF, Postscript, DjVu, CHM, and others. The document format handlers page has a chart describing in more detail the supported formats and the features supported in each of them.
-
when you want to know what package a file belongs
- pour savoir quel package contient ce fichier
$ rpm -qf /path/to/file $ rpm -qf /chemin/du/fichier
exemple
- déplacement dans le répertoire /usr/lib/
[jipe@localhost:~]$ cd /usr/lib
- liste des fichiers commençant par libb
[jipe@localhost:/usr/lib]$ ll libb* lrwxrwxrwx 1 root root 16 2011-01-30 17:29 libbs2b.so.0 -> libbs2b.so.0.0.0 -rwxr-xr-x 1 root root 21808 2010-03-16 10:47 libbs2b.so.0.0.0 ........................................................................... lrwxrwxrwx 1 root root 15 2011-01-30 18:16 libbsd.a -> libbsd-compat.a -rw-r--r-- 1 root root 706 2010-10-23 12:58 libbsd-compat.a lrwxrwxrwx 1 root root 15 2011-01-30 17:43 libbz2.so.1 -> libbz2.so.1.0.0
- d'où vient le fichier libbsd-compat.a
[jipe@localhost:/usr/lib]$ rpm -qf libbsd-compat.a glibc-devel-2.11.1-8.2mnb2
- when you want to list files installed by a package :
- pour avoir la liste des fichiers installés par un package
- si le package est installé
$ rpm -ql <pkg_name>
$ rpm -ql <non_du_package>
[jipe@localhost:~]$ rpm -ql okular /usr/bin/okular /usr/bin/xf86gammacfg ..................................... /usr/share/kde4/services/rawthumbnail.desktop /usr/share/kde4/servicetypes/okularGenerator.desktop
- si le package n'est pas installé
$ rpm -qpl /somewhere/<pkg_name>.rpm
$ rpm -qpl /lien_vers_le_paquet/<nom_du_paquet>.rpm
[jipe@localhost:~]$ rpm -qpl ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2010.2/i586/media/contrib/backports/beep-1.3-1mdv2010.1.i586.rpm /usr/bin/beep /usr/share/doc/beep /usr/share/doc/beep/CHANGELOG /usr/share/doc/beep/COPYING /usr/share/doc/beep/CREDITS /usr/share/doc/beep/README /usr/share/man/man1/beep.1.lzma
-
extract the preinstall, postinstall, scriptlet scripts from the HPOvEaAgt installed package
- pour extraire les fichiers scripts de pré ou post installation
#rpm -q HPOvEaAgt --scripts > /tmp/HPOvEaAgt-scripts.txt
#rpm -q nom_du_paquet --scripts
- et pour rediriger le résultat vers un fichier
#rpm -q nom_du_paquet --scripts > /repertoire/nom_du_fichier.txt
-
if the package is not installed :
- si le package n'est pas installé :
#rpm -qp /somewhere/HPOvSecCo.rpm --scripts > HPOvSecCo.scripts.txt
#rpm -qp /l'adresse-du-paquet/nom_du_paquet.rpm --scripts
- et pour rediriger le résultat vers un fichier
# rpm -qp /l'adresse-du-paquet/ nom_du_paquet.rpm --scripts > /repertoire/nom_du_fichier.txt
les options -l et -i sont aussi valable dans ce cas
exemple :
[jipe@localhost:/tmp/test]$ rpm -ql beep-1.3-1mdv2010.1.i586.rpm le paquetage beep-1.3-1mdv2010.1.i586.rpm n'est pas installé
en rajoutant l'option -p
- pour la liste des fichiers
[jipe@localhost:/tmp/test]$ rpm -qpl beep-1.3-1mdv2010.1.i586.rpm /usr/bin/beep /usr/share/doc/beep /usr/share/doc/beep/CHANGELOG /usr/share/doc/beep/COPYING /usr/share/doc/beep/CREDITS /usr/share/doc/beep/README /usr/share/man/man1/beep.1.lzma
- pour infos sur le paquet
[jipe@localhost:/tmp/test]$ rpm -qpi beep-1.3-1mdv2010.1.i586.rpm Name : beep Relocations: (not relocatable) Version : 1.3 Vendor: Mandriva Release : 1mdv2010.1 Build Date: mar. 17 août 2010 10:04:31 CEST Install Date: (not installed) Build Host: n1.mandriva.com Group : Sound Source RPM: beep-1.3-1mdv2010.1.src.rpm Size : 37318 License: GPLv2 Signature : DSA/SHA1, mar. 17 août 2010 11:25:05 CEST, Key ID dd684d7a26752624 Packager : Sandro Cazzaniga <Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.; URL : http://www.johnath.com/beep/ Summary : The pc speaker Description : Beep allows the user to control the pc-speaker with precision, allowing different sounds to indicate different events. While it can be run quite happily on the commandline, it's intended place of residence is within shell/perl scripts, notifying the user when something interesting occurs. Of course, it has no notion of what's interesting, but it's real good at that notifying part.
rpm : remove
rpm : suppression
-
when /opt/OV/bin/OpC/install/opc_inst -r can't be used, remove the packages of the agent :
- lorsque l'option -r ne peut être utilisé supprimer les packages (of the agent) (de cette manière ?)
# rpm -e HPOvSecCo HPOvSecCC HPOvDepl HPOvPerlA HPOvPCO HPOvXpl HPOvBbc HPOvCtrl HPOvConf HPOvPacc HPOvEaAgt
# rpm -e nom du paquet
-
when 2 architectures (i586 and ia64) of packages are installed and you want to remove only the ia64 packages.
- si 2 architectures de paquet sont installées, pour n'en supprimer qu'un seul, spécifier l'architecture.
# rpm -e HPOvSecCo.ia64 HPOvSecCC.ia64 HPOvDepl.ia64 HPOvPerlA.ia64 HPOvPCO.ia64 HPOvXpl.ia64 HPOvBbc.ia64 HPOvCtrl.ia64 HPOvConf.ia64 HPOvPacc.ia64 HPOvEaAgt.ia64
#rpm -e <nom_du_paquet>.ia64 par exemple.
rpm : install
rmp : instalation
pour installer : rpm -U <le_paquet> ; à la place de rpm -i <le_paquet>
-
example of dummy installation a package with full verbosity :
- exemple d'une installation factice avec un maximum de renseignements :
#rpm -Uvvh HPOvXpl-6.20.051-1.x86_64.rpm --test #rpm -Uvvh <nom_du_paquet>.rpm --test
exemple avec beep-1.3-1mdv2010.1.i586.rpm
[root@localhost:/tmp/test]# rpm -Uvvh beep-1.3-1mdv2010.1.i586.rpm --test D: ============== beep-1.3-1mdv2010.1.i586.rpm D: Expected size: 21003 = lead(96)+sigs(344)+pad(0)+data(20563) D: Actual size: 21003 D: loading keyring from pubkeys in /var/lib/rpm/pubkeys/*.key D: couldn't find any keys in /var/lib/rpm/pubkeys/*.key D: loading keyring from rpmdb D: opening db environment /var/lib/rpm/Packages create:cdb:mpool:joinenv D: acquire_extra_lock: locked 4 D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: opening db index /var/lib/rpm/Name rdonly mode=0x0 D: read h# 1 Header sanity check: OK D: added key gpg-pubkey-70771ff3-3c8f768f to keyring D: read h# 2 Header sanity check: OK D: added key gpg-pubkey-78d019f5-3fd7504d to keyring D: read h# 1671 Header sanity check: OK D: added key gpg-pubkey-22458a98-3969e7de to keyring D: read h# 1672 Header sanity check: OK D: added key gpg-pubkey-26752624-3fd74faa to keyring D: read h# 1851 Header sanity check: OK D: added key gpg-pubkey-caba22ae-3cf2c469 to keyring D: Using legacy gpg-pubkey(s) from rpmdb D: beep-1.3-1mdv2010.1.i586.rpm: Entête V3 DSA signature: OK, key ID 26752624 D: added binary package [0] D: found 0 source and 1 binary packages D: ========== +++ beep-1.3-1mdv2010.1 i586/linux 0x0 D: opening db index /var/lib/rpm/Depends create mode=0x0 D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 OUI (fourni par rpmlib) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 OUI (fourni par rpmlib) D: opening db index /var/lib/rpm/Providename rdonly mode=0x0 D: read h# 1673 Entête V3 DSA signature: OK, key ID 22458a98 D: Requires: libc.so.6 OUI (fourni par la db) D: Requires: libc.so.6(GLIBC_2.0) OUI (fourni par la db) D: Requires: libc.so.6(GLIBC_2.3.4) OUI (fourni par la db) D: Requires: libc.so.6(GLIBC_2.4) OUI (fourni par la db) D: Requires: libc.so.6(GLIBC_2.7) OUI (fourni par la db) D: Requires: rtld(GNU_HASH) OUI (fourni par la db) D: Requires: rpmlib(PayloadIsLzma) <= 4.4.6-1 OUI (fourni par rpmlib) D: opening db index /var/lib/rpm/Conflictname rdonly mode=0x0 D: closed db index /var/lib/rpm/Depends D: ========== recording tsort relations D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth) D: 0 0 0 0 1 0 +beep-1.3-1mdv2010.1.i586 D: installing binary packages D: mounted filesystems: D: i dev bsize bavail iavail mount point D: 0 0x00000801 4096 1140292 426023 / D: 1 0x00000003 4096 0 -1 /proc D: 2 0x00000803 4096 10361956 8979811 /home D: 3 0x00000011 4096 0 -1 /proc/sys/fs/binfmt_misc D: sanity checking 1 elements D: computing 7 file fingerprints Préparation... D: computing file dispositions D: opening db index /var/lib/rpm/Basenames rdonly mode=0x0 D: opening db index /var/lib/rpm/Dirnames rdonly mode=0x0 ########################################### [100%] D: ========== +++ beep-1.3-1mdv2010.1 i586-linux 0x0 D: Expected size: 21003 = lead(96)+sigs(344)+pad(0)+data(20563) D: Actual size: 21003 D: beep-1.3-1mdv2010.1: Entête V3 DSA signature: OK, key ID 26752624 D: install: beep-1.3-1mdv2010.1 has 7 files, test = 1 D: closed db index /var/lib/rpm/Dirnames D: closed db index /var/lib/rpm/Conflictname D: closed db index /var/lib/rpm/Providename D: closed db index /var/lib/rpm/Basenames D: closed db index /var/lib/rpm/Name D: closed db index /var/lib/rpm/Packages D: release_extra_lock_may_clean(/var/lib/rpm, 4) D: cleaning db regions (ie db__* files) in /var/lib/rpm D: closed db environment /var/lib/rpm/Packages
- extract files from a rpm package
- extraire les fichiers d'un package rpm
/usr/bin/rpm2cpio OPC.rpm | cpio -idmv
- -i Travaille en entrée
- -d Si nécessaire, crée les répertoires de destination.
- -m En créant les fichiers, conserve leurs dernières dates de modification.
- -v verbose
exemple :
[jipe@localhost:/tmp/test]$ rpm2cpio beep-1.3-1mdv2010.1.i586.rpm |cpio -idmv ./usr/bin/beep ./usr/share/doc/beep ./usr/share/doc/beep/CHANGELOG ./usr/share/doc/beep/COPYING ./usr/share/doc/beep/CREDITS ./usr/share/doc/beep/README ./usr/share/man/man1/beep.1.lzma 76 blocs
Création et Modification des paquets RPM
Liens
Construire des paquetages Mandriva Tâches préliminaires
Construire des paquetages Mandriva Groupes_Mandriva_Linux
Et pour le futur avec Mageia