# [SCRIPT] Infos sur le contenu d'un fichier compressé .

## man in the hill

Salut à tous !

J'aimerais savoir si un fichier *.tar.bz2, etc... contient les fichiers configure et autogen.sh  pour les placer chacun ds une  variable afin de traiter le fichier avec une condition et tout cela pas sur la sortie standard (l'utilisateur ne doit rien voir de cette étape)

Merci d'avance,

                                                                          @+

----------

## guilc

Simplement :

tar tjf blah.tar.bz2 | grep autogen.sh

L'option t liste le contenu du tar

----------

## man in the hill

Salut ,

Merci !

J'avais la commande qui liste toutes les extensions  :

```
less fichier_compressé  |  grep  fichier
```

maintenant, il me faudrait rediriger la sortie standard et la sortie d'erreur vers un fichier pour ensuite le lire ou est-ce que je ne peux pas garder ses sorties ds le buffer de sortie et les lire pour faire ma condition ?

                                                                    @+

----------

## novazur

Salut !

Je ne suis pas sûr de comprendre ce que tu veux (ton jabber n'est pas connecté  :Wink:  ), mais peut-être que ceci répondra à ta question :

```
CONTENU_TARBALL=$(tar tjf blah.tar.bz2 2>&1)

FIND_AUTOGEN=$(echo "$CONTENU_TARBALL" | grep "autogen\.sh$")

FIND_CONFIGURE=$(echo "$CONTENU_TARBALL" | grep "configure$")

echo "$FIND_AUTOGEN"

echo "$FIND_CONFIGURE"
```

mais je le redis, je n'ai pas compris ta problématique.

----------

## Il turisto

 *man in the hill wrote:*   

> Salut ,
> 
> Merci !
> 
> J'avais la commande qui liste toutes les extensions  :
> ...

 

pour cela tu fais :

```

ta_commande > ton_fichier 2>&1

```

ca devrais le faire

----------

## man in the hill

Salut à tous ,

 *novazur wrote:*   

> (ton jabber n'est pas connecté 

 

je ne suis pas souvent connecté ces temps-ci    :Laughing:  ...

 *novazur wrote:*   

> mais je le redis, je n'ai pas compris ta problématique.

 

J'apprends ruby et j'essais de faire un petit soft en ligne de commande  qui va décompresser, compiler, installer  les sources... j'ai déjà écri la  partie la plus simple, décompression :

```

#!/usr/bin/ruby

##### Décompresseur basique in Ruby Style !

# cd /répertoire/courant/du/fichier/à/décompresser

puts ""

puts "Entrez le nom du fichier à décompresser : "

nom = gets.chomp

puts ""

puts "Sélectionner l'extension de vôtre fichier en choississant une lettre, svp ! :"

puts ""

puts "[a=tar][b=tar.gz][c=tgz][d=gz][e=tar.bz2][f=rar][g=zip] ?"

choix = gets.chomp

puts ""

case  choix

  when "a"

    puts system("tar -xvf  #{nom}.tar")

  when "b"

    puts system("tar -xzvf #{nom}.tar.gz")

  when "c"

    puts system("tar -xzvf #{nom}.tgz")

  when "d"

    puts system("gzip -dvf #{nom}.gz")

  when "e"

    puts system("tar -xjvf #{nom}.tar.bz2")

  when "f"

    puts system("unrar e  #{nom}.rar")

  when "g"

    puts system("unzip    #{nom}.zip")

  else

  puts "Une erreur c'est produite, vérifier le format de vôtre fichier..."

  puts ""

end

```

Il me faut maintenant savoir si le tarball contient les fichiers configure et/ou autogen.sh pour proposer à l'utilisateur une compilation ... avant de décompresser...   Il y a une fonction en ruby qui s'occupe de mettre les sorties standards ds des objets pour ensuite les utiliser :

```
 require "open3"

     stdin, stdout, stderr = Open3.popen3('nroff -man')

 or

      include Open3

     stdin, stdout, stderr = popen3('nroff -man')
```

mais je ne sais pas du tout l'utiliser donc j'essais de contourner avec bash ...

J'arrive à ça pour l'instant :

```
less   nom_du_fichier | grep configure  2>&1 > /tmp/conf
```

sauf que ds le fichier :

```
-rwxr-xr-x madler/admin  13167 2005-07-11 16:11 zlib-1.2.3/configure
```

le nom du répertoire/configure...

Si il n'y avait pas le nom du repertoire/configure , j'aurais aimer mettre chaque mot ds un tableau pour les traiter avec une condition...(J'ai essayé différent truc avec wc et cut mais la longueur du repertoire va poser problème)... Si cela vous parait simple faite le moi savoir rapidement , merci   :Very Happy:   !

                                                        @+

----------

## novazur

1) je ne connais rien à ruby  :Smile: 

2) si tu veux le nom du fichier sans le répertoire, une solution est d'utiliser basename fichier

3) je ne trouve pas less adapté à ton besoin. Fais tout simplement grep chaine fichier.

4) ce que tu devrais faire, c'est donner un exemple de ce que tu as initialement, et un exemple de ce que tu veux en final. Il y aura certainement des solutions moins tordues

5) si tu connectais ton jabber, les solutions seraient plus interactives  :Smile: 

----------

## scout

OUÉÉÉÉ DU RUBY !

bon, déja là petite astuce au passage: si jamais le nom de fichier contient des espaces ça va merder; à moins de mettre des antislash devant les espaces dans le nom de fichier, dans l'appel 'system'. Mais pour cela ruby te fournit la fonction dump de l'objet String.

