如何在服务器上添加PPA?


160

Ubuntu的服务器版本没有该add-apt-repository命令。不使用此命令如何将个人软件包存档(PPA)添加到服务器?


在最新版的Synaptic中,您可以直接在软件源中添加ppa,而不是添加deb行
Dirk Hartzer Waldeck 2011年

1
-@Doug的答案对于Ubuntu 16.04是正确的-@fossfreedom的答案对于Ubuntu 14.04是正确的在Ubuntu 16.04上,正确的软件包的确是software-properties-common,如以下所示:$ type add-apt-repository add-apt-repository被散列(/ usr / bin / add-apt-repository)$ apt文件搜索/ usr / bin / add-apt-repository software-properties-common:以前版本中的/ usr / bin / add-apt-repository确实可以在python-software-properties--- 上找到更新:我在这里评论,因为我无法将其添加为评论!
azbarcea

apt-add-repository可以直接使用。
Atifm

Answers:


196

您可以简单地添加add-apt-repository命令。在13.10及更高版本中,您还需要运行以下命令:

sudo apt-get install software-properties-common

旁注:在11.04中,他们添加了一个符号链接,add-apt-repository以便可以运行它,apt-add-repository这对我来说更有意义。apt的其他所有内容均以“ apt”开头。

注意:它是python-software-properties包装的一部分(13.10之前):

sudo apt-get install python-software-properties

看到它实际上是apt的功能,对我而言实际上是合乎逻辑的。“使用apt添加存储库”>“ apt-add-repository”
MrChrisDruif 2012年

5
如果已经安装了“ python-software-properties”,并且在尝试使用“ apt-add-repository”时仍然出现“找不到命令”怎么办?
monkut 2012年

您是否也尝试过“ add-apt-repository”?在11.04之前的版本中,必须将“ add”放在“ apt”之前。
Mark Russell

当“ apt-get install python-software-properties”由于依赖于python-curl(“不可安装”)而失败时,您应该怎么办?在我的12.04系统上,它抱怨“无法纠正问题-您拿着破损的包裹”
Hoobajoob 2015年

software-properties-common一组已定义的工具还是utils的集合?
亚历克斯(Alex)2015年

74

让我教你如何钓鱼。apt-file使您能够找出哪个包提供了给定的文件。dpkg -S做同样的事情,但仅适用于已安装的软件包。apt-file无论是否已安装软件包,都可以使用。

所以,首先你安装的apt-文件:sudo apt-get install apt-file。然后,您需要更新其信息,就像使用apt-get:一样sudo apt-file update。现在可以使用了:

$ apt-file search add-apt-repository
python-software-properties: /usr/bin/add-apt-repository
python-software-properties: /usr/share/man/man1/add-apt-repository.1.gz

因此,在这种情况下,下一步是安装python-software-properties。


3
一个很好的技巧-也许不应该将其埋在这个问题中-单独提出一个问题来突出这一点是个好主意。
fossfreedom

@fossfreedom这是您在说的吗?- askubuntu.com/questions/13792/...
JRG

9
由于这个技巧,我发现在12.10服务器中apt-add-repository位于software-properties-common中(不再位于python-software-properties中)
Kat Amsterdam

为什么我忘了这个非常有用的命令存在!好答案。
莱拉夫

53

它不一定是最佳答案,但这将起作用:

编辑的老式方式(在Ubuntu 9.10之前,他们称之为)/etc/apt/sources.list。您还需要手动获取系统上的GPG密钥。

在较旧(9.10之前)的Ubuntu系统上:

步骤1:在启动板中访问PPA的概述页面。查找显示将此PPA添加到系统中的标题,然后单击有关此PPA的技术详细信息链接。

第2步:使用“显示sources.list条目”下拉框选择您使用的Ubuntu版本。

步骤3:您会看到下面的文本框显示如下内容:

deb http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu jaunty main

复制这些行。

步骤4:打开终端并输入:

sudo gedit /etc/apt/sources.list

这将打开一个文本编辑器,其中包含系统当前正在使用的档案列表。滚动到文件底部,然后粘贴在上述步骤中复制的行。

保存文件并退出文本编辑器。

步骤5:返回PPA的概述页面,查找“签名”密钥标题。您会看到类似以下内容:

1024R / 72D340A3(这是什么?)

复制斜线后的部分,但不包括帮助链接;例如72D340A3。

步骤6:现在您需要将该密钥添加到系统中,以便Ubuntu可以从PPA验证软件包。在您的终端中,输入:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 72D340A3

(用在步骤5中复制的内容替换72D340A3。)

现在,这将拉下PPA的密钥并将其添加到您的系统中。

