GNU/Linux >> Tutoriales Linux >  >> Linux

Se movió el contenido de /bin a /usr/bin, ¿es posible deshacerlo?

En Linux (y en la mayoría de los otros sistemas, aunque POSIX no le da esa garantía a menos que el movimiento fuera a través de sistemas de archivos), eso habría actualizado su ctime, por lo que suponiendo que ninguno de los otros en /usr/bin han sido tocados en las últimas 24 horas, deberías poder volver a moverlos con:

find /usr/bin/. ! -name . -prune -ctime -1 -exec sh -c '
   echo mv -i "[email protected]" /bin' sh {} +

Eliminar el echo si eso se ve bien. Tenga en cuenta que no podrá recuperar los archivos que existían con el mismo nombre en /bin y /usr/bin (los originales en /usr/bin se hubiera perdido)

Una advertencia potencial:si algunos archivos estuvieran vinculados tanto en /bin y /usr/bin , todos los enlaces duros en /usr/bin se movería a /bin .

Ahora, puedes pensar que desde /bin y /usr/bin están en el $PATH predeterminado y /bin está disponible en /boot al menos antes de /usr está montado, no debería importar si los ejecutables están en /bin en lugar de /usr/bin .

Pero eso sería pasar por alto que muchos comandos codifican las rutas de los ejecutables y esperan que estén en algún caso específico. Un caso común es she-bangs. Todos los scripts que tienen:

#! /usr/bin/env bash

no funcionará después de hacer mv /usr/bin/env /bin/env . En ese sentido, tener los comandos en ambas ubicaciones es más seguro porque no romperá esos scripts.


¿Está mi Ubuntu en un estado roto ahora?

Sí, tu Ubuntu está roto

Echaste a perder algo importante para la administración de paquetes.

Entonces, en la práctica, haga una copia de seguridad de sus datos importantes (al menos /etc y /home ), quizás también la lista de paquetes instalados, p. salida de dpkg -l y reinstale Ubuntu.

Podría admitir que me equivoqué al reinstalar toda la partición de Linux.

Eso es probablemente lo que consumiría menos de su tiempo. Mantener su sistema actual con la ayuda de otras respuestas es mantenerlo en un estado muy desordenado (lo que le daría futuros dolores de cabeza).

Ya que está formateando su disco, considere poner /home en una partición separada (para que futuros errores de este tipo no pierdan sus datos). Antes de hacer eso, imprima en papel la salida de df -h y df -hi y fdisk -l (dan información sobre el espacio en disco -tanto usado como disponible-...). Sea prudente tener una partición del sistema lo suficientemente grande (el sistema de archivos raíz); si te lo puedes permitir, 100 Gbytes es más que suficiente.

Se suponía que debía mover el contenido de la carpeta bin del software a /usr/bin

(terminología:Unix tiene directorios, no "carpetas").

Que (moviéndose a /usr/bin/ ) está muy mal. Mejore su $PATH (preferiblemente) o a lo sumo agregue enlaces simbólicos en /usr/bin/ y preferiblemente mueva (o agregue enlaces simbólicos) ejecutables a /usr/local/bin/ .

El enfoque inteligente es nunca cambiar /usr/bin/ , /bin , /sbin , /usr/sbin/ fuera de las herramientas de administración de paquetes (por ejemplo, dpkg , apt-get , aptitude , etc...). Lea la FHS.


  1. Su instalación debería estar mayormente bien; no debería haber archivos diferentes con el mismo nombre en /usr y /usr/bin (que responde a su 2.1), por lo que tener todos los archivos en ambos /bin y /usr/bin no romperá nada (hasta que actualice los paquetes). El único problema que podría tener ahora son los enlaces simbólicos rotos, si sobrescribió un binario con un enlace simbólico. Para solucionar esto, busque enlaces simbólicos rotos:

    find -L /bin /usr/bin -type l -ls
    

    y reinstale los paquetes correspondientes a los archivos enumerados (por ejemplo, si /usr/bin/zsh aparece como roto, dpkg -S /bin/zsh /usr/bin/zsh le dirá de qué paquete proviene el archivo; reinstalarlo con apt --reinstall install zsh ).

  2. Puede mostrar y ordenar por ctime para ver los archivos que se cambiaron recientemente (que incluirán los archivos que movió):

    ls -ltc /bin
    
  3. El mejor enfoque para deshacer lo que hiciste es usar el cruft empaqueta y elimina los archivos que encuentra en /bin o /usr/bin que no vienen de un paquete:

    sudo apt install cruft
    sudo cruft -d "/ /usr"
    

    a menos que los archivos sean enlaces simbólicos a archivos en /etc/alternatives (en cuyo caso deberías dejarlos en paz).


Linux
  1. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

  2. Conflictos de Node.js:/sbin/node Vs /usr/bin/node?

  3. permiso denegado para el compositor en /usr/local/bin/

  4. ¿Cuáles son los significados de /usr/sbin, /usr/local/sbin y /usr/local/bin?

  5. ¿Cuándo debo usar #!/bin/bash y cuándo #!/bin/sh?

¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

¿Alguna razón para tener un Shebang apuntando a /bin/sh en lugar de /bin/bash?

Linux:¿/sbin/init no existe?

¿Cuál es la diferencia entre #!/usr/bin/env bash y #!/usr/bin/bash?

cmake --version apunta a /usr/bin/cmake mientras que cmake apunta a /usr/local/bin

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?