在linux上安装软件时如何解决循环依赖关系?

在linux上安装软件时如何解决循环依赖关系?,linux,google-chrome,installation,ubuntu-14.04,circular-dependency,Linux,Google Chrome,Installation,Ubuntu 14.04,Circular Dependency,我是计算机界的新手我的目的是找出一种通用方法,在Linux上安装新软件时解决循环依赖关系(如果存在)。在这里,我用谷歌浏览器的例子来更好地说明我的问题。在安装Google chrome(使用package manager和apt get)时,我遇到以下问题: Selecting previously unselected package google-chrome-stable. (Reading database ... 262709 files and directories current

我是计算机界的新手我的目的是找出一种通用方法,在Linux上安装新软件时解决循环依赖关系(如果存在)。在这里,我用谷歌浏览器的例子来更好地说明我的问题。在安装Google chrome(使用package manager和apt get)时,我遇到以下问题:

Selecting previously unselected package google-chrome-stable.
(Reading database ... 262709 files and directories currently installed.)
Preparing to unpack google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (55.0.2883.87-1) ...
dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.
为了解决上述错误,我尝试安装
libappindicator1
,但这会返回另一个依赖项错误:

The following packages have unmet dependencies:
libappindicator1 : Depends: libindicator7 (>= 0.4.90) but it is not going to be installed
现在我们遇到循环依赖。尝试安装libindicator7时,收到以下错误:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 google-chrome-stable : Depends: libappindicator1 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
正如您所看到的,由于依赖关系,我无法安装该软件包。现在一种方法是使用apt get-f install,让Linux神奇地完成它的工作。但这并不能教会我很多。使用这个例子(或者建议一个更好的例子),我们能想出一个更好的方法来解决循环依赖的问题吗?如果这是安装新软件时循环依赖的独立案例,或者我在解释错误时出错,那么我可以删除该问题

一些有用的链接-


[1] :[2]:[3]:[4]:

问题是使用dpkg安装google chrome stable。DPKG现在确实安装了所需的依赖项,并使系统处于断开状态

sudo apt install ./google-chrome-stable.deb
这将安装具有所需依赖项的包

dpkg
只安装一个软件包,这样做
dpkg-i packageName.deb
将只安装此deb软件包,并将通知您需要安装的任何依赖项,但不会安装它们,它不会配置packageName.deb,因为依赖项不存在


apt
是一个包管理系统,用于在基于Debian的Linux发行版上安装Deb包。软件包管理系统是一组工具,可以帮助您轻松地安装、删除和更改软件包。因此,
apt
就像一个聪明的
dpkg

问题是如何使用dpkg安装谷歌浏览器稳定。DPKG现在确实安装了所需的依赖项,并使系统处于断开状态

sudo apt install ./google-chrome-stable.deb
这将安装具有所需依赖项的包

dpkg
只安装一个软件包,这样做
dpkg-i packageName.deb
将只安装此deb软件包,并将通知您需要安装的任何依赖项,但不会安装它们,它不会配置packageName.deb,因为依赖项不存在


apt
是一个包管理系统,用于在基于Debian的Linux发行版上安装Deb包。软件包管理系统是一组工具,可以帮助您轻松地安装、删除和更改软件包。因此,
apt
就像一个聪明的
dpkg
dpkg
是自由操作系统Debian及其众多衍生产品中软件包管理系统的基础。dpkg用于安装、删除和提供有关.deb包的信息。dpkg(Debian软件包)本身是一个低级工具。[1]

APT
(适用于高级软件包工具)是一套用于管理Debian软件包的工具,因此也适用于管理安装在Debian系统上的应用程序。APT使安装应用程序、删除应用程序、使应用程序保持最新等成为可能。[2]

因此,如果您在安装过程中一步一步地移动

  • 下载
    .deb
    包后,您可以将其解压缩。解压缩包含的control.tar.gz文件。您将找到一组所有必需的包

  • 查找特定Debian包的所有依赖项。对于谷歌chrome,你会有类似

  • 软件包:谷歌浏览器稳定
    版本:55.0.2883.87-1
    架构:amd64
    维护者:ChromeLinux团队
    安装尺寸:175549
    前置取决于:dpkg(>=1.14.0)
    取决于:gconf服务,libasound2(>=1.0.16)1.0-0(>=1.12.4)、libatk1.0-0(>=1.12.4.4)、libc6(>=2.11)、libc6(>=2.11.11)、libc6(>=2.11.11)、libc6(>=2.11)、libcairo2(>=1.6.6.0)、libcairo2(>=1.6.0.0)、libcairo2(>=1.0(>=1.2(>=1.6.6.0.0.0)、libcairo2(>=1.2(>=1.2(>=1.2(>=1.6.6.0)、libcairo2(>=1.6.0(>=1.2(>=1.2(>=2(>=1.6.1.6.6.0)、libcairo2(26.0),libgtk2.0-0(2.24.0)libnspr4(1.8.0.10)libnspr4-0d(1.8.0.10)libnspr4(1.8.0.10)libnspr4(4.9.5.5-0 0 0)libnspr4(4.9.9.5-0-0-0)libnspr4(4(4.9.9.5-0-0-0-0)ubuntububuuntu0)、libnssR4(4(4(4(4(4(4.9.9.9.9.5-0.5-0-0-0-0-0-0-0)libnsp4(4(4(4(4.9.9.9.5-0-0-0-0-0-0-0-0-0-0)、libnsp4(4-0-0-0-0-0-0-0-0-0)libnsp4(4(>>1.1.2),libxdamage1(>=1:1.1),libxext6,libxfixes3,libxi6(>=2:1.2.99.4),libxrandr2(>=2:1.2.99.3),libxrender1,libxss1,libxtst6,ca证书,字体解放,libappindicator1,libnss3(>=3.17.2),lsb base(>=4.1),xdg utils(>=1.0.2),wget
    提供:www浏览器
    章节:网络
    优先级:可选
    描述:来自谷歌的网络浏览器
    Google Chrome是一款浏览器,它结合了简约的设计和先进的技术,使网络更快、更安全、更简单。
    
  • 您需要安装该特定软件包的所有依赖项。每个依赖项可能依赖于一组其他依赖项。您将有一个这些依赖项的树。您可以手动安装所有这些依赖项,或者使用类似于
    apt
    yum
    aptitude

  • 这些包管理器中的任何一个都会为您做的是,在安装Debian包之前,他们会为您构建一个依赖关系树,并安装所有相关的包

  • 因此,理想情况下,依赖关系树中不应该有任何循环,但可能是某些现有软件包已经安装并且在较新/较旧的版本中