ライブラリ(複数のファイル)へのシンボリックリンクを更新するスクリプトを作成する方法

ライブラリ(複数のファイル)へのシンボリックリンクを更新するスクリプトを作成する方法

複数のファイルへのシンボリックリンクを作成する方法を知りたいですか? Bashスクリプトを書くのと同じです。

デフォルトでは、ファイルはgstreamerライブラリであり、ライブラリはそのようなパターンです。例は次のとおりです。

libgstadaptivedemux-1.0.so      should link to  libgstadaptivedemux-1.0.so.0                                                                                                                    
libgstadaptivedemux-1.0.so.0    should link to  libgstadaptivedemux-1.0.so.0.1806.0                                                                                                                  
libgstadaptivedemux-1.0.so.0.1404.0  (the old library)                                                                                                            
libgstadaptivedemux-1.0.so.0.1806.0   (the new library)

私は次のことを試しています

ln -sf libgst*.0 libgst*
ln -sf libgst*.0.1806.0  libgst*.0

しかし、libgst***.0.1806.0がディレクトリではないと常に失敗します。私はどこで間違っていますか?

ありがとう

ベストアンサー1

ln -sf libgst*.0 libgst*

(あなたの場合)に拡張されます。

ln -sf libgstadaptivedemux-1.0.so.0 libgstadaptivedemux-1.0.so.0.1404.0 libgstadaptivedemux-1.0.so.0.1806.0 libgstadaptivedemux-1.0.so libgstadaptivedemux-1.0.so.0 libgstadaptivedemux-1.0.so.0.1404.0 libgstadaptivedemux-1.0.so.0.1806.0

これは、4つのファイルすべてと一致するlibgst*.0ためです。libgstadaptivedemux-1.0.so.0libgstadaptivedemux-1.0.so.0.1404.0libgstadaptivedemux-1.0.so.0.1806.0libgst*

このような複数の引数の場合、ln最後の引数はディレクトリであると予想されます。この変形の目的はln以下の通りである。Nパラメータはどこにありますか?N> 2は、すべての名前ファイルへのリンクを生成することです(非オプションパラメータ1からN-1)与えられたディレクトリ(パラメータ)N)。

いつも仮定しよう変える既存のリンク、新しいリンクは作成されず、最初のコマンドは次のように置き換えることができます。

ln -sf libgst*.so.0 libgst*.so

(ただし、この2つのリンクが存在する場合にはこのコマンドは必要ありません。)

2番目のコマンドは次のように置き換える必要があります。

ldconfig

これにより、リンクとライブラリキャッシュ(動的リンカが実際に使用しているもの)が正しく更新されます。

おすすめ記事