Как добавить репозиторий из оболочки в Debian?

141

В Ubuntu можно добавить репозиторий с помощью следующей команды -

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

Поскольку Ubuntu основана на кодовой базе Debian, я ожидал, что то же самое будет работать и в Debian, но это не так.

  • Что является причиной этого?
  • Есть ли какая-либо другая команда оболочки, которую я могу использовать для достижения того же?

Примечание: я знаю, что могу редактировать /etc/apt/sources.list, но я хочу добиться этого из оболочки. Я также хочу знать, почему одна и та же команда не будет работать, если база кода одинакова.

Кшитиз Шарма
источник

Ответы:

182

Debian Джесси и позже (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, похоже, перешел к общим свойствам программного обеспечения
Адам Бакстер,
Версия 0.92 свойств python-software здесь, и (снова) отсутствует :-(
gatopeich
3
См. Комментарий выше вашего - он сейчас вsoftware-properties-common
Джим Пэрис
были проблемы обновления, хотя
peterretief
17

Предполагая, что вы используете не древнюю версию Debian (Etch или новее), вы можете просто удалить файл в /etc/apt/sources.list.d/поле Имя файла должно заканчиваться .list; Debian Stretch (еще не выпущенный), скорее всего, добавит .sourcesв другом формате.

Формат такой же, как у основного файла sources.list.

Преимущество в том, что, особенно если это распространяется на какое-то программное обеспечение, которое вы распространяете, вам не нужно беспокоиться, объединяя свои изменения в возможно отредактированный файл /etc/apt/sources.list (особенно трудно справиться, если ваша программа неустановленный). Вы можете использовать dpkgподдержку conffile, чтобы поместить файл в /etc/apt/sources.list.d/.

derobert
источник
sources.list.dсуществует с etch, я думаю.
Жиль
1
Да, но он apt-add-repositoryзаботится о таких вещах, как перевод «ppa:» в http://ppa.launchpad...тип, загрузка и установка ключа хранилища, чтобы пакеты не воспринимались как подозрительные
Рикардо Карденес,
@ Жиль: Думаю, ты прав - это не на моей машине Sarge, а на машине Etch.
Дероберт
13

add-apt-repositoryтеперь можно найти в software-properties-commonупаковке.

Ричард Айотт
источник
@rbaleksandar это не во всех дистрибутивах, потому что в нем есть много лишних вещей, которые вы, возможно, не захотите, особенно в докере. Поскольку конечной целью этой задачи является добавление чего-либо /etc/apt/sources.list, вы можете посмотреть ответ @Goez в этом вопросе.
Майк Д
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
Goez
источник
Не рекомендуется использовать репозиторий ppa в вашем дистрибутиве Debian. Нет никакого контроля над установками, делающими это.
Фрэнсис Родригес