2025-6 Arch系Linuxでアップデートができない件

こちらのページでは、Linuxのディストリビューションのリリースタイプや、パッケージ管理、その特徴や諸々を系統別で記載しています。それらを諸々加味して自身に最適と思われるディストリビューションを探してみて下さい。

Hidekichi

pacman_error_2025-6

何が起きていたか

6/30現在で何が起きていたかを備忘録として書いておこうと思います。
現在、管理人はEndeavourOSを使用しており、この6月初め頃から週ごと程度でアップデートを試みていましたが、/usr/lib/firmeare/nvidia/ad103(104、106、107)衝突しているファイルとしてエラーが表示され、それ以外の更新ファイルなどはダウンロードできるもののインストールできないというような状態が1ヶ月近く続いていました。
別段それでも普段することに不便はないのでもうちょっと置いておこうと思いましたが、これをネタに記事を1本書こうということで記事にしてみた感じです。

まずArch系で困ったらArch Wikiへ

問題があったのはシステムのアップデート、つまりpacmanによる問題であったため、pacmanについて調べます。

調べるとトラブルシューティングがあり、次のように書いてあります。

エラー: 処理を完了できませんでした (衝突しているファイル)
package: /path/to/file がファイルシステムに存在しています
エラーが発生したため、パッケージは更新されませんでした。

これは、pacman がファイルの衝突を検出し、仕様によりファイルを上書きしないために発生します。これは仕様によるものであり、欠陥ではありません。

まさにこれ。

この解決方法は、

  1. まず、他のパッケージがそのファイルを所有していないか調べる
    • sudo pacman -Qo /path/to/file
  2. 何かしらがそのファイルを所有していた場合はバグレポートを提出
  3. 何にも所有されていないファイルであった場合は、システムにある方のファイルの名称を変更して再度システムのアップデート。その後、問題のファイルは削除可能

多くの場合、皆同時に同じ問題が発生しているとしたらバグレポートはすでに行われています。複数同じレポートを出すことは重要ではあるものの、その内容が重度であれば即メンテナーなどが確認と対処方法を提示してくれるだろうと思います。

皆が同じ内容をそれぞれに出す必要はありません。いつまでも解決しない場合は課長・係長より、まずは主任に伺いを立てるみたいな感じで、コミュニティーフォーラムを調べるべきです。

1番のものは今回の例であれば、

sudo pacman -Qo /usr/lib/firmware/nvidia/ad103

などのような感じかと思います。

arch wikiの同じ箇所で、該当ファイルが破損していたり、(から)であったり、存在していない場合は、上記3番であるようにどうせファイルを後で削除するのであれば、

pacman -S --overwrite glob package

などとして上書きすることもできます。などとも書かれていますが、すぐその下に、

警告: 通常、--overwrite スイッチの使用は避けてください。システムメンテナンス#特定の pacman コマンドを避けてください を参照してください。

ともあるわけです。

念の為に書いてあることなのですがこういうのがあると本来はどうすべきかがわからずにとても困ります。

コミュニティに聞いてみる

コミュニティでは、これらの問題を把握していて、これはEndeavourOSだけの話ではなく、上流のArchでの問題が下流にも広がっているとして、Arch公式アナウンスで「linux-firmwareの構造変更」に伴い/usr/lib/firmware/nvidia/ad103… が既存ファイルと競合し更新できなくなったと発表。

その対処方法として、

sudo pacman -Rdd linux-firmware
sudo pacman -Syu linux-firmware

これら操作で、旧版を削除し、新構成で再インストールという方法が言われました。

EndeavourOSフォーラムでもやはり更新に失敗したなどのユーザーの投稿がありコミュニティメンバーがこれらコマンドを紹介したということになっています。

-Rddを使用する理由

-Rdd依存関係チェックを無視して対象パッケージだけを強制削除するコマンドです。Arch wikiにあるファイルの衝突による更新が行われない場合の対処方法は、ユーザーが手作業で個別ファイルを移動・リネームなどをする必要がありますが、今回の場合はパッケージのシンボリックのンク構造が根本から変わったため、

こういう流れになり、これを行うには、-Rddが最速で確実という判断から、これらのコマンドが紹介されたと思います。

-Rddによるコマンドでうまく行ったように見えたが

これらを実行すると、確かに旧NVIDIAの該当ファイルなどの問題はなくなり、かつ即時sudo pacman -Syuでシステムを再構築するためアップデートは問題なく行われるようになりました。

しかし、これに伴う二次被害としてNetworkManagerが利用するファームウェアも削除されたのか、NetworkManagerを作動させるサービスなどは動作しているようだけども、肝心のファームウェアが読み込まれずに結果としてwifiが機能しないと言う状態になりました。
もちろん本来であれば正しく動作するようになったのでしょうけれども、たまたまか何かしらが原因でそうなったという感じです。

