シンボリックリンク:そのようなファイルまたはディレクトリはありません


17

「/ opt / bladir / bla」のファイルから「bla」へのシンボリックリンクを作成しました。したがって、「bla」は「/ usr / bin / bla」にあります。しかし、ターミナルで "bla"を呼び出したい場合、no such file or directoryエラーが発生します。「/ usr / bin / bla」を検索しましたが、ファイルは「/ opt / bladir / bla」で正しくリンクしています。

エラーは何ですか?

PSここに私の端末の「エントリ」です: sudo ln -s /opt/bladir/bla bla

ありがとう!

€:問題は解決しました。機能リストによると、12.04はMultiarchをサポートする必要があります...「すべき」です。シナプスからia32-libsを入手しましたが、プログラムは問題なく動作しました。見たところ、私のシンボリックリンクは正しいところです。

答えてくれてありがとう!

回答:


13

編集:以下のソリューションは動作しません。file -Lシンボリックリンク/ usr / bin / blaを開けないため、シンボリックリンクが壊れていることは明らかです。この場合、次を実行します。

sudo ln -sf /opt/bladir/bla /usr/bin/bla

フルパスを使用します(-fは、前のシンボリックリンクがある場合、それを強制的に上書きします)。

ふむ プログラム "bla"は、/ opt / bladirにインストールされているものを探している可能性があると思います。たとえば、Java実行可能ファイルのシェルスクリプトラッパーで、現在のディレクトリからの相対パスを使用できます。ただし、現在のディレクトリは/ opt / bladir /ではなく/ usr / bin /です。

以下が機能する場合

file -L /usr/bin/bla

...その後、シンボリックリンクの問題ではないことは間違いありません。

「bla」が変更可能なシェルスクリプトであるかどうかを確認し、内部を見てください。おそらく問題が見つかるでしょう。おそらく、PATHに/ opt / bladirを追加する方がより良い解決策でしょう。


指定されたコマンドは次のように言います:エラー: `/ usr / bin / bla 'を開けません。「bla」の内部を見ることができません。これはシェルスクリプトだけでなく、プログラムです。
-Sehe

OK、フルパスでシンボリックリンクをやり直してください。

私は自分でその考えに早く来ました。古いリンクをrmにして新しいリンクを作成しても、エラーは表示されます。-sfも機能しませんでした。
Sehe

OK。これらのコマンドの正確な出力を実行ls -l /usr/bin/blals -l /opt/bladir/blaてレポートします。

@Januaryうまくfile -L いかない場合、どのような行動を推奨ますか?
dbliss

0

実行ビットが有効になっていない場合、多くの場合、このタイプのエラーメッセージが表示されます。メインファイルとリンクに実行許可が与えられているかどうかを確認します。

私はあなた/optが別のパーティションからマウントされるかもしれないと疑っています、それはexecマウントオプションでマウントされていません


実行ビットが設定され、/ opt /が別のパーティションにありません:/
Sehe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.