如何防止 PPA 升级所有软件包而不是所需的软件包

如何防止 PPA 升级所有软件包而不是所需的软件包

我添加了约巴巴以获取 Geary 的最新版本。现在,当我下次升级系统时,它也会尝试从其 PPA 中获取 Shotwell 的更高版本,但升级失败,因为它与 Ubuntu 安装 shotwell 的方式相冲突。

现在,我可以清除 shotwell* 软件包,然后再次安装,它会从 Yorba PPA 中提取,但我如何告诉 apt 只使用来自 Ubuntu 存储库的 shotwell,即使 Yorba PPA 有更高版本?

我正在使用 Ubuntu 14.04。

答案1

如果有多个版本的相同软件包可用,在这种情况下,您可以使用以下方式安装特定版本的软件包sudo apt-get install packagename=version

要查找 shotwell 的可用版本,请使用

 apt-cache policy shotwell

在我的 Ubuntu 12.04 上

Installed: (none)
  Candidate: 0.14.1-1~precise1
  Version table:
     0.14.1-1~precise1 0
        500 http://ppa.launchpad.net/yorba/ppa/ubuntu/ precise/main i386 Packages
     0.12.3-0ubuntu0.1 0
        500 http://in.archive.ubuntu.com/ubuntu/ precise-updates/main i386 Packages
     0.12.2-0ubuntu2 0
        500 http://in.archive.ubuntu.com/ubuntu/ precise/main i386 Packages

所以我尝试了

 sudo apt-get install shotwell=0.12.3-0ubuntu0.1

但是它给了我软件包错误 libgexiv2-1。所以我申请了apt-cache policy libgexiv2-1查找冲突,发现它也可以在 PPA 中使用。

shotwell因此,要从 Ubuntu repo安装,我使用以下命令

  sudo apt-get install shotwell=0.12.3-0ubuntu0.1 libgexiv2-1=0.4.1-1build1

它从官方 Ubuntu repo 成功安装了 shotwell。

shotwell --version
Shotwell 0.12.3


编辑

固定包

正如您所指定,您只想接收 Geary 的升级,而不是此 PPA 中的其他软件包的升级。为此,您可以使用固定

  • 使用以下方式创建固定配置文件

    gksudo gedit /etc/apt/preferences.d/ubuntu-geary-pin-400
    

    内容如下。

    Package: *
    Pin: release o=LP-PPA-yorba
    Pin-Priority: 400
    
    Package: *geary*
    Pin: release o=LP-PPA-yorba
    Pin-Priority: 500
    

    (这里首先为 yorba ppa 中的每个包分配 400 优先级,然后为 geary 包分配 500 优先级(即正常优先级)。)

  • 保存。

现在您将收到仅适用于 geary 的此 ppa 的升级。

相关内容