Erro na atualização do Arch Linux na Digital Ocean

Desde que descobri a Digital Ocean eu fiquei meio que viciado em criar droplets lá. 
A facilidade de criá-los e destrui-los praticamente sob demanda é uma mão na roda.
Mas, sempre temos algumas máquinas que não são laboratórios que podem ser destruidos e sempre ficam on line.
Uma destas minhas máquinas é um Arch Linux.

Gosto muito da distribuição pelo seu formato minimalista e sua tranquilidade de administração.
Mas um problema que eu encontrei na Digital Ocean em relação ao Arch Linux é que as imagens dos Droplets estão desatualizadas.

Então, toda vez que eu ia atualizar a máquina, recebia a seguinte mensagem :

#pacman -Syu

...

error: failed to commit transaction (conflicting files) 
filesystem: /bin exists in filesystem 
filesystem: /sbin exists in filesystem 
filesystem: /usr/sbin exists in filesystem 

Errors occurred, no packages were upgraded. 

Procurando um pouco pela internet dei de cara com um post da própria equipe do Arch Linux.

Ou seja, ao receber o erro, faça o seguinte : 

O comando abaixo pega os arquivos que estão em /bin , /usr/bin e /usr/sbin e move para /usr/bin . Esta é uma lista dos arquivos que não estão ligados a nenhum repositório : 

$ pacman -Qqo /bin /sbin /usr/sbin | pacman -Qm -

Além disso, verifique os pacotes instalados a partir de repositórios não-oficiais, com o comando abaixo :

$ paclist <repo> | awk ' { print $1 } ' | pacman -Ql - | grep ' /s\?bin/\| /usr/sbin/'

Se você tem arquivos em /bin/ , /sbin ou /usr/sbin que não estejam ligados a nenhum pacote você tem que movê-los. Uma lista vai ser gerada com o comando abaixo: 

 

 

 

$ find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null

E finalmente, faça o update :


# pacman -Syu --ignore filesystem,bash # pacman -S bash # pacman -Su

E pronto, sua droplet agora já pode ser atualizada com o comando : 

# pacman -Syu 

A fonte original é este site aqui do Arch Linux: https://www.archlinux.org/news/binaries-move-to-usrbin-requiring-update-intervention/