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

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


由于Ubuntu是基于Debian代码库的,所以我希望在Debian中也可以使用,但是


这是什么原因?
我还有其他可以用来实现相同目的的shell命令吗?

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

#1 楼

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,所以可以在这里使用。

评论


至少在sid中,add-apt-repository脚本似乎已移至software-properties-common

–亚当·巴克斯特(Adam Baxter)
2014年6月22日10:26

此处的python-software-properties版本0.92和(再次)缺少:-(

–gatopeich
2014年11月12日上午11:33

查看您上方的评论-现在位于software-properties-common中

–吉姆·巴黎(Jim Paris)
2014年11月12日22:20

虽然麻烦更新

–peterretief
2015年5月11日在12:46

#2 楼

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

格式与主要sources.list文件相同。

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

评论


我认为,etch之后就存在sources.list.d。

–吉尔斯'所以-不再是邪恶的'
2012年8月20日在22:08

是的,但是apt-add-repository处理诸如将“ ppa:”转换为http://ppa.launchpad ...类型的事情,并下载并安装存储库密钥,以便软件包不会被视为可疑

–里卡多·卡德尼斯(RicardoCárdenes)
2014年7月27日在11:24

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

–德罗伯特
2015年12月8日23:29

#3 楼

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

评论


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

– Mike D
19年1月2日,14:19

#4 楼

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 "" | 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 "q4312078q 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 "q4312078q ppa:user/ppa-name"
fi


评论


不建议在您的Debian发行版中使用ppa repo。无法进行安装。

–弗朗西斯·罗德里格斯(Francis Rodrigues)
19年4月15日在14:30