Почему во время apt-get upgrade запускается игра Dwarf Fortress?

    Большую популярность на ресурсе Ask Ubuntu снискал весьма странный вопрос пользователя Linux-дистрибутива Ubuntu. По его словам, в некоторых случаях при обновлении системы с помощью sudo apt-get upgrade происходит то, чего он совсем не может ожидать: запуск игры «Dwarf Fortress». История оказалась поучительной…



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

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

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

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

    Этих данных оказалось достаточно, чтобы угадать причину такого необычного поведения apt-get. Каковы же ваши идеи?

    Разгадка такова…
    Бинарный файл игры назван df, что соответствует первым буквам её названия. Поэтому, по первому (и не совсем верному) предположению, когда пользователю стало неудобно каждый раз вызывать её из определённого каталога с ./df, он просто добавил необходимую директорию в начало переменной окружения $PATH (т.е. с приоритетом выше, чем у /bin). Как всем известно, существует одноимённая системная утилита (df) для вывода информации о пространстве, занятом на диске. А дальше всё понятно: происходит, например, проверка (вызовом df) свободного для установки места… но приходится дожидаться окончания игры (и получать неожиданный для себя результат).

    Как стало известно из второго и более правильного ответа, даже переменная $PATH не потребовалась, потому что пользователь просто переместил свой df в /usr/local/bin, приоритет у которого уже по умолчанию выше:

    $ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 17.04
    Release:        17.04
    Codename:       zesty
    $ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    Большое разнообразие других ответов можно почерпнуть на chat.stackexchange.com или reddit (180+ комментариев). Например:

    Какой другой утилитой вы будете проверять использование диска? Dwarf Fortress — правильный инструмент для этого. Дварфы добывают новое дисковое пространство в горах. А вы думали, чем они занимаются?

    Однажды я встретил игровой сервер, на котором source был алиасом для запуска сервера Counter-Strike. Из-за этого многие нормальные shell-скрипты вели себя странно.

    В комментариях приветствуются описания подобных случаев из вашей богатой админской практики.
    Метки:
    Флант 297,04
    Специалисты по DevOps и высоким нагрузкам в вебе
    Поделиться публикацией
    Комментарии 17
    • +2
      Как-то я в скрипте завел функцию mysqldump (которая, внезапно, действительно делала mysqldump с определенными параметрами вызовом одноименного бинарника) и ооооочень долго думал, что происходит.
      • +20

        На баше была аналогичная цитата, когда у чувака при сборке ядра начинала играть Ария, потому что он закинул алиас ar на проигрывание консольным плеером

        • +1
          del
          • +5
            Да-да, когда-то очень давно я делал такой алиас для rm :)
          • 0
            Думаю каждый пользователь сталкивался с подобной магической загадкой — и если бы каждый писал о своих косяках, то на хабре не осталось бы места для нормального материала.
            • +1
              Да пребудет с нами облачное хранилище для данных [у хабры], настроение летних выходных и just for fun! ;-)
            • 0
              Достаточно вспомнить root.
              • +1

                А какие неприятности или опасности таит использование слова 'root' как имени бинарника? Интересует как активного пользователя ROOT, не очень сведующего в системном администрировании. С самого начала смущал этот факт, но проблем ни разу не возникло.

                • 0

                  Я тоже активный пользователь сабжа. Неприятностей не было, но был курьёз с визардом пути в zsh, который следит за опечатками. Он меня переспрашивал насчёт правильности ROOTSYS.


                  И ещё гугление усложняется на одно слово.

              • 0
                У меня была точно такая же история! Один раз я скачал с интернета дистрибутив Ubuntu с заранее установленными играми/утилитами и т.д. Так как дистрибутив делал NONAME некоторые игры/утилиты были помещены в папку bin. Вы уже поняли какой был результат
                • +1
                  Ещё вариант — maintainer большого пакета хотел прописать запуск своей любимой игры в начало %build (чтобы играть, пока оно там компилируется), но промазал и вписал это в секцию %install.
                  • 0

                    Проблема в том, что на убунту всё ж .deb пакеты. А им никакой спек-файл с разными подобными секциями не нужен.

                  • 0

                    Именно поэтому важно прописывать полный путь исполняемого файла в скриптах.
                    Один от этого минус — все работает как часики, и нечем поделиться, скучно… )

                    • +1

                      Где-то в начале 90-х у домашнего компьютера после какого-то обновления DOS (что-то в линейке шестых версий) и наворачивания многоуровневых загрузочных меню, появился странный глюк — после загрузки машина считала, что у неё нажат правый шифт — не фатально, но неудобно — пока не стукнешь по правому шифту, всё вводилось "капсом". За пару минут был написан "патч" (на паскале, но подошёл бы любой язык, умеющий работать с портами ввода-вывода, и имеющий компилятор), исправляющий такое поведение… и назван он был незамысловато — "shift" ;-) http://cmdhelp.ru/?cmd=shift — в "автоэкзеке" он предсказуемо не принёс ожидаемого результата (т.к. лежал в C:\TOOLS, вписанной в PATH и вызывался просто по имени).
                      Что затруднило "отладку" — будучи запущен из среды разработки или из "коммандера" он нормально выполнялся, а вот в автозагрузке — увы...

                      • –2
                        Только геймеры могут обновить Убунту!
                        • 0
                          apt-get install aptitude
                          aptitude update;aptitude -f -y full-upgrade;aptitude clean
                          и никаких танцев с бубном
                          • 0

                            Блин, а я думал при компиляции зависимостей это сочетание UB + веселого компилятора.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое