Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

Linuxの「Broken Pipe(パイプ破損)」エラーを解決する方法 – apt-getトラブルの対処ガイド

Linuxは安定して動いているように見えても、まれにパッケージが一切インストールできなくなることがあります。DebianやUbuntu、そしてそれらから派生したディストリビューションはapt-getパッケージマネージャーを採用しています。通常、管理者(root)権限があれば「apt-get install -f」コマンドを実行することで、必要な追加パッケージをインストールできます。しかし、ごくまれに「dpkg-deb: error」というメッセージが表示され、その後「broken pipe(壊れたパイプ)」エラーが発生したと通知されるケースがあります。

通常、「broken pipe」という用語は、コマンドラインでの「|」文字(パイプと呼ばれます。特にMS-DOSの経験がある方にはおなじみでしょう)の誤用を指します。しかし今回の場合、コマンドを間違えて入力したわけではないかもしれません。「|」文字を一切使わずにapt-getコマンドを入力したのにこのエラーが出るなら、ファイルシステムに問題が発生し、読み取り専用モードでマウントされた可能性があります。

方法1:入力したコマンドを確認する

最悪の事態を想定する前に、まずインストールコマンドを正しく入力したかどうかを確認することが重要です。熟練したプログラマーでもタイプミスをすることはあり、「|」文字を誤って入力してしまうことは簡単に起こります。キーボードの上矢印キーで過去のコマンドを呼び出すのではなく、もう一度手動で入力し直してみてください。

破壊的な操作を行わない「apt-get install -f」や「apt-get update」を実行してみましょう。何度再実行してもエラーが出る場合は、マシンを再起動してみてください。それでもエラーが表示されるようであれば、ファイルシステム自体に問題が発生している可能性があります。broken pipeエラーメッセージは、より深刻な問題の表面化した症状にすぎないのかもしれません。

方法2:ファイルシステムの不具合によるbroken pipeエラーからの復旧

コマンドの打ち直しだけでは解決しない場合は、ターミナル出力に「Read-only file system(読み取り専用ファイルシステム)」というエラーが表示されていないかに注目してください。これは何らかの理由でブートパーティションが読み取り専用ボリュームとしてマウントされていることを示しています。一般的に、これはファイルシステムに何らかの異常が発生し、GNU/Linuxが書き込みを行うのは安全ではないと判断したことを意味します。この安全機構のおかげで、一部のデータが破損している可能性はあるものの、Linuxはインストール環境の救済に最善を尽くしてくれています。

同じ種類のエラーが原因で、sudoコマンドの実行時に奇妙なメッセージが表示されることもあります。そのメッセージは「sudo: unable to open」で始まり、続いてリソース名が表示されます。Unixではすべてのリソースがファイルとして扱われるため、読み取り専用でマウントされたパーティションによってsudoが機能しなくなることがあるのです。

これらのいずれかに該当する場合は、システムをシャットダウンする必要があります。クリーンなLinuxのISOイメージを収録したUSBドライブを事前に作成しているなら、それを挿入し、BIOSまたはUEFIが指定するキーを押してリムーバブルデバイスから起動してください。ブートドライブ上に別のLinuxパーティションがある場合は、再起動時にGRUB経由でアクセスできます。いずれの場合も、損傷したパーティションをそこから起動することなくアクセスできる、安定した作業環境が必要です。

まだバックアップしていないデータがある場合は、Linuxがこの状態でのデバイス接続を許可していれば、この機会に別のパーティションやリムーバブルデバイスへバックアップしておきましょう。通常、読み取り専用のファイルシステムには新たにデバイスをマウントできないため、バックアップを実行するにはライブUSBやDVD環境でシステムを起動しておく必要があります。

次に、ブートドライブのファイルシステムに対応したfsckコマンドを実行し、安定した状態へ復元します。たとえば、ext4ファイルシステムでフォーマットされた/dev/sda1パーティションが破損していると仮定しましょう。その場合、ライブUSBまたはDVD環境内のrootターミナルから「fsck.ext4 -fv /dev/sda1」を実行してファイルシステムをチェックできます。ext2やext3で起動した場合は、fsck.ext2やfsck.ext3を使用しても構いません。理論上、これら3つはすべて内部でe2fsckプログラムを呼び出すため、実体はシンボリックリンクにすぎない可能性もあります。

「-f」オプションにより詳細な出力が得られ、一見正常に見えても強制的にスキャンが実行されます。ディスクに物理的なジオメトリの問題が疑われる場合は、「-c」または「-ck」オプションを付けてbadblocksプログラムによるサーフェススキャンを実行するとよいでしょう。スキャン完了後、パーティションが安定していればそこから再起動し、ターミナルから「sudo mount -o rw,remount /」コマンドを実行して読み書きアクセスを復元します。

/lost+foundディレクトリを確認するにはroot権限が必要ですが、fsckが失われたクラスタをそこに退避させている可能性があるため、必ず確認してください。GNU/Linux環境に戻った後にファイルが見つからない場合、それらはこのディレクトリ内にあるかもしれません(ただし名前が変更されています)。可能であれば、ターミナルでfileコマンドを使って各ファイルの種類を特定しましょう。

起動用のライブUSBやDVDがない場合は、他のクリーンなマシンでLinuxディストリビューションのISOをダウンロードして作成する必要があります。ターミナルコマンドしか使わないため、必ずしも普段使いのディストリビューションである必要はありません。KNOPPIXのように、こうした障害復旧を目的として設計されたディストリビューションもあります。また、SDカードやmicroSDカードスロットを搭載したネットブックやノートPCであれば、SDHC/microSDHCカードに書き込んだISOから起動することも可能です。同様のスロットを備えたUbuntuタブレットでも同じ手法が使えます。

著者について

Kevin Arrows

Kevin Arrowsは、10年以上の業界経験を持つベテランの技術スペシャリストです。Microsoft認定テクノロジースペシャリスト(MCTS)の資格を保有し、最新の技術動向を追いかけることに強い情熱を持っています。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなどの分野における豊富な専門知識を活かし、幅広い技術トピックについて執筆活動を行っています。複雑な技術的概念を明確かつ簡潔に説明する能力で同業者からも高く評価されています。

  1. 【解決方法】「add-apt-repository: コマンドが見つかりません」エラーの直し方

    Debian、Ubuntu、Linux MintなどのUbuntu系ディストリビューションを使用していると、PPA(Personal Package Archive)やその他のリポジトリをaptソースに追加しようとした際に、「add-apt-repository: コマンドが見つかりません」というエラーが表示されることがあります。このエラーは、必要なパッケージがシステムにインストールされていないことが主な原因です。 APTとsoftware-properties-commonパッケージとは? APT(Advanced Package Tool)は、Debian向けに開発されたパッケージ管理シス

  2. デュアルブート環境で「Shim SBATデータの検証に失敗しました(Security Policy Violation)」エラーが出たときの対処法

    「Verifying shim SBAT data failed: Security Policy Violation」(Shim SBATデータの検証に失敗しました:セキュリティポリシー違反)というエラーは、WindowsとLinuxを両方インストールしているデュアルブート環境のPCでよく発生します。これは、Secure Boot(セキュアブート)というセキュリティ機能がLinuxの起動をブロックすることで起こるものです。原因は、Microsoftが最近のWindowsアップデートで導入した最新のセキュリティルールに対して、Linux側で使われている起動ファイル(ShimやGRUB)が古く、