/ usr / localは、マシンの管理者がローカルでコンパイルしたプログラムをインストールするために使用することを目的としています。単純なプログラムは/usr/ local / binに移動し、そこから/ usr / local/binをPATH
環境変数に入れることで実行されます。これにより、管理者は、OSに含まれていない追加のコマンドへのアクセスをユーザーに提供できます。ルートが/usr/ binに新しいものをインストールするのを止めるものは何もありませんが、慣例では/ usr / binはOSディストリビューターのパッケージツールによって管理され、ローカルのものを分離しておくと少し混乱が少なくなります。
ローカルプログラムがOSディストリビューターによって提供されていないライブラリを必要とする場合があり、ライブラリは/ usr / local / libに入り、すべてが機能します。
バージョンの競合がある場合(OSはバージョンXのlibz.soを提供しましたが、ローカルプログラムはlibz.soバージョンX + 1を必要とするか、特別なオプションを使用してlibz.soをコンパイルする必要があります)、事態は複雑になり始めます。/ usr / local / libに新しいライブラリをインストールすることは、おそらく最初は問題ありません。
すべてのプログラムはに基づいてライブラリを検索し、/etc/ld.so.conf
そこで/ usr / libが優先される場合、/ usr/localプログラムは必要な新しいライブラリを見つけられません。したがって、通常は/ usr / local/libが優先されます。ライブラリには下位互換性があるため、古いプログラムが新しいライブラリを見つけることは通常問題にはなりません。
数年後、OSを数回アップグレードした後、/ usr/libのライブラリはバージョンX+2になり、/ usr / local/libのライブラリはバージョンX+1のままになり、/ usr/binのプログラムが古い/usr/ local / libバージョン、および誤動作。これはおそらく古いライブラリを削除することで修正できます。バージョンX+1を必要とする/usr/ local / binプログラムは、/ usr/libでバージョンX+2を検出し、正常に動作します。ただし、そもそもバージョンX + 1をローカルにインストールする理由が、新しいバージョンの必要性である場合に限ります。
削除を行う前に潜在的な問題を調査するには、/ usr/localでlibzを使用しているものを探します。
ldd /usr/local/bin/* /usr/local/sbin/* | less +/libz
libzを参照するものを見つけた場合は、それを実行してみて、LD_LIBRARY_PATH=/usr/lib
それがまだ機能することを確認してください。何も壊れていないと仮定して、ローカルのlibzファイルを削除します(必要に応じてこれを元に戻すことができるように、バックアップの場所に移動します)
mkdir /root/local-libz-backup
mv /usr/local/lib/libz* /root/local-libz-backup
ldconfig