Ошибка pacman "существует в файловой системе"

Я запустил sudo pacman -Syu, и у меня появилось несколько интересных ошибок:

  

ошибка: не удалось зафиксировать транзакцию (конфликтующие файлы)

и длинный список файлов, за которыми следует exists in filesystem. Полный вывод находится здесь: http://ix.io/lLw

Похоже, что многие из этих файлов не связаны с пакетом, когда я проверил их с помощью pacman -Qo <path-to-file>, но я не проверял их все. У меня было слабое соединение, когда я запускал pacman -Syu, но я получаю те же ошибки, когда обновляюсь позже: http://ix.io/lLx

Что мне делать? Должен ли я проверять все файлы и удалять те, у которых нет связанного пакета? Должен ли я принудительно обновлять (с помощью sudo pacman -S --force <package-name>?)

Обновление

Я попытался запустить sudo pacman -S --force <package-name> и получил следующее:

[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

Похоже, что pacman -S --force <package не перезаписывает каталоги, содержащие файлы. От человека:

  

Использование --force не позволит перезаписывать каталог с файлом или устанавливать пакеты с конфликтующими файлами и каталогами.

Должен ли я просто удалять конфликтующие каталоги? (у них нет связанных пакетов)

26 голосов | спросил modulitos 2 12015vEurope/Moscow11bEurope/MoscowMon, 02 Nov 2015 14:31:10 +0300 2015, 14:31:10

2 ответа


19

Хорошо, похоже, что работает sudo pacman -S --force <package-name>, но он не разрешает конфликтующие каталоги. В таких случаях запуск sudo rm -rf в конфликтующих каталогах, за которыми следует sudo pacman -S --force <package-name> работает.

Теперь мой код pacman -Syu хорошо разрешен.

ответил modulitos 2 12015vEurope/Moscow11bEurope/MoscowMon, 02 Nov 2015 14:43:44 +0300 2015, 14:43:44
17

tl; dr: удалите конфликтующее приложение перед запуском pacman.

pacman (и другие менеджеры пакетов) сохраняют индекс пакетов и файлов , которыми они управляют ( ---- +: = 2 = + ----). Некоторые файлы, такие как конфигурация, будут помечены как модифицируемые и не будут перезаписаны во время обновления (за исключением особых обстоятельств, когда диспетчер пакетов обычно удаляет старый файл перед созданием нового). Другие файлы будут помечены как не поддающиеся изменению. Если другое приложение каким-либо образом изменяет эти файлы без обновления индекса, менеджеру пакетов не будет знать, что делать с этими файлами во время обновления.

Многие приложения, установленные с использованием стандартного шаблона pacman --query --list, могут быть удалены с помощью ./configure && make && sudo make install . Если вы установили приложение каким-либо другим способом, вам может понадобиться что-то еще, чтобы удалить его. В общем случае может быть хорошей идеей сохранить копию установочных файлов где-нибудь (например sudo make uninstall), чтобы быть в состоянии надежно удалить их в таких случаях. Просто удаление конфликтующих файлов, вероятно, оставит другие файлы, которые могут вызвать другие проблемы.

При установке программного обеспечения с другими менеджерами пакетов есть способы изолировать их от системных файлов. Это эффективная практика, например, во время разработки программного обеспечения, где вы действительно хотите поддерживать совместимость версий и избегать конфликтов с другим программным обеспечением. Примеры включают:

ответил l0b0 2 12015vEurope/Moscow11bEurope/MoscowMon, 02 Nov 2015 15:57:26 +0300 2015, 15:57:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132