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

我添加了Yorba ppa以获得最新版本的Geary。 现在,当我接下来升级我的系统时,它也试图从他们的PPA中拉出更高版本的Shotwell,但是升级失败了,因为它与Ubuntu安装shotwell的方式相冲突。

现在,我可以清除shotwell *软件包,然后重新安装,它将从Yorba PPA罚款,但我怎么能告诉apt只使用来自Ubuntu存储库的shotwell,即使Yorba PPA有更高版本?

我正在使用Ubuntu 14.04。

如果有多个版本的相同软件包可用,在这种情况下,您可以使用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中使用。

所以要从Ubuntu repo安装shotwell ,我使用了以下命令

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

它从官方Ubuntu回购中成功安装了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获得升级