在Manjaro更新软件包时出现“无法提交事务(冲突文件)”的错误

14

sudo pacman -Syu

我试着在我的Manjaro Linux上使用pacman更新所有的软件包,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采取特定措施,以便我认为这些是全局安装的节点模块被覆盖或类似的东西?

4个回答

19

先删除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

3
什么是man/man1的删除? - altruios

17
你可以运行命令sudo pacman -S npm --overwrite '/usr/lib/node_modules/npm/*'来解决冲突并覆盖文件。在你的情况下,所有冲突文件都位于/usr/lib/node_modules/npm/中,因此*将匹配它们。无需使用rm -r手动删除这些文件,否则会导致软件包处于不一致状态。建议随后使用sudo pacman -Syyu进行更新/升级。

你能提供更多信息吗?这个命令是做什么的? - Tyler2P
它基本上通过覆盖文件来解决冲突。在您的情况下,冲突文件都位于 /usr/lib/node_modules/npm/ 中,因此 * 将匹配所有这些文件。无需使用 rm -r 手动删除它们,否则会使软件包处于不一致状态。最好的做法是使用 sudo pacman -Syyu 更新/升级。 - dreamkinn
2
你能把这个加到你的回答里吗? - Tyler2P
好的解决方案!谢谢 - HappyCoder888

4

只需执行 sudo rm -fr /usr/lib/node_modules 即可。 node_modules 是npm编译的位置,因此只需删除编译内容即可。


这是最简单的解决方案。您不必重新安装npm或node。 - chapani

-3

最好使用这个 ->

pacman -Syu blackarch --overwrite '*'

4
为什么我最好要使用这个? - BDL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接