Fortaleza enana que comienza durante la actualización de apt-get

322

Cuando ejecuto apt-get upgrademi máquina Ubuntu 17.04, a veces se inicia Dwarf Fortress por sí mismo.

Ya ha sucedido al menos dos veces, por lo que probablemente no fue solo una especie de cosa única. Además, la ejecución de apt-get upgradeparecía haberse detenido hasta que dejé manualmente la Fortaleza Enana, por lo que probablemente no fue causada por otra cosa que se ejecutara en ese momento.

La consola en ese momento dijo Unpacking xxx.dónde xxxhabía algo con mysqlnombre. Sin embargo, no sé qué paquete exactamente, ya que hoy apt-get upgradeactualicé muchos paquetes relacionados con mysql.

Me gustaría saber qué sucede y cómo evitar que suceda. Gracias por tus ideas.

Adrijaned
fuente
Entonces, ¿estás diciendo que cada vez que corriste apt-get upgradeen la terminal comienzan los juegos?
@MichaelBay no siempre, solo cuando actualiza algo. Y no puedo probar si sucede siempre, porque no hay paquetes para actualizar ahora.
Adrijaned
Este DF Hack es una lectura larga y me di por vencido, pero tal vez te sea útil.
WinEunuuchs2Unix
reddit.com/r/Ubuntu/comments/6tomtk/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

550

Con una pregunta tan extraña como esta, por supuesto es imposible decirlo con certeza, pero me comeré el sombrero si mi primer presentimiento no es correcto. :)

La única forma en que puedo pensar es en cómo se pueden vincular cosas sin relación: después de instalar (bueno, extraer) Dwarf Fortress, en lugar de ir al directorio cada vez y ejecutarlo ./df, querías poder ejecutarlo desde en cualquier lugar, como cualquier antiguo comando. Agregó el directorio Dwarf Fortress a su $PATH, antes de los directorios del sistema, tal vez por casualidad, tal vez porque notó que no funcionaba de otra manera, y en su lugar solo obtendría información sobre sus sistemas de archivos.

Se llama el ejecutable de Dwarf Fortress df, que también es el nombre de una herramienta del sistema para mostrar el uso del espacio en disco de sus sistemas de archivos, creando una colisión. Al hacerlo, cuando escribe df, Dwarf Fortress comienza, ha sombreado la herramienta del sistema, por lo que cuando un script quiere, digamos, verificar si tiene suficiente espacio libre para descomprimir un archivo, en lugar de invocar df, la herramienta del sistema - En su lugar, comenzará Dwarf Fortress. Y después de salir de Dwarf Fortress, la pobre secuencia de comandos estará muy confundida sobre por qué no se le dio la información de uso del disco que solicitó.

De todos modos, gracias por la risa, este tiene que estar entre los problemas más divertidos que he visto en StackExchange. :)

Aleksi Torhamo
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Thomas Ward
64

Mi presentimiento es similar al de Aleksi , pero sospecho que es posible que hayas movido el binario Dwarf Fortress a /usr/local/bino /usr/bin(y con suerte no /bin).

Intenta correr sudo which dfen tu terminal. Si no dice /bin/df, intente mover el archivo especificado en la whichsalida a /usr/games/(podrá ejecutar el juego en el futuro ejecutando /usr/games/df). Apt debería funcionar nuevamente después de eso.

======

De lo contrario, en el escenario donde sudo which dfdice /bin/df, intente ejecutar /bin/df. Si se ha sobrescrito con el juego, deberás mover el juego binario como se mencionó anteriormente, y sudo apt-get install --reinstall coreutils.

Si eso falla porque dffalta, es posible que deba recurrir a medidas más drásticas (como crear un script falso para reemplazar df temporalmente, o descargar manualmente el paquete y extraer el binario df de él).

maccam94
fuente
77
Es irónico que un comentario del interrogador a la respuesta aceptada confirme que esto es lo que hizo el interlocutor, con un enlace simbólico, en lugar de modificarlo PATHcomo en esa respuesta.
JdeBP
1
@JdeBP: No realmente, el punto principal es el conflicto de nombres: creo que cómo se logró eso es secundario, incluso si lo digo yo mismo. También mencioné esto en los comentarios de la otra respuesta, en respuesta a un comentario que sugería lo mismo que esta respuesta, pero originalmente consideré mencionar esto como otra posibilidad, hasta que me di cuenta de que mover / copiar el binario (en lugar de simular, lo que no pensé) no habría funcionado debido a la forma en que funciona Dwarf Fortress. (Es decir, solo se extrae, no se instala, no encontraría sus propios archivos de datos cuando no
estuviera
2
Un mejor comando podría ser sudo which -a dfver todos los dfcomandos encontrados en la ruta.
Doug Henderson
Espera, es 2017 y usamos apt-gettodavía?
EKons
@AleksiTorhamo Solo para aclarar, la variable PATH que apt vería es anulada por el comando sudo ( /etc/sudoerstiene una secure_pathvariable para evitar problemas de seguridad con los usuarios que modifican su PATH). Sin embargo, estoy de acuerdo en que darse cuenta de que el binario Dwarf Fortress tiene prioridad en la resolución PATH es la idea clave.
maccam94