Bon sinon, j'ai déja fait de la redirection d'entrée standard de machins.

Voilà mon exemple, c'est un prog ruby qui lance mplayer sauf qu'il parse la sortie pour n'afficher que le "playing bidule ..." et il y a une subtilité avec IO.sync, qui te permet d'avoir la sortie en temps réel, et non pas bufferisé par paquet de ligne.

```
#!/usr/bin/ruby -w

array=ARGV.collect { |str| str.dump } 

# \e[A\r\e[K

io=IO.popen("mplayer #{array.join(' ')} 2> /dev/null")

io.sync=true

$stdout.sync=true

puts

def putout(str)

   if str=~/^Playing|^Joue/ then

      print "\e[A\r\e[K" # revenir en arrière d'une ligne

      print str

      puts

   end

   if str=~/\r|\e/ then

      print str

   end

end

buffer=''

while char = io.getc do

   buffer+=char.chr

   if char.chr=="\n" or char.chr=="\r" then

      putout buffer

      buffer=''

   end

end
```

comme tu peux le voir tu crées un objet IO avec IO.popen, et ensuites tu récupères la sortie de ce machin là avec les méthodes classiques (gets, ...)

Contactes moi sur jabber (gscout AROBAS fritalk POINT com), et je t'aiderais. Je suis surtout dispo aux heures ouvrées en semaine (j'ai pas encore internet à mon nouveau chez moi, mais je l'ai au boulot)

bon sinon pour les histoires de noms de fichiers, tu n'as qu'a faire split('/')[-1], par exemple:

```
irb(main):008:0> "-rw-r--r-- 1 root root 16710 aoû 11 00:06 /usr/portage/media-video/mplayer/mplayer-1.0_pre20060810.ebuild".split('/')[-1]

=> "mplayer-1.0_pre20060810.ebuild"
```

Ce n'est peux être ce qu'il a de plus rapide à l'execution, mais à la conception, oui !

----------

## man in the hill

 *scout wrote:*   

> OUÉÉÉÉ DU RUBY !

 

RUBY POWA !!!!  :Laughing:  .

 *scout wrote:*   

> bon, déja là petite astuce au passage: si jamais le nom de fichier contient des espaces ça va merder; à moins de mettre des antislash devant les espaces dans le nom de fichier, dans l'appel 'system'. Mais pour cela ruby te fournit la fonction dump de l'objet String.

 

Je débute vraiment en ruby et j'essais d'apprendre à la volée avec ce petit projet en ligne de commande donc j'ignore complètement ce genre fonction et beaucoup de choses d'ailleurs   :Very Happy:  ...

 *scout wrote:*   

> Bon sinon, j'ai déja fait de la redirection d'entrée standard de machins.
> 
> Voilà mon exemple, c'est un prog ruby qui lance mplayer sauf qu'il parse la sortie pour n'afficher que le "playing bidule ..." et il y a une subtilité avec IO.sync, qui te permet d'avoir la sortie en temps réel, et non pas bufferisé par paquet de ligne.
> 
> ```
> ...

 

Excellent , mplayer est mon player préféré que je lance tjrs en ligne de commande  ! je l'ai testé et c'est parfait et je vais aussi le regarder de plus près ton script !!!!  

 *scout wrote:*   

> Contactes moi sur jabber (gscout AROBAS fritalk POINT com), et je t'aiderais. Je suis surtout dispo aux heures ouvrées en semaine (j'ai pas encore internet à mon nouveau chez moi, mais je l'ai au boulot)

 

Je ne vais pas te souler mais si j'ai un vrai bloquage je ferais appelle à toi  et je te demanderais aussi ton avis pour la forme car j'y vais franchement à l'inspiration ...  Peut-tu me donner des infos sur la methode  popen ?

 *scout wrote:*   

> bon sinon pour les histoires de noms de fichiers, tu n'as qu'a faire split('/')[-1], par exemple:
> 
> ```
> irb(main):008:0> "-rw-r--r-- 1 root root 16710 aoû 11 00:06 /usr/portage/media-video/mplayer/mplayer-1.0_pre20060810.ebuild".split('/')[-1]
> 
> ...

 

C'est ce que je cherchais   :Cool:  ...Merci beaucoup,  donc pour moi cela donne pour récupérer le mot configure ds un fichier par ex :

```
irb --simple-prompt

>> output = IO.readlines("/tmp/conf")

=> ["-rwxr-xr-x madler/admin  13167 2005-07-11 16:11 zlib-1.2.3/configure\n"]

>> output[0].split('/')[-1].chomp

=> "configure"

```

C'est trop fort ruby !

Encore merci de me retirer ds une bonne galère !!!...

 *novazur wrote:*   

> si tu connectais ton jabber, les solutions seraient plus interactives  

 

C'est vrai   :Wink:   @ bientôt .

                                                                            @+

----------

## scout

 *man in the hill wrote:*   

> Peut-tu me donner des infos sur la methode  popen ?

 

Eh bien, j'ai toujours ces deux liens là dans mes bookmarks

http://www.ruby-doc.org/core/

http://www.ruby-doc.org/stdlib/

donc pour popen, c'est là: http://www.ruby-doc.org/core/classes/IO.html#M001772

----------

## man in the hill

Salut, 

Merci pour les liens , je peux encore faire cela pour  récupérer le mot configure  de mon fichier :

```

>> f = IO.popen("cat /tmp/conf") { |f| puts f.gets }

-rwxr-xr-x madler/admin  13167 2005-07-11 16:11 zlib-1.2.3/configure

=> nil

et maintenant je récupère configure :

>> f = IO.popen("cat /tmp/conf") { |f| puts f.gets.split('/')[-1] }

configure

=> nil

```

                                                                     @+