2025-07-01 追記

これに伴う二次被害としてNetworkManagerが利用するファームウェアも削除されたのか、……

と書きましたが、これは当然で-Rddでファームウェアを削除しているのですからそうなります。つまり、以下のことを忘れていたと言うことです。なのでそう言う自体になったらどう対処するかと言う視点からも御覧ください。

おそらく、こうなってしまった原因は、 sudo pacman -Rdd linux-firmware の後、sudo pacman -Syuで終わってしまったことにあるのではなかろうかと思うのです。
つまり、ここで再起動しろと言うメッセージが来ることで、必要であったsudo pacman -S linux-firmwareが抜けてしまい、本来であればまだネットに接続されている状態でファームウェアの更新もできたのに、再起動してしまったがゆえにファームウェアが無くなり、Wifiに接続できなくなってしまったと言うことではなかろうかと。

で、更に以下で説明しますが、sudo pacman -Syusudo pacman -S linux-firmwareと分ける必要もありません。

無線だけではなく、linux-firmwareがなくなるとスリープから復帰などのPCを制御する部分が無くなってしまうので、見た目には普通に使えているようでもかなり必要なものがない状態になります。
なので、必ず、sudo pacman -Syu linux-firmwareとするか、sudo pacman -Syuの実行後にsudo pacman -S linux-firmwareを忘れないように。

ここでsudo pacman -Syu linux-firmwaresudo pacman -S linux-firmwareの違いも書いておきます。

  • -Syu = 全体のシステムアップデート(upgrade)を行いつつ、linux-firmwareもアップグレードする
  • -S = install(インストール)
  • -y = sync(リポジトリの最新状態に更新)
  • -u = upgrade(インストール済みパッケージをすべて更新)

システム全体を最新化しつつlinux-firmwareもアップデートと言う形になります。
-Sは、つまりはlinux-firmwareをインストールするという事だけが対象になり、何かしらが必要であればアップデートされるかもしれませんし、既にインストールされている場合には「再インストールしますか?」と言う問い合わせがあるかと思ます。

linux-firmwareは、linuxカーネルや、linux-headersなどとの整合性をとるためにも一緒に更新するのが理想であり、そのためにもSyuでインストールするのが望ましいと思います。

解決に至るまで

sudo pacman -Rdd linux-firmwaresudo pacman -Syu linux-firmwareの部分から少しだけ振り返ってみたいと思います。

-Rddを使用する場合というのは、ファイル衝突が非常に頑固で--overwriteオプションでも解決しないような場合に用いられる、強制的なパッケージの再構築・再インストール方法です。

これらは本来使用するべきではなく、他の解決方法があるのであればそれを利用するべきですが、-Rddに至った経緯を前述した通り上流Archからの問題が派生したということ、管理方法が変わったということ、それらをひっくるめてファイルを個々に対応するよりはごっそりと削除して、新たに作り直すという方法でした。

上流Archにはそれらを変える必要性があり良くなるのであればそれは良しとも思いますが、それら問題をアップデートで解決できる方法を用意してほしかったとも思います。

結果を簡潔に書けばほんの少しのことですが、その流れを示しておきます

問題点

ファームウェア強制削除(-Rdd)により、NetworkManagerが動作しなくなった

これらにより、wlan0wlp3s0などのWifiインターフェースが表示されないことから、

今回はエラーはなかったが、接続ができない、あるいはwifiインターフェースが見つからない状態だった

原因の特定 Wifiファームウェアの欠如

journalctl -b | grep firmware

上記コマンド以外にも、使えるのであれば、以下でも可能

dmesg | grep iwlwifi

これらを行うと、次のようなログが表示される。

iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-8265-36.ucode failed with error -2

これらのように、iwlwifi-8265-36.ucodeの読み込みの失敗があった場合、ファームウェアが存在しない、あるいは壊れていると判断できる

必要なファイルを確認・入手

iwlwifi-8265-36.ucode
iwlwifi-8265-34.ucode

これらは使用しているPCがどのチップを使用しているかで変わりますが、だいたいは以下にあると思います。以下のリンク先にない場合は、AIなどに聞いてどこから入手できるかを探して下さい。

git.kernel.org

上記リンクであれば、リスト一覧の該当ファイルの一番右にあるplainを右クリックで保存したらok。ファイル名は自動で正しい名称がついたと思います。念の為、これらファイル名も確認の事。

ダウンロードできたら、それらファイルをUSBメモリなどを使用して問題がでているPCへ転送する。

ファームウェアの配置と再読み込み

