Créer une archive en vue de son déploiement

Bonjour,
je voudrais créer une archive (éventuellement compressée tar.bz2) qui lorsqu’elle sera décompressée, s’installera en toute sécurité dans l’arborescence que j’ai choisi.

Contenu:

  • un script destiné à /usr/local/bin
  • un repertoire de conf destiné à /etc

Un solution:

[code]# cd

mkdir monprog-1.0

cd monprog-1.0

mkdir -p usr/local/bin etc

cp /pathto/monscript usr/local/bin

cp -R /pathto/monrepconf etc/

cd …

tar -cjvf monprog-1.0.tar.bz2 monprog-1.0[/code]

Une autre:

Est-que c’est comme ça qu’on fait pour que :

déploie l’archive dans les bons répertoires ??

Apparemment ça:

[code]# cd

mkdir monprog-1.0

cd monprog-1.0

mkdir -p usr/local/bin etc

cp /pathto/monscript usr/local/bin/

cp -R /pathto/monrepconf etc/

tar -cjvf monprog.tar.bz2 *[/code]

mais hum, j’hésite un peu à décompresser … ça risque pas d’écraser des repertoires existants ?
Et les permissions des fichiers décompressés, elles restent identiques à celles des fichiers au moment de l’archivage ?

pour conserver les droits il faut utiliser l’option -p donc ici :
tar -cjpvf mon_prog.tar.bz2
et il y a de fortes chances que ça écrase les fichiers existants, mais tu peux faire une sauvegarde de ton dossier de destination avant de commencer :wink:

le mieux est peut être de faire un test avec une arborescence bidon dans un repertoire de test.

Ah okay … mais, comment ils font les zautres alors, pour faire un tar.bz2 dont le contenu va se placer en souplesse aux endroits voulus lors de la décompression ?

l’arborescence est respectée mais je ne crois pas qu’il y ait un contrôle des fichiers (avec la question “écraser si différent ? (y/n)” lors de la décompresion.
il va surement falloir faire un script qui s’occupe de ça pendant la décompression, genre tu décompresse vers un autre repertoire et tu fais un cp -i de ce repertoire vers ton repertoire final :wink: )

Fait un paquet debian, ça n’écrasera pas les fichiers existant et appartenant à un autre paquet. Dans le tuto que j’ai fait, tu verras comment faire ça très simplement. Demande moi si il y a un souci…

re-,
justement, je suis passé jeté un coup d’oeil au tuto, mais je voulais savoir comment faire un tar.bz2 avant de me lancer dans la fabrication de paquet …
Alors, pour ce problème d’archivage, pas de solution simple et souple ?

Bon, pour le .deb, j’ai des questions, mais j’hésite à les poser à la suite du tuto dans truc & astuces … comment je fais ?

Tu poses les questions ic.

Pour le tar, si tu veux faire une archive avec

/etc/blop.cfg
/usr/sbin/blop
/usr/share/man/man6/blop.1.gz
/var/blop/blop.data

Tu fais un répartoire ~/tempo contenant

~/tempo/etc/blop.cfg
~/tempo/usr/sbin/blop
~/tempo/usr/share/man/man6/blop.1.gz
~/tempo/var/blop/blop.data

Puis

$ cd ~/tempo $ tar cjf ../blop.tar.bz2 . $

Et voilà. Ton archive contient les fichiers voulus. Un

# tar xjf blop.tar.bz2

dépliera l’archive sans se préoccuper des fichiers existants déjà. Là est le pbm.

Sinon, lis particulièrement le chapitre 3 de http://boisson.homeip.net/faireunpaquet.html

[quote=“fran.b”]Un

# tar xjf blop.tar.bz2

dépliera l’archive sans se préoccuper des fichiers existants déjà. Là est le pbm.[/quote]Ok, c’est le problème, mais ça ecrase seulement les fichiers existants (de même nom), mais pas les répertoires j’imagine.
donc, si je nomme monprog comme un programme existant, ça devient grave … et c’est pas une bonne technique.
La solution, ça serait d’inclure dans l’archive un scrip qui fasse l’installation, un script auto-exécutable de préférence, comment rendre un script auto-exécutable des qu’on désarchive son conteneur ?
Est-ce que c’est possible ? (prob de sécurité ?).

ps: pour la création de .deb, ça me plait encore plus, mais je m’y mets lundi, et j’ouvrirai surement un fil pour mes questions … merci.

Honètement c’est ce qu’il y a de plus simple, je ne crois que la solution consiste à faire un script bash que tu concatène avec une archive tar.gz.

Exemple
tu as un script que tu prévois de 52 octets

[code]#!/bin/sh
tail -c +53 toto.sh | tar xz
exit 0

<<<<< Fin précise du fichier [/code]

Ce fichier nommé toto.sh est de longueur 52 octets
Tu fais une archive tempo.tgz puis tu fais
$ cat tempo.tgz >> toto.sh
$ chmod 755 toto.sh

Pour déplier l’archive, tu fais

$ ./toto.sh

Tu peux même fignoler en mettant des 0 au lieu de blanc après le #

Tu peux bien évidemment faire tout ce que tu veux dans le script bash y compris vérifier que les fichiers n’existent pas déjà…