----------

## man in the hill

Maintenant que j'ai ma condition qui fonctionne il me faut récupérer aussi le nom du répertoire  pour rentrer dedans et lancer un configure ...

Il me faudrait une méthode combiné au split me renvoyant le mot après le 3 ème espace en partant de gauche ou le premier avant en partant de droite  pour récupérer le nom du répertoire ...  

Merci,

[EDIT]C'est bon , j'ai trouvé , tu peux tout faire avec split ...[/EDIT]

                                                                    @+

----------

## man in the hill

Salut,

Je revois ma stratégie , au lieu de savoir si le fichier configure est ds les sources dès le début avant décompression... je vais d'abord décompresser,  créer un répertoire temporaire de travail et utiliser le module FileTest :

```
 File.exist?("/chemin/configure)"
```

mais j'ai un problème de taille , il me faut connaître  le nom du répertoire qui vient d'être détarré pour le copier  ds mon répertoire de travail ... 

J'ai trouvé cette manoeuvre mais ce n'est pas satisfaisant  en me basant sur un fichier du tarball (cela peut-être n'importe lequel , un fichier qui doit tjrs être ds un tarball à compiler !!!! là j'ai mis configure mais j'aurais pu mettre AUTHORS, ChangeLog, etc, ....) :

```
system("less  #{nom_tarball} |  grep  configure  2>&1 > /tmp/faya.conf ")

r = IO.popen("cat  /tmp/faya.conf") 

repertoire = r.gets.chomp.split('/')[-2]

rep  = repertoire.split[-1]
```

Merci ,

                                                                           @ +

----------

## novazur

[quote="man in the hill"]

```
system("less  #{nom_tarball} |  grep  configure  2>&1 > /tmp/faya.conf ")
```

Tu n'as pas pris en compte ma remarque précédente concernant l'usage de less.

Et là, c'est un find qu'il te faut :

```
find #{nom_tarball} -name configure
```

Ceci dit, passer par un fichier intermédiaire juste pour récupérer une variable, ça me semble un peu gros quand même, mais je ne connais pas Ruby...

----------

## man in the hill

[quote="novazur"] *man in the hill wrote:*   

> 
> 
> ```
> system("less  #{nom_tarball} |  grep  configure  2>&1 > /tmp/faya.conf ")
> ```
> ...

 

find ne lit pas les fichiers compressés , si ? et less me lis toutes les extensions de tar .... au zip .

De toute façon , j'ai décidé de rechercher le configure après décompression et d'utiliser une commande ruby qui recherche si un fichier existe cité ds le post précédent...mais mon problème n'est plus à ce niveau car je peux utiliser ta commande ou celle de ruby pour trouver configure une fois le répertoire décompressé, maintenant  il me faut le nom du répertoire que j'ai décompressé   :Twisted Evil:   qui ne porte pas tjrs le même nom que le tarball !!!!! 

-_-  Exemple

```

tar -xjvf   madinina-1.0.1.tar.bz2

je récupère soit un répertoire du nom de l'archive :

madinina-1.0.1

ou n'importe quel nom de répertoire au gré de la fantaisie du développeur ...

belle-plage

```

Il me faut connaître absolument le nom de ce répertoire si je veux le copier pour bosser dessus ou travailler directement dessus . Des que je le connaîs , je peux faire un find ou autre commande ! 

Comment récupérer d'une manière sur et certaine ce nom de repertoire .

Pour ton autre remarque  cela aurait été idem pour n'importe quel langage , d'ailleurs portage fait  cela très bien  avec un ebuild pour chaque paquet ou tout est connu et evidement le nom du répertoire après décompression donc pas de problème de path ... Moi je veux décompresser et compiler pour n'importe quelle tarball d'ou ce problème de connaître le nom du répertoire après décompression...Si tout était normalisé , je n'aurais pas eu ce problème...Tient est-ce que tu connais le moyen de dire à grep de me récupérer que la première ligne d'un fichier .

Si tu as une idée ! 

J'ai été sur le mailing list  rubyfr mais les deux intervenant ne mon pas proposé des choses concluantes :

http://www.nabble.com/Connatre-le-nom-du-rpertoire-d%27un-tarball-dcompress-%21-tf2135373.html

                                                                               @ +

----------

## pititjo

Perso, je comparerais la liste des répertoires dans le pwd avent et après la décompression. Le nouveau répertoire c'est celui issus de l'archive.

Évidemment, ça implique que personne ne s'amuse à écrire là pendant la décompression donc ce n'est peut-être pas assez robuste.

----------

## man in the hill

 *pititjo wrote:*   

> Évidemment, ça implique que personne ne s'amuse à écrire là pendant la décompression donc ce n'est peut-être pas assez robuste.

 

Toi même  tu le dis c'est risqué surtout sous Gnu/Linux avec plusieurs console ... J'avais pensé au temps , le répertoire le plus récent  mais si l'horloge se dérègle tu te retrouve avec une archive plus ancienne...  

Pour l'instant c'est cette commande qui l'emporte et me donne le nom du répertoire avant décompression :

```

system("less  #{nom_tarball} |  grep  un_fichier_quelconque_ou_un_bien_précis_qui_se_trouve_tjrs_ds_un_tarball 2>&1 > /tmp/faya.conf ")

r = IO.popen("cat  /tmp/faya.conf") 

repertoire = r.gets.chomp.split('/')[-2]

rep  = repertoire.split[-1]
```

Je ne suis sur de  la concision du code mais le résultat est le nom du répertoire !

                                                                @ +

----------

## novazur

 *man in the hill wrote:*   

> find ne lit pas les fichiers compressés , si ? et less me lis toutes les extensions de tar .... au zip .
> 
> De toute façon , j'ai décidé de rechercher le configure après décompression

 

Et bien justement, c'est bien dans ce cadre là que je te suggérais de supprimer ce less inopportun.

Et puis, find ne "lit" pas des fichiers, il recherche (comme son nom l'indique) des fichiers en fonctions de critères dans une arboresence.

less lui, "affiche" le contenu d'un fichier. Je ne vois pas l'intérêt de faire de l'affichage dans un script, si c'est pour ensuite rediriger la sortie ailleurs. Dans ce cas, on n'utilise pas less, c'est tout.

Quant à l'histoire du répertoire dans lequel un autre process pourrait écrire, il suffit de créer le répertoire temporaire voulu à la volée. Exactement comme portage travaille lui même.

Mais j'avoue ne rien avoir compris à ce que tu veux faire en finalité.

Tu veux traiter le cas de n'importe quel tarball d'une manière générique ?

Tu veux refaire portage en ruby, quoi, c'est ça ?  :Very Happy: 

Parce que là, rien ne prouve non plus qu'un tarball crée un répertoire en se décompressant. Tous les fichiers peuvent très bien être à la racine. D'où l'utilisation évidente du find.

Si ce n'est pas ça, et je te le souhaite vivement, tu dois bien avoir des informations quant à ce tarball.

Et puis, il me semble important de savoir si tu veux coder propre, ou juste arriver à un résultat, quelque soit le moyen utilisé.

Parce que je le redis, passer par un fichier temporaire sur disque pour récupérer une simple variable, c'est vraiment moyen.

 *Quote:*   

> Tient est-ce que tu connais le moyen de dire à grep de me récupérer que la première ligne d'un fichier .

 

man grep ?  :Smile: 

La première ligne d'un fichier ou la première occurrence de chaîne ?

La première occurrence, c'est : grep -m 1 chaine fichier

```
$ echo "ligne début

> ligne suivante

> ligne fin" | grep -m 1 ligne

ligne début
```

La première ligne, ce n'est plus grep mais head -n 1.

----------

## man in the hill

 *novazur wrote:*   

>  *man in the hill wrote:*   find ne lit pas les fichiers compressés , si ? et less me lis toutes les extensions de tar .... au zip .
> 
> De toute façon , j'ai décidé de rechercher le configure après décompression 
> 
> Et bien justement, c'est bien dans ce cadre là que je te suggérais de supprimer ce less inopportun.
> ...

 

Je ne vois le problème à utiliser less et rediriger son flux vers un fichier , ce n'est qu'un flux de données... 

 *novazur wrote:*   

> Quant à l'histoire du répertoire dans lequel un autre process pourrait écrire, il suffit de créer le répertoire temporaire voulu à la volée. Exactement comme portage travaille lui même.

 

Je ne sais pas si portage fait exactement ça ... Je vois qu'il créer work et décompresse le tarball  dedans en sachant le nom du repertoire qui va être décompressé...  

 *novazur wrote:*   

>  Mais j'avoue ne rien avoir compris à ce que tu veux faire en finalité.
> 
> Tu veux traiter le cas de n'importe quel tarball d'une manière générique ?
> 
> Tu veux refaire portage en ruby, quoi, c'est ça ? 

 

Je veux décompresser un certains nbres de formats  et demander au user si je trouve un fichier "configure" ou autre , si il souhaite compiler ... Pour cela comme je t'ai dis il me faut le nom de ce répertoire... 

 *novazur wrote:*   

> Parce que là, rien ne prouve non plus qu'un tarball crée un répertoire en se décompressant. Tous les fichiers peuvent très bien être à la racine. D'où l'utilisation évidente du find.
> 
> Si ce n'est pas ça, et je te le souhaite vivement, tu dois bien avoir des informations quant à ce tarball.

 

Je pensais plutôt trouver un "configure" ds un sous répertoire qu' à la racine , je n'ai jamais vu ça ! mais c'est sur que cela peut ce faire ...

 *novazur wrote:*   

> Et puis, il me semble important de savoir si tu veux coder propre, ou juste arriver à un résultat, quelque soit le moyen utilisé.
> 
> Parce que je le redis, passer par un fichier temporaire sur disque pour récupérer une simple variable, c'est vraiment moyen.

 

Je veux coder clean mais attention on manipule des données ds un fichier tmp que l'on efface ensuite , rien de bien méchant et si tu as une autre soluce  je prends...

 *Quote:*   

> Tient est-ce que tu connais le moyen de dire à grep de me récupérer que la première ligne d'un fichier .

 

 *novazur wrote:*   

> man grep ? 

 

Ok , j'ai choisi la facilité mais bon ...

 *novazur wrote:*   

> La première ligne d'un fichier ou la première occurrence de chaîne ?
> 
> La première occurrence, c'est : grep -m 1 chaine fichier
> 
> ```
> ...

 

Well, well, well , y a des jours ....

                                                                   @+

----------

## man in the hill

Salut,

Une  version test qui fait la décompression , bien sûr  et  lance juste le configure par défaut   pas d'install donc pas de panique  , si qqu'un veut critiquer et me donner un avis pas de soucis ! 

http://www.guidelinux.org/phpBB/viewtopic.php?p=5117#5117

Vous scrollez et vous tombez dessus ...

Merci ,

                                                       @+

[édit] Maintenant , le srcipt fait la compile et l'installe ....[/édit]

----------

## man in the hill

Up   :Rolling Eyes:   pour qques avis   :Wink:   !

                                         @ +

----------

## titoucha

Je vais le ragarder car je veux me mettre aussi au ruby et je pense que décortiquer et comprendre comment fonctionne le programme d'un autre est un bon début.   :Smile: 

Edit: Il ne fonctionne pas, je le lance, il me demande le nom d'un fichier je lui donne kboincmgr-0.1.6.tar.bz2 qui est un fichier qui se trouve dans le répertoire que rads et celui-ci me répond  *Quote:*   

> 
> 
> Une erreur c'est produite, vérifier le nom de vôtre fichier ,
> 
> vérifier le format de vôtre fichier ou le fichier n'existe pas ...
> ...

 

j'ai fais toutes les vérifications

----------

## titoucha

Après un bref "débuguage" c'est cette ligne que le nom du fichier ne passe pas le test, je ne sais pas pourquoi, mon niveau en ruby étant encore à 0.

```
FileTest.exist?("#{nom_fichier}.tar.bz2")
```

----------

## man in the hill

Salut titoucha ,

Merci de tester !

Tu n'as pas besoin de mettre  de l'extension ! car si tu rajoutes l'extension , il va chercher un fichier avec deux fois l'extension avec la ligne que tu m'as signalé ... 

Il faudrait que je l'améliore de ce côté ...

j'ai rassemblé pleins de liens ici :

http://www.guidelinux.org/phpBB/viewtopic.php?t=604

Tiens moi au courant ,

                                                            @ +

----------

## titoucha

Arg je me suis fais avoir, mais ça me parraissait logique de donner le nom du fichier au complet, extensions comprises, en plus ce nétait pas précisé nul part.

Je vais retester alors.

Edit: Sans les extensions c'est ok, part contre la compilation se plante, bon ça je l'avais prévu car j'ai pris un programe qui ne se contente pas d'un simple ./configure, il utilise Kde donc il lui faut ./configure --prefix=/usr/kde/3.5

PS: Je n'avais pas d'autre programme sous la main désolé je vais en chercher un autre.

----------

## man in the hill

 *titoucha wrote:*   

> 
> 
> Edit: Sans les extensions c'est ok, part contre la compilation se plante, bon ça je l'avais prévu car j'ai pris un programe qui ne se contente pas d'un simple ./configure, il utilise Kde donc il lui faut ./configure --prefix=/usr/kde/3.5
> 
> 

 

Passer des options a été prévu ! pour un  configure et un autogen.sh donc normalement tu n'aurais pas du avoir de soucis ...

après décompression ...

```
...

******************************************************************

Voulez-vous compiler et installer le fichier lynx2.tar.bz2 ? [Y/n]  

******************************************************************

y

rm -rf /tmp/fayawork

cp -r /home/faya/rubytar_test/lynx2-8-5 /tmp/fayawork

**********************************************

Voulez-vous  la configuration par défaut: [d] 

Passez des options directement: [p]

Affichez les options:  [a]  

**********************************************

```

tu as différent choix à ce stade ... Tu fais ton choix en choisissant une lettre et si Tu dois rentrer des options, tu les rentres sans  le ./configure ... (les options vont être passé autmatiquement  à configure)  .

Je suis entrain de bosser pour que  rads accepte aussi les noms avec les extensions ...

En tout cas , un grand merci car cela m'a permit de préciser lors de la présentation du script  et j'espère mettre cette option très bientot et aussi j'aimerais mettre le nom du fichier en argument directement ...donc pas mal de taff en perspective ...

                                                        @ +

----------

## titoucha

J'ai pas vu apparaitre le choix pour la compilation il ma demander si je voulais compiler et ensuite il la lancé sans autre, je vais retester.

Edit: Il ne me donne pas le choix   :Confused: 

----------

## man in the hill

Salut,

Tous les fichiers que j'ai testés sont passés donc c'est interressant !!!!! passe moi le nom de ce fichier pour que je vois de quoi il en retourne, cela va m'aider à comprendre le problème et le régler ...

Si tu veux tester d'autres fichiers , tu créer un répertoire et tu rajoutes ds fichiers provenant de distfiles , et tu les configure vers ta partition /tmp comme cela il n'y a pas de soucis ! 

Merci,

                                                                                  @ +

----------

## titoucha

C'est les sources de ce programme http://www.kde-apps.org/content/show.php?content=44237

Je testerais avec d'autre programmes que je prendrais du répertoire distfiles demain, maintenant je vais manger   :Arrow: 

----------

## man in the hill

Salut,

Aucun soucis de mon coté , cela passe nikel    :Laughing:  !!!!

```

faya@crazy_gentoo ~/rubytar_test $

 ruby rads_g

**********************************************************

Entrez le nom du fichier à décompresser ou compilé, svp  : 

**********************************************************

kboincmgr-0.1.6

******* Fichier temporaire  /tmp/faya.conf effacé *******

rm /tmp/faya.conf

*********************************************************

kboincmgr-0.1/

kboincmgr-0.1/src/

kboincmgr-0.1/src/prefs.h

kboincmgr-0.1/src/filesys.C

kboincmgr-0.1/src/mainwidget.h

kboincmgr-0.1/src/messageslistview.cpp

kboincmgr-0.1/src/kboincmgr.h

kboincmgr-0.1/src/result_state.h

kboincmgr-0.1/src/projectsview.h

kboincmgr-0.1/src/transferscontrolview.cpp

kboincmgr-0.1/src/clientnamedlg.cpp

kboincmgr-0.1/src/mainwidget.cpp

kboincmgr-0.1/src/config.h

kboincmgr-0.1/src/messagesview.cpp

kboincmgr-0.1/src/transfersviewitem.cpp

kboincmgr-0.1/src/mfile.C

kboincmgr-0.1/src/util.h

kboincmgr-0.1/src/guiurlview.h

kboincmgr-0.1/src/projectslistview.cpp

kboincmgr-0.1/src/resultslistview.cpp

kboincmgr-0.1/src/mainwidgetcontrol.h

kboincmgr-0.1/src/md5_file.C

kboincmgr-0.1/src/hostinfo.h

kboincmgr-0.1/src/projectscontrolview.cpp

kboincmgr-0.1/src/kboincmgrui.rc

kboincmgr-0.1/src/gui_rpc_client.h

kboincmgr-0.1/src/messageslistview.h

kboincmgr-0.1/src/hi16-app-konsole_close.png

kboincmgr-0.1/src/guiurlbutton.h

kboincmgr-0.1/src/Makefile.am

kboincmgr-0.1/src/main.cpp

kboincmgr-0.1/src/messagesviewitem.h

kboincmgr-0.1/src/hostinfo.C

kboincmgr-0.1/src/resultsviewitem.cpp

kboincmgr-0.1/src/securebox.h

kboincmgr-0.1/src/authvariable.cpp

kboincmgr-0.1/src/resultsviewitem.h

kboincmgr-0.1/src/projectsview.cpp

kboincmgr-0.1/src/md5_file.h

kboincmgr-0.1/src/messagesview.h

kboincmgr-0.1/src/hi16-app-konsole_open.png

kboincmgr-0.1/src/pushbutton.cpp

kboincmgr-0.1/src/showbutton.cpp

kboincmgr-0.1/src/network.h

kboincmgr-0.1/src/statisticscontrolview.h

kboincmgr-0.1/src/clientnamedlg.h

kboincmgr-0.1/src/projectscontrolview.h

kboincmgr-0.1/src/statisticsprojectdata.h

kboincmgr-0.1/src/messagescontrolview.h

kboincmgr-0.1/src/resultsview.cpp

kboincmgr-0.1/src/gui_rpc_client_ops.C

kboincmgr-0.1/src/pushbutton.h

kboincmgr-0.1/src/mfile.h

kboincmgr-0.1/src/projectslistview.h

kboincmgr-0.1/src/statisticscontrolview.cpp

kboincmgr-0.1/src/mainwidgetview.h

kboincmgr-0.1/src/authenticate.h

kboincmgr-0.1/src/miofile.h

kboincmgr-0.1/src/authconfigdlg.cpp

kboincmgr-0.1/src/parse.C

kboincmgr-0.1/src/messagesviewitem.cpp

kboincmgr-0.1/src/mainwidgetcontrol.cpp

kboincmgr-0.1/src/clearbutton.h

kboincmgr-0.1/src/prefs.C

kboincmgr-0.1/src/filesys.h

kboincmgr-0.1/src/resultscontrolview.cpp

kboincmgr-0.1/src/mainwidgetview.cpp

kboincmgr-0.1/src/hi32-app-kboincmgr.png

kboincmgr-0.1/src/miofile.C

kboincmgr-0.1/src/kboincmgr.desktop

kboincmgr-0.1/src/parse.h

kboincmgr-0.1/src/tooltip.cpp

kboincmgr-0.1/src/transferslistview.cpp

kboincmgr-0.1/src/md5.h

kboincmgr-0.1/src/preferences.h

kboincmgr-0.1/src/projectsviewitem.cpp

kboincmgr-0.1/src/guiurlview.cpp

kboincmgr-0.1/src/transferslistview.h

kboincmgr-0.1/src/guiurlbutton.cpp

kboincmgr-0.1/src/authvariable.h

kboincmgr-0.1/src/md5.c

kboincmgr-0.1/src/Makefile.in

kboincmgr-0.1/src/hi32-app-konsole_close.png

kboincmgr-0.1/src/showbutton.h

kboincmgr-0.1/src/statisticsgraphview.h

kboincmgr-0.1/src/authconfigdlg.h

kboincmgr-0.1/src/tooltip.h

kboincmgr-0.1/src/global.h

kboincmgr-0.1/src/disconnecteddlg.cpp

kboincmgr-0.1/src/projectsviewitem.h

kboincmgr-0.1/src/error_numbers.h

kboincmgr-0.1/src/network.C

kboincmgr-0.1/src/resultscontrolview.h

kboincmgr-0.1/src/clientbutton.h

kboincmgr-0.1/src/statisticsgraphview.cpp

kboincmgr-0.1/src/clearbutton.cpp

kboincmgr-0.1/src/statisticsview.cpp

kboincmgr-0.1/src/kboincmgr.cpp

kboincmgr-0.1/src/disconnecteddlg.h

kboincmgr-0.1/src/preferences.cpp

kboincmgr-0.1/src/authenticate.cpp

kboincmgr-0.1/src/ptrlist.h

kboincmgr-0.1/src/messagescontrolview.cpp

kboincmgr-0.1/src/resultslistview.h

kboincmgr-0.1/src/gui_rpc_client.C

kboincmgr-0.1/src/diagnostics.h

kboincmgr-0.1/src/hi16-app-kboincmgr.png

kboincmgr-0.1/src/hi32-app-konsole_open.png

kboincmgr-0.1/src/transferscontrolview.h

kboincmgr-0.1/src/clientbutton.cpp

kboincmgr-0.1/src/resultsview.h

kboincmgr-0.1/src/transfersview.h

kboincmgr-0.1/src/transfersviewitem.h

kboincmgr-0.1/src/statisticsview.h

kboincmgr-0.1/src/statisticsprojectdata.cpp

kboincmgr-0.1/src/securebox.cpp

kboincmgr-0.1/src/transfersview.cpp

kboincmgr-0.1/src/util.C

kboincmgr-0.1/COPYING

kboincmgr-0.1/README

kboincmgr-0.1/configure.in.in

kboincmgr-0.1/AUTHORS

kboincmgr-0.1/Makefile.am

kboincmgr-0.1/doc/

kboincmgr-0.1/doc/Makefile.am

kboincmgr-0.1/doc/en/

kboincmgr-0.1/doc/en/script.png

kboincmgr-0.1/doc/en/Makefile.am

kboincmgr-0.1/doc/en/screenshot_2.png

kboincmgr-0.1/doc/en/preferences_retry.png

kboincmgr-0.1/doc/en/Makefile.in

kboincmgr-0.1/doc/en/screenshot_1.png

kboincmgr-0.1/doc/en/index.docbook

kboincmgr-0.1/doc/en/preferences_misc.png

kboincmgr-0.1/doc/Makefile.in

kboincmgr-0.1/configure.in

kboincmgr-0.1/stamp-h.in

kboincmgr-0.1/Makefile.cvs

kboincmgr-0.1/admin/

kboincmgr-0.1/admin/configure.in.bot.end

kboincmgr-0.1/admin/config.guess

kboincmgr-0.1/admin/libtool.m4.in

kboincmgr-0.1/admin/cvs-clean.pl

kboincmgr-0.1/admin/debianrules

kboincmgr-0.1/admin/config.sub

kboincmgr-0.1/admin/mkinstalldirs

kboincmgr-0.1/admin/compile

kboincmgr-0.1/admin/acinclude.m4.in

kboincmgr-0.1/admin/depcomp

kboincmgr-0.1/admin/bcheck.pl

kboincmgr-0.1/admin/Makefile.common

kboincmgr-0.1/admin/ylwrap

kboincmgr-0.1/admin/install-sh

kboincmgr-0.1/admin/Doxyfile.global

kboincmgr-0.1/admin/nmcheck

kboincmgr-0.1/admin/Doxyfile.am

kboincmgr-0.1/admin/detect-autoconf.sh

kboincmgr-0.1/admin/missing

kboincmgr-0.1/admin/conf.change.pl

kboincmgr-0.1/admin/config.pl

kboincmgr-0.1/admin/cvs.sh

kboincmgr-0.1/admin/ltmain.sh

kboincmgr-0.1/admin/configure.in.min

kboincmgr-0.1/admin/am_edit

kboincmgr-0.1/admin/ChangeLog

kboincmgr-0.1/NEWS

kboincmgr-0.1/config.h.in

kboincmgr-0.1/configure.files

kboincmgr-0.1/Makefile.in

kboincmgr-0.1/configure

kboincmgr-0.1/po/

kboincmgr-0.1/po/Makefile.am

kboincmgr-0.1/po/Makefile.in

kboincmgr-0.1/INSTALL

kboincmgr-0.1/acinclude.m4

kboincmgr-0.1/ChangeLog

kboincmgr-0.1/TODO

true

******************************************************************

Voulez-vous compiler et installer le fichier kboincmgr-0.1.6.tar.bz2 ? [Y/n]  

******************************************************************

y

cp -r /home/faya/rubytar_test/kboincmgr-0.1 /tmp/fayawork

**********************************************

Voulez-vous  la configuration par défaut: [d] 

Passez des options directement: [p]

Affichez les options:  [a]  

**********************************************

```

Prend le dernier code ! Te prends pas la tete pour les distfiles , j'ai bien dit si !!!!! tu fais en fonction de ton humeur   :Very Happy:  ....

                                                                          @ +

----------

## titoucha

Je suis un plouc   :Embarassed:  je n'avais pas pris la dernière version du code.

Ca fonctionne!

Première remarque, il faut-être en root pour utiliser ton soft sinon il n'installe rien dutout, serait-il pas préférable de le faire compiler en user normal et passer en root juste pour l'installation.

Deuxième remarque, si tu veux laisser ton programme comme ça, il faudrait prévoire le cas ou tu oublie de lancer ton programme en root car il lance la compilation, il essaye d'installer, il n'y arrive pas, et il détruit le répertoire de travail. C'est la  que c'est génant car si la compilation a pris beaucoup de temps quand tu vas relancer ton programme il va recommancer tout à zéro, se serait bien que si il voit que lors de l'installation il n'a pas l'autorisation en écriture il ne détruise pas le répertoire temporaire et mette un flag à 1 pour ne pas recompiler la fois suivante et refaire qu'une installation.

----------

## man in the hill

 *titoucha wrote:*   

> Je suis un plouc  je n'avais pas pris la dernière version du code.
> 
> Ca fonctionne! 

 

C'est du live and direct ! Content que cela fonctionne   :Very Happy:  ! ... 

 *titoucha wrote:*   

> Première remarque, il faut-être en root pour utiliser ton soft sinon il n'installe rien dutout, serait-il pas préférable de le faire compiler en user normal et passer en root juste pour l'installation.

 

J'ai débuté il y a qques semaines le ruby (voir le début du topic ou tu récupères le code) et comme je connaîs bien la compile , je me suis lancé directement ds l'écriture de ce soft et chaque jour  je dois implémenter un nouveau truc  et il faut que je trouve comment faire en ruby   :Laughing:     donc en fait c'est exactement ce que je veux faire , quand le script est lancé vérifier l'uid et le gid  pour demander un passage en root pour le make ... en fonction de l'endroit ou tu veux installer le soft ...

 *titoucha wrote:*   

> Deuxième remarque, si tu veux laisser ton programme comme ça, il faudrait prévoire le cas ou tu oublie de lancer ton programme en root car il lance la compilation, il essaye d'installer, il n'y arrive pas, et il détruit le répertoire de travail. C'est la  que c'est génant car si la compilation a pris beaucoup de temps quand tu vas relancer ton programme il va recommancer tout à zéro, se serait bien que si il voit que lors de l'installation il n'a pas l'autorisation en écriture il ne détruise pas le répertoire temporaire et mette un flag à 1 pour ne pas recompiler la fois suivante et refaire qu'une installation.

 

Cela rejoint le point  au dessus , il faut que j'arrive à savoir quel sont les droits de l'utilisateur qui lance le srcipt ...

Je vais essayer de régler ce point le plus vite possible car c'est un point très important , j'ai déjà posé ces questions  importantes sur la mailing list ruby-fr  http://www.nabble.com/ruby-French-f13924.html

En tout cas Merci , tu as soulevé que des points importants  qui m'ont permis d'avancer  :Exclamation:   :Wink:   ...

Merci ,

                                                                @ +

----------

## titoucha

De rien pour le coup de main, je vais de ce pas me mettre à la lecture du pavé "apprendre à programmé" qui traite du ruby   :Very Happy: 

Si jamais n'hésite pas même en mp si ce thread  se trouve trop loin , car pour des raison de santé j'ai pas mal de temps et ce sera avec plaisir.

----------

## man in the hill

 *titoucha wrote:*   

> De rien pour le coup de main, je vais de ce pas me mettre à la lecture du pavé "apprendre à programmé" qui traite du ruby  

 

Bonne lecture   :Laughing:  ! Il n'y a pas beaucoup de bouquins sur ruby et vaut mieux les avoirs sous la main ... En fait il faut trouver un langage qui nous plaise ... 

 *titoucha wrote:*   

> Si jamais n'hésite pas même en mp si ce thread  se trouve trop loin , car pour des raison de santé j'ai pas mal de temps et ce sera avec plaisir.

 

Ok , merci , je n'hésiterais pas et toi non plus au cas ou ruby t'emballe   :Very Happy:  ou un autre langage ...  je viens de finir d'implémenter  l'option avec le nom complet (extension comprise..)  que je vais mettre d'ici  demain et je me penche sur l'uid et le gid ...

Rétablis toi vite !

                                                          @ +

----------

## titoucha

Je vais lire et "bricoler un peu sous ruby et voire si je me sens à l'aise et faire la même chose avec python, l'autre language que j'ai en vue, ensuite je ferais mon choix.

Je vais aussi regarder la documentation qu'il est possible de consulter facilement pour les "nul", c'est un des point très important dans la balance lors de ma décision.

merci pour tes voeux de rétablissements, mais malheureusement c'est chronique   :Crying or Very sad: 

----------

## man in the hill

 *titoucha wrote:*   

> Je vais lire et "bricoler un peu sous ruby et voire si je me sens à l'aise et faire la même chose avec python, l'autre language que j'ai en vue, ensuite je ferais mon choix.
> 
> Je vais aussi regarder la documentation qu'il est possible de consulter facilement pour les "nul", c'est un des point très important dans la balance lors de ma décision.

 

Avec ces deux là tu devrais trouver ton bonheur ... moi je dois encore bosser le concept objet qui n'est pas évident mais il me faut tjrs un temps de digestion avant que les concepts soit bien clairs...   :Smile:   . j'aurais des bouquins en septembre sur le langage ruby (Ruby in a Nutshell de Matz le fondateur de ruby  et Débuter en programmation avec ruby de Chris Pine) et sur la conception des systèmes d'exploitations car là encore il y a des concepts que je dois vraiment digérer pour essayer de programmer précis ... 

 *titoucha wrote:*   

> merci pour tes voeux de rétablissements, mais malheureusement c'est chronique  

 

 :Twisted Evil:  , je te souhaite bon courage et de pas lâcher l'affaire   :Exclamation:  ...

Sinon j'ai changé le code et mis la détection avec ou sans extension du fichier donc tu peux faire du copier coller sans problème mais par contre passer en root  lors du choix des options si l'utilisateur veux installer ds /usr me fait qque peu galérer... J'arrive a passer en root mais les processus ne se lancent pas( ./configure , etc..)... Il faut que je sache pourquoi ruby ne peut pas lancer le shell root en passant  de l'utilisateur au root ...

                                                                                    @ +

----------

## titoucha

 *man in the hill wrote:*   

> 
> 
> Sinon j'ai changé le code et mis la détection avec ou sans extension du fichier donc tu peux faire du copier coller sans problème mais par contre passer en root  lors du choix des options si l'utilisateur veux installer ds /usr me fait qque peu galérer... J'arrive a passer en root mais les processus ne se lancent pas( ./configure , etc..)... Il faut que je sache pourquoi ruby ne peut pas lancer le shell root en passant  de l'utilisateur au root ...
> 
> 

 

Je le copie à l'occasion et le testerais, mais avant il faut variment que je lise ces docs.

----------

