相关疑难解决方法(0)

摆脱“以下软件包将被降级”

我首先要说明的是,我很确定这是我自己设计的独特混乱,但我希望有人遇到过这种情况并且可能能够提供帮助。

设置

我的笔记本电脑运行 Pop!_OS 22.04(基于 Ubuntu Jammy)。我真的很喜欢xscreensaver软件包,但是 Debian/Ubuntu/Pop!_OS 发行版存储库包含过时的版本,并且只有 sid (又名不稳定)包含更新的软件包*

不用担心,这就是固定存在的原因,所以这就是我的设置方式:

/etc/apt/preferences.d/unstable-200文件:

Package: *
Pin: release a=unstable
Pin-Priority: 200
Run Code Online (Sandbox Code Playgroud)

/etc/apt/preferences.d/xscreensaver-2000文件:

Package: xscreensaver*
Pin: release a=unstable
Pin-Priority: 2000
Run Code Online (Sandbox Code Playgroud)

/etc/apt/sources.list.d/debian.sid.list文件:

deb [arch=amd64] http://http.us.debian.org/debian sid main contrib non-free
Run Code Online (Sandbox Code Playgroud)

这实际上是有效的,此时运行sudo apt install xscreensaver会安装更新的版本。然而,有一个奇怪的副作用。

问题

当我sudo apt update接着运行时sudo apt upgrade,我得到以下输出:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be DOWNGRADED: …
Run Code Online (Sandbox Code Playgroud)

debian apt repository xscreensaver pop-os

19
推荐指数
2
解决办法
2676
查看次数

apt 完全升级与 apt 升级冗余

这可能是一个可能的错误,但它已经困扰了我几天了。

apt-get upgrade和之间的区别apt-get dist-upgrade现在已经众所周知且已经确立,即升级安装/升级而dist-upgrade能够安装/删除/升级如果软件包删除恰好是安装或升级另一个软件包所必需的。使用类似的东西可以很容易地发现包的差异

(以下是一种快速而肮脏的方法,需要在终端中输入 sudo 密码以进行复制粘贴。此外,由于我自己修补了几个软件包和驱动程序,我需要保留功能,因此我将 OR 包含在在awk提取只有那些安装和那些要升级,而不是那些被列为必须保持回来,但下面应该工作,即使这些行不存在于你的apt upgrade输出):

$echo -e 'n' | sudo apt-get dist-upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' | awk '
BEGIN {RS=" ";} {print $0}
' | grep . > apt_get_dist_list

$echo -e 'n' | sudo apt-get upgrade | awk '
/be installed|be upgraded/{f=1;next}; /not upgraded|kept back/{f=0}f' |  awk '
BEGIN {RS=" ";} {print $0}
' | grep …
Run Code Online (Sandbox Code Playgroud)

apt package-management dist-upgrade

10
推荐指数
1
解决办法
1万
查看次数