Acabei de atualizar meu sistema do Debian 11 para 12, seguindo este guia do cyberciti . Este sistema foi mantido atualizado por mais de 9 anos, então já passou por pelo menos 4 grandes atualizações (Debian 7 ou 8 a 12 hoje).
Durante a primeira execução do apt upgrade --without-new-pkgs
, tive um erro libudev
(infelizmente esqueci de manter a saída do comando), que consertei removendo 2 arquivos:
$ rm /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1.6.5
Consegui terminar a atualização e reiniciar.
Ao realizar uma investigação mais aprofundada, parece que meu sistema tem algumas outras bibliotecas duplicadas:
$ dpkg --search /lib/x86_64-linux-gnu/perl/ /usr/lib/x86_64-linux-gnu/perl/
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/perl/
libperl5.36:amd64: /usr/lib/x86_64-linux-gnu/perl
Parece que esses diretórios não são links simbólicos:
$ ls -ld /lib/ /lib/x86_64-linux-gnu/ /usr/ /usr/lib/ /usr/lib/x86_64-linux-gnu/
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /lib/x86_64-linux-gnu//
drwxr-xr-x 12 root root 4.0K Jul 5 20:32 /usr//
drwxr-xr-x 84 root root 4.0K Jul 5 21:05 /usr/lib//
drwxr-xr-x 78 root root 96K Jul 5 21:05 /usr/lib/x86_64-linux-gnu//
Eu já tive um problema muito semelhante antes: Não é possível restaurar o systemd após a atualização do Debian 10 para 11: “símbolo indefinido: seccomp_api_get”
Aqui estão as perguntas:
- É normal ter bibliotecas duplicadas
/lib/x86_64-linux-gnu/
e/usr/lib/x86_64-linux-gnu/
- Posso confiar na saída
dpkg --search
e excluir os caminhos exibidosno path found …
? Ou alguma ferramenta pode me ajudar a limpar essa bagunça? - Quais eventos no meu sistema poderiam ter tornado isso possível?
Atualização: na verdade, parece que 2 diretórios são idênticos:
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
ls: cannot access '/lib/x86_64-linux-gnu/test.ignore': No such file or directory
ls: cannot access '/usr/lib/x86_64-linux-gnu/test.ignore': No such file or directory
$ touch /lib/x86_64-linux-gnu/test.ignore
$ ls -lh /lib/x86_64-linux-gnu/test.ignore /usr/lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /lib/x86_64-linux-gnu/test.ignore
-rw-r--r-- 1 root root 0 Jul 5 22:14 /usr/lib/x86_64-linux-gnu/test.ignore
Mas não entendo como funciona. E agora eu sei que não devo excluir arquivos /lib/x86_64-linux-gnu/
porque isso também excluiria arquivos /usr/lib/x86_64-linux-gnu/
.
Se você deseja ver um link simbólico, não deve adicionar
/
:deve mostrar um resultado diferente.
O Debian 12 impõe um “merged
/usr
” , a “duplicação” que você está vendo é normal.Com a ajuda da resposta de Stephen Kitt, aqui estão as respostas para minha pergunta:
Sim, existe um link simbólico:
Não, usando
dpkg --search
on/lib
dá resultados irrelevantes:A remoção do arquivo
/lib/x86_64-linux-gnu/perl/cross-config-5.36.0/Config.pm
removeria o arquivo em/usr/lib
, o que pode interromper todo o sistema.Conforme explicado no link compartilhado por Stephen, o link simbólico de
/lib
para/usr/lib/
é normal no Debian 12.