MacPorts: Setzen Sie die Installation anderer Updates nach einem Fehler fort

12

Angenommen, ich habe die folgenden veralteten Pakete:

  • foo
  • Bar
  • baz

Ich möchte so viele wie möglich aktualisieren, daher versuche ich Folgendes auszuführen:

sudo port -n -f upgrade outdated

Dies schlägt jedoch fehl mit:

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

Wie kann ich Macports dazu bringen, Bar und Baz zu aktualisieren, wenn foo fehlschlägt?

Ich möchte Macports generell dazu bringen, andere Ports zu installieren / zu aktualisieren, wenn die Installation / Aktualisierung einiger von ihnen fehlschlägt, und einfach fortfahren.


Von der Manpage:

 -f       force mode (ignore state file)

 

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

Bearbeiten: foo, bar & baz sind insgesamt 3 unabhängige Ports, die in keiner Weise voneinander abhängen.


Bearbeiten 2: Wenn ich dies das nächste Mal ausführe, sind die veralteten Ports möglicherweise a, b & c anstelle von foo, bar & baz, sodass ich die fehlerhaften nicht fest codieren kann und nicht einfach Folgendes tun kann:

sudo port update foo
sudo port update bar
sudo port update baz
Tyilo
quelle

Antworten:

8

Das -pscheint für mich zu funktionieren.

Aus der Manpage:

-p Fahren Sie trotz aufgetretener Fehler mit der Verarbeitung mehrerer fort
         Ports und Befehle.
Tyilo
quelle
Beachten Sie jedoch die folgenden Hinweise eines MacPorts-Entwicklers. Die Verwendung dieses Flags wird nicht empfohlen!
Jvriesem
5

MacPorts Entwickler hier; Die richtige Antwort auf Ihre Frage lautet: Sie nicht.

Es gibt einen Grund, warum MacPorts nicht versucht, ein Paket zu installieren, wenn eine Abhängigkeit nicht erstellt werden kann.

Diese genaue Frage wurde vor nicht allzu langer Zeit auf der Mailingliste der Macports-Benutzer diskutiert:

Clemens Lang
quelle
1
foo, bar & baz sind insgesamt 3 unabhängige Ports, die in keiner Weise voneinander abhängen.
Tyilo
1
In diesem Fall können Sie sie jederzeit manuell aktualisieren, z. B. Sudo Port Upgrade Baz, Sudo Port Upgrade Bar, Sudo Port Upgrade Foo.
Clemens Lang
siehe "edit 2" in Frage.
Tyilo
Dies sollte die richtige Antwort sein, wenn ein MacPorts-Entwickler mit ihm spricht.
Jvriesem
Dies könnte eine akzeptable Antwort sein, wenn MacPorts alles andere als stabil wäre. Leider hängen viele Pakete von vielen optionalen Dingen ab, die in den meisten Fällen nicht wirklich benötigt werden, und jedes zweite Upgrade von Ports schlägt fehl, weil Macports ein Haufen instabiler Scheiße ist.
Bachsau
5

Sie können im Upgrade-Befehl auch "veraltet und nicht foo" angeben, anstatt nur "veraltet".

Joshua Root
quelle
siehe "edit 2" in Frage.
Tyilo
1

In Anbetracht eines alten geschlossenen Tickets wurde ein Fehler behoben:

333 (Abhängigkeitsfehler werden ignoriert und der Port versucht weiterhin zu installieren) - MacPorts

Wenn ich richtig verstehe: Nach einem Fehler fortzufahren, kann in einigen Fällen fehlerhaft sein.

Mit anderen Worten:

  • Es ist richtig (am wenigsten riskant), nicht fortzufahren.

Nachtrag: Ich war zu faul, um die Manpage vollständig zu lesen (nicht im Hilfemenü des Terminals gefunden, aber das ist keine Entschuldigung). Auf Anraten von jemandem in irc://irc.freenode.net/#macportsentschied ich mich, diese Antwort zu hinterlassen.

Geben Sie hier die Bildbeschreibung ein

Ich habe die -pOption nie realisiert . Danke an Tyilo.

Graham Perrin
quelle