Вопрос или проблема
Я вижу, что это ошибка, которая возникла здесь и там для некоторых пакетов, но я не нашел решения, которое бы сработало для меня.
Все сломалось при попытке установить Jupyter с помощью dnf install python2-qtconsole python2-jupyter-core
, когда я обнаружил, что python2-urllib3 выдает ошибку при попытке установки. Теперь всякий раз, когда я выполняю: dnf install python2-urllib3
, я получаю:
Зависимости разрешены.
========================================================================================================================================
Пакет Архитектура Версия Репозиторий Размер
========================================================================================================================================
Установка:
python2-urllib3 noarch 1.22-3.fc27 updates 178 k
Итог:
========================================================================================================================================
Установка 1 пакета
Общий размер скачивания: 178 k
Размер после установки: 678 k
Продолжить [y/N]: y
Загрузка пакетов:
python2-urllib3-1.22-3.fc27.noarch.rpm 78 kB/s | 178 kB 00:02
----------------------------------------------------------------------------------------------------------------------------------------
Всего 53 kB/s | 178 kB 00:03
Выполнение проверки транзакции
Проверка транзакции выполнена успешно.
Выполнение теста транзакции
Тест транзакции выполнен успешно.
Выполнение транзакции
Подготовка : 1/1
Установка : python2-urllib3-1.22-3.fc27.noarch 1/1
Ошибка при распаковке пакета rpm python2-urllib3-1.22-3.fc27.noarch
Ошибка при распаковке пакета rpm python2-urllib3-1.22-3.fc27.noarch
ошибка: распаковка архива не удалась, файл /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: Файл из пакета уже существует как каталог в системе
python2-urllib3-1.22-3.fc27.noarch должен был быть установлен, но не был!
Проверка : python2-urllib3-1.22-3.fc27.noarch 1/1
Не удалось:
python2-urllib3.noarch 1.22-3.fc27
Ошибка: транзакция не удалась
Я попробовал все это
dnf clean all
yum clean all && rpm --rebuilddb
package-cleanup --problems
rpm -e python3-urllib3-1.22-3.fc27.noarch --nodeps
rpm -i python2-urllib3-1.22-3.fc27.noarch.rpm
… и идеи быстро заканчиваются …
Проблема, похоже, в том, что:
cpio: Файл из пакета уже существует как каталог в системе
В Fedora VM, которую я использую для тестирования, этот путь:
/usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname
На самом деле является каталогом, и установка прошла успешно. Так что, я думаю, вы используете поврежденный пакет с этого зеркала, я был под впечатлением, что Fedora делает контрольные суммы для загружаемых пакетов, я не знаю точно, если они это делают, то это маловероятно. Вы можете проверить пакет с помощью:
rpm --verify $package_name
Несколько идей:
Измените ваше зеркало в /etc/yum.repos.d/fedora-updates.repo
для секции [updates]
,
закомментируйте metalink
и укажите baseurl
с выбранным вами зеркалом, я предлагаю скопировать строку baseurl
и затем раскомментировать ее, чтобы вы могли позже восстановить файл репозитория в его первоначальное состояние.
После этого, еще раз выполните dnf clean all
, dnf check-update
, dnf reinstall ...
.
Когда вы убедитесь, что у вас есть действительный пакет, если dnf не справляется с задачей, попробуйте некоторые дополнительные параметры для rpm --install
, такие как --force
. Я также заметил, что вы rpm --erased
версию python3, а не python2, которая является проблемой, но это может быть опечаткой, которую вы сделали при постановке вопроса, проверьте ваш $ history
.
Это все, что я могу сказать без дополнительных журналов.
Ответ или решение
Ваша проблема связана с ошибкой установки пакета python2-urllib3
на Fedora, где система сообщает о наличии файла в виде директории, что мешает распаковке RPM-пакета. Давайте рассмотрим шаги, которые могут помочь решить эту проблему.
Фокус на проблеме
Ваши попытки установки завершались с ошибкой: cpio: Файл из пакета уже существует как директория в системе
. Это свидетельствует о том, что, возможно, на вашей системе осталось следы старой установки, или были смешаны методы установки, что привело к конфликтам в файловой системе.
Оценка ситуации
-
Коррупция данных или зеркал:
Файлы, загруженные с зеркала Fedora, могут быть повреждены. Несмотря на использование контрольных сумм, иногда возникают ошибки. -
Конфликт версий:
Возможен конфликт между существующими и новыми версиями пакетов.
Решение
-
Проверка целостности пакетов:
rpm --verify python2-urllib3
Это действие поможет убедиться, что установленные пакеты не изменены и соответствуют данным в RPM базе данных.
-
Изменение зеркала:
Откройте файл/etc/yum.repos.d/fedora-updates.repo
, найдите секцию[updates]
, закомментируйте строкуmetalink
, и добавьте строкуbaseurl
с указанием другого надёжного зеркала. Это действие позволит избежать использования потенциально неисправного перехода. -
Очистка кэшей:
dnf clean all
Следуйте за этим:
dnf check-update
-
Перепроверка и переустановка:
Если пакета уже нет в списке установленных, используйте:rpm -e python2-urllib3 --nodeps
Попробуйте заново установить:
dnf install python2-urllib3
-
Принудительная установка:
Если предыдущие шаги не помогли, попробуйте принудительно установить пакет:rpm --install --force python2-urllib3-1.22-3.fc27.noarch.rpm
Имейте в виду, что использование опции
--force
может привести к несоответствиям в системе, поэтому используйте её с осторожностью.
Результаты
Следуя данным шагам, вы сможете устранить проблему конфликта директории и файла, ensuring установка необходимого пакета выполнена корректно. Если ситуация не улучшится, рассмотрите возможность обновления системы до более новой версии или обратитесь за помощью к сообществу Fedora.
Заключение
Тщательная диагностика и исправление репозиториев, а также правильное использование менеджера пакетов помогут вам избежать подобных проблем в будущем. Убедитесь, что ваша система всегда обновлена до актуального состояния, чтобы уменьшить вероятность подобных ошибок.