【Ubuntu】PPAを追加・削除する方法について

Ubuntu

Ubuntuにパッケージをインストールする際はaptコマンド(またはapt-get)を使うことが多いと思いますが、デフォルトの状態ではUbuntuの公式リポジトリのみがシステム(/etc/apt/source.list)に登録されています。
よって、3rdパーティ製のパッケージなど公式リポジトリに登録されていないパッケージをインストールするには、そのパッケージが格納されている外部のリポジトリを登録する必要があります。
本記事では、PPA等の外部リポジトリをAPTリポジトリに追加/削除する方法についてまとめました。

確認した環境

  • OS: Ubuntu16.04LTS

APTリポジトリはどのように登録される?

Ubuntuでは、APTリポジトリの情報は下記の様に登録されます。

  • /etc/apt/sources.listファイルに記述 または
  • /etc/apt/sources.list.dディレクトリ内にリポジトリ毎に別ファイルとして格納

sources.listファイルにおけるリポジトリの記述

/etc/apt/sources.listファイルの記述例

# deb cdrom:[Ubuntu 16.04.1 LTS _Xenial Xerus_ - Release amd64 (20160719)]/ xenial main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu xenial main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted
# deb-src http://jp.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
    :
    :
deb http://archive.ubuntu.com/ubuntu xenial-security main restricted
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
    :
    :
  • “#”はコメント行です。登録されているリポジトリの情報が書いてあります。
  • “#”が無い行が、APTリポジトリを記述している行です。

内容はスペース区切りで下記のようなフォーマットで構成されます。

deb http://sample.repository/ubuntu distro component...
  • 1番目:リポジトリのタイプ(deb: バイナリパッケージ用/deb-src:ソースパッケージ用)
  • 2番目:リポジトリのURL (基本的にはWeb URLとなりますが、files://やftp://も可能)
  • 3番目:ディストリビューションのリリース名またはバージョン(xenial等)
  • 4番目:リポジトリの コンポーネント
    (Ubuntuでは次の4つに分類:main, restricted, universe, multiverse)

sources.list.dディレクトリにおけるリポジトリの記述

/etc/apt/sources.list.dはディレクトリです。
この中に、登録するAPTリポジトリのファイルを*.listの名前で作成し、格納します。ファイルの中身は、上記と同じフォーマットでリポジトリ情報を記述します。

例えば、こんな感じです

/etc/apt/sources.list.d$ ls -la
合計 112
drwxr-xr-x 2 root root 4096  1月  3 09:47 .
drwxr-xr-x 7 root root 4096 12月 30 14:14 ..
-rw-r--r-- 1 root root    0  9月 24  2016 atareao-ubuntu-atareao-xenial.list
-rw-r--r-- 1 root root    0  9月 24  2016 atareao-ubuntu-atareao-xenial.list.save
   :
   :
-rw-r--r-- 1 root root  150  1月  3 09:47 ubuntu-toolchain-r-ubuntu-test-xenial.list
-rw-r--r-- 1 root root  150  1月  3 09:47 ubuntu-toolchain-r-ubuntu-test-xenial.list.save
    :

参考)Ubuntu Documentation/Repositories/CommandLine

PPAとは

  • Personal Package Archiveの略
  • Ubuntu向けの個人用リポジトリで、Launchpad.net にソースパッケージをアップロードすると、APTリポジトリとしてリリースできる
  • Ubuntuユーザーは公式リポジトリに登録されていないパッケージをインストールすることが可能
  • 但し、動作保証は無いので気をつけて!

参考1)Launchpad.net/Personal Package Archives for Ubuntu
参考2)Launchpad.net/Packaging/PPA

リポジトリの追加

add-apt-repositoryコマンドを使います。このコマンドは、引数に設定したリポジトリ情報を/etc/apt/source.listまたは、/etc/apt/source.list.dに追加します。

以下に設定方法を2つ紹介します。

(1)リポジトリ情報を直接設定

sources.listに記載するフォーマットでリポジトリ情報を指定します。

add-apt-repository "deb http://sample.repository/ubuntu distro component"

この場合、リポジトリ情報は/etc/apt/source.listへ追加されます。

例として、wineHQ のリポジトリを追加する例を見てみます。
下記のように、リポジトリのURLを指定します。

★リポジトリKeyを取得して保存
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key

★リポジトリを追加
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'

リポジトリ情報は下記の通りetc/source.listに追記されます。(★部)

/etc/apt$ cat /etc/apt/sources.list
# deb cdrom:[Ubuntu 16.04.1 LTS _Xenial Xerus_ - Release amd64 (20160719)]/ xenial main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu xenial main restricted
    :
    :
deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main ★
# deb-src https://dl.winehq.org/wine-builds/ubuntu/ xenial main ★

(2)PPA名/ユーザ名を指定

追加したいリポジトリのLaunchpadのユーザ名とPPA名を下記のフォーマットで指定します。

