pkg・ports アップデート関連 - リンク切れのシンボリックリンクを削除

クラウディア 
1. 概要
2. リンク切れのシンボリックリンクを削除

1. 概要

 「FreeBSD」は、ありがたいことに、基本的には後方互換を保っていて、少なくともメジャーバージョンの1つ前のモジュールくらいは動いてくれます。  それを可能にしているのが

/usr/local/lib/compat/pkg/
 というディレクトリで、ここに、旧バージョンのライブラリが保管されます。  「ports」や「pkg」でアップグレードした際に、自動で保管してくれます。  もし旧バージョンのライブラリがなくなった場合も、シンボリックリンクを作成して、ライブラリが参照できるようにしてくれます。  ただし、これは、完璧ではないので、古くなって参照先もないシンボリックリンクが残っちゃったりします。  ぱっとディレクトリを見ると、こんな感じ
「/usr/local/lib/compat/pkg/」

 赤字になっちゃってるのが、リンク切れのシンボリックリンクです。

 これが、残っていると、「portupgrade」の際に


・・・	略	・・・

Installed packages to be REMOVED:
        py37-cffi: 1.14.0

Number of packages to be removed: 1

The operation will free 1 MiB.
[1/1] Deinstalling py37-cffi-1.14.0...
[1/1] Deleting files for py37-cffi-1.14.0: 100%
===>  Installing for py37-cffi-1.14.0
===>  Checking if py37-cffi is already installed
===>   Registering installation for py37-cffi-1.14.0 as automatic
Installing py37-cffi-1.14.0...
===>  Cleaning for py37-cffi-1.14.0
===>  Cleaning for py27-cffi-1.14.0
--->  Cleaning out obsolete shared libraries
No such file or directory @ realpath_rec - /usr/local/lib/compat/pkg/libmysqlclient.so.20
 とまぁ。  最後に「No such file or directory」が表示されるようになっちゃいます。  ちょっと、「や」ですね。

2. リンク切れのシンボリックリンクを削除

 「や」になったら、下記のコマンドで、リンク切れのシンボリックリンクを削除しましょう。

find -L /usr/local/lib/compat/pkg/ -type l | xargs rm
 うち間違って、必要なものを削除しちゃわないように気をつけてくださいね。
ハイスピードプラン