当前位置: 首页>>技术教程>>正文


ubuntu – 我该如何解决`以下软件包具有未满足的依赖关系`

,

问题描述

我当时使用此脚本来安装基本软件,但由于互联网速度较慢而不得不中断。现在,当我点击$ sudo apt-get install npm时,出现以下错误

yask123@yaskslaptop:~$ sudo apt-get installed npm
E: Invalid operation installed
yask123@yaskslaptop:~$ sudo apt-get install npm
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

最佳答案

使Ubuntu修复未满足的依赖关系和损坏的软件包的命令是

sudo apt-get install -f

从手册页:

-f, –fix-broken Fix; attempt to correct a system with broken dependencies in place. This option, when used with install/remove, can omit any packages to permit APT to deduce a likely solution. If packages are specified, these have to completely correct the problem. The option is sometimes necessary when running APT for the first time; APT itself does not allow broken package dependencies to exist on a system. It is possible that a system’s dependency structure can be so corrupt as to require manual intervention (which usually means using dselect(1) or dpkg –remove to eliminate some of the offending packages)

当您运行命令时,Ubuntu将尝试自行修复。完成后,您可以通过再次运行该命令来测试它是否有效,并且您应该收到类似以下的输出:

Reading package lists… Done Building dependency tree Reading state information… Done 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

次佳答案

如果sudo apt-get install -f <package-name>不起作用,请尝试使用aptitude:

sudo apt-get install aptitude
sudo aptitude install <package-name>

Aptitude将尝试解决问题。

以我为例,在尝试安装libcurl4-openssl-dev时,我仍然收到一些错误:

sudo apt-get install -f libcurl4-openssl-dev

所以我尝试使用智能,结果我不得不降级某些软件包。

The following actions will resolve these dependencies:      Keep the following packages at their current version:     1)     libyaml-dev [Not Installed]                          Accept this solution? [Y/n/q/? (n)  The following actions will resolve these dependencies:      Downgrade the following packages:                                     1)     libyaml-0-2 [0.1.4-3ubuntu3.1 (now) -> 0.1.4-3ubuntu3 (trusty)]  Accept this solution? [Y/n/q/?] (Y) 

第三种答案

首先试试这个

sudo apt-get update
sudo apt-get clean
sudo apt-get autoremove

如果错误仍然存​​在,请执行此操作

sudo apt --fix-broken install
sudo apt-get update && sudo apt-get upgrade
sudo dpkg --configure -a
sudo apt-get install -f

然后再试一次:

sudo apt-get install npm

但是,如果仍然无法解决问题,请使用sudo dpkg --configure -a检查依赖项,然后删除one-by-one。假设依赖项位于npm上,然后再进行此操作,

sudo apt-get remove nodejs
sudo apt-get remove npm

然后转到/etc/apt/sources.list.d并删除所有节点列表(如果有)。然后做一个

sudo apt-get update

然后使用sudo dpkg --configure -a再次检查依赖项问题,如果一切都清楚,那么您就完成了。稍后再次使用此命令安装npm

v=8   # set to 4, 5, 6, ... as needed
curl -sL https://deb.nodesource.com/setup_$v.x | sudo -E bash -

然后安装Node.js包。

sudo apt-get install -y nodejs

在前两个过程对面临依赖的软件包使用相同的过程之后,上面的答案也适用于一般情况(对django等其他软件包的依赖)。

第四种答案

安装nodejs将安装npm …,所以只需删除nodejs然后重新安装它即可:$ sudo apt-get remove nodejs

$ sudo apt-get --purge remove nodejs node npm
$ sudo apt-get clean
$ sudo apt-get autoclean
$ sudo apt-get -f install
$ sudo apt-get autoremove

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7908.html,未经允许,请勿转载。