it-swarm.com.ru

Крепость Гномов, начинающаяся во время апт-гет-апгрейда

Когда я запускаю apt-get upgrade на своем компьютере с Ubuntu 17.04, иногда он запускается Dwarf Fortress сам по себе.

Это случалось уже по крайней мере два раза, так что, вероятно, это было не просто одноразовое событие. Кроме того, выполнение apt-get upgrade, казалось, приостанавливалось до тех пор, пока я вручную не вышел из Dwarf Fortress, поэтому, скорее всего, это не было вызвано чем-то еще, работавшим в то время.

Консоль в то время сказала Unpacking xxx., где xxx было чем-то с mysql в имени. Однако я не знаю, какой именно пакет, так как сегодня apt-get upgrade обновил множество пакетов, связанных с mysql.

Я хотел бы знать, что происходит и как это предотвратить. Спасибо за ваши идеи.

321
Adrijaned

С таким странным вопросом, конечно, невозможно сказать наверняка - но я съем свою шляпу, если моя первая догадка не верна. :)

Единственный способ, которым я могу думать о том, как можно связать такие несвязанные вещи, заключается в следующем: после установки (ну, извлечения) Dwarf Fortress вместо того, чтобы каждый раз заходить в каталог и запускать его с ./df, вы захотели иметь возможность запустить его откуда угодно, как любая старая команда. Вы добавили каталог Dwarf Fortress в свои $PATH, before системные каталоги, возможно, случайно, возможно, потому что вы заметили, что это не работает иначе, и вместо этого вы просто получили информацию о своих файловых системах.

Исполняемый файл Dwarf Fortress называется df, который также является именем системного инструмента для отображения использования дискового пространства ваших файловых систем, создавая коллизию. Сделав так, чтобы при вводе df запускалась Dwarf Fortress, вы затеняли системный инструмент, поэтому, когда скрипт хочет - скажем - проверить, достаточно ли у вас свободного места для распаковки архива, вместо вызова df - системный инструмент - вместо этого он запустит Dwarf Fortress. И после того, как вы выйдете из Dwarf Fortress, бедный маленький скрипт будет очень озадачен тем, почему ему не дали запрошенную информацию об использовании диска.

В любом случае, спасибо за смех, это должно быть среди самых забавных проблем, которые я когда-либо видел, озвученных на StackExchange. :)

549
Aleksi Torhamo

Моя догадка похожа на Aleksi's , но я подозреваю, что вы могли переместить двоичный файл Dwarf Fortress в /usr/local/bin или /usr/bin (и, надеюсь, не /bin).

Попробуйте запустить Sudo which df в своем терминале. Если в нем не указано /bin/df, попробуйте переместить файл, указанный в выходных данных which, в /usr/games/ (вы сможете запустить игру в будущем, запустив /usr/games/df). Apt должен снова работать после этого.

======

В противном случае, в случае, когда Sudo which df говорит /bin/df, попробуйте запустить /bin/df. Если это было перезаписано игрой, вам нужно переместить двоичный файл игры, как указано выше, и Sudo apt-get install --reinstall coreutils.

Если это не удается из-за отсутствия df, вам, возможно, придется прибегнуть к более радикальным мерам (например, создать поддельный сценарий для временной замены df или вручную загрузить пакет и извлечь из него двоичный файл df).

64
maccam94