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.
/bin
es 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 (/usr
aquí) que no se puede montar en el arranque./bin
por defecto. La partición predeterminada de Ubuntu no crea/usr
particiones separadas . Tengo curiosidad por saber cuántas personas realmente hacen una separación/usr
con 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
/etc
y/home
), tal vez también la lista de paquetes instalados, por ejemplo, salidadpkg -l
y 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
/home
una 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 -h
edf -hi
yfdisk -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
/bin
y/usr/bin
ahora son idénticos, no estoy seguro de por qué se arruinaría la gestión de paquetes. ¿Hay realmente un caso donde/bin/foo
y/usr/bin/foo
son 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/bin
haya sido tocado en las últimas 24 horas , deberías poder moverlos de nuevo con:Elimine el
echo
si 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 habrían perdido)Una advertencia potencial: si algunos archivos estuvieran vinculados de forma rígida en ambos
/bin
y/usr/bin
, todos los vínculos rígidos/usr/bin
se moverían a/bin
.Ahora, puede pensar que, dado que
/bin
y/usr/bin
está en el valor predeterminado$PATH
, y/bin
está disponible/boot
al menos antes de que/usr
esté montado, no debería importar si los ejecutables están en/bin
lugar 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
i
siento!) 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 esmv
compatible-t
. Otros sistemas operativos generalmente no lo admiten , ni funciona en la alternativamv
proporcionada por BusyBox .Su instalación debería ser mayormente correcta; no debería haber diferentes archivos con el mismo nombre
/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 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/zsh
aparece como roto,dpkg -S /bin/zsh /usr/bin/zsh
le 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
cruft
paquete y eliminar los archivos que encuentra/bin
o/usr/bin
que 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/sh
o similar.sh
está en ambos/bin
y/usr/bin
(todos los archivos están duplicados ahora).cruft
es 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/foo
medio quefoo
se habría perdido.Puede ser educativo elaborar por qué su sistema está, en mayor o menor medida, 'roto'.
/bin
cuando deberían estar/usr/bin
, y viceversa.$PATH
)./bin
y/usr/bin
es 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/xxx
referencia a los binarios mediante una ruta completa, sino que el directorio/usr/bin
podría no estar disponible en el sistema en ese momento. (Si usteddf /bin
ydf /usr/bin
usted 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
/bin
y/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
,/bin
y 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
/bin
a/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