Wie füge ich ein Repository von der Shell in Debian hinzu?

141

In Ubuntu kann man ein Repository mit folgendem Befehl hinzufügen -

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

Da Ubuntu auf der Debian-Codebasis basiert, hatte ich erwartet, dass dasselbe auch in Debian funktionieren würde, aber das tut es nicht.

  • Was ist der Grund dafür?
  • Gibt es einen anderen Shell-Befehl, mit dem ich dasselbe erreichen kann?

Hinweis: Ich weiß, dass ich bearbeiten kann /etc/apt/sources.list, aber ich möchte dies über die Shell erreichen. Ich möchte auch wissen, warum derselbe Befehl nicht funktioniert, wenn die Codebasis identisch ist.

Kshitiz Sharma
quelle

Antworten:

182

Debian Jessie und später (2014-)

Wie von @voltagex in den Kommentaren hervorgehoben, befindet es sich nun im software-properties-commonPaket:

sudo apt-get install software-properties-common

Debian Wheezy und früher:

Das Programm add-apt-repository ist in Debian verfügbar. Es ist in der python-software-propertiesPackung:

sudo apt-get install python-software-properties

Es wurde diesem Paket in Version 0.75 hinzugefügt. Die aktuelle Version in Debian Stable ("squeeze") ist 0.60, es gibt sie also nicht. Die aktuelle Version in Debian Testing ("wheezy") ist 0.82.7.1debian1, also ist sie dort verfügbar.

Jim Paris
quelle
9
Zumindest in Sid scheint das Add-Apt-Repository-Skript auf Software-Properties-Common
Adam Baxter,
Version 0.92 der Python-Software-Eigenschaften hier und (wieder) nicht vorhanden :-(
gatopeich
3
Sehen Sie den Kommentar über Ihnen - es ist jetzt insoftware-properties-common
Jim Paris
Probleme beim Aktualisieren
Peterretief
17

Angenommen, Sie führen eine nicht-alte Version von Debian (Etch oder höher) aus, können Sie einfach eine Datei im /etc/apt/sources.list.d/Feld Der Dateiname muss mit enden .list. Debian Stretch (noch nicht veröffentlicht) wird wahrscheinlich .sourcesmit einem anderen Format hinzugefügt .

Das Format entspricht der Hauptdatei sources.list.

Der Vorteil ist, insbesondere wenn dies für einige von Ihnen vertriebene Software gilt, dass Sie sich keine Sorgen machen müssen, Ihre Änderungen in einer möglicherweise bearbeiteten Datei /etc/apt/sources.list zusammenzuführen (was besonders schwierig ist, wenn Sie mit Ihrem Programm umgehen müssen) deinstalliert). Sie können die dpkgConffile-Unterstützung verwenden, um die Datei zu speichern /etc/apt/sources.list.d/.

derobert
quelle
sources.list.dexistiert seit dem Ätzen, denke ich.
Gilles
1
Ja, apt-add-repositorykümmert sich aber um Dinge wie das Übersetzen von "ppa:" in einen http://ppa.launchpad...Typ und das Herunterladen und Installieren des Repository-Schlüssels, damit Pakete nicht als verdächtig behandelt werden
Ricardo Cárdenes
@ Gilles Ich denke, Sie haben Recht - es ist nicht auf einer Sarge-Maschine, die ich habe, und es ist auf einer Etch-Maschine.
Derobert
13

add-apt-repositorykann jetzt in der software-properties-commonPackung gefunden werden.

Richard Ayotte
quelle
@rbaleksandar Dies ist nicht in allen Distributionen der Fall, da es viele zusätzliche Dinge gibt, die Sie möglicherweise nicht möchten, insbesondere in Docker. Da das Endziel dieser Aufgabe darin besteht, etwas hinzuzufügen /etc/apt/sources.list, können Sie sich die Antwort von @Goez in dieser Frage ansehen.
Mike D
8

Ubuntu basiert auf Debian, enthält aber Dinge, die Debian nicht tut (und die wiederum häufig später in Debian integriert werden). Der add-apt-repositoryBefehl ist ein Beispiel, das zuerst in Ubuntu enthalten war.

Der führt add-apt-repositorytatsächlich nur ein paar Befehle aus, um das Repository hinzuzufügen:

  • Hänge das Repository an /etc/apt/sources.list
  • Fügen Sie den Repository-Schlüssel zum Computer hinzu.

Ein Skript, das dasselbe tut, wie es hier zu finden ist, wird unten zitiert

#!/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
quelle
Es wird nicht empfohlen, ppa repo in Ihrer Debian-Distribution zu verwenden. Es gibt keine Kontrolle darüber, wie Installationen das machen.
Francis Rodrigues