pacman “existe no sistema de arquivos”

30

Corri sudo pacman -Syu e recebi alguns erros interessantes ao ler:

error: failed to commit transaction (conflicting files)

e uma longa lista de arquivos seguidos por exists in filesystem . A saída completa está aqui: link

Parece que muitos desses arquivos não estão associados a um pacote quando eu os verifiquei com pacman -Qo <path-to-file> , mas não os marquei todos. Tive uma conexão fraca quando executei pacman -Syu , mas recebo os mesmos erros quando atualizo depois: link

O que devo fazer? Devo verificar todos os arquivos e excluir aqueles que não possuem um pacote associado? Devo forçar a atualização (com sudo pacman -S --force <package-name> ?)

Atualizar

Eu tentei executar sudo pacman -S --force <package-name> e consegui isto:

[my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info

Parece que pacman -S --force <package não sobrescreve diretórios que contêm arquivos. Do homem:

Using --force will not allow overwriting a directory with a file or installing packages with conflicting files and directories.

Devo apenas excluir os diretórios conflitantes? (eles não têm pacotes associados)

    
por modulitos 02.11.2015 / 12:31

3 respostas

21

Ok, parece que a execução de sudo pacman -S --force <package-name> funciona, mas não resolve diretórios conflitantes. Nesses casos, executar sudo rm -rf nos diretórios conflitantes, seguido por sudo pacman -S --force <package-name> funciona.

Agora meu pacman -Syu resolve bem.

    
por 02.11.2015 / 12:43
17

tl; dr: Desinstale o aplicativo conflitante antes de executar pacman .

pacman (e outros gerenciadores de pacotes) mantêm um índice de pacotes e arquivos que gerenciam ( pacman --query --list ). Alguns arquivos, como a configuração, serão marcados como modificáveis e não serão sobrescritos durante a atualização (exceto em circunstâncias especiais, em que o gerenciador de pacotes normalmente removerá o arquivo antigo antes de criar o novo). Outros arquivos serão marcados como não modificáveis. Se outro aplicativo alterar esses arquivos de alguma forma sem atualizar o índice de acordo, não há como o gerenciador de pacotes saber o que fazer com esses arquivos durante uma atualização.

Muitos aplicativos instalados usando o padrão ./configure && make && sudo make install padrão podem ser desinstalados usando sudo make uninstall . Se você instalou o aplicativo de alguma outra maneira, talvez precise fazer alguma outra coisa para desinstalá-lo. Em geral, pode ser uma boa ideia manter uma cópia dos arquivos de instalação em algum lugar (por exemplo, ~/install ) para poder desinstalá-los de forma confiável nesses casos. Apenas remover os arquivos conflitantes provavelmente deixará outros arquivos por aí, o que poderia causar outros problemas.

Ao instalar o software com outros gerenciadores de pacotes, existem maneiras de isolá-los dos arquivos do sistema. Essa é uma prática recomendada estabelecida, por exemplo, durante o desenvolvimento de software, na qual você realmente deseja manter as versões consistentes e evitar conflitos com outro software. Exemplos incluem:

por 02.11.2015 / 13:57
1

Eu estava instalando pacotes que normalmente instalo com pip via pacman por causa disso. Mas alguns pacotes não são encontrados em repositórios pacman. Acho que devemos evitar instalar o pip com privilégios sudo e istead:

pip install pillow --user

- o flag do usuário faz com que o pip instale pacotes em seu diretório home, o que não requer nenhum privilégio especial. link

    
por 25.07.2018 / 18:48