2013-10-30 8 views
21

Wenn ein Paket mit Cabal Neuinstallation, sieht man in der Regel diese Warnung:Warum sind Kabale Neuinstallationen "immer gefährlich"?

Achtung: Beachten Sie, dass Neuinstallationen immer gefährlich sind. Fortsetzung auf jeden Fall ...

Was sind einige der Gründe für diese Nachricht?

+5

[SICP] (http://www.vex.net/~trebla/haskell/sicp.xhtml), die kanonische Antwort (vor allem der Abschnitt über die Taube-Tropfen con). –

+2

Auch die Tatsache, dass Sie diese "Warnung" bekommen, während es die Neuinstallation sowieso macht. –

+0

Und was ist der Sinn, mir zu sagen, dass es gefährlich ist, wenn du mir nicht die Option gibst, die Warnung wirklich zu beachten und sie abzubrechen? – flarn2006

Antwort

16

Derzeit bedeutet das erneute Installieren eines Pakets das zerstörende Überschreiben eines bereits installierten Pakets. Wenn das alte Paket irgendwelche umgekehrten Abhängigkeiten vom System hat, funktionieren sie nicht mehr.

Um dies weniger wahrscheinlich zu machen, überprüft cabal-install die Paketdatenbanken, auf die es zugreifen kann, wenn es für solche umgekehrten Abhängigkeiten aufgerufen wird, und listet sie auf. In dieser Situation muss --force-reinstalls fortgesetzt werden. Aber selbst wenn keine umgekehrten Abhängigkeiten gefunden werden können, heißt das nicht, dass es keine gibt. Es ist möglich, dass weitere Paketdatenbanken an anderer Stelle im System vorhanden sind (z. B. mehrere Benutzerdatenbanken) oder Projektverzeichnisse, die für die alte Version des Pakets konfiguriert wurden, das überschrieben werden soll. Es gibt keine Möglichkeit für cabal-install, völlig sicher zu sein, deshalb warnt es, dass Neuinstallationen immer gefährlich sind.

+2

Sind Neuinstallationen in einer Sandbox immer gefährlich? –

+3

@SeanLeather Nicht ganz so gefährlich, also sollte vielleicht der Output von 'cabal-install' etwas verfeinert werden. Eine Neuinstallation in einer Sandbox kann immer noch Pakete zerstören, die die Sandbox verwenden (und Sandboxen können von mehreren Projekten gemeinsam genutzt werden, obwohl das nicht üblich ist). Aber es kann zumindest nichts brechen, was nicht die Sandbox benutzt. – kosmikus

+0

Also ist es eine Frage Maßstab dann. Das Problem besteht immer noch; Es ist nur, dass der Schaden enthalten ist. Und Sie können die Sandbox löschen, wenn ein Problem auftritt, während die globale Paketdatenbank problematischer ist. Was die gemeinsame Nutzung einer Sandbox betrifft, machen wir das. Ich bin mir nicht sicher, wie häufig es ist. –