При каждом обновлении пакетов операционной системы (а также при установке новых пакетов), кроме проверок зависимостей, менеджеры пакетов также проверяют, чтобы не было конфликта файлов. То есть пакет, содержащий файлы, которые уже имеются на диске и не принадлежат этому пакету, не будет обновлён или установлен.
При обычном обновлении системы (Arch Linux, например) командой
sudo pacman -Syu
вы можете столкнуться с ошибкой:
(40/40) проверка конфликтов файлов [######################] 100% ошибка: не удалось завершить транзакцию (конфликтующие файлы) ruby-bundler: /usr/share/man/man5/gemfile.5.gz exists in filesystem (owned by ruby) Обнаружены ошибки, пакеты не обновлены.
Если у вас английская локаль, то ошибка будет следующей:
(8/8) checking for file conflicts [######################] 100% (8/8) checking for file conflicts error: failed to commit transaction (conflicting files) ruby-bundler: /usr/share/man/man5/gemfile.5.gz exists in filesystem (owned by ruby) Errors occurred, no packages were upgraded.
Эта проблема относится к пакету ruby-bundler-2.2.16-1. Суть ошибки в том, что файл gemfile.5.gz уже имеется в файловой системе, он принадлежит пакету ruby, а в новой версии пакета ruby-bundler также присутствует этот файл. В результате обновление не может завершиться из-за конфликтов файлов.
Видимо, эта проблема будет решена в пакете ruby-3.0.1-1, который сейчас находится на стадии тестирования (репозиторий [testing]).
Вам необязательно ждать обновления с ruby 2 до ruby 3, тем более, что этот процесс может затянуться, вы можете использовать один из следующих способов обхода проблемы.
Обратим внимание, что файл /usr/share/man/man5/gemfile.5.gz — это просто файл справки, документации, то есть этот файл не является критически важным для системы.
Вы можете перезаписать этот файл прямо во время обновления, для этого выполните команду:
sudo pacman -Syu --overwrite /usr/share/man/man5/gemfile.5.gz
Связанная статья: Аналог опции --force в pacman
Ещё один вариант — просто удалить этот файл перед обновлением:
sudo rm /usr/share/man/man5/gemfile.5.gz sudo pacman -Syu
Эти способы равнозначны, выберите любой из них чтобы обновить пакеты в операционной системе.
Близкие статьи
- Ошибка «Your Ruby version is 2.6.6, but your Gemfile specified 2.7.2» (РЕШЕНО) (92.8%)
- Аналог опции --force в pacman (59%)
- Ошибка pacman «warning: failed to retrieve some files» (РЕШЕНО) (59%)
- Ошибка «не удалось разрешить зависимость lib32 (32-битной библиотеки)» (РЕШЕНО) (59%)
- Ошибка «не удалось завершить транзакцию (неверный или поврежденный пакет)» (РЕШЕНО) (59%)
- Как узнать, в каком пакете находится файл (RANDOM - 53.9%)