Apt 不想安装旧版本的软件包

ars*_*ars 5 package-management apt downgrade

我正在从源代码构建一个 debian 包。除其他外,该软件包具有以下依赖项(debian/control 的一部分):

libswarm-dev (>= 0.6.1.0), libswarm-dev (<< 0.7),
Run Code Online (Sandbox Code Playgroud)

这个包和我正在尝试构建的项目与Yandex.Cocaine平台和Reverbrain公司有关,它们并不为人所知,但我怀疑我的问题更普遍,与特定包无关。所以,在连接的 repo 中有很多合适的版本:

vagrant@worker-2:~/cocaine/cocaine-plugins$ apt-cache policy libswarm-dev
libswarm-dev:
  Installed: (none)
  Candidate: 0.8.1.0
  Version table:
     0.8.1.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.8.0.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.3.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.2.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.1.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.11 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.10 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.9 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.8 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.7 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.6 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.5 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.4 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.3 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.2 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.7.0.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.5.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.5.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.9 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.8 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.7 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.6 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.5 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.4 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.3 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.2 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     0.6.3.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
vagrant@worker-2:~/cocaine/cocaine-plugins$ 
Run Code Online (Sandbox Code Playgroud)

但是,由于某种原因 apt-get 不想安装它们。相反,apt 坚持使用最新版本:

vagrant@worker-2:~/cocaine/cocaine-plugins$ sudo apt-get install libswarm-dev=0.6.5.1
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:
 libswarm-dev : Depends: libswarm2 (= 0.6.5.1) but 0.8.1.0 is to be installed
                Depends: libswarm2-urlfetcher (= 0.6.5.1) but 0.8.1.0 is to be installed
                Depends: libswarm2-xml (= 0.6.5.1) but 0.8.1.0 is to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

apt-get install -f 也没有帮助:

vagrant@worker-2:~/cocaine/cocaine-plugins$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 41 not upgraded.
Run Code Online (Sandbox Code Playgroud)

libswarm-dev包的所有依赖项都具有所需的版本:

vagrant@worker-2:~$ apt-cache policy libswarm2
libswarm2:
  Installed: (none)
  Candidate: 0.8.1.0
  Version table:
     0.8.1.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
     0.6.5.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
vagrant@worker-2:~$ apt-cache policy libswarm2-urlfetcher
libswarm2-urlfetcher:
  Installed: (none)
  Candidate: 0.8.1.0
  Version table:
     0.8.1.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
     0.6.5.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
vagrant@worker-2:~$ apt-cache policy libswarm2-xml
libswarm2-xml:
  Installed: (none)
  Candidate: 0.8.1.0
  Version table:
     0.8.1.0 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
     0.6.5.1 0
        500 http://repo.reverbrain.com/trusty/ current/amd64/ Packages
     ...
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动安装它们中的每一个(我最终做到了),但显然这不是正确的方法。我认为这是 apt 的工作,而不是我的工作。我该如何解决这个问题?

这是 Ubuntu 的 Trusty 版本。

小智 0

您尝试过这里的步骤吗?

如果不快速回顾一下:

  • 确保universerestricted启用存储库。按 Alt+F2,输入 software-properties-gtk 并按 Enter。
  • 运行sudo apt-get update这会更新您的包索引文件。
  • 跑步sudo apt-get clean。这会清除检索到的包文件(.deb 文件)的本地存储库。
  • 跑步sudo apt-get -f install。这将纠正损坏的依赖关系。
  • 跑步sudo dpkg --configure -a
  • 再次运行sudo apt-get -f install


归档时间:

查看次数:

1798 次

最近记录:

10 年,3 月 前