Łącze symboliczne: brak takiego pliku lub katalogu

18

Utworzyłem symboliczny link z pliku w „/ opt / bladir / bla” do „bla”. Zatem „bla” jest teraz w „/ usr / bin / bla”. Ale jeśli chcę wywołać „bla” na terminalu, nie ma takiego błędu pliku lub katalogu. Spojrzałem na „/ usr / bin / bla”, a plik poprawnie łączy się z „/ opt / bladir / bla”.

Co może być błędem?

PS tutaj jest mój „wpis” mojego terminala: sudo ln -s /opt/bladir/bla bla

Dzięki!

€: Problem rozwiązany. Zgodnie z listą funkcji 12.04 powinien mieć obsługę Multiarch ... „powinien”. Dostałem ia32-libs z synaptic, a teraz program działa dobrze. Wygląda na to, że moje symboliczne linki są prawidłowe.

Dziękuję za wszystkie odpowiedzi!

Sehe
źródło

Odpowiedzi:

13

EDYCJA: poniższe rozwiązanie nie działa. Oczywiste jest, że dowiązanie symboliczne jest zerwane, ponieważ file -Lnie można otworzyć dowiązania symbolicznego / usr / bin / bla. W takim przypadku wykonaj następujące czynności:

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

używając pełnych ścieżek (-f oznacza wymuszenie zastąpienia poprzedniego dowiązania symbolicznego, jeśli taki istnieje).

Hm Myślę, że program „bla” może szukać rzeczy, które są zainstalowane w / opt / bladir i nie mogą ich znaleźć. Na przykład może to być powłoka skryptu powłoki wokół pliku wykonywalnego Java ze ścieżką względem bieżącego katalogu: ale bieżącym katalogiem jest / usr / bin /, a nie / opt / bladir /.

Jeśli następujące działania działają

file -L /usr/bin/bla

... to zdecydowanie nie jest problem z twoim dowiązaniem symbolicznym.

Sprawdź, czy „bla” to skrypt powłoki, który możesz zmodyfikować, zajrzyj do środka - być może znajdziesz problem. Być może dodanie / opt / bladir do PATH byłoby lepszym rozwiązaniem.

styczeń
źródło
Podane polecenie mówi: BŁĄD: nie można otworzyć `/ usr / bin / bla '. Nie mogę zajrzeć do „bla”, to program, a nie tylko skrypt powłoki.
Sehe
OK, proszę powtórzyć symboliczny link z pełnymi ścieżkami.
stycznia
Sam doszedłem do tego pomysłu wcześniej. Nawet w przypadku starych linków i tworzenia nowych nadal pojawia się błąd. -sf również nie działało.
Sehe
DOBRZE. Plese uruchomienia ls -l /usr/bin/blai ls -l /opt/bladir/blai podać dokładne dane wyjściowe z tych poleceń.
stycznia
@ Stycznia, jaki kierunek działania poleciłbyś, jeśli file -L nie zadziała?
dbliss
0

Często ten typ komunikatu o błędzie jest wyświetlany, jeśli bit wykonywania nie jest włączony. Sprawdź, czy plik główny, a także łącze mają uprawnienia do wykonywania.

Podejrzewam, że twój /optmoże być zamontowany z oddzielnej partycji i nie jest montowany z execopcją mount

Anwar
źródło
Bit wykonania jest ustawiony i / opt / nie znajduje się na osobnej partycji: /
Sehe