Extraire le contenu d'une ISO sans droits root avec 7zip

[size=85](A la demande de Ricardo)[/size]

P7zip (version POSIX de 7zip) est un gestionnaire d’archive qui supporte un grand nombre de format de conteneur d’archives et d’algorithmes de compression : 7z alias lzma, utilisé par défaut, tar, gz, bzip2, rpm, deb, cab de microsoft, rar avec p7zip-rar (paquet non libre), ISO en lecture seule etc…). C’est un logiciel libre.

Sa syntaxe est similaire à celle d’[mono]unrar-nonfree[/mono].

[size=150]Problématique[/size]

Extraire le contenu d’un fichier ISO sous GNU/Linux consiste généralement à monter le fichier ISO et d’en copier le contenu, puis de le démonter. Ce n’est pas toujours la meilleure solution :

[ol]
[li] Il faut être root pour monter/démonter le fichier ISO[/li]
[li] Il y a pas mal de choses a taper (flemmard inside !) [/li][/ol]

C’est la que 7zip intervient.

[size=150]Installation[/size]

# apt-get install p7zip-full

Si vous souhaitez ajouter le support RAR (dépôt non-free)

# apt-get install p7zip-rar

Nous utiliserons ici un fichier ISO mais il peut être remplacé par un CAB ou un RAR, sans changement de la ligne de commande.

[mono]7z[/mono] n’appelle pas la fonction sync() du système d’exploitation. Si vous comptez écrire sur une clé USB en plus des commandes nommées ci-dessous il vous faudra appeler [mono]sync[/mono].

[size=150]Extraction complète dans le répertoire en cours[/size]

$ 7z x fichier.iso 

Si vous ecrivez sur de l’USB, une fois que 7z a terminé l’extraction, lancez

$ sync 

[size=150]Extraction complète dans un répertoire donné[/size]
Il faut utiliser [mono]-o[/mono] pour spécifier un répertoire de sortie.

$ 7z x fichier.iso -o/repertoire_destination
# !!! il ne faut pas d'espace entre '-o' et le nom du répertoire
# !!! -o doit toujours être positionné après les arguments evoquant des fichiers, en toute dernière position.

[size=150]Extraction de certains fichiers/répertoires[/size]
NB: Les noms de fichier sont relatifs à la racine de l’ISO. Voir plus bas pour lister le contenu d’une ISO.

# dans le répertoire en cours : 
$ 7z x debian.iso isolinux setup.exe

Vous pouvez bien sûr combiner avec [mono]-o[/mono] :

$ 7z x debian.iso isolinux -o/mnt/cleusb
sync # ne pas oublier sur usb 

[size=150]Utilisation de wildcards pour l’extraction[/size]
Il vous faudra les échapper avec ‘’ ; seuls les caractères spéciaux reconnus par MSDOS sont pris en compte (* et ?) :

$ 7z x debian.iso isolinux/\*.cfg setup.exe -o/tmp

[size=150]Lister le contenu du fichier ISO[/size]

$ 7z l fichier.iso

La documentation complète de 7zip en anglais se situe dans [mono]/usr/share/doc/p7zip-full/DOCS/MANUAL/index.htm[/mono]

Merci pour ce tuto qui servira à d’autres comme il m’a servi.
:023