今回の場合、firmwareに該当のファイルがないということからNetworkManagerを使用するサービスなどは起動しているものの((システムのアップデートでそれらは構築されます))、ファームウェアの読み込みエラーであったため、それらを元の場所にコピーする。

もしUSBメモリから該当ファイルをダウンロードディレクトリなどに移した場合も含め、ファイルマネージャーのアドレス欄をクリックするとそこまでのパスが出てくると思います。それをコピーして(ファイルマネージャーではCtrl+C可能)、ターミナルにまず貼り付けるわけですが、

sudo cp //ここにまずファイル元のパスをペースト

ターミナル上でペーストする場合は、WindowsなどのようにCtrl + Vではなく、Ctrl + shift + Vでペーストします。パスを覚えていれば別にペーストする必要もなくそのままダイレクトに入力してももちろんOKです。

そして、

sudo cp /YOUR/COPY/FROM/ /usr/lib/firmware/

とすればコピーできると思います。/YOUR/COPY/FROM/はファームウェアファイルの置いてある場所(ダウンロードとか移した任意のディレクトリ)で、半角スペースの後、ターゲットに当たるディレクトリ、今回は/usr/lib/firmware/を指定します。

sudoが必要なのは、firmwareディレクトリはシステムディレクトリなので、普通にコピー&ペーストができないからです。つまり管理者権限(管理者がやりますよと言うテイ)でペーストすると言うことです。

これらの確認はファイルマネージャーのアドレス欄に/usr/lib/firmware/を入れれば確認はできますから、ペーストしたファイルがあるかどうかは視認できると思います。

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi

あるいは、システムを再起動しても良いと思います。

再起動する前にコマンドを試すのは、再起動する前ならOS自体は作動しているため何かしらの手を打つことができますが、再起動してしまうとそれらが問題で起動しなくなったり、別の問題がでてしまう場合があるためではあります。
しかし、今回の場合は-Rddでfirmwareを削除して再構築した後、本来必要であったwifiのチップを動作させるファームウェアもなぜか無くなってしまったためであるので、正しいファイルを追加しただけというのもあり、再起動で良いのではないかと。

再起動後の確認など

簡単なのは、Firefoxなどを起動して何かしらのページが表示されるかを見ることです。しかし、そこでも表示がなかった場合は、

sudo systemctl restart NetworkManager
nmcli dev wifi

経緯のまとめと正しいと思われる修正方法

sudo pacman -Rdd linux-firmware
sudo pacman -Syu linux-firmware

もしこのページで書かれていないようなエラーが出た場合は、Arch Wikiあるいは、各ディストリビューションのコミュニティーフォーラムで調べるのが良いです。
ほとんどが英語であるため、それらがわからない場合は、journalctlを試して「次のようなエラーが出ているけどもどう対処すればよいか?」というようなことをAIに聞くのが良いかと思います。

AIは英語も翻訳して解説してくれるため、書かれている内容が複雑であった場合でも、よりナチュラルに日本語で解説してくれると思います。

今回使用したコマンドとその概要・例

目的使用例
ネットワーク確認ip a
ログ確認dmesg \| grep firmware
journalctl -b \| grep firmware
ファームウェア所有確認pacman -Qo /usr/lib/firmware/iwlwifi-8265-36.ucode
モジュール再読み込みmodprobe -r iwlwifi && modprobe iwlwifi
接続確認・設定nmcli,nmtui
ファームウェア再構築pacman -Rdd linux-firmware && pacman -S linux-firmware

どこに問題が起こっているかをまず確認する。そのためjournalctlの使い方を覚えておくと対処しやすくなります。

上記にあるコマンドA && コマンドBと連結してあるものは、コマンドAが成功した場合にコマンドBが実行されるという感じになります。
1行ずつ実行するのはより確実な方法と言えますが、実質一緒です。もしトラブルシューティングをしようとしている場合は1行ずつする方がベスト

総まとめ

半ば、ファームウェアの更新方法みたいな記事になりましたが、本意としては上流Archでlinux-firmwareの変更が行われ、正しくアップデートができなくなった事をどのように解消するかです。

途中の見出しで「結果を簡潔に書けばほんの少しのことですが」と書いたように、それらの答えは、

sudo pacman -Rdd linux-firmware
sudo pacman -Syu linux-firmware

と言うだけの事です。しかし、システムの更新が行われると再起動を促すメッセージが通知される事で、ここで再起動をしてしまうと面倒くさいことになりますよと言うのがこの記事の流れからも察してもらえるかと思います。

追記などをしたので記事の内容がわかりにくくなったかも知れませんが、これらに留意して問題の対処にあたってください。

blogカテゴリ内のタグ一覧