Executando o Ubuntu 17.04, eu estava instalando um software a partir da distribuição não-repositório, eu deveria mover o conteúdo da pasta bin do software para / usr / bin (que já era um conselho duvidoso)
É um daqueles dias, então o que eu fiz:
mv /bin/* /usr/bin
Então eu estraguei tudo e acidentalmente movi todos os arquivos no bin para / usr / bin e / bin estava vazio. Como considero que / bin é crítico para o sistema, para uma solução rápida, copiei o conteúdo / usr / bin para / bin.
Agora meu conteúdo / bin e / usr / bin é idêntico e ambos contêm os arquivos originalmente em / bin e / usr / bin separados.
- Meu Ubuntu está em um estado quebrado agora? (Ainda não tentou reiniciar o computador, agora tudo parece ainda funcionar)
- Existe uma maneira de saber quais arquivos foram movidos / copiados para / usr / bin mais recentemente, para que eu pudesse cuidar manualmente da situação? 2.1 Normalmente existem arquivos sobrepostos em / bin e / usr / bin
- Existem outras maneiras de desfazer o que fiz?
Eu não tenho o Timeshift instalado, portanto, restaurar backups não é uma opção, mas não há nada crítico no computador atualmente, então eu poderia admitir que estrague a reinstalação de toda a partição linux.
/bin
é crítico para o sistema. Seu conteúdo deve estar presente nos estágios iniciais de inicialização. Você não deseja criar um link simbólico para uma partição (/usr
aqui) que pode não ser montada na inicialização./bin
por padrão. O particionamento padrão do Ubuntu não cria/usr
partições separadas . Estou curioso para saber quantas pessoas realmente fazem uma separação/usr
com uma distribuição moderna.Respostas:
Sim, seu Ubuntu está quebrado
Você estragou algo importante para o gerenciamento de pacotes .
Portanto, na prática, faça backup de seus dados importantes (pelo menos
/etc
e/home
), talvez também a lista de pacotes instalados, por exemplo, saída dodpkg -l
e reinstale o Ubuntu.(um não iniciante poderia tentar gerenciar - como em outras respostas -, mas não teria cometido um erro tão grande e básico)
Isso é provavelmente o que consumiria menos do seu tempo. Manter o sistema atual com a ajuda de outras respostas é mantê-lo em um estado muito confuso (o que causaria dores de cabeça futuras).
Como você está reformatando seu disco, considere colocar
/home
uma partição separada (para que futuros erros desse tipo não percam seus dados). Antes de fazer isso, imprima em papel a saída dedf -h
edf -hi
efdisk -l
(eles fornecem informações sobre o espaço em disco - ambos usados e disponíveis - ...). Seja prudente em ter uma partição de sistema suficientemente grande (o sistema de arquivos raiz); se você puder pagar, 100 Gbytes é mais que suficiente.(terminologia: o Unix possui diretórios, não "pastas").
Isso ( mudar para
/usr/bin/
) está muito errado. Quer melhorar o seu $ PATH (de preferência) ou na maioria dos add links simbólicos em/usr/bin/
e de preferência mover (ou adicionar links simbólicos) executáveis/usr/local/bin/
.A abordagem sensata é a de nunca alteração
/usr/bin/
,/bin
,/sbin
,/usr/sbin/
fora de ferramentas de gerenciamento de pacotes (por exemplodpkg
,apt-get
,aptitude
, etc ...). Leia a ESF .fonte
/bin
e/usr/bin
agora somos idênticos, não sei por que o gerenciamento de pacotes seria errado. Existe realmente um caso em que/bin/foo
e/usr/bin/foo
ambos são fornecidos por um (s) pacote (s). Caso contrário, existem apenas alguns arquivos extras flutuando./
partição do meu sistema principal é de 12 GB e eu nunca tive problemas com o espaço, apesar de usá-la para desenvolvimento (ler arquivos de cabeçalho e muitas ferramentas), escritório e design (ler ferramentas pesadas), no KDE (leia o que é mais fino). Coloque 4 GB a mais se você não dividir/var
, aumente em 25% se quiser uma margem maior do que a minha e, com 20 GB, você é mais do que bom.No Linux (e na maioria dos outros sistemas, embora o POSIX não lhe ofereça essa garantia, a menos que a movimentação
/usr/bin
tenha ocorrido nos sistemas de arquivos), isso teria atualizado seu tempo de execução, assumindo que nenhum dos outros foi tocado nas últimas 24 horas , você poderá movê-los de volta com:Remova o
echo
que parece certo. Observe que você não poderá recuperar os arquivos que existiam com o mesmo nome/bin
e/usr/bin
(os originais/usr/bin
teriam sido perdidos)Uma ressalva em potencial: se alguns arquivos tiverem um link físico fixo nos dois
/bin
e/usr/bin
, todos os links/usr/bin
físicos serão movidos para/bin
.Agora, você pode pensar que uma vez
/bin
e/usr/bin
estão no padrão$PATH
, e/bin
está disponível em/boot
pelo menos antes/usr
é montado, ele deve não importa se os executáveis estão em/bin
vez de/usr/bin
.Mas isso ignoraria que muitos comandos codificam os caminhos dos executáveis e esperam que eles estejam em algum caso específico. Um caso comum é a franja. Todos os scripts que possuem:
falhará ao trabalhar depois de você
mv /usr/bin/env /bin/env
. Nesse sentido, ter os comandos nos dois locais é mais seguro, pois não quebrará esses scripts.fonte
i
desculpe por isso!) Em sistemas GNU / Linux como o Ubuntu, pode-se usar,find /usr/bin/. ! -name . -prune -ctime -1 -exec echo mv -it /bin {} +
já que o GNU Coreutilsmv
suporta-t
. Outros SOs geralmente não o suportam , nem funcionam de forma alternativamv
fornecida pelo BusyBox .Sua instalação deve estar boa; não deve haver arquivos diferentes com o mesmo nome em
/usr
e/usr/bin
(que responde ao seu 2.1), portanto, ter todos os arquivos nos dois/bin
e/usr/bin
não quebrará nada (até você atualizar os pacotes). O único problema que você pode ter agora são links simbólicos quebrados, se você substituir um binário por um link simbólico. Para corrigir isso, procure links simbólicos quebrados:e reinstale todos os pacotes correspondentes aos arquivos listados (por exemplo, se
/usr/bin/zsh
aparecer como quebrado,dpkg -S /bin/zsh /usr/bin/zsh
informará de qual pacote o arquivo veio; reinstale-o comapt --reinstall install zsh
).Você pode mostrar e classificar por ctime para ver os arquivos que foram alterados recentemente (que incluirão os arquivos que você moveu):
A melhor abordagem para desfazer o que você fez é usar o
cruft
pacote e excluir os arquivos encontrados/bin
ou/usr/bin
que não provêm de um pacote:a menos que os arquivos sejam links simbólicos para arquivos
/etc/alternatives
(nesse caso, você deve deixá-los em paz).fonte
#! /bin/sh
ou similares.sh
em ambos/bin
e/usr/bin
(todos os arquivos estão duplicados agora).cruft
não é necessária para este trabalho porque o gerenciador de pacotes também controla os arquivos instalados. Consulte unix.stackexchange.com/questions/153260/… .comm -12 <(ls /bin) <(ls /usr/bin)
mostre algumas entradas em um sistema Ubuntu em que testei. Alguns com um/bin/foo -> /usr/bin/foo
meiofoo
que teriam sido perdidos.Pode ser educativo explicar exatamente por que seu sistema está, em maior ou menor grau, "quebrado".
/bin
quando eles devem estar/usr/bin
e vice-versa.$PATH
)./bin
e/usr/bin
é que a primeira pode estar em uma partição montada em um estágio anterior da inicialização. Nesse contexto (ou seja, ao inicializar o sistema), não apenas os/bin/xxx
binários provavelmente seriam referidos por um caminho completo, mas o diretório/usr/bin
pode não estar disponível no sistema nesse momento. (Se vocêdf /bin
edf /usr/bin
, você pode ver o mesmo sistema de arquivos listado ou diferentes; provavelmente a maioria das instalações padrão hoje em dia, deixa os dois diretórios na mesma partição).Assim, você pode dobrar de vista que, se você tiver os mesmos binários em ambos
/bin
e/usr/bin
, os problemas 2 e 3 não ocorrerão e o dano de 1 poderá ser menor. Re 1, por exemplo, os pacotes podem não ser desinstalados corretamente se você tentar removê-los; e as atualizações podem ficar distorcidas, se a atualização tentar atualizar a cópia no local 'correto', mas ignora a cópia no local 'errado'. Portanto, se os remédios acima parecerem muito drásticos ou complicados, você poderá deixar o sistema nesse estado.Mas se esse for um sistema importante, eu realmente não apostaria nisso.
A regra geral (mais uma vez ecoando @ Basile-starynkevitch) é nunca macaco com
/usr/bin
,/bin
e amigos - eles 'pertencem' para a distribuição - e um pacote que sugere fazê-lo como parte de sua instalação normal é ... não é um pacote bom.Edit: Relevante ao ponto 3, há uma discussão no contexto do systemd / Fedora e amigos sobre por que faz sentido mover todo o conteúdo de
/bin
para/usr/bin
e vincular o primeiro ao segundo. Isso é não uma recomendação que você fizer isso, você mesmo - essa página é dirigido a pessoas que fazem distribuições - mas inclui alguma história de por que existe esta distinção (e, por implicação, por isso agora é tradição meramente empoeirado).fonte