我正在尝试追踪漏洞在 svn 中。我需要能够在 svn 1.7.x 和 1.8.x 之间切换以进行测试。我正在使用 WANdisco 的软件包。
/etc/问题
Ubuntu 12.10 \n \l
/etc/apt/source.list.d/WANdisco.list
# WANdisco Open Source Repo
deb http://opensource.wandisco.com/ubuntu precise svn18
deb http://opensource.wandisco.com/ubuntu precise svn17
我意识到我正在运行 Quantal,但列出了 Precise。这对我来说 (tm) 很有效,因为 WANdisco 没有 Quantal 专用软件包。
当我安装了 subversion=1.7.14-1+WANdisco 时我可以
sudo apt-get install subversion
sudo apt-get install subversion=1.8.5-1+WANdisco
并且可以毫无问题地将我升级到 Subversion 1.8.5-1+WANdisco。
反之则需要大费周章。经过多次尝试和错误,我发现/总结出了一种对我来说最简单的工作方法:
sudo apt-get autoremove subversion
sudo apt-get clean
sudo vim /etc/apt/sources.list.d/WANdisco.list
# deb http://opensource.wandisco.com/ubuntu precise svn18
sudo apt-get install subversion
据我了解,我必须完全删除 svn 1.8.5 及其依赖项 (libsvn1),删除 svn 1.8.5 缓存的软件包,并删除 apt-get 对 svn 1.8.x 可用的了解。只有这样,它才会安装 1.7.14。
我的问题是,当安装 1.8.5 时,为什么没有这个
sudo apt-get install subversion=1.7.14-1+WANdisco
工作?我得到的是
user@user-VirtualBox:/etc/apt/sources.list.d$ sudo apt-get install subversion=1.7.14-1+WANdisco
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
subversion : Depends: libsvn1 (= 1.7.14-1+WANdisco) but 1.8.5-1+WANdisco is to be installed
E: Unable to correct problems, you have held broken packages.
user@user-VirtualBox:/etc/apt/sources.list.d$
除非我严格遵循上述所有三个步骤,否则我会收到“即将安装”的信息:自动删除、清理、注释掉包行。
我注意到 WANdisco 的安装脚本创建了 sources.list.d/WANdisco-svn1[78],因此我尝试使用两个文件而不是一个文件;我的想法是,WANdisco.list 中的行排序可能创建了优先级顺序。但降级失败了。似乎如果 apt-get 知道 1.8.5 存在,它会优先选择 1.8.5 而不是 1.7.14。
如果有更简单的方法,我真的很想知道。
答案1
您必须告诉 apt-get 降级所有依赖项:
sudo apt-get install subversion=1.7.14-1+WANdisco libsvn1=1.7.14-1+WANdisco
否则 apt 不会降级它们。对于这些操作,我更喜欢 aptitude,因为它允许我手动解决问题。