MacPorts: continuer l'installation d'autres mises à jour après une erreur

12

Disons que j'ai les packages obsolètes suivants:

  • foo
  • bar
  • baz

Je veux en mettre à jour autant que possible, donc j'essaye de lancer:

sudo port -n -f upgrade outdated

Cependant, cela échoue avec:

Error: org.macports.build for port foo returned: command execution failed
Please see the log file for port foo for details: ...

Comment puis-je faire en sorte que macports essaie de mettre à niveau bar et baz, si foo échoue?

J'aimerais généralement que macports essaie d'installer / mettre à niveau d'autres ports si l'installation / la mise à niveau de certains d'entre eux échoue et continue simplement.


Depuis la page de manuel:

 -f       force mode (ignore state file)

 

 -n       don't upgrade dependencies (affects upgrade and install)

Edit: foo, bar & baz, sont 3 ports sans rapport au total, qui ne dépendent en aucune façon les uns des autres.


Edit 2: La prochaine fois que je lance ceci, les ports obsolètes pourraient être a, b & c, au lieu de foo, bar & baz, donc je ne peux pas coder en dur ceux qui échouent et je ne peux pas simplement faire:

sudo port update foo
sudo port update bar
sudo port update baz
Tyilo
la source

Réponses:

8

Le -psemble fonctionner pour moi.

Depuis la page de manuel:

-p Malgré toutes les erreurs rencontrées, continuez à traiter plusieurs
         ports et commandes.
Tyilo
la source
Mais voyez la mise en garde d'un développeur MacPorts ci-dessous .... L'utilisation de ce drapeau n'est pas recommandée!
jvriesem
5

MacPorts dev ici; la bonne réponse à votre question est: vous ne le faites pas.

Il y a une raison pour laquelle MacPorts n'essaie pas d'installer un package lorsqu'une dépendance ne se construit pas.

Cette question exacte a été discutée sur la liste de diffusion des utilisateurs de macports il n'y a pas si longtemps:

Clemens Lang
la source
1
foo, bar & baz, sont 3 ports sans rapport au total, qui ne dépendent en aucune façon les uns des autres.
Tyilo
1
Dans ce cas, vous pouvez toujours les mettre à jour manuellement, c'est-à-dire baz de mise à niveau du port sudo, barre de mise à niveau du port sudo, mise à niveau du port sudo foo.
Clemens Lang
voir "edit 2" en question.
Tyilo
Cela devrait être la bonne réponse, si un développeur MacPorts lui parle.
jvriesem
Cela pourrait être une réponse acceptable si MacPorts n'était pas autre chose que stable. Malheureusement, de nombreux packages dépendent de beaucoup de choses optionnelles qui ne sont pas vraiment nécessaires dans la plupart des cas et chaque seconde mise à niveau des ports échoue parce que macports est un tas de conneries instables.
Bachsau
5

Vous pouvez également spécifier "obsolète et pas foo" dans la commande de mise à niveau, plutôt que simplement "obsolète".

Joshua Root
la source
voir "edit 2" en question.
Tyilo
1

Considérant un ancien ticket fermé, un défaut qui a été corrigé:

333 (l'échec de la dépendance est ignoré et le port continue d'essayer de s'installer) - MacPorts

Si je comprends bien: continuer à suivre un échec peut, dans certains cas, être défectueux.

En d'autres termes:

  • il est bon (le moins risqué) de ne pas continuer.

Post-scriptum: j'étais trop paresseux pour lire la page de manuel dans son intégralité (introuvable dans le menu Aide de Terminal, mais ce n'est pas une excuse). Suite aux conseils de quelqu'un, irc://irc.freenode.net/#macportsj'ai décidé de laisser cette réponse.

entrez la description de l'image ici

Je n'ai jamais réalisé l' -poption. Merci à Tyilo.

Graham Perrin
la source