如何诊断是什么阻碍了 Linux 软件包的安装?

如何诊断是什么阻碍了 Linux 软件包的安装?

详细解答


firmware-misc-nonfree我正在尝试在特定的 Linux 安装上安装 Debian 软件包。

╰─○ apt install firmware-misc-nonfree
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package firmware-misc-nonfree is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'firmware-misc-nonfree' has no installation candidate

似乎有什么东西阻碍了它,但在另外两个系统上却没问题。

这是的输出apt-cache policy

╰─○ apt-cache policy firmware-misc-nonfree
firmware-misc-nonfree:
  Installed: (none)
  Candidate: (none)
  Version table:
     20210315-3 -1
         -1 http://uk.mirrors.clouvider.net/debian bullseye/non-free amd64 Packages

有没有某种自动化的方法来查找冲突的原因?

这些是内容/etc/apt/sources.list

# updated 2023-03-11-1956 for Debian 11 Bullseye

deb http://uk.mirrors.clouvider.net/debian/ bullseye main contrib non-free
deb-src http://uk.mirrors.clouvider.net/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

# bullseye-updates, previously known as 'volatile'
deb http://uk.mirrors.clouvider.net/debian/ bullseye-updates main contrib non-free
deb-src http://uk.mirrors.clouvider.net/debian/ bullseye-updates main contrib non-free

# deb http://uk.mirrors.clouvider.net/debian/ bullseye-backports main contrib non-free
# deb-src http://uk.mirrors.clouvider.net/debian/ bullseye-backports main contrib non-free

我唯一能想到的是,这次安装的是 VirtualBox 系统,虚拟化可能与此有关。

它需要一些不在正确目录中的二进制固件,但我可以将其从其他系统复制到可以在启动时加载的正确位置。

Debian 打包系统是否会维护一个包的安装触发另一个包的保留、删除或阻止时发出的命令日志?

我已经尝试过一些建议https://askubuntu.com/questions/640986/how-to-get-a-list-of-installed-packages-held-back-from-upgrade但命令不显示任何内容。

答案1

apt-cache policy firmware-misc-nonfree显示该包可用,优先级为 -1。 -1 防止它被选为多个候选者中的候选者(即使它是唯一的候选者)。从apt_preferences(5):

APT 如何解释优先级

[...]

P<0

阻止安装该版本

您仍然可以通过自己指定候选版本来覆盖该设置。例如,这应该安装该包:

apt-get install firmware-misc-nonfree=20210315-3

很可能有关 apt 首选项的某些设置已更改。首先要查找的地方是/etc/apt/preferences/etc/apt/preferences.d/

答案2

软件包firmware-misc-nonfree可以从以下地址下载:https://packages.debian.org/sid/all/firmware-misc-nonfree/download。那个是最新的。如果您想要旧的 Bullseye 包,请使用: https://packages.debian.org/bullseye/all/firmware-misc-nonfree/download

可以使用以下命令安装: dpkg -i 。

如果运行: apt-file listfirmware-misc-nonfree,它将显示包中的所有文件及其在 /lib/firmware 目录下的位置。

/var/log/apt 目录保存 apt 活动的历史记录。

答案3

发生的情况是,Debian 已将各种非自由固件移入自己的存储库树中,与 分开non-free,因为不幸的是,其中一些对于许多现代系统(尤其是笔记本电脑)来说太重要了,默认情况下无法忽略。

按如下方式更新您的来源:

deb http://uk.mirrors.clouvider.net/debian/ bullseye main contrib non-free

deb http://uk.mirrors.clouvider.net/debian/ bullseye main contrib non-free non-free-firmware

您应该会再次看到该包裹。

答案4

按照中的建议进行操作后选定的答案我发现该目录中有包含内容的/etc/apt/preferences.d文件:non_free_policy

Explanation: Disable packages from non-free tree by default
Package: *
Pin: release o=Debian,a=stable,l=Debian,c=non-free
Pin-Priority: -1

Debian 安装程序似乎non-free默认为软件包设置了此优先级,这可能就是为什么我过去不得不编译很多无线和蓝牙驱动程序的原因。

我想知道多年来有多少用户在不知情的情况下违反了这种设置。

相关内容