Ubuntu 24.04で発生する「deb-src」エラーの解決

〜22.04からのアップグレード後に注意すべきポイント〜

Ubuntu 22.04 から 24.04 へアップグレードした後、apt-get build-dep コマンド実行時に以下のエラーが発生する場合があります。

E: You must put some 'deb-src' URIs in your sources.list

この記事では、Ubuntu 24.04 における新しいソースリストファイルの仕様と、このエラーを解決する具体的な方法について詳しく解説します。


エラーの背景

Ubuntu 24.04 では、従来の /etc/apt/sources.list ではなく、
/etc/apt/sources.list.d/ubuntu.sources という新しい形式のファイルが使用されています。
このファイルは、deb822 形式と呼ばれる構造化された形式で記述されており、以下のような内容になっています。

Types: deb
URIs: http://us.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

従来、ソースパッケージ(deb-src)を利用するには /etc/apt/sources.listdeb-src の行を追加していましたが、Ubuntu 24.04 ではこの新しいファイルに対して同様の設定が必要となります。


エラー発生時の状況

例えば、VLC のビルド依存関係を取得するために以下のコマンドを実行した場合、

sudo apt-get build-dep -y vlc

ソースパッケージの情報が存在しないため、上記のエラーメッセージが表示され、処理が中断されます。


解決方法:deb-src の追加

1. 新しいソースファイルの編集

Ubuntu 24.04 の /etc/apt/sources.list.d/ubuntu.sources に、deb パッケージだけでなく deb-src の情報を追加する必要があります。
具体的には、各リポジトリブロックの Types 行を次のように変更します。

変更前:

Types: deb

変更後:

Types: deb deb-src

2. 具体的な変更例

以下は、変更後の /etc/apt/sources.list.d/ubuntu.sources の内容例です。

Types: deb deb-src
URIs: http://us.archive.ubuntu.com/ubuntu/
Suites: noble noble-updates noble-backports noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb deb-src
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

3. sed コマンドを使った自動変更

手動で編集する代わりに、以下のワンライナーコマンドで自動的に Types: debTypes: deb deb-src に変更できます。

sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources

このコマンドは、ファイル内で行頭が Types: deb の行を検出し、その行を Types: deb deb-src に置換します。

4. apt の更新

変更後は、以下のコマンドでリポジトリ情報を更新します。

sudo apt update

これで、再度 sudo apt-get build-dep -y vlc を実行すれば、必要なビルド依存関係が正しく取得できるはずです。


クラウド環境の場合の注意点

クラウド環境で Ubuntu を利用している場合、/etc/apt/sources.list.d/ubuntu.sourcescloud-init によって自動生成されるため、
直接編集しても再起動やイメージ再作成時に上書きされる可能性があります。

対策としては、以下の方法が考えられます。

  1. cloud.cfg の設定変更
    /etc/cloud/cloud.cfgapt_preserve_sources_list: true を追加することで、手動編集が上書きされないように設定できます。
  2. 補足リポジトリの追加
    /etc/apt/sources.list.d/ 配下に、新たなファイルとして追加のリポジトリ情報(deb-src 含む)を作成します。
  3. テンプレートファイルの編集
    /etc/cloud/templates/sources.list.ubuntu.deb822.tmpl を編集し、デフォルトで deb-src を含めるように変更します。

まとめ

Ubuntu 24.04 へのアップグレード後に apt-get build-dep を実行すると、
「You must put some ‘deb-src’ URIs in your sources.list」というエラーが発生することがあります。
これは、新しい deb822 形式のリポジトリ設定ファイル /etc/apt/sources.list.d/ubuntu.sources にソースパッケージ情報(deb-src)が含まれていないためです。

解決方法は簡単です。
対象ファイル内の Types: deb 行を Types: deb deb-src に変更し、sudo apt update を実行するだけでエラーが解消されます。
また、クラウド環境の場合は cloud-init の設定にも注意してください。

これで、Ubuntu 24.04 環境でもスムーズにビルド依存関係を取得できるようになります。
今後のアップグレードやシステム構成変更の際の参考にしてください。