第7步:现在,作为一个整体,您应该告诉系统从它知道的每个档案中下拉出最新的软件列表,包括刚刚添加的PPA:

sudo apt-get update

现在您可以开始从PPA安装软件了!


1
如果没有给出其他更快,更用户友好的答案,那么我将把它作为正确的答案。它以“特殊”方式解决了问题;)
Luis Alvarado

1
尽管add-apt-repository更加容易,但是在服务器安装中,我希望保持精简,因此我不介意手动进行操作。这就是我一直在寻找的答案。
D. Strout

1
这种方法比安装apt-add-repository必需软件包附带的所有废话更好。
德米特里·明科夫斯基2013年

4
software-properties-common软件包非常庞大,对于仅将一些文本附加到文件并运行几个命令而言似乎太过庞大了。在Docker中使用时会浪费空间。这个答案非常有帮助!
rsmoorthy 2015年

3
这应该是一个可以接受的答案,因为OP询问如何使用add-apt-repository来解决这个问题……非常感谢!
djBo

15

add-apt-repository由包装提供python-software-properties

因此,如果您应该通过安装

sudo apt-get install python-software-properties

谢谢!我必须说我发现一个很不合逻辑的名字。另外,您知道为什么我没有标准安装吗?
Peter Smit

2
达成共识,这是不合逻辑的-关于原因,您可以推测服务器通常在运行软件方面是“固定的”。因此,您不需要频繁添加和删除存储库的“奢侈”……投机!
fossfreedom

为什么不合逻辑?这是一组处理软件属性的python工具。add-apt-repository是这些工具之一。
2011年

我已经python-software-properties安装了,但仍然收到此错误。我尝试过apt-add并使用add-apt符号,但无济于事...该怎么办?
穆罕默德(Mohamad)

1
@Mohamad,因为这是错误的,至少对于Ubuntu 14.04来说是这样。您只需要安装software-properties-common
Theodore R. Smith

15

运行以下命令:

sudo apt-get install software-properties-common

然后,您可以添加正在运行的存储库:

sudo add-apt-repository [REPOSITORY]

Renember替换[REPOSITORY]为要添加的存储库名称。


这工作得很好。
亚伦

0

几周前,我与一位同事就此进行了辩论。给

apt-add-repository

尝试一下。不需要任何其他软件包。请注意,apt在添加之前出现。顺序很重要,因为需要安装add-apt-repository。

对于那些反对者。试试这个Vagrant文​​件。请注意,我从一个新的可信任映像开始,并直接在盒子中添加了ppa。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

  config.vm.box = "ubuntu/trusty64"
  config.ssh.username = "vagrant"

  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-add-repository ppa:george-edison55/cmake-3.x -y
    sudo apt update
    sudo apt upgrade
    sudo apt install -y virtualbox-guest-dkms
    sudo apt-get install -y curl g++ libpng12-dev  \
      libtiff5-dev libssl-dev libxml2-dev libxslt1-dev libpq-dev postgresql-client \
      postgresql pgadmin3 liblcms2-dev libcrypto++9 libcrypto++-dev \
      graphviz-dev libboost1.55-dev libboost-filesystem1.55-dev libboost-system1.55-dev \
      libexpat1-dev python-software-properties qtbase5-dev qttools5-dev  \
      libqt5svg5-dev qtscript5-dev qtdeclarative5-dev qtmultimedia5-dev \
      libsqlite3-dev qt5-default cmake

  SHELL
end

更新:只是为了澄清起见,看起来ubuntu精确的云映像已经安装了正确的软件包。因此,无论我们是在谈论云初始化脚本还是无业游民的文件,都存在apt-add-repository。由于add-apt-repository位于应该可以正常工作的同一程序包中。


顺序无关紧要。参见askubuntu.com/questions/83489/…
edwinksl

1
请说明为什么这个无业游民的文件然后工作。请注意,我并不是说他们做的事情有所不同。他们做的完全一样。您只需要一个用于add-apt的软件包,其他软件包就可以从头开始工作。
Atifm

@atifm:请参见以下答案:$ apt-file搜索add-apt-repository软件属性-公共:/ usr / bin / add-apt-repository软件属性-公共:/ usr / share / man / man1 / add- apt-repository.1.gz $ apt-文件搜索apt-add-repository软件属性-公共:/ usr / bin / apt-add-repository软件-属性公共:/ usr / share / man / man1 / apt- add-repository.1.gz
tricasse

@tricasse:感谢您对apt-file的链接,在其他地方会很有用。因此,您的权利与apt-file验证的文件位于同一软件包中。就是说,看起来像ubuntu云映像(对于无业游民),用于精确可靠的软件包已安装。不确定是否总是这样,但目前看来确实如此
Atifm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.