見出し画像

APTのリポジトリ設定って何? /etc/apt/sources.list と /etc/apt/sources.list.d/ とは?

Ubuntu や Debian を使っていると、「パッケージをインストールしようとしたらエラーが出た」「新しいソフトを入れようとしたらリポジトリが必要って言われた」なんてこと、ありませんか?

そんなとき関係してくるのが /etc/apt/sources.list と /etc/apt/sources.list.d/。これらは、Linux のパッケージ管理システム「APT(Advanced Package Tool)」が、どこからソフトウェアをダウンロードするかを決めるための設定ファイルです。

ちょっと難しそうに感じるかもしれませんが、実は「食材の仕入れ先リスト」みたいなもの。スーパーで買うのか、市場から仕入れるのか、それとも特別な専門店から取り寄せるのか… そういうリストを管理するイメージです。

今回は、この2つのファイルの違いと、それぞれがどんな役割を持っているのかを見ていきましょう!


(1) /etc/apt/sources.list とは?

これは 「APTのメイン仕入れ先リスト」 です。

Ubuntu や Debian では、公式のリポジトリ(ソフトウェアの倉庫)からパッケージをダウンロードします。その「どこのリポジトリを使うか」を指定しているのが sources.list というファイルです。

例えば、このコマンドで内容を確認できます。

cat /etc/apt/sources.list

表示されるのはこんな感じ。

deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse

それぞれの意味はこうなっています。

  • deb → バイナリパッケージ(そのままインストールできるソフト)のリポジトリ

  • deb-src → ソースコードを取得するためのリポジトリ

  • http://archive.ubuntu.com/ubuntu → パッケージをダウンロードするサーバー

  • jammy → Ubuntu 22.04 のコードネーム

  • main / restricted / universe / multiverse → ソフトウェアの種類(サポート範囲や自由度)

つまり、このファイルには 「どのサーバーから、どの種類のソフトを取ってくるか」 が書かれているというわけです。


(2) /etc/apt/sources.list.d/ とは?

/etc/apt/sources.list だけでもリポジトリを管理できますが、外部のソフトウェアを追加するときには /etc/apt/sources.list.d/ というディレクトリが活躍します。

これは 「仕入れ先リストの追加フォルダ」 のようなもの。例えば、スーパーの通常の仕入れリストとは別に、特定の食材だけを専門店から仕入れる場合を考えてみてください。その専門店のリストを個別のメモとして管理するイメージです。

ここには、追加したリポジトリごとに 個別の .list ファイル が作られます。例えば、以下のようなファイルが存在するかもしれません。

ls /etc/apt/sources.list.d/
docker.list
google-chrome.list
nodesource.list

それぞれの .list ファイルには、特定のリポジトリ情報が書かれています。例えば、Docker のリポジトリを見てみると…

cat /etc/apt/sources.list.d/docker.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable

これは Docker の公式サイトから Ubuntu 用のパッケージをダウンロードする設定 になっています。

つまり、sources.list.d/ を使うことで 特定のソフトウェアのリポジトリを個別に管理できる というわけです。


(3) sources.list と sources.list.d/ の違い

まとめると、2つの役割はこんな感じ。

  • /etc/apt/sources.list

    • Ubuntu / Debian の標準リポジトリ を管理する

    • 公式のリポジトリ情報が書かれている

  • /etc/apt/sources.list.d/

    • 追加のリポジトリ を管理する

    • 外部のソフトウェア(Docker, Chrome, Node.js など)用のリポジトリが入る

この違いを意識しておくと、リポジトリの設定を変更するときに迷わなくなります。


(4) よく使うコマンド

(1) APTのリポジトリ情報を更新する

リポジトリのリストを最新の状態に更新するには、以下のコマンドを実行します。

sudo apt update

これを実行しないと、新しいリポジトリを追加してもパッケージを取得できません。

(2) すべてのリポジトリを一覧表示

どのリポジトリが有効になっているかを確認するには、このコマンドを使います。

grep -r '^deb' /etc/apt/sources.list /etc/apt/sources.list.d/

現在有効なリポジトリの URL が一覧表示されます。

(3) 特定のリポジトリを削除する

例えば、Docker のリポジトリを削除したい場合は以下のようにします。

sudo rm /etc/apt/sources.list.d/docker.list
sudo apt update

これで Docker のリポジトリが無効化されます。


(5) sources.list.d/ を使うメリット

リポジトリを分離できる
→ 公式のリポジトリと、外部のリポジトリを整理しやすい

外部リポジトリの管理が簡単
→ 例えば sudo add-apt-repository ppa:deadsnakes/ppa で Python PPA を追加すると、
/etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-jammy.list に登録される

特定のリポジトリだけ簡単に無効化できる
→ mv docker.list docker.list.disabled で一時的に無効化可能


(6) まとめ

  • /etc/apt/sources.list はメインのリポジトリ管理用

  • /etc/apt/sources.list.d/ は外部リポジトリを個別に管理できる

  • APTのリポジトリ設定は変更するとシステムに影響を与えるので慎重に!

Ubuntu や Debian を使うなら、この仕組みを知っておくとソフトウェア管理がグッと楽になりますよ! 🚀

いいなと思ったら応援しよう!