dnf: (что-то) должно было быть установлено, но не установлено!

Вопрос или проблема

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

Все сломалось при попытке установить 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: Файл из пакета уже существует как директория в системе. Это свидетельствует о том, что, возможно, на вашей системе осталось следы старой установки, или были смешаны методы установки, что привело к конфликтам в файловой системе.

Оценка ситуации

  1. Коррупция данных или зеркал:
    Файлы, загруженные с зеркала Fedora, могут быть повреждены. Несмотря на использование контрольных сумм, иногда возникают ошибки.

  2. Конфликт версий:
    Возможен конфликт между существующими и новыми версиями пакетов.

Решение

  1. Проверка целостности пакетов:

    rpm --verify python2-urllib3

    Это действие поможет убедиться, что установленные пакеты не изменены и соответствуют данным в RPM базе данных.

  2. Изменение зеркала:
    Откройте файл /etc/yum.repos.d/fedora-updates.repo, найдите секцию [updates], закомментируйте строку metalink, и добавьте строку baseurl с указанием другого надёжного зеркала. Это действие позволит избежать использования потенциально неисправного перехода.

  3. Очистка кэшей:

    dnf clean all

    Следуйте за этим:

    dnf check-update
  4. Перепроверка и переустановка:
    Если пакета уже нет в списке установленных, используйте:

    rpm -e python2-urllib3 --nodeps

    Попробуйте заново установить:

    dnf install python2-urllib3
  5. Принудительная установка:
    Если предыдущие шаги не помогли, попробуйте принудительно установить пакет:

    rpm --install --force python2-urllib3-1.22-3.fc27.noarch.rpm

    Имейте в виду, что использование опции --force может привести к несоответствиям в системе, поэтому используйте её с осторожностью.

Результаты

Следуя данным шагам, вы сможете устранить проблему конфликта директории и файла, ensuring установка необходимого пакета выполнена корректно. Если ситуация не улучшится, рассмотрите возможность обновления системы до более новой версии или обратитесь за помощью к сообществу Fedora.

Заключение

Тщательная диагностика и исправление репозиториев, а также правильное использование менеджера пакетов помогут вам избежать подобных проблем в будущем. Убедитесь, что ваша система всегда обновлена до актуального состояния, чтобы уменьшить вероятность подобных ошибок.

Оцените материал
Добавить комментарий

Капча загружается...