(2021-04-29 初稿 - 2022-01-16 追記)
Raspberry Pi4で、rubyライブラリを利用したくて、ruby-devをインストールしようとしたところ、以下のメッセージが出て、インストールできなかった。
同じトラブルに巻き込まれる可能性はかなり低いと思うが、自分の備忘録として記す。
(2022-01-16 追記)
上記以外にも、エラーが起きて対処したので、その対処方法も併せて追記する。
具体的には、対処方法2を追記した。
(追記終了)
対処方法1:他のラズパイからコピーする方法
実際のエラーメッセージ
pi@raspberry:~ $ sudo apt install ruby ruby-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: libgmp-dev libgmpxx4ldbl ruby2.5-dev ruby2.5-doc 提案パッケージ: gmp-doc libgmp10-doc libmpfr-dev 以下のパッケージが新たにインストールされます: libgmp-dev libgmpxx4ldbl ruby-dev ruby2.5-dev ruby2.5-doc アップグレード: 0 個、新規インストール: 5 個、再インストール: 1 個、削除: 0 個、保留: 0 個。 3,179 kB 中 0 B のアーカイブを取得する必要があります。 この操作後に追加で 20.8 MB のディスク容量が消費されます。 続行しますか? [Y/n] 以前に未選択のパッケージ libgmpxx4ldbl:armhf を選択しています。 dpkg: unrecoverable fatal error, aborting: パッケージ 'liblapack3:armhf' のファイル一覧ファイルに最後の改行がありません E: Sub-process /usr/bin/dpkg returned an error code (2)
対処方法
エラーメッセージは、「liblapack3:arohfのファイル一覧ファイルのエラー」、このファイルは、liblapack2:armhf.listのことで、/var/lib/dpkg/infoフォルダ内にある。
liblapack3のVersion 3.8.0-2のタイムスタンプは、2018年12月2日であるはずが、2019年9月26日になっており、かつ、バイナリファイルで読み込めない。
そこで、他のRaspberry Pi4のBusterからliblapack2:armhf.listをコピーすることによって、ruby-devが正常にインストールできるようになった。
対処方法2:設定ファイルをバックアップし、再インストールする方法
実際のエラーメッセージ
pi@raspberry:~ $ sudo apt update ; sudo apt upgrade 以下のパッケージはアップグレードされます: libhttp-parser2.8 python3-lxml アップグレード: 2 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 1,053 kB 中 0 B のアーカイブを取得する必要があります。 この操作後に追加で 8,192 B のディスク容量が消費されます。 続行しますか? [Y/n] changelog を読み込んでいます... 完了 dpkg: unrecoverable fatal error, aborting: パッケージ 'python3-phatbeat' のファイル一覧ファイルに最後の改行がありません E: Sub-process /usr/bin/dpkg returned an error code (2)
今回は前回と異なり、手元に同じバージョンのラズパイがなかったので、Web検索して以下のページにヒット。多謝m(__)m
上記サイトだと、いきなり設定ファイルを削除してしまうので、念のためにバックアップ。
$ mkdir backup $ sudo mv /var/lib/dpkg/info/python3-phatbeat.* ~/backup/ $ sudo apt-get install python3-phatbeat --reinstall
正常にaptでアップグレードできることを確認して、backupディレクトリを削除。
$ sudo rm -rf ~/backup
おわりに
対処方法として、2つの方法を示したが、対処方法2の方が手元に同じバージョンのラズパイが無くても対応できるのでおすすめ。
しかし、本質的には、なぜlistファイルが書き換えられてしまったのか、原因を調査すべきだが、とりあえずの応急措置として良しとした。
相変わらずの役に立たないページ。^^;