Claude Desktop Linuxでaptリポジトリが二重登録される原因と直し方
apt updateで「configured multiple times」の警告や署名鍵の競合エラーが出るときの切り分けです。claude-desktop.listと.sourcesの重複を消す手順と、更新で再発する可能性を扱います。
Claude DesktopのLinux版(beta)を入れたUbuntuやDebianで、apt updateのたびにClaude Desktopのリポジトリが複数回設定されているという警告が出ることがあります。警告だけで済む報告と、aptが読み込み自体に失敗する報告があり、どちらも原因は /etc/apt/sources.list.d/ に同じリポジトリの定義が2つ並ぶことです。直し方は、重複した片方のファイルを消すか、署名鍵の指定をそろえることです。ただし更新のたびに元に戻るという報告が2件あり、消すだけでは終わらない可能性があります。
この記事は、GitHubのIssue #103416(2026年10月19日起票)と #84069(2026年8月5日起票)の報告に基づきます。どちらもOpenで、Anthropic側からの回答や修正はまだ付いていません。#103416には invalid ラベルが付いています。
出ている症状は2種類ある
同じ「二重登録」でも、aptの反応は2通りです。まず自分の画面がどちらかを見分けます。
apt updateに出る症状の違い
警告だけ
Warning: Target Packages (main/binary-amd64/Packages) is configured multiple times in .../claude-desktop.list:4 and .../claude-desktop.sources:1 の形で、Packages・Translations・DEP-11・CNFの各ターゲットについて繰り返し出ます。#103416の報告で、報告者はパッケージの更新自体は止まっていないとしています。
エラーで停止
Error: Conflicting values set for option Signed-By regarding source https://downloads.claude.ai/claude-desktop/apt/stable/ stable の形で、2つの定義が指す署名鍵のパスが食い違っています。続けて Error: The list of sources could not be read. が出て、aptが使えなくなります。#84069の報告です。
警告の方は、同じ内容の定義が2か所にあるだけなので、実害は出力の見づらさにとどまります。エラーの方は、signed-by に指定した鍵ファイルのパスが2つの定義で違うために起きます。一方が /usr/share/keyrings/claude-desktop-archive-keyring.asc、もう一方が /usr/share/keyrings/anthropic-claude.asc でした。
#84069には2026年9月21日付で、他の利用者から「新しいDebian系ディストリビューションでは警告が多く出る」という状況確認のコメントが1件付いています。Anthropic側の回答ではありませんが、特定の環境だけの問題ではない可能性を示しています。
なぜ2つのファイルができるのか
公式のLinux版ドキュメントには、リポジトリの登録先が /etc/apt/sources.list.d/claude-desktop.list と書かれています。手順で echo ... | sudo tee して作るファイルがこれです(手順書どおりに入れた場合の流れはClaude Desktop Linux版(beta)のダウンロードとインストール手順にあります)。さらに .deb パッケージ自体も、CLAUDE_DESKTOP_ADD_REPO を false にしていない限り、同じ場所にリポジトリを登録します。つまり公式の想定では、.list ファイルが唯一の登録先です。
ここに別形式のファイルが加わると重複します。#103416では claude-desktop.sources(deb822形式)が、#84069でも同名の .sources ファイルが、.list と併存していました。
| 報告 | 併存したファイル | 結果 | 報告者の環境 |
|---|---|---|---|
| #84069 | 併存したファイル.sources(自分で作成)と .list(更新で作成) | 結果Signed-Byの競合エラー | 報告者の環境Debian Trixie |
| #103416 | 併存したファイル.list:4と .sources:1 | 結果multiple timesの警告 | 報告者の環境Ubuntu、APTパッケージ |
#84069の報告者は、更新を入れるたびにpostinstスクリプトが .list を作り直し、すでに自分のdeb822ファイルがあるのに競合する定義を足すと書いています。#103416の報告者は、重複を手で消しても次のClaude Desktop更新後に再び現れると書いています。ただし #103416には、.sources を誰がいつ作ったかの記載がありません。#84069の報告者は自分で .sources を作ったと書いていますが、#103416の報告者は「公式のAPTパッケージを入れて更新した」と述べるだけです。
自分の環境で重複を確かめる
まず、Claude Desktop関連の定義ファイルがいくつあるかを見ます。
ls -l /etc/apt/sources.list.d/ | grep -i claudeclaude-desktop.list と claude-desktop.sources の両方が出れば、#103416と同じ型です。次に、それぞれの中身を並べて見ます。
cat /etc/apt/sources.list.d/claude-desktop.list
cat /etc/apt/sources.list.d/claude-desktop.sources.list には、手順書にある1行(deb [arch=amd64,arm64 signed-by=...] https://downloads.claude.ai/claude-desktop/apt/stable stable main)があるはずです。.sources 側のURIと Signed-By も、同じ宛先と同じ鍵を指しているか見比べてください。鍵のパスが違えばエラー型、同じなら警告型になります。
鍵ファイルそのものも確認します。
ls -l /usr/share/keyrings/ | grep -i -e claude -e anthropic
gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc手順書のフィンガープリントは 31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE です。鍵ファイルを複数持っている場合は、gpg --show-keys でそれぞれ同じフィンガープリントを返すか確かめます。
直し方: 登録を1か所にまとめる
方針は「どちらか一方を残して他方を消す」です。どちらを残すかは、使い続けたい形式で決めます。
手順書の形式に合わせる(.listを残す)
手順書どおりにしたい場合は、.sources を消して .list を残します。
sudo rm /etc/apt/sources.list.d/claude-desktop.sources
sudo apt update警告が消えれば完了です。#103416の報告者は、重複の設定を手で消すと警告が出なくなったと書いています(どちらを消したかの記載はありません)。問題はその次の更新です。
deb822形式に統一する(.sourcesを残す)
.sources に統一したい場合は、.list を消します。このとき、.sources の Signed-By が実在する鍵ファイルを指していることを先に確認します。
sudo rm /etc/apt/sources.list.d/claude-desktop.list
sudo apt updatedeb822形式のファイルは、例えば次のような形になります。URIとSuiteは .list の1行に、鍵のパスは手順書の保存先に合わせた例です。
Types: deb
URIs: https://downloads.claude.ai/claude-desktop/apt/stable
Suites: stable
Components: main
Architectures: amd64 arm64
Signed-By: /usr/share/keyrings/claude-desktop-archive-keyring.ascこの形式で残す場合も、更新後に .list が戻ってくるかは次の節の問題になります。
署名鍵の競合エラーのとき
エラー型は、#84069の報告では .list と .sources のどちらかを消すと apt が動き出します。ただし報告者は「動き出すのは次の更新までの間だけ」と書いています。
鍵のパスが違う原因も押さえておきます。#84069の報告者は、Claude Desktopの手順とClaude Codeの手順では鍵の保存名が違うものの、実体は同じ鍵だと書いています。実際、Claude Codeのaptリポジトリ手順にも NO_PUBKEY BAA929FF1A7ECACE という鍵IDの案内があり、Desktopのフィンガープリント末尾と一致します。Claude CodeのaptインストールについてはClaude Codeのapt installでLinuxにパッケージ導入する手順にあります。Claude CodeのリポジトリURLは claude-code/apt/stable、Claude Desktopは claude-desktop/apt/stable で別物ですが、鍵は共通です。鍵ファイルを自分でリネームして .sources の Signed-By に別名を書くと、パッケージが作る .list の鍵パスと食い違います。
更新のたびに戻るときの対処
消しても戻る場合、取れる手は限られます。
再発するときの順序
- 1
まず登録を1つに戻す
上の手順で片方を消し、
sudo apt updateが警告なしで通ることを確かめます。 - 2
更新後にもう一度確認する
次回のClaude Desktop更新のあと、
ls /etc/apt/sources.list.d/ | grep -i claudeを実行します。戻っていれば、パッケージ側がファイルを作り直しています。 - 3
再発するなら登録を止める設定を試す
公式ドキュメントには、
/etc/default/claude-desktopにCLAUDE_DESKTOP_ADD_REPO="false"を書いておくと、.debが自動でリポジトリを登録しなくなるとあります。
3つめは注意が要ります。公式の記述は「.deb から入れるときにリポジトリを登録しない方法」として書かれており、2つのIssueのような「更新時のpostinstによる再登録」を止められるかは記載がありません。試すなら、自分で .sources または .list を1つ持った状態で設定ファイルを作り、次の更新で重複が出ないかを見る使い方になります。
echo 'CLAUDE_DESKTOP_ADD_REPO="false"' | sudo tee /etc/default/claude-desktopこの設定にした場合、リポジトリ登録をパッケージに任せない分、自分で書いた1つの定義だけが更新の経路になります。自分の定義を消してしまうと、apt から新バージョンが届かなくなります。
直ったかの確認と、報告の仕方
直したあとは、警告が消えているか、そして更新が実際に届くかの両方を見ます。
sudo apt update 2>&1 | grep -i -e "configured multiple" -e "Conflicting" || echo "重複の警告なし"
apt-cache policy claude-desktopapt-cache policy の Candidate が (none) でなければ、リポジトリは1つに整理されたうえで生きています。
#103416のIssueは、.list と .sources を併存させない、既存の定義があれば作らない、旧式の .list がある環境から .sources 形式へ移行する場合を考慮する、の3点をパッケージ側への要望として挙げています。Claude Desktopのバージョン番号は、#103416の「Claude Code Version」欄に 2.42304.2 と入っています。この欄の値が何のバージョンかはIssueに説明がないため、報告するときはパッケージのバージョンを dpkg -s claude-desktop | grep Version で取り直して添える形が確実です。
まとめ
二重登録は、claude-desktop.list と claude-desktop.sources が同時にあることで起きます。警告型は片方を消せば止まり、署名鍵の競合型は鍵のパスをそろえるか片方を消さないと apt が動きません。更新で戻るのはパッケージ側の挙動と見られますが、修正の有無はIssueが閉じられるまで分かりません。次の更新後に ls /etc/apt/sources.list.d/ を一度見る習慣が、再発に気づく一番早い方法です。