Dwarf Fortress zaczyna się podczas aktualizacji apt-get

322

Kiedy uruchamiam apt-get upgrademoją maszynę Ubuntu 17.04, czasami sama uruchamia Dwarf Fortress .

Stało się to już co najmniej dwa razy, więc prawdopodobnie nie było to coś jednorazowego. Ponadto wykonanie apt-get upgradewydawało się być wstrzymane, dopóki ręcznie nie opuściłem Twierdzy Krasnoludów, więc najprawdopodobniej nie było to spowodowane działaniem czegoś innego w tym czasie.

Konsola w tym czasie powiedziała, Unpacking xxx.gdzie xxxjest coś z mysqlnazwy. Nie wiem jednak, który pakiet dokładnie, tak jak dzisiaj, apt-get upgradezaktualizował wiele pakietów związanych z mysql.

Chciałbym wiedzieć, co się stanie i jak temu zapobiec. Dziękuję za twoje pomysły.

Adrijaned
źródło
Więc mówisz, że kiedy biegniesz apt-get upgradew terminalu, zaczyna się gra?
@MichaelBay nie za każdym razem, tylko gdy coś ulepszy. I nie mogę przetestować, czy tak się zawsze dzieje, ponieważ nie ma teraz pakietów do aktualizacji.
Adrijaned
Ten hack DF to długa lektura i zrezygnowałem częściowo, ale może ci się przyda.
WinEunuuchs2Unix
reddit.com/r/Ubuntu/comments/6tomtk/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

550

Przy tak dziwnym pytaniu, oczywiście nie można powiedzieć na pewno - ale zjem kapelusz, jeśli moje pierwsze przeczucie nie jest prawidłowe. :)

Jedyny sposób, w jaki mogę wymyślić, w jaki sposób można powiązać takie niepowiązane rzeczy, to: Po zainstalowaniu (dobrze, rozpakowaniu) Dwarf Fortress, zamiast za każdym razem wchodzić do katalogu i uruchamiać go ./df, chciałeś móc go uruchomić w dowolnym miejscu, jak każde stare polecenie. Dodano krasnolud Fortress do swojego katalogu $PATH, zanim katalogach systemowych, być może przez przypadek, być może dlatego, że zauważyłem, że nie działa w inny sposób, i że zamiast po prostu uzyskać informacje o systemach plików.

Nazywany jest plik wykonywalny Dwarf Fortress df, który jest również nazwą narzędzia systemowego do wyświetlania wykorzystania miejsca na dysku w twoich systemach plików, tworząc kolizję. Sprawiając, że podczas pisania dfDwarf Fortress uruchamia cień narzędzia systemowego, więc gdy skrypt chce - powiedzmy - sprawdzić, czy masz wystarczającą ilość wolnego miejsca do rozpakowania archiwum, zamiast wywoływać df- narzędzie systemowe - zamiast tego uruchomi Twierdzę Krasnoludów. A po wyjściu z Dwarf Fortress biedny mały skrypt będzie bardzo zdezorientowany, dlaczego nie otrzymał wymaganych informacji o użyciu dysku.

W każdym razie, dzięki za śmiech, to musi być jeden z najśmieszniejszych problemów, jakie kiedykolwiek widziałem na StackExchange. :)

Aleksi Torhamo
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Thomas Ward
64

Moje przeczucie jest podobne do Aleksiego , ale podejrzewam, że mogłeś przenieść plik binarny Twierdzy Krasnoludów do ( /usr/local/binlub /usr/binmam nadzieję, że nie /bin).

Spróbuj uruchomić sudo which dfw swoim terminalu. Jeśli to nie powie /bin/df, spróbuj przenieść plik określony w danych whichwyjściowych do /usr/games/(będziesz mógł uruchomić grę w przyszłości, uruchamiając /usr/games/df). Apt powinien znowu działać.

======

W przeciwnym razie w scenariuszu, w którym sudo which dfmówi się /bin/df, spróbuj uruchomić /bin/df. Jeśli zostało to nadpisane w grze, musisz przenieść plik binarny gry, jak wspomniano powyżej, i sudo apt-get install --reinstall coreutils.

Jeśli to się nie powiedzie, ponieważ dfbrakuje, może być konieczne zastosowanie bardziej drastycznych środków (takich jak utworzenie fałszywego skryptu w celu tymczasowego zastąpienia df lub ręczne pobranie pakietu i wyodrębnienie z niego pliku binarnego df).

maccam94
źródło
7
Ironią losu jest to, że komentarz pytającego do zaakceptowanej odpowiedzi potwierdza, że ​​to właśnie zrobił pytający, używając dowiązania symbolicznego, a nie modyfikując PATHjak w tej odpowiedzi.
JdeBP
1
@JdeBP: Nie bardzo, głównym celem jest konflikt nazw - myślę, że sposób, w jaki został osiągnięty, jest drugorzędny, nawet jeśli sam tak mówię. Wspomniałem o tym również w komentarzach drugiej odpowiedzi, w odpowiedzi na komentarz sugerujący to samo co ta odpowiedź, ale początkowo rozważałem wspomnienie o tym jako innej możliwości, dopóki nie zdałem sobie sprawy, że przenoszenie / kopiowanie pliku binarnego (w przeciwieństwie do dowiązanie symboliczne, o którym nie myślałem) nie zadziałałoby ze względu na sposób działania Twierdzy Krasnoludów. (Tj. Jest po prostu wyodrębniony, nie zainstalowany - nie znalazłby własnych plików danych, gdy nie ma go w tym samym katalogu)
Aleksi Torhamo
2
Lepszym poleceniem może być sudo which -a dfzobaczenie wszystkich dfpoleceń znalezionych na ścieżce.
Doug Henderson
Poczekaj, to 2017 rok, a my apt-getjeszcze korzystamy ?
EKons,
@AleksiTorhamo Aby wyjaśnić, zmienna PATH, którą zobaczyłaby apt, jest zastępowana przez polecenie sudo ( /etc/sudoersma secure_pathzmienną zapobiegającą problemom z bezpieczeństwem przy modyfikowaniu przez użytkowników PATH). Zgadzam się, że kluczową sprawą jest uświadomienie sobie, że plik binarny Dwarf Fortress ma pierwszeństwo w rezolucji PATH.
maccam94