Lien symbolique: aucun fichier ou répertoire de ce type

18

J'ai créé un lien symbolique à partir d'un fichier dans "/ opt / bladir / bla" vers "bla". Donc "bla" est maintenant dans "/ usr / bin / bla". Mais si je veux appeler "bla" au terminal, il n'y a pas d'erreur de fichier ou de répertoire. J'ai regardé "/ usr / bin / bla" et le fichier est correctement lié à "/ opt / bladir / bla".

Quelle peut être l'erreur?

PS voici mon terminal "entrée": sudo ln -s /opt/bladir/bla bla

Merci!

€: Problème résolu. Selon la liste des fonctionnalités, 12.04 devrait avoir le support Multiarch ... 'devrait'. J'ai obtenu les ia32-libs de synaptic et maintenant le programme fonctionne très bien. En apparence, mes liens symboliques étaient corrects.

Merci pour toutes les réponses!

Sehe
la source

Réponses:

13

EDIT: la solution ci-dessous ne fonctionne pas. Il est évident que le lien symbolique est rompu, car file -Lne peut pas ouvrir le lien symbolique / usr / bin / bla. Dans ce cas, procédez comme suit:

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

en utilisant des chemins complets (-f est pour forcer l'écrasement du lien symbolique précédent, s'il y en a un).

Hm. Je pense que le programme "bla" peut rechercher des choses qui sont installées dans / opt / bladir et ne peuvent pas les trouver. Par exemple, il peut s'agir d'un wrapper de script shell autour d'un exécutable Java, avec un chemin relatif au répertoire courant: mais votre répertoire courant est / usr / bin /, et non / opt / bladir /.

Si ce qui suit fonctionne

file -L /usr/bin/bla

... alors ce n'est certainement pas un problème avec votre lien symbolique.

Vérifiez si "bla" est un script shell que vous pouvez modifier, jetez un œil à l'intérieur - vous trouverez peut-être le problème. Il est possible que l'ajout de / opt / bladir à votre CHEMIN soit une meilleure solution.

janvier
la source
La commande donnée dit: ERREUR: impossible d'ouvrir `/ usr / bin / bla '. Je ne peux pas jeter un œil à l'intérieur de "bla", c'est un programme, pas seulement un script shell.
Sehe
OK, refaites le lien symbolique avec les chemins complets, s'il vous plaît.
Janvier
Je suis venu à cette idée plus tôt par moi-même. Même avec rm les anciens liens et en créant de nouveaux, l'erreur apparaît toujours. -sf ne fonctionnait pas non plus.
Sehe
D'ACCORD. Veuillez exécuter ls -l /usr/bin/blaet ls -l /opt/bladir/blasignaler la sortie exacte de ces commandes.
Janvier
@Janvier, quelle ligne d'action recommanderiez-vous si file -L cela ne fonctionne pas ?
dbliss
0

Souvent, ce type de message d'erreur s'affiche, si le bit d'exécution n'est pas activé. Vérifiez si le fichier principal ainsi que le lien sont autorisés à exécuter.

Je soupçonne que votre /optpeut être monté à partir d'une partition distincte et qu'il n'est pas monté avec l' execoption de montage

Anwar
la source
Le bit d'exécution est défini et / opt / n'est pas sur une partition distincte: /
Sehe