我有一个库,它是从 Debian 档案库中尚未提供的版本源代码构建的。另一个软件包需要它并apt upgrade
希望安装旧版本。我该如何防止这种情况发生?
详细信息:我在使用 Sane 时遇到了问题,该问题已在最新版本 (libsane: 1.0.27) 中得到修复。在 Debian 中,最新可用版本是 1.0.26。
我尝试像这样固定它:
Package: libsane
Pin: version 1.0.27
Pin-Priority: 900
但是当我运行 apt upgrade 时,这并没有改变安装 libsane 的尝试。
答案1
您可以暂时保留特定包裹:
apt-mark hold libsane
答案2
您必须使用apt-get upgrade
来阻止 apt 安装新的软件包。
apt upgrade
行为就像您描述的行为一样。
从手册页中:
apt-get 命令部分upgrade
升级用于安装当前已安装的所有软件包的最新版本 [...] 在任何情况下都不会检索和安装尚未安装的软件包。
男人适合部分upgrade
upgrade 用于安装当前已安装的所有软件包的最新版本 [...]。将安装新软件包,但永远不会删除现有软件包。
答案3
两个最简单的选择是:
使用
equivs
package 创建虚拟包。扩展教程这里。修改
/var/lib/dpkg/status
文件以删除其中不需要的依赖项。只需找到依赖项所针对的包apt
并从依赖项行中删除相关项即可。例如,如果您想删除和要求,请编辑Depends: libco (>= 2.14), libefivar (>= 30), libssl1.0.0 (>= 1.0.0)
行。Depends: libefivar (>= 30)
libco
libssl1.0.0
第二种选择需要您安装此包。不过,您可以使用apt-get download packagename
和dpkg --ignore-deps=
命令轻松安装包。