Debian:需要一些解释 apt 正在做什么

Debian:需要一些解释 apt 正在做什么

我有一个 jessie debian 系统(更准确地说是 devuan)。我现在尝试从 jessie-backports 和 jessie-security 版本获取软件包。

但我不明白 apt 在做什么。

这就是我真正想弄清楚的: apt 在这里想告诉我什么?

我知道如何强制升级到 ASCII。我现在还设法强制我的系统使用 jessie-backports;我仍然不知道 apt 在下面的描述中试图告诉我什么。

我想弄清楚 apt 的问题是什么,因为我很确定我将来会看到同样的问题(实际上我只是在另一个系统上做的)。所以无论谁比我更了解 apt,如果你知道:请尝试解释会发生什么......

我首先从 gcc 开始:

# apt-cache policy libgcc1 gcc-4.9-base
libgcc1:
  Installed: 1:4.9.2-10
  Candidate: 1:4.9.2-10+deb8u1
  Version table:
     1:6.3.0-18+deb9u1 0
        500 http://de.mirror.devuan.org/merged/ ascii/main amd64 Packages
     1:4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 1:4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status
gcc-4.9-base:
  Installed: 4.9.2-10
  Candidate: 4.9.2-10+deb8u1
  Version table:
     4.9.2-10+deb8u1 0
        991 http://de.mirror.devuan.org/merged/ jessie-security/main amd64 Packages
 *** 4.9.2-10 0
        600 http://de.mirror.devuan.org/merged/ jessie/main amd64 Packages
        100 /var/lib/dpkg/status

正如你所看到的,我有一些固定到位。据我了解,我认为“991”意味着只要它是新的就使用这个包。这是我的完整固定配置:

/etc/apt/preferences.d# cat *

Package: *
Pin: release a=jessie-backports
Pin-Priority: 991

Package: *
Pin: release a=jessie-security
Pin-Priority: 991

Package: *
Pin: release a=stable
Pin-Priority: 600

Package: *
Pin: release a=ascii
Pin-Priority: 550

Package: *
Pin: release a=jessie-updates
Pin-Priority: 560

它还接缝了“候选:”行,表明 apt 现在将从“jessie-security”切换到稍新的软件包。

所以第一个惊喜是:

# apt-get install -s gcc-4.9-base
The following packages have unmet dependencies:
 libgcc1 : Depends: gcc-4.9-base (= 4.9.2-10) but 4.9.2-10+deb8u1 is to be installed

我认为通过上述固定 apt 会自动从 jessie-security 中引入 libgcc1 ,因此可以解决上述未满足的依赖关系。

这是怎么回事?

下一个问题:

# apt-get install -s libgcc1 gcc-4.9-base
The following packages were automatically installed and are no longer required:
  antiword crda cups-pk-helper eclipse-cdt-jni eclipse-platform-data
  espeak-data fastjar firebird2.5-common firebird2.5-common-doc
  fonts-freefont-ttf fonts-opensymbol gir1.2-atk-1.0 gir1.2-atspi-2.0
  gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0
...

搞什么?

这肯定不是真的。显然我完全不明白这里的一些东西。更糟糕:

The following extra packages will be installed:
  cpp-4.9 gettext-base lib32gcc1 lib32stdc++6 libatomic1 libegl1-mesa-drivers
  libgfortran3 libgomp1 libitm1 libobjc4 libosgi-compendium-java libquadmath0
  libsoxr0
Suggested packages:
  gcc-4.9-locales libosgi-compendium-java-doc
The following packages will be REMOVED:
  adwaita-icon-theme ant ant-optional apt apt-file apt-listchanges
  apt-show-versions apt-transport-https apt-utils aptitude aspectj aspell
  aspell-de aspell-en astyle build-essential ca-certificates-java chromium
  claws-mail claws-mail-i18n claws-mail-pdf-viewer claws-mail-pgpinline
...

所以这个“apt-get install”命令将删除我系统的一半。

我完全不明白这里发生了什么事......

有人可以解释一下吗?

编辑:有人提到我不应该使用混合版本。我不认为这与我的问题有任何关系。但可以肯定的是:我删除了所有 ASCII 源并删除了所有 ASCII 相关的固定,并将我拥有的几个软件包从 ASCII 降级回 JESSIE。所有这些都不会改变一件事:如果我执行

apt-get install -s libgcc1 gcc-4.9-base

apt 报告说它将删除我系统的一半。

为什么 ?

还有问题的第一部分:如果我只使用 apt 为什么不会自动解决对 libgcc1 的依赖

apt-get install -s gcc-4.9-base

答案1

你有一个混合的sources.list:Jessie 和ascii(拉伸)。

从你的文件中删除asciisources.list

从文件中删除以下行preferences

Package: *
Pin: release a=ascii
Pin-Priority: 550

跑步 :

apt-get update
apt-get dist-upgrade

什么是未满足的依赖关系

如果在包安装过程中不满足某些依赖关系,则安装将失败。这libgcc1 (1:6.3.0-18+deb9u1)取决于gcc-6-base v= 6.3.0-18+deb9u1 的确切版本。当前安装的版本是6.3.0-18

如何解决未满足的依赖关系?

在您的情况下,将 pin 优先级附加1001到旧的稳定版本,它将升级/降级您的软件包到 jessie。

Package: *
Pin: release a=jessie-security
Pin-Priority: 1001

Package: *
Pin: release a=stable
Pin-Priority: 1001

Package: *
Pin: release a=jessie-updates
Pin-Priority: 1001

然后升级你的包。

apt-get update
apt-get dist-upgrade

在某些情况下,您应该使用要安装的软件包的确切版本来解决未满足的依赖关系问题:

apt-get install gcc-4.9-base=4.9.2-10+deb8u1
apt-get install libgcc1

为什么很多包会被删除?

apt install 一个包及其依赖项,如果要删除该包,这些包将变得不必要并自动删除。

APT 告诉您哪些软件包不再需要

随着时间的推移,一些自动安装的软件包变得不再需要,因为依赖它们的软件包不再需要。他们可能正在使用同一库的较新版本,或者他们改用其他库,或者他们能够自己完成任务。


要将 devuan 升级到 ascii ,请/etc/apt/sources.list通过仅添加以下行来编辑:

deb http://pkgmaster.devuan.org/merged ascii main
deb http://pkgmaster.devuan.org/merged ascii-updates main
deb http://pkgmaster.devuan.org/merged ascii-security main
deb http://pkgmaster.devuan.org/merged ascii-backports main

删除/etc/apt/preferences文件然后运行

apt-get upgrade devuan-keyring
apt-get update
apt-get dist-upgrade

从 Devuan Jessie 升级到 Ascii

相关内容