Symbolischer Link: Keine solche Datei oder kein solches Verzeichnis

17

Ich habe einen symbolischen Link von einer Datei unter "/ opt / bladir / bla" zu "bla" erstellt. "Bla" befindet sich jetzt in "/ usr / bin / bla". Aber wenn ich "bla" am Terminal aufrufen will, kommt der keine solche Datei oder Verzeichnisfehler. Ich habe nach "/ usr / bin / bla" gesucht und die Datei ist korrekt mit "/ opt / bladir / bla" verknüpft.

Woran kann der Fehler liegen?

PS hier ist mein Terminal "Eintrag": sudo ln -s /opt/bladir/bla bla

Vielen Dank!

€: Problem gelöst. Gemäß der Feature-Liste sollte 12.04 Multiarch-Unterstützung haben ... "sollte". Ich habe die ia32-libs von synaptic bekommen und jetzt läuft das Programm einwandfrei. Wie es aussieht, waren meine symbolischen Links korrekt.

Vielen Dank für alle Antworten!

Sehe
quelle

Antworten:

13

BEARBEITEN: Die unten stehende Lösung funktioniert nicht. Es ist offensichtlich, dass die symbolische Verknüpfung unterbrochen ist, da file -Ldie symbolische Verknüpfung / usr / bin / bla nicht geöffnet werden kann. In diesem Fall gehen Sie wie folgt vor:

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

Verwenden vollständiger Pfade (-f dient zum Erzwingen des Überschreibens der vorherigen symbolischen Verknüpfung, falls vorhanden).

Hm. Ich denke, dass das Programm "bla" nach Dingen sucht, die in / opt / bladir installiert sind und diese nicht finden können. Beispielsweise kann es sich um einen Shell-Script-Wrapper um eine ausführbare Java-Datei handeln, dessen Pfad sich auf das aktuelle Verzeichnis bezieht. Ihr aktuelles Verzeichnis lautet jedoch / usr / bin / und nicht / opt / bladir /.

Wenn das folgende funktioniert

file -L /usr/bin/bla

... dann ist es definitiv kein Problem mit Ihrem symbolischen Link.

Überprüfen Sie, ob es sich bei "bla" um ein Shell-Skript handelt, das Sie ändern können, und werfen Sie einen Blick hinein - vielleicht finden Sie das Problem. Möglicherweise ist es eine bessere Lösung, / opt / bladir zu Ihrem PATH hinzuzufügen.

Januar
quelle
Der angegebene Befehl lautet: ERROR: / usr / bin / bla kann nicht geöffnet werden. Ich kann nicht in "bla" reinschauen, es ist ein Programm, nicht nur ein Shell-Skript.
Sehe
OK, wiederholen Sie die symbolische Verknüpfung mit vollständigen Pfaden.
Januar,
Auf diese Idee bin ich früher von mir aus gekommen. Selbst wenn die alten Links wiederhergestellt und neue erstellt wurden, tritt der Fehler weiterhin auf. -sf hat auch nicht funktioniert.
Sehe
IN ORDNUNG. Plese laufen ls -l /usr/bin/blaund ls -l /opt/bladir/blaund berichten über die genaue Ausgabe dieser Befehle.
Januar
@Januar, welche Vorgehensweise würden Sie empfehlen, wenn file -L nicht funktioniert?
Dbliss
0

Häufig wird diese Art von Fehlermeldung angezeigt, wenn Sie das Ausführungsbit nicht aktiviert haben. Überprüfen Sie, ob sowohl die Hauptdatei als auch der Link Ausführungsberechtigungen erhalten.

Ich vermute, dass Sie /optmöglicherweise von einer separaten Partition aus gemountet wurden und diese nicht mit der execMount-Option gemountet wurde

Anwar
quelle
Das Ausführungsbit ist gesetzt und / opt / befindet sich nicht auf einer separaten Partition: /
Sehe