如何在Debian中从Shell添加存储库?


141

在Ubuntu中,可以通过以下命令添加存储库-

sudo add-apt-repository ppa:yannubuntu/boot-repair

由于Ubuntu是基于Debian代码库的,所以我期望在Debian中也能使用,但事实并非如此。

  • 这是什么原因呢?
  • 还有其他一些我可以使用的shell命令吗?

注意:我知道我可以编辑/etc/apt/sources.list,但是我想通过shell来实现。我也想知道为什么当代码库相同时,相同的命令不起作用。

Answers:


182

Debian Jessie及更高版本(2014年至今)

正如@voltagex在评论中指出的那样,现在可以在software-properties-common包中找到它:

sudo apt-get install software-properties-common

Debian Wheezy和更早版本:

该计划add-apt-repository 在Debian中。在python-software-properties包装中:

sudo apt-get install python-software-properties

它已在0.75版中添加到该软件包中。Debian Stable('squeeze')的当前版本是0.60,所以没有它。Debian Testing(“ wheezy”)当前的版本是0.82.7.1debian1,因此可以在那儿获得。


9
至少在sid中,add-apt-repository脚本似乎已移至通用的软件属性
Adam Baxter 2014年

此处的python-software-properties版本0.92和(再次)丢失:-(
gatopeich 2014年

3
见上面你的评论-它现在是在software-properties-common
吉姆·巴黎

有麻烦更新
peterretief

17

假设您运行的是Debian的非古代版本(Etch或更高版本),则只需在中删除文件即可/etc/apt/sources.list.d/。文件名必须以.list; 结尾。Debian Stretch(尚未发布)可能会.sources以其他格式添加。

格式与main sources.list文件相同。

好处是,特别是如果这是针对您要分发的某些软件,则不必担心将所做的更改合并到可能编辑过的/etc/apt/sources.list文件中(尤其是如果程序是卸载)。您可以使用dpkgconffile支持将文件放入/etc/apt/sources.list.d/


sources.list.d我认为自蚀刻以来就存在。
吉尔斯

1
是的,但是要apt-add-repository注意将“ ppa:”转换为http://ppa.launchpad...类型,并下载并安装存储库密钥,以便软件包不会被视为可疑
RicardoCárdenes2014年

@Gilles我认为您是对的-它不在我拥有的Sarge机器上,而在Etch机器上。
derobert

13

add-apt-repository现在可以在software-properties-common包中找到。


@rbaleksandar并非在所有发行版中都有,因为它有很多您可能不想要的额外东西,尤其是在docker中。由于此任务的最终目标是向中添加内容/etc/apt/sources.list,因此您可以查看@Goez在此问题中的答案。
Mike D

8

Ubuntu是基于Debian的,但包含了Debian所不具备的功能(因此,以后通常会并入Debian)。该add-apt-repository命令是一个示例,该示例首先包含在Ubuntu中。

add-apt-repository实际上只是执行命令夫妇要添加的存储库:

  • 将存储库追加到 /etc/apt/sources.list
  • 将存储库密钥添加到计算机。

下面引用了 一种可以在此处找到相同功能的脚本

#!/bin/bash
if [ $# -eq 1 ]
NM=$(uname -a && date)
NAME=$(echo $NM | md5sum | cut -f1 -d" ")
then
    ppa_name=$(echo "$1" | cut -d":" -f2 -s)
    if [ -z "$ppa_name" ]
    then
        echo "PPA name not found"
        echo "Utility to add PPA repositories in your debian machine"
        echo "$0 ppa:user/ppa-name"
    else
        echo "$ppa_name"
        echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu lucid main" >> /etc/apt/sources.list
        apt-get update >> /dev/null 2> /tmp/${NAME}_apt_add_key.txt
        key=$(cat /tmp/${NAME}_apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3)
        apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        rm -rf /tmp/${NAME}_apt_add_key.txt
    fi
else
    echo "Utility to add PPA repositories in your debian machine"
    echo "$0 ppa:user/ppa-name"
fi

不建议在您的Debian发行版中使用ppa repo。无法进行安装。
弗朗西斯·罗德里格斯
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.