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

Поскольку я полагаю, что zentyal идет с интегрированной поддержкой фырканья IDS, Вы могли добавить правило фырканья, которое обнаруживает и блокирует пакет SSL, который содержит сертификат сервера на основе общего названия, которое содержит facebook.com. Это могло также обратиться к доступам через прокси (как долго, поскольку соединение с самим прокси не шифруется).

Другой подход мог быть должен вызвать весь трафик DNS через Ваш сервер DNS (трафик домена блока кроме к Вашему серверу DNS) и возвратиться, что-то поддельное для запросов любого домена facebook.com (не остановит доступ через прокси хотя).

39
02.11.2015, 13:31
8 ответов

После того, как pacman окончательно отказался от опции --forceи заставил суррогатную опцию --overwriteработать как положено, следует отметить следующий шаблон использования.

Команда для воспроизведения опции --force, которая слепо перезаписывает все, что конфликтует, это:

sudo pacman -S --overwrite \* <package_name>

Или

sudo pacman -S --overwrite "*" <package_name>

Сложность заключается в экранировании подстановочного знака, чтобы оболочка не расширила его первым.

59
27.01.2020, 19:35

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

Теперь мой pacman -Syu разрешается хорошо.

30
27.01.2020, 19:35

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

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

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

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

22
27.01.2020, 19:35

TLDR;

  1. Получите список проблемных файлов (скопируйте и вставьте вывод pacman в файл ).
  2. Используйте awk , чтобы вырезать все, кроме путей к файлам, в новый список.
  3. Используйте и для удаления проблемных файлов в зависимости от списка.
  4. Запустите sudo pacman -Syuеще раз.

    отредактировано для добавления TLDR и исправления опечаток

Хотя я почти уверен, что не делал ничего глупого, у меня была эта проблема, может быть, каждый второй раз, когда я пытался обновить, так как я использую Manjaro; три-четыре раза в течение двух месяцев. Дело в том, что это исправляет это.

Получите список ваших файлов.

При сбое обновления в окне терминала вы получаете это:

error: failed to commit transaction (conflicting files)
evilfile: /usr/bin/evilfile exists in filesystem
libx000: /usr/lib/libx000.so.f.u.loser exists in filesystem
accountsservice: /usr/share/locale/ru/LC_MESSAGES/accounts-service.mo.yu.dnt.evn.spk.russian exists in filesystem

... и многое другое.

  • Скопируйте вывод из терминала и поместите его в файл. Я использовал nano и назвал свои «файлы», как в~/work/files .

  • Удаление лишней информации:

    cat files | awk '{print $2}' >> ~/work/files2

    Это берет второе «слово» из каждой строки и печатает его в файлы2.

Разберитесь с файлами

  • Вы можете удалить их, переместить или переименовать.

  • Если что-то ломается, проще всего это исправить, если мы сломаем это, переместив это, а не удаляя или переименовывая:
    mkdir ~/work/oldfiles while read -r file; do sudo mv -- "$file" ~/work/oldfiles/$file; done < files2

  • Если вы действительно хотите удалить их, для чего нет причин(ОПАСНОСТЬ ОПАСНОСТЬ):при чтении -r файла; сделать sudo rm --"$file";сделано < файлы2

Обновление

  • Чтобы заставить --перезаписывать работать, что нам нужно сделать, чтобы pacman понял, что пакет не сломан, вам нужен следующий синтаксис:

    sudo pacman -S package_name --overwrite /location/of/thing

    • В моем случае:sudo pacman -S libidn2 --overwrite /usr/lib/libidn2.so.0
    • По примеру:sudo pacman -S libx000 --overwrite /usr/lib/libx000.so.f.u.loser
  • У меня была забавная проблема: если я удалял символическую ссылку libidn2.so.0, ничего не работало, а когда я возвращал ее обратно, я получал ошибку «существует в файловой системе». Вышеприведенное с перезаписью --— это все, что сработало для меня.

  • Наконец:

    sudo pacman -Syu

3
27.01.2020, 19:35

Если у вас много файлов, как у меня,

sudo pacman --force -Syyu  

решает все проблемы.

0
27.01.2020, 19:35

Из-за этого я устанавливал пакеты, которые обычно устанавливал с помощью pip через pacman. Но некоторые пакеты не найдены в репозиториях pacman. Я думаю, нам следует избегать установки pip с привилегиями sudo и вместо этого:

pip install pillow --user

--флаг пользователя вместо этого заставляет pip устанавливать пакеты в ваш домашний каталог, что не требует каких-либо специальных привилегий.https://stackoverflow.com/questions/42988977/what-is-the-purpose-pip-install-user

3
27.01.2020, 19:35

если конфликтующие файлы/файл уже существует. сделайте следующее.

pacman -Qo "path_to_file"

Если вывод «Этот файл не принадлежит ни одному пакету», вы можете удалить файл без каких-либо проблем.

обычно я получаю сообщение об ошибке «файл уже существует» в /usr/lib/python3.8/"папке _X"/.... поэтому я бегу pacman -Qo /usr/lib/python3.8/folder_Xкоторые обычно возвращают «Ни один пакет не владеет этим файлом», и я просто удаляю его.

sudo rm -rf /usr/lib/python3.8/folder_X

До сих пор у меня не было ситуации, когда файл или папка фактически принадлежали пакету. так что не могу посоветовать что делать в такой ситуации.

Надеюсь, это поможет

0
16.04.2020, 07:54

Правильный способ обновить и перезаписать конфликтующие пакеты:

sudo pacman --overwrite "*" -Syu
6
18.11.2020, 19:29

Теги

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