FreeBSD - メンテナンス・トラブルシュート - pkg・ports アップデート関連 - portupgrade 時に clean でエラー

 
1. 概要
2. 調査
3. がんばって削除してみる
4. 別の方法で切り抜ける

1. 概要

 2018年8月1日。  これは ports の種類とか関係ない話ですが・・・。  libXt のポートアップグレード時に発生しました。

> portupgrade -rR libXt

・・・略・・・

rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/nls/zh_TW.UTF-8: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/nls: Directory not empty
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/pixmaps: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/sgml: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/skel: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/xml: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share: Directory not empty
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/tests: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local/www: Input/output error
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr/local: Directory not empty
rm: /usr/ports/x11-toolkits/libXt/work/stage/usr: Directory not empty
rm: /usr/ports/x11-toolkits/libXt/work/stage: Directory not empty
rm: /usr/ports/x11-toolkits/libXt/work: Directory not empty
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/x11-toolkits/libXt
*** Error code 1

Stop.

2. 調査

 実際には試行錯誤がもっとあったのですが

cd /usr/ports/x11-toolkits/libXt
make deinstall clean
 しても同じように止まる・・・。  結局

> cd /usr/ports/x11-toolkits/libXt/work/stage/usr/local/share/nls/
> ls sv_SE.ISO8859-15
ls: sv_SE.ISO8859-15: 入出力エラーです
 どうもここのディレクトリの中にあるものがアクセスできなくなっているようなのです。

3. がんばって削除してみる

 とりあえず「メンテナンス・トラブルシュート - ハードディスク・ファイルトラブル」に掲載してある方法を用いて、削除してみようとします。  ところが・・・。だめ・・・。  これは fsck しかないのかしら・・・。

4. 別の方法で切り抜ける

 現在、対象のマシンが手元にないので、再起動して fsck することができないので、応急処置。  上位のディレクトリは生きているので・・・

cd /usr/ports/x11-toolkits/libXt/
mkdir /tmp/trash
mv work /tmp/trash/.
ls
make clean
make
make install
 と work ディレクトリをディレクトリごと /tmp へ持って行って make し直して結果としてアップグレードできました。