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

#node.js #linux #archlinux #manjaro #pacman-package-manager

Вопрос:

sudo pacman -Syu

Я пытаюсь обновить все пакеты с помощью pacman в моем Manjaro Linux, и pacman обязательно делает все, чтобы загрузить последние обновления всех доступных пакетов, и после проверки на наличие конфликтов файлов он выдает

 ...
(126/126) checking keys in keyring  100%
(126/126) checking package integrity 100%
(126/126) loading package files 100%
(126/126) checking for file conflicts
error: failed to commit transaction (conflicting files)
npm: /usr/lib/node_modules/npm/lib/exec/get-workspace-location-msg.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/@npmcli/git/lib/utils.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/balanced-match/.github/FUNDING.yml exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/just-diff/index.d.ts exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/just-diff/index.tests.ts exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/CHANGELOG.md exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/LICENSE exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/README.md exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/cache-install-dir.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/get-bin-from-manifest.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/index.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/manifest-missing.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/no-tty.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/lib/run-script.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/libnpmexec/package.json exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/proc-log/LICENSE exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/proc-log/README.md exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/proc-log/index.js exists in filesystem
npm: /usr/lib/node_modules/npm/node_modules/proc-log/package.json exists in filesystem
Errors occurred, no packages were upgraded.
 

Должен ли я делать что-то конкретное для node_modules, которые, как я предполагаю, являются глобально установленными модулями узлов, которые должны быть перезаписаны или что-то в этом роде?

Ответ №1:

Сначала удалите пакет npm, а затем удалите каталог node_modules.Это обходной путь, который я использовал для выполнения этой работы. Однако я не уверен, что это правильное решение. Вы можете сделать что-то подобное, прежде чем выполнить полное обновление, а затем снова установить npm.

 $ sudo pacman -Rns npm
$ sudo rm -R /usr/lib/node_modules/npm/
$ sudo rm -R /usr/share/man/man1/
$ sudo pacman -Syyu
$ sudo pacman -S npm
 

Ответ №2:

Просто sudo rm -fr /usr/lib/node_modules тоже будет работать. node_modules это то, куда npm компилирует материалы, поэтому просто удалите содержимое компиляции.

Комментарии:

1. это самое простое решение. Вам не нужно заново устанавливать npm или узел.

Ответ №3:

Ты можешь sudo pacman -S npm --overwrite '/usr/lib/node_modules/npm/*'

Комментарии:

1. Не могли бы вы предоставить более подробную информацию? Что делает эта команда?

2. Он в основном разрешает конфликты путем перезаписи файлов. В вашем случае все конфликтующие файлы находятся в /usr/lib/node_modules/npm/, поэтому * будет соответствовать всем из них. Нет необходимости удалять их вручную, rm -r что оставило бы пакет в несогласованном состоянии. Рекомендуется обновлять/обновлять после с sudo pacman -Syyu

3. Не могли бы вы добавить это к своему ответу?