Frage Zwergenfestung, die während des apt-get-Upgrades gestartet wird


Wenn ich renne apt-get upgrade Auf meiner Ubuntu 17.04-Maschine fängt es manchmal an Zwergenfestung von selbst.

Es ist schon mindestens zwei Mal passiert, also war es wahrscheinlich nicht nur eine einmalige Sache. Auch die Ausführung vonapt-get upgrade schien angehalten zu sein, bis ich manuell die Zwergenfestung verließ, also wurde es höchstwahrscheinlich nicht durch etwas anderes verursacht, das in dieser Zeit läuft.

Die Konsole sagte damals Unpacking xxx. woher xxx war etwas mit mysql im Namen. Ich weiß jedoch nicht, welches Paket genau, wie heute, apt-get upgrade hat viele mysql-bezogene Pakete aktualisiert.

Ich würde gerne wissen, was passiert und wie man es verhindern kann. Danke für deine Ideen.


313
2017-07-22 05:15


Ursprung


Du sagst das immer wenn du rennst apt-get upgrade im Terminal beginnen die Spiele?
@MichaelBay nicht immer, nur wenn es etwas aufrüstet. Und ich kann nicht testen, ob es immer passiert, weil es jetzt keine zu aktualisierenden Pakete gibt. - Adrijaned
Dies DF Hack Es ist eine lange Lektüre und ich habe es teilweise aufgegeben, aber vielleicht wird es dir nützlich sein. - WinEunuuchs2Unix
reddit.com/r/Ubuntu/comments/6tomtk/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


Antworten:


Mit einer so merkwürdigen Frage ist das natürlich unmöglich zu sagen - aber ich werde meinen Hut essen, wenn meine erste Ahnung nicht stimmt. :)

Der einzige Weg, an den ich denken kann, wie solche nicht verwandten Dinge miteinander verknüpft werden könnten, ist dies: Nach dem Installieren (also dem Extrahieren) von Dwarf Fortress, anstatt jedes Mal zum Verzeichnis zu gehen und es auszuführen ./df, Sie wollten es von überall ausführen können, wie jeder alte Befehl. Du hast das Dwarf Fortress-Verzeichnis zu deinem hinzugefügt $PATH, Vor die Systemverzeichnisse, vielleicht zufällig, vielleicht weil Sie bemerkt haben, dass es nicht anders funktioniert, und Sie stattdessen nur Informationen über Ihre Dateisysteme erhalten.

Die ausführbare Datei der Zwergenfestung wird benannt dfDies ist auch der Name eines Systemwerkzeugs zur Anzeige der Speicherplatznutzung Ihrer Dateisysteme, wodurch eine Kollision entsteht. Indem Sie es so machen, dass Sie tippen df, Dwarf Fortress startet, Sie haben das System-Tool beschattet. Wenn also ein Skript - sagen wir mal - möchte, dass Sie genügend freien Speicherplatz zum Entpacken eines Archivs haben, anstatt es aufzurufen df - das System-Tool - es startet stattdessen Zwergenfestung. Und nachdem Sie die Zwergenfestung verlassen haben, wird das arme kleine Skript sehr verwirrt sein, warum es nicht die angeforderte Information über die Plattennutzung erhalten hat.

Wie auch immer, danke für das Lachen, das muss zu den lustigsten Problemen gehören, die ich je auf StackExchange gesehen habe. :)


542
2017-08-14 17:30



Kommentare sind nicht für längere Diskussionen; Diese Konversation war zum chatten bewegt. - Thomas Ward♦


Meine Ahnung ist ähnlich Aleksis, aber ich vermute, du hättest die Dwarf Fortress - Binärdatei vielleicht nach /usr/local/bin oder /usr/bin (und hoffentlich nicht /bin).

Versuche zu laufen sudo which df in deinem Terminal. Wenn es nicht heißt /bin/dfVersuchen Sie, die in der Datei angegebene Datei zu verschieben which Ausgabe an /usr/games/ (Sie können das Spiel in Zukunft durch Laufen ausführen /usr/games/df). Apt sollte danach wieder funktionieren.

======

Ansonsten in dem Szenario wo sudo which df sagt /bin/df, versuche zu laufen /bin/df. Wenn das mit dem Spiel überschrieben wurde, musst du das Spiel wie oben erwähnt verschieben und sudo apt-get install --reinstall coreutils.

Wenn das schief geht, weil df fehlt, müssen Sie möglicherweise zu drastischeren Maßnahmen greifen (wie zum Beispiel das Erstellen eines gefälschten Skripts, um df temporär zu ersetzen, oder das manuelle Herunterladen des Pakets und das Extrahieren der df-Binärdatei daraus).


62
2017-08-15 08:47



Es ist ironisch, dass ein Kommentar des Fragestellers zu der angenommenen Antwort bestätigt, dass dies der Fragesteller getan hat, mit einer symbolischen Verbindung, anstatt zu modifizieren PATH wie in dieser Antwort. - JdeBP
@JdeBP: Nicht wirklich, Hauptsache ist der Namenskonflikt - ich denke wie das erreicht wurde ist sekundär, auch wenn ich es selbst sage. Ich erwähnte dies auch in den Kommentaren der anderen Antwort als Reaktion auf einen Kommentar, der dasselbe wie diese Antwort nahelegte, aber ich erwäge ursprünglich, dies als eine andere Möglichkeit zu erwähnen, bis ich erkannte, dass das Verschieben / Kopieren der Binärdatei (im Gegensatz zu Symlinking, an das ich nicht gedacht habe) hätte aufgrund der Funktionsweise von Dwarf Fortress nicht funktioniert. (Dh es ist nur extrahiert, nicht installiert - es würde nicht seine eigenen Dateien finden, wenn nicht im selben Verzeichnis) - Aleksi Torhamo
Ein besserer Befehl könnte sein sudo which -a df um alles zu sehen df Befehle im Pfad gefunden. - Doug Henderson
Warte, es ist 2017 und wir benutzen es apt-get noch? - EKons
@AleksiTorhamo Nur um zu verdeutlichen, wird die PATH-Variable, die apt sehen würde, durch den Befehl sudo außer Kraft gesetzt (/etc/sudoers hat ein secure_path Variable, um Sicherheitsprobleme zu vermeiden, wenn Benutzer ihren PATH ändern). Ich stimme zu, dass die Erkenntnis, dass das Dwarf Fortress-Binary in der PATH-Auflösung Vorrang hat, der Schlüssel ist. - maccam94