未满足的依赖关系

未满足的依赖关系

我正在尝试在 Ubuntu 14.04 上安装 npm。它说

npm : Depends: node-gyp (>= 0.10.9) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

我尝试了互联网上的所有解决方案,例如

apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get install -f
apt-get clean
apt-get autoclean
apt-get autoremove
dpkg --configure -a

但我仍然遇到同样的错误。

当我尝试时sudo aptitude install npm它说

The following NEW packages will be installed:
  build-essential{a} g++{a} g++-4.8{a} gyp{a} javascript-common{a} libc-ares-dev{a} libc-ares2{a} libc-dev-bin{ab} libc6-dev{ab} libjs-node-uuid{a} libssl-dev{a} 
  libstdc++-4.8-dev{a} libv8-3.14-dev{a} libv8-3.14.5{a} node-abbrev{a} node-ansi{a} node-archy{a} node-async{a} node-block-stream{a} node-combined-stream{a} 
  node-cookie-jar{a} node-delayed-stream{a} node-forever-agent{a} node-form-data{a} node-fstream{a} node-fstream-ignore{a} node-github-url-from-git{a} node-glob{a} 
  node-graceful-fs{a} node-gyp{a} node-inherits{a} node-ini{a} node-json-stringify-safe{a} node-lockfile{a} node-lru-cache{a} node-mime{a} node-minimatch{a} 
  node-mkdirp{a} node-mute-stream{a} node-node-uuid{a} node-nopt{a} node-normalize-package-data{a} node-npmlog{a} node-once{a} node-osenv{a} node-qs{a} 
  node-read{a} node-read-package-json{a} node-request{a} node-retry{a} node-rimraf{a} node-semver{a} node-sha{a} node-sigmund{a} node-slide{a} node-tar{a} 
  node-tunnel-agent{a} node-which{a} nodejs{a} nodejs-dev{a} npm zlib1g-dev{a} 
0 packages upgraded, 62 newly installed, 0 to remove and 10 not upgraded.
Need to get 25.7 MB of archives. After unpacking 73.8 MB will be used.
The following packages have unmet dependencies:
 libc-dev-bin : Depends: libc6 (< 2.20) but 2.24-17 is installed.
 libc6-dev : Depends: libc6 (= 2.19-0ubuntu6.13) but 2.24-17 is installed.
The following actions will resolve these dependencies:

      Keep the following packages at their current version:
1)      build-essential [Not Installed]                    
2)      g++ [Not Installed]                                
3)      g++-4.8 [Not Installed]                            
4)      libc-dev-bin [Not Installed]                       
5)      libc6-dev [Not Installed]                          
6)      libssl-dev [Not Installed]                         
7)      libstdc++-4.8-dev [Not Installed]                  
8)      node-gyp [Not Installed]                           
9)      nodejs-dev [Not Installed]                         
10)     npm [Not Installed]                                
11)     zlib1g-dev [Not Installed]                         

      Leave the following dependencies unresolved:         
12)     node-gyp recommends build-essential                


Accept this solution? [Y/n/q/?`<br/>

我不明白问题到底是什么。我还尝试查看 synaptic 包管理器,但在损坏的包部分中没有报告任何内容。

好心提醒。

答案1

您尝试安装的 NPM 包来自 Ubuntu Trusty (14.04) 档案,需要早于 2.20 版本的 libc6。Trusty 档案中的 libc6 版本为 2.19,符合要求。

但是,您的系统有 2.24-17 版 libc6,并且该库的来源是一个 .deb 文件,您大概是因为要运行的某些东西需要较新版本的 libc6 而下载并安装了该文件。这显然来自 Debian Wheezy 包:Ubuntu 档案库中没有一个包含该特定库。您可以参考http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/从 2.24-9 升级到 2.26-0,没有相关库。

所以...

你有两个选择,但都不容易:

  1. 您可以确定从 Debian 下载的软件包并将其删除,从而允许您的系统从 Ubuntu 档案中重新安装 libc6。 这可能破坏系统中的某些功能。
  2. 您可以寻找可与 libc6 2.24-17 配合使用的较新版本的 npm,然后安装该软件包这可能安装额外的库可能会破坏系统中的某些功能。

考虑到这个问题的时间范围,安装 npm 似乎对你来说并不重要。我的建议是,如果可能的话,在你的系统中创建一个虚拟机。然后你可以在那台机器上安装一个 Linux 版本,并使用它来加载和运行 npm。

供将来参考,尽管可以加载和安装用于其他发行版的 .deb 包,但并不总是建议这样做。这些包可能具有与 Ubuntu 中提供的包和库冲突的依赖项和库。

相关内容