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

322

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

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

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

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

Adrijaned
источник
То есть вы говорите, что когда вы apt-get upgradeзапускаете терминал, игры начинаются?
@MichaelBay не каждый раз, только когда что-то модернизирует. И я не могу проверить, происходит ли это всегда, потому что сейчас нет пакетов для обновления.
Адрижан
Этот DF Hack давно прочитан, и я сдался частично, но, возможно, он будет вам полезен.
WinEunuuchs2Unix
reddit.com/r/Ubuntu/comments/6tomtk/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

550

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

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

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

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

Алекси Торхамо
источник
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Томас Уорд
64

Моя догадка похожа на Алекси , но я подозреваю, что вы, возможно, переместили двоичный файл 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).

maccam94
источник
7
Ирония в том, что комментарий спрашивающего к принятому ответу подтверждает, что именно это и сделал вопросник с символической ссылкой, а не изменил, PATHкак в этом ответе.
JdeBP
1
@JdeBP: Не совсем, главное - конфликт имен - я думаю, как это было достигнуто, вторично, даже если я сам так говорю. Я также упомянул об этом в комментариях к другому ответу, в ответ на комментарий, в котором предлагалось то же самое, что и в этом ответе, но я изначально рассматривал возможность упомянуть это как другую возможность, пока не осознал, что перемещение / копирование двоичного файла (в отличие от символические ссылки, о которых я не думал) не сработали бы из-за того, как работает Dwarf Fortress. (Т.е. он просто извлечен, не установлен - он не найдет свои собственные файлы данных, если он не находится в той же директории)
Алекси Торхамо
2
Лучшая команда могла бы sudo which -a dfвидеть все dfкоманды, найденные в пути.
Даг Хендерсон
Ждать это 2017, и мы apt-getеще используем ?
EKons
@AleksiTorhamo Просто чтобы уточнить, переменная PATH, которую видит apt, переопределяется командой sudo ( /etc/sudoersимеет secure_pathпеременную, предотвращающую проблемы безопасности с пользователями, изменяющими их PATH). Я согласен, что понимание того, что двоичный файл Dwarf Fortress имеет приоритет в разрешении PATH, является ключевым моментом.
maccam94