web-dev-qa-db-ja.com

Debianのシェルからリポジトリを追加する方法は?

Ubuntuでは、次のコマンドでリポジトリを追加できます-

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

UbuntuはDebianコードベースに基づいているので、同じことがDebianでも機能すると期待していましたが、機能しません。

  • これの理由は何ですか?
  • 同じことを達成するために使用できる他のシェルコマンドはありますか?

注:編集できることはわかっています/etc/apt/sources.list、しかし私はシェルからこれを達成したいです。また、コードベースが同じであるときに同じコマンドが機能しない理由も知りたいです。

143
Kshitiz Sharma

Debian Jessie以降(2014-)

コメントの@voltagexで指摘されているように、software-properties-common パッケージ:

Sudo apt-get install software-properties-common

Debian Wheezy以前:

プログラム add-apt-repositoryis 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なので、そこで利用できます。

186
Jim Paris

Debianの非古代バージョン(Etch以降)を実行している場合、/etc/apt/sources.list.d/にファイルをドロップするだけでファイル名を.listで終了する必要があります。 Debian Stretch(まだリリースされていません)は、異なる形式で.sourcesを追加する可能性があります。

形式はメインのsources.listファイルと同じです。

利点は、特にこれが配布している一部のソフトウェアの場合、変更をおそらく編集された/etc/apt/sources.listファイルにマージすることを心配する必要がないことです(特に、プログラムがアンインストール)。 dpkg conffileサポートを使用して、ファイルを/etc/apt/sources.list.d/に配置できます。

17
derobert

add-apt-repositorysoftware-properties-common パッケージ。

14
Richard Ayotte

UbuntuはDebianをベースにしていますが、Debianがサポートしていないものも含まれています(そして、多くの場合、後でDebianに組み込まれます)。 add-apt-repositoryコマンドは、Ubuntuに最初に組み込まれた例です。

add-apt-repositoryは実際には、リポジトリを追加するためのいくつかのコマンドを実行します。

  • リポジトリを/etc/apt/sources.listに追加します
  • リポジトリキーをマシンに追加します。

見つけることができるのと同じことを行うスクリプト here は以下に引用されています

#!/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
8
Goez