Al ejecutar Ubuntu 17.04, estaba instalando un software desde una distribución que no es de repositorio, se suponía que debía mover el contenido de la carpeta bin del software a / usr / bin (que ya era un consejo dudoso)
Es uno de esos días, así que lo que hice en su lugar:
mv /bin/* /usr/bin
Así que me equivoqué y accidentalmente moví todos los archivos en bin a / usr / bin y / bin estaba vacío. Como tomo que / bin es crítico para el sistema, para una solución rápida, copié / usr / bin contenidos en / bin.
Ahora mis / bin y / usr / bin son idénticos y ambos contienen los archivos originalmente en / bin y / usr / bin separados.
- ¿Mi Ubuntu está en un estado roto ahora? (Todavía no intenté reiniciar la computadora, ahora todo parece funcionar)
- ¿Hay alguna manera de saber qué archivos se han movido / copiado a / usr / bin más recientemente, por lo que podría encargarme de la situación manualmente? 2.1 ¿Hay archivos superpuestos en / bin y / usr / bin?
- ¿Hay otras formas de deshacer lo que hice?
No tengo instalado Timeshift, por lo que restaurar copias de seguridad no es una opción, pero actualmente no hay nada crítico en la computadora, por lo que podría admitir que atornillar reinstalar toda la partición de Linux.

/bines crítico para el sistema. Su contenido debe estar presente en las primeras etapas de arranque. No desea crear un enlace simbólico a una partición (/usraquí) que no se puede montar en el arranque./binpor defecto. La partición predeterminada de Ubuntu no crea/usrparticiones separadas . Tengo curiosidad por saber cuántas personas realmente hacen una separación/usrcon una distribución moderna.Respuestas:
Sí, tu Ubuntu está roto
Arruinaste algo importante para la gestión de paquetes .
Entonces, en la práctica, haga una copia de seguridad de sus datos importantes (al menos
/etcy/home), tal vez también la lista de paquetes instalados, por ejemplo, salidadpkg -ly reinstale Ubuntu.(un novato podría tratar de manejar, como en otras respuestas, pero entonces no habría cometido un error tan grande y básico)
Eso es probablemente lo que consumiría menos tiempo. Mantener su sistema actual con la ayuda de otras respuestas es mantenerlo en un estado muy desordenado (lo que le daría dolores de cabeza futuros).
Como está reformateando su disco, considere colocar
/homeuna partición separada (para que en el futuro tales errores no pierdan sus datos). Antes de hacer que la letra impresa en el papel de la salidadf -hedf -hiyfdisk -l(que dan información sobre -tanto espacio de disco utilizado y disponible- ...). Tenga cuidado de tener una partición del sistema lo suficientemente grande (el sistema de archivos raíz); si puedes permitírtelo, 100 Gbytes es más que suficiente.(Terminología: Unix tiene directorios, no "carpetas").
Eso ( mudarse a
/usr/bin/) está muy mal. O bien mejorar su $ PATH (preferiblemente) o en la mayoría añade enlaces simbólicos en/usr/bin/y preferentemente mover (o añadir enlaces simbólicos) ejecutables a/usr/local/bin/.El enfoque prudente es no cambiar nunca
/usr/bin/,/bin,/sbin,/usr/sbin/fuera de las herramientas de gestión de paquetes (por ejemplodpkg,apt-get,aptitude, etc ...). Lee el FHS .fuente
/biny/usr/binahora son idénticos, no estoy seguro de por qué se arruinaría la gestión de paquetes. ¿Hay realmente un caso donde/bin/fooy/usr/bin/fooson a la vez proporciona un paquete (s). Si no, solo hay algunos archivos adicionales flotando./partición de mi sistema principal es de 12 GB y nunca me encontré con un problema de espacio a pesar de usarlo para el desarrollo (leer archivos de encabezado y muchas herramientas), oficina y diseño (leer herramientas pesadas), en KDE (leer no el más delgado). Agregue 4 GB más si no se divide/var, infle en un 25% si desea un margen mayor que el que tengo, y con 20 GB es más que bueno.En Linux (y en la mayoría de los otros sistemas, aunque POSIX no le brinda esa garantía a menos que el movimiento fuera a través de los sistemas de archivos), eso habría actualizado su ctime, por lo que suponiendo que ninguno de los otros
/usr/binhaya sido tocado en las últimas 24 horas , deberías poder moverlos de nuevo con:Elimine el
echosi se ve bien. Tenga en cuenta que no podrá recuperar los archivos que existían con el mismo nombre en/biny/usr/bin(los originales en/usr/binse habrían perdido)Una advertencia potencial: si algunos archivos estuvieran vinculados de forma rígida en ambos
/biny/usr/bin, todos los vínculos rígidos/usr/binse moverían a/bin.Ahora, puede pensar que, dado que
/biny/usr/binestá en el valor predeterminado$PATH, y/binestá disponible/bootal menos antes de que/usresté montado, no debería importar si los ejecutables están en/binlugar de/usr/bin.Pero eso sería pasar por alto que muchos comandos codifican las rutas de los ejecutables y esperan que sean en algún caso específico. Un caso común es she-bangs. Todos los guiones que tienen:
dejará de funcionar después de que lo hagas
mv /usr/bin/env /bin/env. En ese sentido, tener los comandos en ambas ubicaciones es más seguro ya que no romperá esos scripts.fuente
isiento!) En sistemas GNU / Linux como Ubuntu que uno puede usar,find /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +ya que GNU Coreutils esmvcompatible-t. Otros sistemas operativos generalmente no lo admiten , ni funciona en la alternativamvproporcionada por BusyBox .Su instalación debería ser mayormente correcta; no debería haber diferentes archivos con el mismo nombre
/usry/usr/bin(que responde a su 2.1), por lo que tener todos los archivos en ambos/biny/usr/binno romperá nada (hasta que actualice los paquetes). El único problema que puede tener ahora es enlaces simbólicos rotos, si sobrescribió un binario con un enlace simbólico. Para solucionar esto, busque enlaces simbólicos rotos:y reinstale los paquetes correspondientes a los archivos enumerados (por ejemplo, si
/usr/bin/zshaparece como roto,dpkg -S /bin/zsh /usr/bin/zshle indicará de qué paquete proviene el archivo; reinstale conapt --reinstall install zsh).Puede mostrar y ordenar por ctime para ver los archivos que se modificaron recientemente (que incluirán los archivos que movió):
El mejor enfoque para deshacer lo que hizo es usar el
cruftpaquete y eliminar los archivos que encuentra/bino/usr/binque no provienen de un paquete:a menos que los archivos sean enlaces simbólicos a archivos en
/etc/alternatives(en cuyo caso debe dejarlos solos).fuente
#! /bin/sho similar.shestá en ambos/biny/usr/bin(todos los archivos están duplicados ahora).cruftes necesario un toolk especial para este trabajo porque el administrador de paquetes también realiza un seguimiento de los archivos instalados. Ver unix.stackexchange.com/questions/153260/… .comm -12 <(ls /bin) <(ls /usr/bin)mostrar algunas entradas en un sistema Ubuntu en el que lo probé. Algunos con un/bin/foo -> /usr/bin/foomedio quefoose habría perdido.Puede ser educativo elaborar por qué su sistema está, en mayor o menor medida, 'roto'.
/bincuando deberían estar/usr/bin, y viceversa.$PATH)./biny/usr/bines que el primero puede estar potencialmente en una partición que se monta en una etapa anterior del arranque. En este contexto (es decir, al arrancar el sistema), no solo se haría/bin/xxxreferencia a los binarios mediante una ruta completa, sino que el directorio/usr/binpodría no estar disponible en el sistema en ese momento. (Si usteddf /binydf /usr/binusted pueden ver el mismo sistema de archivos en la lista, o diferentes; probablemente la mayoría de las instalaciones predeterminadas, en estos días, dejan ambos directorios en la misma partición).Por lo tanto, puede ver que, si tiene los mismos binarios en ambos
/biny/usr/bin, entonces no ocurrirán los problemas 2 y 3, y el daño de 1 podría ser menor. Re 1, por ejemplo, los paquetes podrían no desinstalarse correctamente si intenta eliminarlos; y las actualizaciones podrían quedar confusas, si la actualización intenta actualizar la copia en el lugar "correcto", pero ignora la copia en el lugar "incorrecto". Por lo tanto, si los remedios anteriores parecen demasiado drásticos o complicados, puede salirse del sistema en este estado.Pero si este es un sistema importante, realmente no confiaría en eso.
Una regla general (de nuevo haciendo eco en @ basile-starynkevitch) es nunca molestarse con amigos
/usr/bin,/biny ellos 'pertenecen' a la distribución, y un paquete que sugiere hacerlo como parte de su instalación normal ... no es un buen paquete.Editar: Relevante al punto 3, hay una discusión en el contexto de systemd / Fedora y amigos de por qué tiene sentido para mover todo el contenido de
/bina/usr/bin, y simbólicamente los directorios primera a la segunda. Esto es , no una recomendación que haga esto, usted mismo - que la página está dirigida a las personas que realizan distribuciones - pero incluye algo de la historia de por qué existe esta distinción (y por implicación por eso que ahora es tradición meramente polvo).fuente