Comment ajouter un référentiel depuis un shell dans Debian?

141

Dans Ubuntu, on peut ajouter un référentiel via la commande suivante -

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

Ubuntu étant basé sur le code de base Debian, je m'attendais à ce que cela fonctionne également dans Debian, mais cela ne fonctionne pas.

  • Quelle est la raison pour ça?
  • Existe-t-il une autre commande shell que je peux utiliser pour atteindre le même objectif?

Note: Je sais que je peux éditer /etc/apt/sources.list, mais je veux y parvenir à partir du shell. Je souhaite également savoir pourquoi la même commande ne fonctionne pas lorsque la base de code est identique.

Kshitiz Sharma
la source

Réponses:

182

Debian Jessie et plus tard (2014-)

Comme l'a souligné @voltagex dans les commentaires, vous pouvez le trouver dans le software-properties-commonpackage:

sudo apt-get install software-properties-common

Debian Wheezy et avant:

Le programme add-apt-repository est disponible dans Debian. C'est dans le python-software-propertiespaquet:

sudo apt-get install python-software-properties

Il a été ajouté à ce package dans la version 0.75. La version actuelle dans Debian Stable ('squeeze ") est 0.60, donc elle ne l’a pas. La version actuellement dans Debian Testing (" wheezy ") est 0.82.7.1debian1, elle est donc disponible là-bas.

Jim Paris
la source
9
Au moins dans Sid, le script add-apt-repository semble avoir migré vers software-properties-common
Adam Baxter le
Version 0.92 de python-software-properties ici, et (encore) absente :-(
gatopeich
3
Voir le commentaire ci-dessus - il est maintenant danssoftware-properties-common
Jim Paris
eu des
problèmes
17

En supposant que vous exécutiez une version non ancienne de Debian (Etch ou une version ultérieure), vous pouvez simplement déposer un fichier dans. /etc/apt/sources.list.d/Le nom du fichier doit se terminer par .list; Debian Stretch (non encore publié) sera probablement ajouté .sourcesdans un format différent.

Le format est le même que celui du fichier sources.list principal.

L’avantage est que, surtout s’il s’agit de logiciels que vous distribuez, vous n’aurez pas à vous soucier de fusionner vos modifications dans un fichier /etc/apt/sources.list éventuellement édité (particulièrement difficile à gérer si votre programme est désinstallé). Vous pouvez utiliser le dpkgsupport conffile pour placer le fichier /etc/apt/sources.list.d/.

derobert
la source
sources.list.dexiste depuis Etch, je pense.
Gilles
1
Oui, mais apt-add-repositorys'occupe de choses comme la traduction de "ppa:" en un http://ppa.launchpad...type, et le téléchargement et l'installation de la clé de référentiel afin que les paquets ne soient pas considérés comme suspects
Ricardo Cárdenes
@ Gilles je pense que vous avez raison - ce n'est pas sur une machine Sarge que j'ai, mais sur une machine Etch.
derobert
13

add-apt-repositorypeut maintenant être trouvé dans le software-properties-commonpaquet.

Richard Ayotte
la source
@rbaleksandar ce n'est pas dans toutes les distributions car il y a beaucoup de choses supplémentaires que vous ne voudrez peut-être pas, en particulier dans Docker. Comme l'objectif final de cette tâche est d'ajouter quelque chose à /etc/apt/sources.list, vous pouvez regarder la réponse de @Goez dans cette question.
Mike D
8

Ubuntu est basé sur Debian mais inclut des choses que Debian n’a pas (et qui sont souvent incorporées à Debian ultérieurement). La add-apt-repositorycommande est un exemple qui a d'abord été inclus dans Ubuntu.

En add-apt-repositoryfait, il n’exécute que quelques commandes pour ajouter le référentiel:

  • ajouter le référentiel à /etc/apt/sources.list
  • ajoutez la clé de référentiel à la machine.

Un script qui fait en quelque sorte la même chose que celle que vous pouvez trouver ici est cité ci-dessous

#!/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
la source
Il n'est pas recommandé d'utiliser ppa repo dans votre distribution Debian. Il n'y a pas de contrôle sur les installations qui le font.
Francis Rodrigues