Forum Astuces.divers [Terminal] Extraire le contenu d'un fichier RPM

Posté par .
Tags : aucun
1
7
juil.
2003
Pour extraire le contenu d'un paquet RPM dans le dossier courant, utilisez la commande "rpm2cpio paquet.rpm | cpio --extract".

Si vous être sous Linux Slackware, vous pouvez utiliser la commande "rpm2tgz" pour convertir le paquet RPM en archive TGZ et l'exploiter ensuite avec la commande TAR.

Notez cependant que s'il s'agit d'un paquet RPM binaire, vous ne pourrez pas consulter les opérations effectuées lors de l'installation ou la désinstallation (l'équivalent des scripts d'installation ou de désinstallation dans d'autres systèmes de gestion de paquet) : pour cela, vous devez extraire le fichier SPEC du paquet RPM source et y lire les sections {pre,post}-install et {pre,post}-uninstall.
  • # Re: Extraire le contenu d'un fichier RPM

    Posté par . Évalué à 1.

    C'est aussi possible d'uliser l'outil à tout faire mc.
  • # Re: Extraire le contenu d'un fichier RPM

    Posté par . Évalué à 2.

    > Notez cependant que s'il s'agit d'un paquet RPM binaire, vous ne pourrez pas consulter les opérations effectuées lors de l'installation ou la désinstallation

    On peut. Mais il faut rpm. Exemple :
    $ rpm -q --scripts -p kernel-2.4.20-18.9.i686.rpm
    preinstall scriptlet (using /bin/sh):
    /sbin/modprobe loop 2> /dev/null > /dev/null || :
    exit 0
    postinstall scriptlet (using /bin/sh):
    cd /boot
    ln -sf vmlinuz-2.4.20-18.9 vmlinuz
    ...
  • # Re: Extraire le contenu d'un fichier RPM

    Posté par . Évalué à 1.

    sur mandrake (et peut-etre ailleurs) :
    "rpm2cpio paquet.rpm | cpio --extract --make-directories"
  • # Et sans rpm2cpio, mc, alien, etc

    Posté par . Évalué à 0.

    C'est dans ce fichier /usr/lib/rpm/rpm2cpio.sh :
      #!/bin/sh

      pkg=$1
      if [ "$pkg" = "" -o ! -e "$pkg" ]; then
      echo "no package supplied" 1>&2
      exit 1
      fi

      leadsize=96
      o=`expr $leadsize + 8`
      set `od -j $o -N 8 -t u1 $pkg`
      il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
      dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
      # echo "sig il: $il dl: $dl"

      sigsize=`expr 8 + 16 \* $il + $dl`
      o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
      set `od -j $o -N 8 -t u1 $pkg`
      il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
      dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
      # echo "hdr il: $il dl: $dl"

      hdrsize=`expr 8 + 16 \* $il + $dl`
      o=`expr $o + $hdrsize`

      dd if=$pkg ibs=$o skip=1 2>/dev/null | gunzip

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.