![当两个软件包有非常相似的版本号时,apt 固定](https://linux22.com/image/1343732/%E5%BD%93%E4%B8%A4%E4%B8%AA%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%9C%89%E9%9D%9E%E5%B8%B8%E7%9B%B8%E4%BC%BC%E7%9A%84%E7%89%88%E6%9C%AC%E5%8F%B7%E6%97%B6%EF%BC%8Capt%20%E5%9B%BA%E5%AE%9A.png)
我有一个precise
安装,但我也从quantal
和获取软件包raring
。我的问题出在linux-image-*
软件包上。
我想运行 3.5 内核,并跟踪我想要的该系列中的最新内核linux-image-generic
。quantal
它想要安装linux-image-3.5.0-xx-generic
和linux-image-extra-3.5.0-xx-generic
。到目前为止一切顺利。
我的问题是precise-updates
还包含一个linux-image-3.5.0-xx-generic
具有相同版本号的版本,并添加了一个~precise1
。这个版本与不兼容,因为和linux-image-extras-3.5.0-xx-generic
中的包布局不同——将模块拆分为一个主包和一个包,但在只有一个大的主包。precise
quantal
quantal
-extras
precise
现在,我尝试quantal
用这些行固定内核:
Package: linux-image-3.5*
Pin: release n=quantal
Pin-Priority: 600
Package: linux-image-generic
Pin: release n=quantal
Pin-Priority: 600
我以为这样可以解决问题,例如优先考虑而不是quantal
。但实际上,固定似乎最终解析为版本,而不是档案( 似乎只是选择版本号的过滤器),并且这两个版本在某种意义上被视为同一版本。最后,它总是偏爱错误的软件包。3.5.0-21.32
precise
3.5.0-21.32~precise1
Pin
$ apt-cache policy linux-image-3.5.0-21-generic
linux-image-3.5.0-21-generic:
Installed: (none)
Candidate: 3.5.0-21.32~precise1
Package pin: 3.5.0-21.32
Version table:
3.5.0-21.32 600
500 http://hk.archive.ubuntu.com/ubuntu/ quantal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ quantal-security/main amd64 Packages
3.5.0-21.32~precise1 600
990 http://hk.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
990 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
即使提供了特定Pin
的precise
并将其设置为,比如说-1
,precise
包也会“劫持”quantal
包的固定。
我猜对了造成这种混乱的原因了吗?有什么方法可以解决这个问题吗?还是我每次都必须逐字指定apt-get install linux-image-3.5.0-21-generic/quantal
*,就像我现在这样来解决这个问题?这使得元包的使用变得有点无用,仅仅是手动安装的查找机制。
当然,precise-updates
从等式中删除是可行的,但我更愿意继续指定档案。
* 为什么这个可以工作,而固定却不行?我以为它们都使用了相同的机制——临时为特定版本/blah
设置优先级。很奇怪。990
答案1
看来最好的解决方法是运行apt-get -t quantal install linux-image-generic
。-t
优先级设置似乎与固定首选项的工作方式不同,并且正确地选择quantal
了 版本precise
。