Table des matières

RPM

Installer / supprimer

Installation

Pour installaller un package:

rpm -ivh <package>.rpm

Pour installer un package et toutes les dépendances:

rpm -ivh --aid <package>.rpm

Pour installer un package en igonrant les dépendances:

rpm -ivh --nodeps <package>.rpm

Forcer la réinstallation d'un package en changeant le path d'installation:

rpm -ivh --force --root /mnt/sysimage <package>.rpm

Mise à jour

Pour mettre à jour ou installer un package

rpm -Uvh <package>.rpm

Pour mettre à jour un package (la mise à jour ne se fera pas si le package n'a jamais été installé)

rpm -Fvh <package>.rpm

Suppression

Pour supprimer un package:

rpm -e <package>

Requètes RPM

lister les packages installés

rpm -qa
rpm -qa --queryformat=%{NAME}\\n

Lister les packages installés en les affichant au format fichier rpm

rpm -qa --queryformat '%{name}-%{version}-%{Release}.%{arch}.rpm\n'

Note :!: : Pour connaître les tags disponibles pour la requête, lancer la commande : rpm –querytags

Pour connaitre le package source d'un binaire ou fichier

rpm -qf /bin/sleep

Pour obtenir une description d'un package

non installé

rpm -qip apmd-3.0.2-24.i386.rpm

intallé

rpm -qi apmd

Pour lister les fichiers d'un package qui seront installés

non installé

rpm -qlp apmd-3.0.2-24.i386.rpm

intallé

rpm -ql apmd

Astuce :!: : Pour lister tous les fichiers contenus dans les RPM du CDRom Linux

cd /mnt/cdrom
for RPM in $(find ./RedHat/RPMS -name "*.rpm");do echo "######## $RPM ########";rpm -qlp $RPM;done

Lorsqu'il manque une librairie sur le système cela permet d'identifier rapidement dans quel package on peut la trouver et ainsi installer le bon RPM.

Pour lister les fichiers nécessaires à l'installation du rpm

rpm -qp --requires apmd-3.0.2-24.i386.rpm

Vérification RPM

Cette fonctionnalité comparera les modifications des fichiers installé par RPM sur le système à la base RPM. Toute les contradictions seront rapportées.

Vérification de fichier RPM

Pour vérifier le fichier zip RPM installé en comparaison avec la base de données de RPM

rpm -V zip

Pour vérifier tous les RPM installés en comparaison avec la base de données de RPM

rpm -Va

Pour vérifier le package zip installé en comparaison avec le fichier zip du package

rpm -Vp zip-2.3-.i386.rpm

Vérification de signature RPM signé par RedHat

Importer la clé publique:

rpm --import /mnt/cdrom/RPM-GPG-KEY

Pour vérifier la signature:

 rpm --checksig <package>

Extraction d'un RPM sans installation

rpm2cpio apmd-3.0.2-24.i386.rpm | cpio -idvm

Création d'un RPM

Ici nous allons créer un rpm pour installer l'outil apt. Cette methode n'est pas la methode la plus conventionnelle.

Installer le package rpm-build

rpm -ivh rpm-build.x.x.x.rpm

Il faut extraire les sources dans /usr/src/BUILD

cd /usr/src/BUILD

tar -xjf /root/apt-0.5.15lorg3.2.tar.bz2

Il faut créer un fichier /usr/src/SPECS/apt.spec. Dans le lequel il faut surtout veiller à:

Summary: Debian's Advanced Packaging Tool with RPM support
Name: apt
Version: 0.5.15
Release: 7.RHEL4
Copyright: GPL
Group: System Environment/Base
Source: apt-0.5.15lorg3.2.tar.bz2
BuildRoot: /var/tmp/%{name}-buildroot
  
%description
A port of Debian's apt tools for RPM based distributions.
It provides the apt-get utility that provides a simpler, safer way to
install and upgrade packages. APT features complete installation ordering,
multiple source capability and several other unique features.
  
%prep
mkdir -p /var/tmp/%{name}-buildroot
cd apt-0.5.15lorg3.2
./configure --prefix=/var/tmp/%{name}-buildroot
  
%build
cd apt-0.5.15lorg3.2
make clean
make
  
%install
cd apt-0.5.15lorg3.2
make install
  
%files
/share/locale/es_ES/LC_MESSAGES/apt.mo
/share/locale/pt_BR/LC_MESSAGES/apt.mo
/share/locale/de_DE/LC_MESSAGES/apt.mo
/share/locale/ja/LC_MESSAGES/apt.mo
/share/locale/ru/LC_MESSAGES/apt.mo
/share/locale/it_IT/LC_MESSAGES/apt.mo
/bin/genbasedir
/bin/apt-cache
/bin/gensrclist
/bin/countpkglist
/bin/apt-config
/bin/apt-cdrom
/bin/genpkglist
/bin/apt-get
/include/apt-pkg/rpmversion.h
/include/apt-pkg/rpmindexfile.h
/include/apt-pkg/versionmatch.h
/include/apt-pkg/rpmpm.h
/include/apt-pkg/sptr.h
/include/apt-pkg/clean.h
/include/apt-pkg/rpmhandler.h
/include/apt-pkg/acquire-method.h
/include/apt-pkg/rpmrecords.h
/include/apt-pkg/policy.h
/include/apt-pkg/luaiface.h
/include/apt-pkg/strutl.h
/include/apt-pkg/packagemanager.h
/include/apt-pkg/sha1.h
/include/apt-pkg/hashes.h
/include/apt-pkg/pkgcachegen.h
/include/apt-pkg/pkgrecords.h
/include/apt-pkg/rpmlistparser.h
/include/apt-pkg/cdromutl.h
/include/apt-pkg/tagfile.h
/include/apt-pkg/acquire-item.h
/include/apt-pkg/md5.h
/include/apt-pkg/mmap.h
/include/apt-pkg/version.h
/include/apt-pkg/repomd.h
/include/apt-pkg/acquire.h
/include/apt-pkg/pkgsystem.h
/include/apt-pkg/srcrecords.h
/include/apt-pkg/cacheiterators.h
/include/apt-pkg/repository.h
/include/apt-pkg/rpmshowprogress.h
/include/apt-pkg/acquire-worker.h
/include/apt-pkg/pkgcache.h
/include/apt-pkg/fileutl.h
/include/apt-pkg/cmndline.h
/include/apt-pkg/error.h
/include/apt-pkg/progress.h
/include/apt-pkg/configuration.h
/include/apt-pkg/indexfile.h
/include/apt-pkg/cachefile.h
/include/apt-pkg/algorithms.h
/include/apt-pkg/orderlist.h
/include/apt-pkg/crc-16.h
/include/apt-pkg/init.h
/include/apt-pkg/rpmmisc.h
/include/apt-pkg/depcache.h
/include/apt-pkg/rpmsystem.h
/include/apt-pkg/rpmsrcrecords.h
/include/apt-pkg/sourcelist.h
/include/apt-pkg/rpmpackagedata.h
/lib/libapt-pkg.a
/lib/libapt-pkg-libc6.3-6.so.2.0.0
/lib/libapt-pkg.la
/lib/apt/methods/gpg
/lib/apt/methods/cdrom
/lib/apt/methods/http
/lib/apt/methods/gzip
/lib/apt/methods/rsh
/lib/apt/methods/file
/lib/apt/methods/bzip2
/lib/apt/methods/copy
/lib/apt/methods/ftp
/lib/apt/methods/ssh
/lib/libapt-pkg.so
/lib/libapt-pkg-libc6.3-6.so.2

Lancer la création du RPM

rpmbuild -bb /usr/src/SPECS/apt.spec

Si l'on veux juste copier des fichiers en installant un RPM mettre par exemble une commande echo no prep dans les partie %prep, %build, %install et mettre la liste de fichiers à mettre dans le RPM dans la partie %files. Pour lancer la création en étant indépendant de l'architecture faire :

rpmbuild -bb --target=noarch /usr/src/SPECS/my.spec