¿Cómo agregar un repositorio desde shell en Debian?

141

En Ubuntu se puede agregar un repositorio mediante el siguiente comando:

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

Como Ubuntu se basa en el código base de Debian, esperaba que lo mismo funcionara también en Debian, pero no es así.

  • ¿Cuál es la razón para esto?
  • ¿Hay algún otro comando de shell que pueda usar para lograr lo mismo?

Nota: Sé que puedo editar /etc/apt/sources.list, pero quiero lograr esto desde el shell. También quiero saber por qué el mismo comando no funcionará cuando la base del código sea la misma.

Kshitiz Sharma
fuente

Respuestas:

182

Debian Jessie y más tarde (2014-)

Como señaló @voltagex en los comentarios, ahora se puede encontrar en el software-properties-commonpaquete:

sudo apt-get install software-properties-common

Debian Wheezy y anteriores:

El programa add-apt-repository está disponible en Debian. Está en el python-software-propertiespaquete:

sudo apt-get install python-software-properties

Se agregó a ese paquete en la versión 0.75. La versión actual en Debian Stable ('squeeze ") es 0.60, por lo que no la tiene. La versión actualmente en Debian Testing (" wheezy ") es 0.82.7.1debian1, por lo que está disponible allí.

Jim Paris
fuente
99
Al menos en sid, el script add-apt-repository parece haberse movido a software-properties-common
Adam Baxter
La versión 0.92 de python-software-properties aquí, y (nuevamente) falta :-(
gatopeich
3
Vea el comentario sobre el suyo: ahora está ensoftware-properties-common
Jim Paris
sin embargo, hubo problemas de actualización
peterretief
17

Suponiendo que esté ejecutando una versión no antigua de Debian (Etch o posterior), puede soltar un archivo en /etc/apt/sources.list.d/El nombre del archivo debe terminar con .list; Debian Stretch (aún no lanzado) probablemente se agregará .sourcescon un formato diferente.

El formato es el mismo que el del archivo sources.list principal.

La ventaja es que, especialmente si se trata de algún software que está distribuyendo, no tiene que preocuparse de fusionar sus cambios en un archivo /etc/apt/sources.list posiblemente editado (especialmente difícil de manejar si su programa es desinstalado). Puede usar el dpkgsoporte de conffile para colocar el archivo /etc/apt/sources.list.d/.

derobert
fuente
sources.list.dexiste desde etch, creo.
Gilles
1
Sí, pero apt-add-repositoryse ocupa de cosas como traducir "ppa:" a un http://ppa.launchpad...tipo, y descargar e instalar la clave del repositorio para que los paquetes no sean tratados como sospechosos
Ricardo Cárdenes
@Gilles Creo que tienes razón, no está en una máquina Sarge que tengo, y está en una máquina Etch.
derobert
13

add-apt-repositoryahora se puede encontrar en el software-properties-commonpaquete.

Richard Ayotte
fuente
@rbaleksandar esto no está en todas las distribuciones porque tiene muchas cosas adicionales que quizás no quieras, especialmente en Docker. Dado que el objetivo final de esta tarea es agregarle algo /etc/apt/sources.list, puede consultar la respuesta de @Goez en esta pregunta.
Mike D
8

Ubuntu se basa en Debian, pero incluye cosas que Debian no (y, a su vez, a menudo se incorporan a Debian más adelante). El add-apt-repositorycomando es un ejemplo que se incluyó primero en Ubuntu.

En add-apt-repositoryrealidad, solo ejecuta un par de comandos para agregar el repositorio:

  • añadir el repositorio a /etc/apt/sources.list
  • agregue la clave del repositorio a la máquina.

A continuación se cita un script que hace lo mismo que se puede encontrar aquí.

#!/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
Dios
fuente
No se recomienda usar ppa repo en su distribución de Debian. No hay control sobre las instalaciones que hacen eso.
Francis Rodrigues