如何用 apt 替换要安装的特定软件包

如何用 apt 替换要安装的特定软件包

我正在尝试用这个替换标准 SSH 客户端:

https://launchpad.net/~yoda-jazz-kc/+archive/ubuntu/hpn-ssh

我如何让 Ubuntu 16.04 用这个替换标准 openssh-client 并始终从这个存储库更新?

我已经添加了 PPA,并且能够通过 指定确切版本来安装它apt-get install openssh-client=vvvvvv。但是,当系统更新时,它会被标准版本替换。

我尝试过配置/etc/apt/preferences并将 PPA 放在 sources.list 列表的顶部,但没有什么区别。

我已阅读了数十篇关于如何配置 apt 来执行此操作的文章,但它们大多令人困惑或完全错误。

我需要关于如何做到这一点的具体建议,而不是假设对 apt 的变化有详细了解的通用说明。

答案1

  1. 首先创建一个 pin 文件并随意/etc/apt/preferences.d命名。pin-openssh-client

  2. 将这些行放入文件中

    Package: openssh-client
    Pin: origin ppa.launchpad.net
    Pin-Priority: 1001
    
  3. 保存文件并通过 检查包的优先级apt-cache policy openssh-client

我添加了 PPA。添加引脚后的命令输出为

openssh-client:
  Installed: 1:7.2p2-4ubuntu1
  Candidate: 1:7.1p2-hpn14v9-2~ubuntu16.04.1
  Version table:
     1:7.2p2-4ubuntu2.1 500
        500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages
 *** 1:7.2p2-4ubuntu1 500
        100 /var/lib/dpkg/status
     1:7.2p2-4 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages
     1:7.1p2-hpn14v9-2~ubuntu16.04.1 1001
        500 http://ppa.launchpad.net/yoda-jazz-kc/hpn-ssh/ubuntu xenial/main amd64 Packages

从输出中可以看出,来自 PPA 的包优先于存储库提供的包(检查行Candidate)。

如果你已经安装了该软件包,请将其删除。然后重新安装以从 PPA 获取该软件包。

希望有效!

相关内容