Forum Astuces.divers [Terminal] Mettre des commandes en queue

Posté par  (site web personnel) .
Étiquettes : aucune
0
21
déc.
2003
Il vous arrive souvent de lancer "make" et de vous dire qu'il aurait fallu faire "make && make install" ? Premiere solution, tapez "make install" pendant l'execution de "make", c'est pas très beau, vous ne voyez rien de ce que vous tapez, et ca marche pas a tous les coups.
Deuxième solution, faites Ctrl-Z puis tapez "fg && make install" et voila, juste après l'execution de "make", "make install" sera lancé.
Quelques restrictions tout de même: si vous voulez utiliser cette méthode sur des cas plus évolués, vous pouvez avoir des resultats non désirés (man sh section jobs controls pour plus d'infos).
  • # Re: Mettre des commandes en queue

    Posté par  . Évalué à 1.

    Cette astuce ne m'impressionne pas trop... Engeneral j'aime bien regarder le resultat du make avant de faire make install. Mais sinon, on ne pourrait pas se contenter de taper:"make; make install" ?
    • [^] # Re: Mettre des commandes en queue

      Posté par  . Évalué à 1.

      Je vais peut-être dire une connerie, mais l'avantage d'enrichir la commande initiale (make) avec un "&& make install" est que si le make initial échoue, le make install ne sera pas exécuté (d'où le && logique entre les deux).
      Par contre, si tu fais (en suivant l'astuce ou non) la suite de commandes make ; make install, si le premier make échoue, le make install est exécuté quand même... pour rien.
      La connerie, c'est peut être maintenant qu'elle va venir :
      - Est-ce que du point de vue exécution la suite make ; make install ne revient pas au même que make || make install ?
      - Après tout, vu que l'install du deuxième make ne sera exécutée que si les objets sont construits, pourquoi ne pas faire un make install direct, sans passer par le make initial ?
      J'avoue que je n'ai jamais vraiment compris le pourquoi de ce premier make ?

      Autrement, pour en revenir à l'astuce, c'est bien koules. Je tapais en aveugle ce qui manque, sans passer par le Ctrl-Z + fg.... Royal cette astuce !
      • [^] # Re: Mettre des commandes en queue

        Posté par  . Évalué à 1.

        > Par contre, si tu fais (en suivant l'astuce ou non) la suite de commandes make ; make install, si le premier make échoue, le make install est exécuté quand même... pour rien.

        Pire: en fait, le "make install" est exécuté, mais commence par tenter de construire les objets, chose qui a précédemment échoué avec "make", et qui échoue de nouveau.

        > - Est-ce que du point de vue exécution la suite make ; make install ne revient pas au même que make || make install ?

        Non, le "||" signifie qu'on execute "make install" si et seulement si "make" a échoué, alors que "make; make install" execute "make" puis "make install", quel que soit le code retour de la commande "make".

        > J'avoue que je n'ai jamais vraiment compris le pourquoi de ce premier make ?

        Parce que la plupart du temps, l'installation demande d'être root, et pas la compilation.

        --
        Tinou
    • [^] # Re: Mettre des commandes en queue

      Posté par  . Évalué à 1.

      Dans d'autres cas, c'est rudement utile. Pour graver un CD, par ex.

      $ cdrecord -dummy dev=0,0 image.iso && cdrecord dev=0,0 image.iso

      ne gravera l'image que si le test d'écriture en "dummy" a réussi. En plus complet:

      $ mkisofs -r -V "Mes sauvegardes" -o image.iso ~/Sauvegardes/* && cdrecord -dummy dev=0,0 image.iso && cdrecord dev=0,0 image.iso && mount /cdrw && rm -f image.iso

      Propre, net, et sans bavure.

      --
      Tinou
    • [^] # Re: Mettre des commandes en queue

      Posté par  . Évalué à 0.

      >Cette astuce ne m'impressionne pas trop... Engeneral j'aime bien regarder
      >le resultat du make avant de faire make install. Mais sinon, on ne pourrait
      >pas se contenter de taper:"make; make install" ?


      L'astuce ne s'appelle pas "Faire make puis make install" mais "Mettre des commandes en queue". L'histoire du make install n'est qu'un exemple.

      Je trouve que c'est une très bonne astuce, simple, mettant en jeu des commandes quotidiennes, il suffisait d'y penser ! Merci.
  • # Re: Mettre des commandes en queue

    Posté par  . Évalué à 1.

    encore plus simple:

    $ make all install

    Et oui, on peut spécifier plusieurs cibles à notre ami make
    Et si le all échoue, il n'y aura pas d'install

Suivre le flux des commentaires

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