Como adicionar repositório a partir do shell no Debian?

141

No Ubuntu, pode-se adicionar um repositório através do seguinte comando -

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

Como o Ubuntu é baseado na base de código do Debian, eu esperava que o mesmo também funcionasse no Debian, mas não.

  • Qual é a razão para isto?
  • Existe algum outro comando shell que eu possa usar para obter o mesmo?

Nota: Eu sei que posso editar /etc/apt/sources.list, mas quero conseguir isso a partir do shell. Também quero saber por que o mesmo comando não funcionará quando a base de código for a mesma.

Kshitiz Sharma
fonte

Respostas:

182

Debian Jessie e mais tarde (2014-)

Como apontado por @voltagex nos comentários, agora ele pode ser encontrado no software-properties-commonpacote:

sudo apt-get install software-properties-common

Debian Wheezy e versões anteriores:

O programa add-apt-repository está disponível no Debian. Está no python-software-propertiespacote:

sudo apt-get install python-software-properties

Foi adicionado a esse pacote na versão 0.75. A versão atual no Debian Stable ('squeeze ") é 0.60, por isso não a possui. A versão atualmente no Debian Testing (" wheezy ") é 0.82.7.1debian1, então está disponível lá.

Jim Paris
fonte
9
Pelo menos em sid, o script add-apt-repositório parece ter se mudou para software-properties-comum
Adam Baxter
Versão 0.92 de python-software-properties aqui e (novamente) ausente :-(
gatopeich
3
Veja o comentário acima do seu - agora está emsoftware-properties-common
Jim Paris
teve aborrecimentos atualizar embora
peterretief 11/05
17

Supondo que você esteja executando uma versão não antiga do Debian (Etch ou posterior), basta soltar um arquivo em /etc/apt/sources.list.d/O nome do arquivo deve terminar com .list; O Debian Stretch (ainda não lançado) provavelmente será adicionado .sourcescom um formato diferente.

O formato é o mesmo que o principal arquivo sources.list.

A vantagem é que, especialmente se for para algum software que você está distribuindo, não precisa se preocupar em mesclar suas alterações em um arquivo /etc/apt/sources.list possivelmente editado (especialmente difícil de lidar se o seu programa for desinstalado). Você pode usar o dpkgsuporte de conffile para colocar o arquivo /etc/apt/sources.list.d/.

derobert
fonte
sources.list.dexiste desde etch, eu acho.
Gilles
1
Sim, mas apt-add-repositorycuida de coisas como traduzir "ppa:" para um http://ppa.launchpad...tipo, e para baixar e instalar a chave de repositório para que os pacotes não são tratados como suspeitos
Ricardo Cárdenes
@ Gilles, acho que você está certo - não está em uma máquina Sarge que eu tenho e em uma máquina Etch.
derobert
13

add-apt-repositoryagora pode ser encontrado no software-properties-commonpacote.

Richard Ayotte
fonte
@rbaleksandar, isso não está presente em todas as distros porque tem muitas coisas extras que você pode não querer, especialmente no docker. Como o objetivo final desta tarefa é adicionar algo /etc/apt/sources.list, você pode consultar a resposta do @Goez nesta pergunta.
Mike D
8

O Ubuntu é baseado no Debian, mas inclui coisas que o Debian não (e por sua vez são frequentemente incorporadas ao Debian posteriormente). O add-apt-repositorycomando é um exemplo que foi incluído no Ubuntu primeiro.

Na add-apt-repositoryverdade, apenas executa alguns comandos para adicionar o repositório:

  • anexar o repositório a /etc/apt/sources.list
  • adicione a chave do repositório à máquina.

Um script que faz o mesmo que pode ser encontrado aqui é citado abaixo

#!/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
fonte
Não é recomendado usar o ppa repo na sua distribuição Debian. Não há controle sobre as instalações que fazem isso.
Francis Rodrigues