sudo apt-add-repository ppa:[user]/[ppa-name] 

指定したPPAリポジトリの情報が上記フォーマットに自動的に変換され、/etc/apt/sources/list.dディレクトリに新規ファイル(*.list)として追加されます。また、GPG public keyも自動でダウンロードされ登録されます。

以下に、Jonathan F’s PPAが提供するFFmpeg の例を記載します。

$ sudo add-apt-repository ppa:jonathonf/ffmpeg-4
[sudo] hibikisan のパスワード: 
    Backport of FFmpeg 4 and associated libraries. Now includes AOM/AV1 support!

FDK AAC is not compatible with GPL and FFmpeg can't be redistributed with it included. Please don't ask for it to be added to this public PPA.

---

PPA supporters:

BigBlueButton (https://bigbluebutton.org)

---

Donate to FFMPEG: https://ffmpeg.org/donations.html
Donate to Debian: https://www.debian.org/donations
Donate to this PPA: https://ko-fi.com/jonathonf
    詳しい情報: https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-4
[ENTER] を押すと続行します。ctrl-c で追加をキャンセルできます

gpg: 鍵リング「/tmp/tmpof4h7grp/secring.gpg」ができました
gpg: 鍵リング「/tmp/tmpof4h7grp/pubring.gpg」ができました
gpg: 鍵F06FC659をhkpからサーバkeyserver.ubuntu.comに要求
gpg: /tmp/tmpof4h7grp/trustdb.gpg: 信用データベースができました
gpg: 鍵F06FC659: 公開鍵"Launchpad PPA for J Fernyhough"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1  (RSA: 1)
OK

ちなみにPPAのユーザ名やPPA名はlaunchpadの該当パッケージのサイトの”Adding this PPA to your system”に記載があります。今回の例の場合は下記のように記述がありました。

Adding this PPA to your system

/etc/apt/sources/list.dディレクトリを確認すると、確かにファイルが追加されています。(★部)

~$ ls /etc/apt/sources.list.d -la
   :
   :
-rw-r--r-- 1 root root  140  1月  3 09:47 jonathonf-ubuntu-ffmpeg-4-xenial.list ★

また、このファイルの中身を確認すると、PPAの情報が記述されていることがわかります。

~$ cat /etc/apt/sources.list.d/jonathonf-ubuntu-ffmpeg-4-xenial.list
deb http://ppa.launchpad.net/jonathonf/ffmpeg-4/ubuntu xenial main
# deb-src http://ppa.launchpad.net/jonathonf/ffmpeg-4/ubuntu xenial main

外部リポジトリを削除

今まで参照していたPPAが公開を停止してしまったりして、追加したPPAリポジトリを削除したい場合があります。このような時は、

add-apt-repository --remove REPOSITORY

コマンドを使います。–removeオプションを追加するだけですね。

ここで気をつけるのは、追加した方法と同じ記述でリポジトリ情報を記載することです。
上記(1)、(2)でリポジトリ情報が追記される場所が異なるので、当然といえば当然ですが。。。

(1)リポジトリ情報を直接設定して追加した場合

下記に例を示します。

/etc/apt$ sudo apt-add-repository --remove 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'

これで/etc/apt/sources.listから該当リポジトリ情報が削除されます。

(2)PPA名/ユーザ名を指定して追加した場合

/etc/apt$ sudo add-apt-repository --remove ppa:jonathonf/ffmpeg-4
[sudo] hibikisan のパスワード: 
    Backport of FFmpeg 4 and associated libraries. Now includes AOM/AV1 support!

FDK AAC is not compatible with GPL and FFmpeg can't be redistributed with it included. Please don't ask for it to be added to this public PPA.

---

PPA supporters:

BigBlueButton (https://bigbluebutton.org)

---

Donate to FFMPEG: https://ffmpeg.org/donations.html
Donate to Debian: https://www.debian.org/donations
Donate to this PPA: https://ko-fi.com/jonathonf
    詳しい情報: https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-4
[ENTER] を押すと続行します。ctrl-c で削除をキャンセルできます

ここでENTERを押すと/etc/apt/sources.list.dディレクトリから上記リポジトリファイルが削除されます。

まとめ

PPAリポジトリを追加・削除するにはadd-apt-repositoryを使うと便利です。また、リポジトリ情報の指定には2通りの方法があります。

  • (1)リポジトリの情報を直接指定する方法
  • (2)PPA名を指定する方法

但し、これらはそれぞれリポジトリ情報が追加される場所が異なるのでリポジトリを削除する際は注意が必要です。実は筆者はこれを理解できておらず、(1)で登録したリポジトリを(2)で削除しようとしてハマったので今回詳しく調べた次第です。
もし、add-apt-repositoryコマンドでリポジトリが削除できない。。。とお困りでしたら、登録した際の方法を見なおしてみるのも良いかと思います。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project