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

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

在 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 Test(“wheezy”)中当前的版本是 0.82.7.1debian1,因此可以在那里使用。

答案2

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

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

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

答案3

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

答案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 "$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

相关内容