Dwarf Fortress 在 apt-get upgrade 过程中启动

当我在我的Ubuntu 17.04机器上运行`apt-get upgrade`命令时,有时它会自动启动Dwarf Fortress
这已经发生过至少两次了,所以很可能不只是某种一次性事件。而且,执行`apt-get upgrade`的过程似乎会暂停,直到我手动退出Dwarf Fortress,所以很可能不是由于在此期间运行的其他程序引起的。
当时控制台显示的是`Unpacking xxx.`,其中`xxx`是带有`mysql`名称的一些内容。然而,我并不知道具体是哪个软件包,因为今天,`apt-get upgrade`升级了许多与mysql相关的软件包。
我想知道发生了什么,并且如何阻止这种情况再次发生。

所以您的意思是每次在终端中运行apt-get upgrade时游戏都会启动? - user692175
@MichaelBay 不是每次都会升级,只有在有东西需要升级时才会。而且我无法测试是否总是发生,因为现在没有要更新的软件包。 - Adrijaned
这个DF Hack 是一篇很长的阅读,我在中途放弃了,但也许对你有用。 - WinEunuuchs2Unix
https://www.reddit.com/r/Ubuntu/comments/6tomtk/dwarf_fortress_starting_during_aptget_upgrade_one/ - Ciro Santilli OurBigBook.com
2个回答

对于这样一个奇怪的问题,当然不可能确定地说出答案 - 但是如果我的第一感觉没错的话,我愿意吃帽子。:)
我能想到的唯一可能将这些无关的事物联系起来的方式是: 在安装(或者说提取)了矮人要塞之后,你想每次都不用去目录下运行./df,而是希望能像任何其他命令一样从任何位置运行它。你把矮人要塞目录添加到了$PATH中,放在系统目录之前,可能是偶然,也可能是因为你发现否则无法正常工作,只会获得有关文件系统的信息。
Dwarf Fortress的可执行文件被命名为df,这也是一个用于显示文件系统磁盘空间使用情况的系统工具的名称,造成了冲突。通过使得当你输入df时,Dwarf Fortress启动,你就遮蔽了系统工具,所以当一个脚本想要 - 比如说 - 检查你是否有足够的空间来解压缩一个存档时,它会启动Dwarf Fortress而不是调用系统工具df。然后在你退出Dwarf Fortress之后,这个可怜的小脚本会对为什么没有得到它所请求的磁盘使用信息感到非常困惑。
无论如何,谢谢你的笑声,这一定是我在StackExchange上听到的最有趣的问题之一。 :)

评论不适合进行长时间的讨论;此对话已被移至聊天室 - Thomas Ward

我的直觉与Aleksi相似,但我怀疑你可能已经将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二进制文件)。

7讽刺的是,提问者对被接受的答案发表的评论实际上证实了提问者所做的事情,即使用符号链接而不是像答案中那样修改PATH - JdeBP
1@JdeBP:其实不完全是,主要问题在于命名冲突——我认为如何实现这一点是次要的,即使我自己这么说。我还在其他答案的评论中提到了这一点,回应了一个建议与这个答案相同的评论,但我最初考虑过将此作为另一种可能性进行提及,直到我意识到移动/复制二进制文件(而不是符号链接,我没有考虑到)由于Dwarf Fortress的工作方式,这样做是行不通的。(也就是说,它只是被解压,而不是被安装——当不在同一目录下时,它无法找到自己的数据文件) - Aleksi Torhamo
2一个更好的命令可能是 sudo which -a df,可以查看路径中找到的所有 df 命令。 - Doug Henderson
等一下,现在都2017年了,我们还在用apt-get吗? - EKons
@AleksiTorhamo 只是为了澄清,apt 可见的 PATH 变量被 sudo 命令覆盖了(/etc/sudoers 文件中有一个 secure_path 变量用于防止用户修改 PATH 造成的安全问题)。不过我同意,认识到 Dwarf Fortress 二进制文件在 PATH 解析中占据优先权是关键的洞察。 - maccam94