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

Ksh*_*rma 150 shell debian apt repository ppa

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

sudo add-apt-repository ppa:yannubuntu/boot-repair
Run Code Online (Sandbox Code Playgroud)

由于 Ubuntu 是基于 Debian 代码库的,我原以为它也能在 Debian 中运行,但事实并非如此。

  • 这是什么原因?
  • 我可以使用其他一些 shell 命令来实现相同的目标吗?

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

Jim*_*ris 193

Debian Jessie 及更高版本 (2014-)

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

sudo apt-get install software-properties-common
Run Code Online (Sandbox Code Playgroud)

Debian Wheezy 及更早版本:

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

sudo apt-get install python-software-properties
Run Code Online (Sandbox Code Playgroud)

它是在 0.75 版中添加到该包中的。Debian Stable ('squeeze") 中的当前版本是 0.60,所以它没有。Debian Testing ("wheezy") 中的当前版本是 0.82.7.1debian1,所以它在那里可用。

  • 至少在 sid 中​​,add-apt-repository 脚本似乎已移至 software-properties-common (9认同)
  • 看你上面的评论——它现在在`software-properties-common` (3认同)

der*_*ert 17

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

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

优点是,特别是如果这是针对您正在分发的某些软件,您不必担心将更改合并到可能已编辑的 /etc/apt/sources.list 文件中(如果您的程序是已卸载)。您可以使用dpkgconffile 支持将文件放入/etc/apt/sources.list.d/.


Ric*_*tte 14

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


Goe*_*oez 9

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
Run Code Online (Sandbox Code Playgroud)