Это не каталог linux ошибка

I simply want to run an executable from the command line, ./arm-mingw32ce-g++, but then I get the error message,

bash: ./arm-mingw32ce-g++: No such file or directory

I’m running Ubuntu Linux 10.10. ls -l lists

-rwxr-xr-x 1 root root  433308 2010-10-16 21:32 arm-mingw32ce-g++

Using sudo (sudo ./arm-mingw32ce-g++) gives

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

I have no idea why the OS can’t even see the file when it’s there. Any thoughts?

asked Oct 16, 2010 at 14:00

Warpspace's user avatar

This error can mean that ./arm-mingw32ce-g++ doesn’t exist (but it does), or that it exists and is a dynamically linked executable recognized by the kernel but whose dynamic loader is not available. You can see what dynamic loader is required by running ldd /arm-mingw32ce-g++; anything marked not found is the dynamic loader or a library that you need to install.

If you’re trying to run a 32-bit binary on an amd64 installation:

  • Up to Ubuntu 11.04, install the package ia32-libs.
  • On Ubuntu 11.10, install ia32-libs-multiarch.
  • Starting with 12.04, install ia32-libs-multiarch, or select a reasonable set of :i386 packages in addition to the :amd64 packages.

answered Oct 16, 2010 at 14:25

Gilles 'SO- stop being evil''s user avatar

10

I faced this error when I was trying to build Selenium source on Ubuntu. The simple shell script with correct shebang was not able to run even after I had all pre-requisites covered.

file file-name # helped me in understanding that CRLF ending were present in the file.

I opened the file in Vim and I could see that just because I once edited this file on a Windows machine, it was in DOS format. I converted the file to Unix format with below command:

dos2unix filename # actually helped me and things were fine.

I hope that we should take care whenever we edit files across platforms we should take care for the file formats as well.

fantaghirocco's user avatar

answered Sep 23, 2015 at 9:29

Jitendra's user avatar

JitendraJitendra

7066 silver badges10 bronze badges

4

This error may also occur if trying to run a script and the shebang is misspelled. Make sure it reads #!/bin/sh, #!/bin/bash, or whichever interpreter you’re using.

answered Jan 27, 2014 at 20:24

Zoltán's user avatar

ZoltánZoltán

21.2k14 gold badges92 silver badges133 bronze badges

3

I had the same error message when trying to run a Python script — this was not @Warpspace’s intended use case (see other comments), but this was among the top hits to my search, so maybe somebody will find it useful.

In my case it was the DOS line endings (rn instead of n) that the shebang line (#!/usr/bin/env python) would trip over. A simple dos2unix myfile.py fixed it.

answered Feb 23, 2015 at 15:50

djlauk's user avatar

djlaukdjlauk

3,1791 gold badge12 silver badges12 bronze badges

1

I found my solution for my Ubuntu 18 here.

sudo dpkg --add-architecture i386

Then:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

answered May 15, 2020 at 15:37

betontalpfa's user avatar

betontalpfabetontalpfa

3,3841 gold badge32 silver badges65 bronze badges

1

As mentioned by others, this is because the loader can’t be found, not your executable file. Unfortunately the message is not clear enough.

You can fix it by changing the loader that your executable uses, see my thorough answer in this other question: Multiple glibc libraries on a single host

Basically you have to find which loader it’s trying to use:

$ readelf -l arm-mingw32ce-g++ | grep interpreter
  [Requesting program interpreter: /lib/ld-linux.so.2]

Then find the right path for an equivalent loader, and change your executable to use the loader from the path that it really is:

$ ./patchelf --set-interpreter /path/to/newglibc/ld-linux.so.2 arm-mingw32ce-g++

You will probably need to set the path of the includes too, you will know if you want it or not after you try to run it. See all the details in that other thread.

answered Jul 11, 2019 at 21:52

msb's user avatar

msbmsb

3,7793 gold badges30 silver badges38 bronze badges

2

I got this error “No such file or directory” but it exists because my file was created in Windows and I tried to run it on Ubuntu and the file contained invalid 15r where ever a new line was there.
I just created a new file truncating unwanted stuff

sleep: invalid time interval ‘15r’
Try 'sleep --help' for more information.
script.sh: 5: script.sh: /opt/ag/cont: not found
script.sh: 6: script.sh: /opt/ag/cont: not found
root@Ubuntu14:/home/abc12/Desktop# vi script.sh 
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  r  n   w   g   e   t       h   t   t   p   :   /

0000400   :   4   1   2   0   /  r  n
0000410
root@Ubuntu14:/home/abc12/Desktop# tr -d \015 < script.sh > script.sh.fixed
root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 
0000000   #   !   /   u   s   r   /   b   i   n   /   e   n   v       b
0000020   a   s   h  n   w   g   e   t       h   t   t   p   :   /   /

0000400   /  n
0000402
root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

answered Jan 14, 2016 at 15:09

likeGreen's user avatar

likeGreenlikeGreen

1,0071 gold badge19 silver badges38 bronze badges

I got the same error for a simple bash script that wouldn’t have 32/64-bit issues. This is possibly because the script you are trying to run has an error in it. This ubuntu forum post indicates that with normal script files you can add sh in front and you might get some debug output from it. e.g.

$ sudo sh arm-mingw32ce-g++

and see if you get any output.

In my case the actual problem was that the file that I was trying to execute was in Windows format rather than Linux.

answered Nov 27, 2013 at 14:58

icc97's user avatar

icc97icc97

11.1k8 gold badges72 silver badges88 bronze badges

Below command worked on 16.4 Ubuntu

This issue comes when your .sh file is corrupt or not formatted as per unix protocols.

dos2unix converts the .sh file to Unix format!

sudo apt-get install dos2unix -y
dos2unix test.sh
sudo chmod u+x test.sh 
sudo ./test.sh

answered Apr 20, 2018 at 9:27

Soumyaansh's user avatar

SoumyaanshSoumyaansh

8,5567 gold badges44 silver badges44 bronze badges

I had the same problem with a file that I’ve created on my mac.
If I try to run it in a shell with ./filename I got the file not found error message.
I think that something was wrong with the file.

what I’ve done:

open a ssh session to the server

cat filename
copy the output to the clipboard

rm filename
touch filename
vi filename
i for insert mode
paste the content from the clipboard
ESC to end insert mode
:wq!

This worked for me.

answered Oct 12, 2014 at 21:44

space's user avatar

spacespace

211 bronze badge

1

Added here for future reference (for users who might fall into the same case):
This error happens when working on Windows (which introduces extra characters because of different line separator than Linux system) and trying to run this script (with extra characters inserted) in Linux. The error message is misleading.

In Windows, the line separator is CRLF (rn) whereas in linux it is LF (n). This can be usually be chosen in text editor.

In my case, this happened due to working on Windows and uploading to Unix server for execution.

answered Jan 24, 2020 at 2:54

PALEN's user avatar

PALENPALEN

2,7542 gold badges23 silver badges24 bronze badges

1

I just had this issue in mingw32 bash. I had execuded node/npm from Program Files (x86)nodejs and then moved them into disabled directory (essentially removing them from path). I also had Program Filesnodejs (ie. 64bit version) in path, but only after the x86 version. After restarting the bash shell, the 64bit version of npm could be found. node worked correctly all the time (checked with node -v that changed when x86 version was moved).

I think bash -r would’ve worked instead of restarting bash: https://unix.stackexchange.com/a/5610

answered Jul 15, 2016 at 8:31

Pasi Savolainen's user avatar

Pasi SavolainenPasi Savolainen

2,4401 gold badge22 silver badges35 bronze badges

I had this issue and the reason was EOL in some editors such as Notepad++. You can check it in Edit menu/EOL conversion. Unix(LF) should be selected.
I hope it would be useful.

answered Sep 22, 2019 at 12:04

user3184564's user avatar

1

Hit this error trying to run terraform/terragrunt (Single go binary).

Using which terragrunt to find where executable was, got strange error when running it in local dir or with full path

bash: ./terragrunt: No such file or directory

Problem was that there was two installations of terragrunt, used brew uninstall terragrunt to remove one fixed it.

After removing the one, which terragrunt showed the new path /usr/bin/terragrunt everything worked fine.

answered Dec 14, 2020 at 20:46

Pieter's user avatar

PieterPieter

1,88717 silver badges17 bronze badges

For those encountering this error when running a java program, it’s possible that you’re trying to run a 64-bit java program using on a 32-bit linux operating system.

I only realised when I ran ldd on 64-bit java which reported:

ldd /usr/java/jdk1.8.0_05/bin/java

‘not a dynamic executable’

Whereas the old 32 bit java reported sensible results:

ldd /usr/java/jdk1.8.0_05/bin/java

answered Jan 22, 2022 at 7:52

keithphw's user avatar

keithphwkeithphw

3801 gold badge4 silver badges14 bronze badges

In a .sh script, each line MUST end with a single character — newline (LF or «n«).

Don’t make mistakes like me, because my text-editor of choice is Notepad++ in Win.
The default line ending in Win is «rn» (CR LF), and such ending is not standard for Linux shell scripts.

answered Dec 16, 2022 at 22:20

Bokili Production's user avatar

In my case, it turns out the file was a symlink:

$ cat deluge-gtk.lock
cat: deluge-gtk.lock: No such file or directory
$ file deluge-gtk.lock
deluge-gtk.lock: broken symbolic link to 32309

Misleading errors like this are fairly common on Linux. Related discussion: https://lwn.net/Articles/532771/

answered Nov 2, 2021 at 5:01

Navin's user avatar

NavinNavin

3,6462 gold badges28 silver badges52 bronze badges

Give it a try by changing the name of file or folder which is not showing in terminal/command prompt.

step1 : change the name of file or folder.
step2 : cd filename/foldername

answered Nov 21, 2021 at 19:10

SHACHI PRIYA's user avatar

2

For future readers, I had this issue when trying to launch a Django server using gunicorn. I was using AWS CodeBuild to build the virtual environment and run tests and using CodeDeploy to put the built artifacts onto the production server and launch the new version (all environments were Ubuntu 20.04). I had mistakenly thought that env/bin/... contained actual binaries of native libraries but that was not the case. It was just Python scripts with a shebang of the path to the Python interpreter on the build machine. In my case, the machine installing the packages and actually running the packages was different. To be more specific, all of the files in env/bin had the shebang #!/codebuild/output/src715682316/src/env/bin/python, so of course running env/bin/gunicorn on the production server would fail. The cryptic error message was when Ubuntu would tell me that env/bin/gunicorn didn’t exist as opposed to saying /codebuild/output/src715682316/src/env/bin/python didn’t exist. I was able to fix this problem by starting gunicorn using python3 env/bin/gunicorn instead of env/bin/gunicorn.

answered May 22, 2022 at 20:17

Badr B's user avatar

Badr BBadr B

9201 gold badge8 silver badges17 bronze badges

This: sed -i -e 's/r$//' FILE, could potentially fix your problem.

As many answers already have explained, this issue could be caused by line endings being rn in Windows and only n in Linux. A suggested approach was to use dos2unix. As far as I understand this is not standard on most Linux distributions, and in my case I could not install / use it.

Therefore I used the following approach, (mentioned in Bash script – «/bin/bash^M: bad interpreter: No such file or directory»), where you can use the sed command instead.

sed -i -e 's/r$//' FILE where you replace FILE with the name of your file, e.g. sed -i -e 's/r$//' myscript.sh

If you for some reason do not have sed installed but do not want to use dos2unix you can use the following to install sed:

sudo apt-get update
sudo apt-get install sed

answered Mar 30 at 13:38

darclander's user avatar

darclanderdarclander

1,5061 gold badge12 silver badges35 bronze badges

1

Yet another possible reason: the file is a binary linked dynamically against musl (most likely for alpine)

on debian system you will have to install

apt-get update -y && apt-get install -y musl musl-dev musl-tools

answered Apr 14 at 11:15

Daniel Braun's user avatar

Daniel BraunDaniel Braun

2,39326 silver badges25 bronze badges

I’ve downloaded a game (Shank) but the bin file doesn’t run. The error that is shown when I try to launch the executable is:

bash: ./shank-linux-120720110-1-bin: No such file or directory

asked May 7, 2012 at 19:06

Francesco's user avatar

FrancescoFrancesco

2,8812 gold badges14 silver badges12 bronze badges

7

You’re probably trying to run a 32-bit binary on a 64-bit system that doesn’t have 32-bit support installed.

There are three cases where you can get the message “No such file or directory”:

  • The file doesn’t exist. I presume you’ve checked that the file does exist (perhaps because the shell completes it).
  • There is a file by that name, but it’s a dangling symbolic link.
  • The file exists, and you can even read it (for example, the command file shank-linux-120720110-1-bin displays something like “ELF 32-bit LSB executable …”), and yet when you try to execute it you’re told that the file doesn’t exist.

The error message in this last case is admittedly confusing. What it’s telling you is that a key component of the runtime environment necessary to run the program is missing. Unfortunately, the channel through which the error is reported only has room for the error code and not for this extra information that it’s really the runtime environment that’s to blame. If you want the technical version of this explanation, read Getting “Not found” message when running a 32-bit binary on a 64-bit system.

The file command will tell you just what this binary is. With a few exceptions, you can only run a binary for the processor architecture that your release of Ubuntu is for. The main exception is that you can run 32-bit (x86, a.k.a. IA32) binaries on 64-bit (amd64, a.k.a. x86_64) systems.

In Ubuntu up to 11.04, to run a 32-bit binary on a 64-bit installation, you need to install the ia32-libs package Install ia32-libs. You may need to install additional libraries (you’ll get an explicit error message if you do).

Since 11.10 (oneiric) introduced multiarch support, you can still install ia32-libs, but you can choose a finer-grained approach, it’s enough to get libc6-i386 Install libc6-i386 (plus any other necessary library).

Community's user avatar

answered May 7, 2012 at 21:47

Gilles 'SO- stop being evil''s user avatar

9

64 bit Ubuntu Multiarch systems

Follow this answer only if the output of file file-name shows,

file-name: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped

To run 32bit executable file in a 64 bit multi-arch Ubuntu system, you have to add i386 architecture and also you have to install libc6:i386,libncurses5:i386,libstdc++6:i386 these three library packages.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name

Community's user avatar

answered Apr 24, 2014 at 13:14

Avinash Raj's user avatar

Avinash RajAvinash Raj

76.7k55 gold badges213 silver badges253 bronze badges

4

To expand on @Gilles answer, there are at least three scenarios resulting in this error:

  1. The file doesn’t exist.
  2. The file exists but is a dangling symbolic link.
  3. The file exists (e.g. file command works), making for a puzzling error message. This may mean there’s a problem with the loader.

Categories of loader problems:

  1. An executable’s loader does not exist. You can check this using the file command and see if the loader does exist. E.g.

    file lmgrd
    lmgrd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
    

    Notice interpreter /lib64/ld-lsb-x86-64.so.3; if this file does not exist, you need to install it. For this particular loader on 16.04, the answer turned out to be sudo apt-get install lsb.

  2. Issues with a script’s loader (see this answer).

  3. Missing shared libraries — use ldd <file-name> to check for any «not found» libraries. See this answer for more info.

The loader not existing could be due to a 32/64 bit mismatch or some other reason. There might be other kinds of loader errors I don’t know about.

answered May 11, 2018 at 18:54

jtpereyda's user avatar

jtpereydajtpereyda

2,0353 gold badges20 silver badges21 bronze badges

4

Here’s a transcript showing a bit more about the nature of the problem, and how to fix it as of Ubuntu 16.04. Notice that even though file reports «dynamically linked», ldd reports «not a dynamic executable».

$ ./myprogram
bash: myprogram: No such file or directory

$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped

$ ldd myprogram
    not a dynamic executable

Once you install libc6:i386, things start improving…

$ sudo apt-get install libc6:i386 # the initial fix
...

$ ldd myprogram
    linux-gate.so.1 =>  (0xf77fd000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
    /lib/ld-linux.so.2 (0x56578000)

$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

To complete the job, you may need to identify and install additional libraries one at a time…

$ sudo apt-get install libstdc++6:i386 ## may require various additional libs

$ ./myprogram
... works correctly ...

I don’t know if there is a systematic way of identifying the correct libraries to install. There is a bit of guesswork mapping the error messages to package names (tab completion helps).

answered Jun 8, 2016 at 20:57

Brent Bradburn's user avatar

Brent BradburnBrent Bradburn

2,7362 gold badges29 silver badges35 bronze badges

1

By installing the deb for 32 bit I realized I was missing some libraries (in addition to ia32-libs and libc6). I first solved this problem by giving this command:

sudo apt-get install -f          

Then I got another error:

Message: SDL_GL_LoadLibrary 
Error: Failed loading libGL.so.1

Obviously, these libraries were properly installed. Without going into details I had to link the libraries by hand. I realized then that could also an easier solution through Synaptic install the following packages:

libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.

After that the next problem was the black screen while playing, which I solved by replacing the executable in /Shank/bin with this:
http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar.bz2.

I hope it will be useful to someone.
If you need more help or more details please feel free to contact me.

kiri's user avatar

kiri

27.4k16 gold badges80 silver badges117 bronze badges

answered May 9, 2012 at 19:12

Francesco's user avatar

FrancescoFrancesco

2,8812 gold badges14 silver badges12 bronze badges

This error happens when working on Windows (which introduces extra characters because of different line separator than Linux system) and trying to run this script (with extra characters inserted) in Linux. The error message is misleading.

In Windows, the line separator is CRLF (rn) whereas in linux it is LF (n). In my case, this happened due to working on Windows and uploading to Unix server for execution.

answered Jan 24, 2020 at 2:55

PALEN's user avatar

PALENPALEN

1,0811 gold badge8 silver badges6 bronze badges

2

Google navigated me to this page. My issue was distantly related to the title of this thread, so I am posting it here for the future visitors like me:

It is one of the weirdest issues:

$ ls -lh
ls: cannot access .~dataprep.ipynb: No such file or directory
-????????? ? ?      ?           ?            ? .~dataprep.ipynb
-rw------- 1 tgowda mygroup 475K Jun 12 15:59 dataprep.ipynb

I see that the file .~dataprep.ipynb is right there with some weird ?? permissions.
I just wanted to get rid of that messed up file.
rm command could not remove it. mv command couldn’t move it.

And then…

$ python
>>> from pathlib import Path
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('.~dataprep.ipynb'), PosixPath('dataprep.ipynb')]
>>> p = list(Path('.').glob("*.ipynb"))[0]
>>> p
PosixPath('.~dataprep.ipynb')
>>> p.unlink()
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('dataprep.ipynb')]

And that’s how I was able to defeat it.

answered Jun 13, 2020 at 3:36

Thamme Gowda's user avatar

None of the above answers worked for me because there was a miss-resolving for the interpreter.

I have written a detailed answer here, explaining how to fix this issue.

Thanks to this man who shared his experience with others solution here.
thanks to him i was able to solve this problem.

To summarize, as @steeldriver though, there was an interpreter problem.
the linker is giving to my program [/lib/ld64.so.1] as ELF interpreter but this path doesnt exist at all and i checked it by:

> ls /lib/ld64.so.1
ls: cannot access '/lib/ld64.so.1': No such file or directory

After that, i checked the interpreters path’s on my ubuntu installation by:

> ls /lib64/ld-*
/lib64/ld-linux-x86-64.so.2  /lib64/ld-lsb-x86-64.so.2  /lib64/ld-lsb-x86-64.so.3

so the solution is to create a link of one of this interpreters to the inexistant interpreter path by:

sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld64.so.1

Now we re-check the inexistent interpreter one more time to see if its still inexisting or not:

> ls /lib/ld64.so.1
/lib/ld64.so.1

Now this command has returned /lib/ld64.so.1 instead of «inexistant file». so the problem was solved and i could run ./main successfully

So, in a summary, you have to create a link of one of this interpreters to the inexistant interpreter path by running the following command in a terminal (Ctrl + Alt + T) :

sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib/ld64.so.1

answered Jan 28, 2022 at 21:06

Mohamed Elleuch's user avatar

3

This answer is for those who logged out after editing the .bash_profile, which means you’re probably in a situation where you can’t use your login screen.

I can’t ensure you this will work for you.

Short Answer

If, for some reason, you don’t even have access to a shell,
switch to a virtual console with Ctrl+Alt+F2 and login. 
Once you’re at a shell prompt,
use command -p <insert_command_here> to edit the file in question,
where <insert_command_here> is something like nano .bash_profile.

Long Answer

I’m using Manjaro, but I doubt that means anything in this scenario.

I was in the login screen. I typed my credentials and then nothing happened. As nothing was working anymore, I had no prompt to work with. I could move my cursor just fine, but none of the login screen buttons worked.

I pressed Ctrl+Alt+F2. I now had a console terminal to work with. I could go back to the previous screen with Ctrl+Alt+F1, but that wasn’t necessary.

I was met with a login prompt and filled in my credentials.

I tried using the commands am used to working with, but nothing worked. I’d get the default:

-bash: something_something: command not found.

But, I found that I COULD use cd, but I couldn’t list directory contents with ls. I did some research and found out that cd is a built-in command. I wanted to confirm that I could work with built-in commands and found a way to display all of them:

compgen -b

I was now met with a lot of commands I could work with. I had no idea what most of them do. I could recognize commands such as source, cd, echo and exit. I couldn’t find any good material explaining how to use these built-in commands. Maybe I just didn’t search well enough. Anyway, since help is also a built-in command, I tried using it on some of the built-in commands. Eventually I did:

help command

one of the options was:

command -p

    Use a default value for PATH
    that is guaranteed to find all of the default utilities.

That sounded pretty useful, so I went ahead and tried to do:

command -p ls

And it worked. Now I figured that I just needed to edit the .bash_profile file and so I did:

cd ~
command -p nano .bash_profile

I then deleted the few lines I had added that had messed up my path. If you don’t know which lines that is, then I suppose you’d be safe with some sort of default path. I can imagine that’s a thing. If it wasn’t .bash_profile that caused the issue for you, then I suppose you can try editing the file that did.

I then rebooted the system and everything was back to normal.

On Ubuntu, I get a ‘No such file or directory’ error when I try to execute a command.

I have checked with ls -la , the file adb is there and it has ‘x’ flag
So why I am getting a ‘No such file or directory’?

~/Programs/android-sdk-linux_x86/platform-tools$ ./adb
 bash: ./adb: No such file or directory
~/Programs/android-sdk-linux_x86/platform-tools$ ls -la
 total 34120
 drwxrwxr-x 3 silverstri silverstri     4096 2011-10-08 18:50 .
 drwxrwxr-x 8 silverstri silverstri     4096 2011-10-08 18:51 ..
 -rwxrwxr-x 1 silverstri silverstri  3764858 2011-10-08 18:50 aapt
 -rwxrwxr-x 1 silverstri silverstri   366661 2011-10-08 18:50 adb
 -rwxrwxr-x 1 silverstri silverstri   906346 2011-10-08 18:50 aidl
 -rwxrwxr-x 1 silverstri silverstri   328445 2011-10-08 18:50 dexdump
 -rwxrwxr-x 1 silverstri silverstri     2603 2011-10-08 18:50 dx
 drwxrwxr-x 2 silverstri silverstri     4096 2011-10-08 18:50 lib
 -rwxrwxr-x 1 silverstri silverstri 14269620 2011-10-08 18:50 llvm-rs-cc
 -rwxrwxr-x 1 silverstri silverstri 14929076 2011-10-08 18:50 llvm-rs-cc-2
 -rw-rw-r-- 1 silverstri silverstri      241 2011-10-08 18:50 llvm-rs-cc.txt
 -rw-rw-r-- 1 silverstri silverstri   332494 2011-10-08 18:50 NOTICE.txt
 -rw-rw-r-- 1 silverstri silverstri      291 2011-10-08 18:50 source.properties

Timo J.'s user avatar

asked Oct 9, 2011 at 2:52

michael's user avatar

2

It’s an executable file that misses required libraries. Use ldd to see what it needs, then provide these files.

answered Oct 9, 2011 at 9:39

Daniel Beck's user avatar

Daniel BeckDaniel Beck

109k14 gold badges286 silver badges334 bronze badges

1

Android SDK requires 32-bit libraries. You probably are on 64-bit and need the 32-bit libs. Here are the troubleshooting directions from developer.android.com

For Ubuntu 13.10 (Saucy Salamander) and above, install the libncurses5:i386, libstdc++6:i386, and zlib1g:i386 packages using apt-get:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

For earlier versions of Ubuntu, install the ia32-libs package using apt-get:

apt-get install ia32-libs

Hamy's user avatar

Hamy

2251 silver badge14 bronze badges

answered Nov 22, 2011 at 19:15

hoffmanc's user avatar

hoffmanchoffmanc

6511 gold badge4 silver badges4 bronze badges

4

sudo apt-get install --reinstall libc6-i386

is also need for me.

Tamara Wijsman's user avatar

answered Apr 12, 2012 at 14:55

Shawe's user avatar

ShaweShawe

411 bronze badge

1

I was also seeing the same after switching my machine from 32 bit ubuntu to 64 bit. Bash would report ‘No such file or directory’ of files that clearly existed with the execute attribute.

sudo apt-get install —reinstall libc6-i386

Fixed the problem. These are the «GNU C Library: 32-bit shared libraries for AMD64»

Seems like this is a bug in bash. Note that I also changed the default shell from dash to bash using

sudo dpkg-reconfigure dash

before I tried running the 32 bit executable. So I’m not sure if the problem would have happened with the default dash shell

answered Jul 24, 2013 at 19:01

user240504's user avatar

On a fresh Xubuntu 13.10 x64 install I got adb to run with:

sudo apt-get install --reinstall libc6-i386
sudo apt-get install libstdc++6:i386

And also zlib1g:i386 to make aapt work.

and if you still miss something use:

lld adb

answered Oct 21, 2013 at 1:49

Stéphane's user avatar

StéphaneStéphane

2461 silver badge6 bronze badges

2

For adb make sure you have the SDK unpacked and have run the SDK Manager to fully populate the SDK. Additionally make sure you have the following installed:
A.) JDK 6 or better
B.) lib32stdc++6
C.) lib32ncurses5

hoffmanc was the closest to getting it right, I don’t really understand why the answer from Daniel Beck is marked as correct when it’s not even close and has nothing to do with the problem.

Incidentally, if you try to run a truly non-existant command (i.e.:

# fakecommand

you’ll get: fakecommand: command not found, whereas in your situation the output you are seeing is actually coming from adb even though it’s not very clear that is the case.

answered Apr 14, 2012 at 18:00

Justin Buser's user avatar

Justin BuserJustin Buser

1,23711 silver badges14 bronze badges

Ubunto seems to have some issues with LSB compatibility, so try this if you are on Ubunto

apt-get install lsb

Note that ldd will sort of show that all the libraries are there, but they are not.

usmp-vm-lamp01$ ldd lmgrd
 linux-vdso.so.1 =>  (0x00007fffb33fe000)
 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10b0a48000)
 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10b074c000)
 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f10b0535000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f10b0175000)
 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f10aff71000)
 /lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f10b0c67000)
usmp-vm-lamp01$ locate libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
usmp-vm-lamp01$ locate libm.so.6
/lib/x86_64-linux-gnu/libm.so.6
usmp-vm-lamp01$ locate /lib64/ld-lsb-x86-64.so.3
usmp-vm-lamp01$

answered Jun 9, 2014 at 21:26

Mark Lakata's user avatar

Mark LakataMark Lakata

8,0902 gold badges18 silver badges16 bronze badges

1

Unlike other operating systems such as Windows, Linux is an OS in which the majority of its tasks are performed using the Terminal. One of the major tasks that the Linux terminal performs is the execution of programs using commands. While attempting to execute any program through this method, the user may come across this very common error statement which is the “no such file or directory” issue.

This article will elaborate on the reasons that prompt the error “no such file or directory” and also provide possible solutions to fix it

How to Resolve the “no such file or directory”?

Since this is a very general error, there are a few different reasons that can invoke this issue on the system. All these reasons are discussed below in great detail.

Reason 1: Wrong File Name

The first and the most commonly occurring reason is caused by using incorrect spellings of the file name. For example, the mistake can be the incorrect spelling of a file. Below is an example of such a mistake:

$ bash sampl.sh

Solution: Check the File name and Path

In the example shown above, the bash file “sample.sh” is saved on the desktop. So, make sure that the error is not invoked by using the correct spellings and the correct path. Look at the following image where the name and path of the file are correct, and thus, the output is displayed:

$ bash sample.sh

Reason 2: Wrong File Format

The other most common cause behind this issue is that the file that is attempted to execute is in a different format than the operating system. Let’s take an example of this situation. The file that is executed using the command is a DOS file which is a script written for Windows. If this DOS file is executed in an Ubuntu system, the “no such file or directory” issue will be invoked.

Solution: Use the dos2unix Tool

There exists a very useful tool for exactly these types of scenarios. The dos2unix tool helps to convert a dos file to a script that can be read by the Ubuntu OS. The first step is to install the dos2unix tool using this command:

$ sudo apt install dos2unix

Once the tool is installed, convert the DOS file into an Ubuntu-compatible file using the following command:

$ dos2unix sample.dos

The system should be able to run the script file without the error being prompted after the conversion is complete.

Conclusion

The “no such file or directory” issue occurs when the name or the path of the executable file is entered incorrectly into the terminal. Another reason is that Ubuntu is not able to read the DOS script and if it is executed on the Ubuntu terminal, then the error is prompted. To fix these issues it needs to be made sure that the file path and file name are entered correctly into the terminal. The other fix is to install the dos2unix tool and convert the dos files format to run on Ubuntu. This article has demonstrated the reasons and the solutions to fix the error “no such file or directory”.

This error is usually thrown when you enter a path that does not exist. See -bash: cd: Desktop: No such file or directory.

But the $(ls -d -1dt — */ | head -n 1) is not wrong in the output. Thus the reason must be the different usage of sh and bash in that moment.

In my case, I had a docker container with that error when I accessed the folder with bash. The container was broken since I had force-closed it after docker-compose up which did not work. After that, on the existing containers, I could only use sh, not bash. I found this because of OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused «exec: «bash»: executable file not found in $PATH»: unknown. I guess that bash is loaded later than sh, and that at an early error at the start of the container, only sh gets loaded.

That would fit since you are in the sh, which can be seen from >>. Using sh, everything will work as expected. But the expression gets solved by bash. Which is probably not loaded for whatever reason.


In docker, using docker-compose, I also had a similar error saying sh: 1: cd: can't cd to /root/MYPROJECT. That could be solved by mounting the needed volumes in the services using

services:
  host:
    volumes:
      - ~/MYPROJECT:/MYPROJECT # ~/path/on/host:/path/on/container

See Mount a volume in docker-compose. How is it done? and How to mount a host directory with docker-compose? or the official docs.

49912:1163776537

Наверняка библиотеки какому-то бинарнику не хватает. Воспользуйтесь ldd, чтобы узнать, какому.

Если ты говоришь, что это скрипт, то сделай:

Там должно быть что-то вроде:

И вот этого «/usr/bin/shell» он, видимо, найти не может.

И вот этого «/usr/bin/shell» он, видимо, найти не может.

самый распространённый случай: виндовый перевод стоки (lfcr) в конце этой первой строки.

это на хостингах всяких обычно бывает, где клиенты в виндовых блокнотах скрипты редактируют. А у топикстартера замена дистрибутива была. Скорее всего пути просто поменялись к интерпретатору.

27654: 644875474

При обновлении Дебиана меняются пути к интерпретаторам? Если только ТС что-то своё устанавливал.

p

Тебя по фотографии не лечили никогда?

Может скрипт запускается, в процессе пытается запустить что-то не существующее и на этом завершает работу.

Всем спасибо, особенно xsectorx, за мысль о «file». До меня доперло лишь сейчас, что мой скрипт работает, а сам бинарник собран под старое ядро. Хотя ошибка «файл не существует» несколько не на те мысли наводит. Придется скачать/собрать новый ADB.

Уберите пробелы в названиях папок и файлов.

111506:869939704

сам бинарник собран под старое ядро. Хотя ошибка «файл не существует» несколько не на те мысли наводит.

ну а что ей писать, если нет нужного файла?

111506:869939704

Уберите пробелы в названиях папок и файлов.

Источник

Содержание

  1. «No such file or directory» error when executing a binary
  2. 8 Answers 8
  3. Not the answer you’re looking for? Browse other questions tagged linux or ask your own question.
  4. Linked
  5. Related
  6. Hot Network Questions
  7. Subscribe to RSS
  8. Try to run the following command
  9. Исправление ошибок Linux
  10. Решение проблем Linux
  11. Проблемы с командами в терминале
  12. Проблемы в программах
  13. Проблемы с драйверами и ядром
  14. Проблемы с графической оболочкой
  15. Проблемы с диском и файловой системой
  16. Выводы
  17. No such file or directory при выполнении элементарного скрипта
  18. 1 ответ 1
  19. Всё ещё ищете ответ? Посмотрите другие вопросы с метками ubuntu bash или задайте свой вопрос.
  20. Связанные
  21. Похожие
  22. Подписаться на ленту

«No such file or directory» error when executing a binary

I was installing a binary Linux application on Ubuntu 9.10 x86_64. The app shipped with an old version of gzip (1.2.4), that was compiled for a much older kernel:

I wasn’t able to execute this program. If I tried, this happened:

ldd was similarly unhappy with this binary:

I’m curious: What’s the most likely source of this problem? A corrupted file? Or a binary incompatibility due to being built for a much older ?

8 Answers 8

I was missing the /lib/ld-linux.so.2 file, which is needed to run 32-bit apps. The Ubuntu package that has this file is libc6-i386.

Old question, but hopefully this’ll help someone else.

In my case I was using a toolchain on Ubuntu 12.04 that was built on Ubuntu 10.04 (requires GCC 4.1 to build). As most of the libraries have moved to multiarch dirs, it couldn’t find ld.so. So, make a symlink for it.

Check required path:

If you’re on 32bit, it’ll be i386-linux-gnu and not x86_64-linux-gnu.

You get this error when you try to run a 32-bit build on your 64-bit Linux.

Also contrast what file had to say on the binary you tried (ie: 32-bit) with what you get for your /bin/gzip :

which is what I get on Ubuntu 9.10 for amd64 aka x86_64.

Edit: Your expanded post shows that as the readelf output also reflects a 32-bit build.

I think you’re x86-64 install does not have the i386 runtime linker. The ENOENT is probably due to the OS looking for something like /lib/ld.so.1 or similar. This is typically part of the 32-bit glibc runtime, and while I’m not directly familiar with Ubuntu, I would assume they have some sort of 32-bit compatibility package to install. Fortunately gzip only depends on the C library, so that’s probably all you’ll need to install.

0j3I9

I also had problems because my program interpreter was /lib/ld-linux.so.2 however it was on an embedded device, so I solved the problem by asking gcc to use ls-uClibc instead as follows:

Well another possible cause of this can be simple line break at end of each line and shebang line If you have been coding in windows IDE its possible that windows has added its own line break at the end of each line and when you try to run it on linux the line break cause problems

Not the answer you’re looking for? Browse other questions tagged linux or ask your own question.

Linked

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.10.29.40598

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

Источник

Здравствуйте, уважаемые. Скачал btsync (у меня arm, по ссылке Linux ARM тут), положил в /usr/bin и не могу запустить:

Как так и что с этим делать?

P.S. Тоже самое происходит, если переместить исполняемый файл, например, в домашний каталог.

P.S.S. Debian Jessie, вот такая железка.

99493: 213807979

chmod +x точно не поможет?

99493: 213807979

35131:302565968

apparmor, selinux, noexec?

69351: 600545653

такое бывает когда исполняемый файл например предназначенный для 32 битной архитектуры пытаются запустить в 64-битной системе

12963: 629122306

p

105962:959150243

В общем, похоже-таки несовместимость архитектур. Придётся пересобирать из исходников. Источник: http://otvety.google.ru/otvety/thread?tid=1e74bf1617bdb4b6

p

55099:150010057

p

Try to run the following command

I had the same issue on Cubieboard.

Try to run the following command:

p

На Debian 7.6.0 (Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux) столкнулся с той же проблемой. Для запуска 32-битного приложения может потребоваться пакет ia32-libs-i386. Дебиан по умолчанию не дает его установить из-за зависимостей. Решается таким образом:

Источник

Каждый пользователь, рано или поздно сталкивается с определенными проблемами в своей операционной системе Linux. Это может быть просто неправильное использование команд или их непонимание, так и такие серьезные ошибки Linux, как отсутствие драйверов, неработоспособность сервисов зависание системы и так далее.

Эта статья ориентирована в первую очередь на новичков, которые не знают, что делать когда их будут поджидать проблемы linux, мы дадим общую концепцию и попытаемся показать в какую сторону двигаться дальше. Мы рассмотрим исправление ошибок в linux как простых, так и более сложных. Но давайте сначала определим, какие проблемы linux будем рассматривать, разобьем их на категории:

Все это мы рассмотрим ниже, но сначала общее введение и немного теории.

Решение проблем Linux

Linux очень сильно отличается от WIndows, это заметно также при возникновении проблем Linux. Вот допустим, произошла ошибка в программе Windows, она полностью закрывается или выдает непонятное число с кодом ошибки и все, вы можете только догадываться или использовать поиск Google, чтобы понять что произошло. Но в Linux все совсем по-другому. Здесь каждая программа создает лог файлы, в которых мы можем при достаточном знании английского или даже без него, выяснить, что произошло. Более того, если программу запускать из терминала, то все ошибки linux и предупреждения мы увидим прямо в окне терминала. и сразу можно понять что нужно делать.

Причем вы сможете понять что произошло, даже не зная английского. Главным признаком ошибки есть слово ERROR (ошибка) или WARNING (предупреждение). Рассмотрим самые частые сообщения об ошибках:

Сообщения об ошибках, кроме терминала, мы можем найти в различных лог файлах, все они находятся в папке /var/log, мы рассматривали за какие программы отвечают определенные файлы в статье просмотр логов linux. Теперь же мы подробнее рассмотрим где и что искать если linux выдает ошибку.

Проблемы с командами в терминале

Обычно проблемы с командами в терминале возникают не из-за ошибки linux или потому, что разработчики что-то недоработали, а потому, что вы ввели что-то неправильно или предали не те что нужно опции.

Если были переданы не те опции, то, скорее всего, программа покажет вам справку, ознакомившись с которой вы сможете очень быстро понять в чем проблема. Также справку выдают множество команд если их запустить без параметров.

Если файла, которого вы передали в параметрах не существует, то вам будет об этом сказано соответствующим сообщением. Сообщения могут быть и более специфичные, в зависимости от ошибки, но в конце концов, вы можете воспользоваться переводчиком Google, чтобы понять смысл того, что хочет система.

Очень распространенной среди новичков ошибкой, есть no such file or directory при попытке выполнить файл, скачанный из интернета. Сразу кажется что это бред, ведь файл существует, но на самом деле оболочка ищет только файлы с флагом исполняемый, а поэтому пока вы не установите этот флаг для файла, он для оболочки существовать не будет.

Проблемы в программах

Если ни с того ни с сего закрывается или не так, как требуется работает, какая-нибудь графическая программа, решение проблем linux начинается из запуска ее через терминал. Для этого просто введите исполняемый файл программы и нажмите Enter. Обычно достаточно начать вводить имя программы с маленькой буквы и использовать автодополнение для завершения ввода названия.

Многие ошибки системы linux, связанные с графической оболочкой вы можете найти в файле

/.xsession-errors в вашей домашней директории. Если оболочка работает медленно, зависает или не работают другие программы, но в других логах причин этому нет, возможно, ответ находится именно в этом файле.

Также ошибки linux могут возникать не только в обычных программах но и в работающих в фоне сервисах. Но их тоже можно решить, чтобы посмотреть сообщения, генерируемые сервисом, запущенным с помощью systemd, просто наберите команду просмотра состояния сервиса:

$ sudo systemctl status имя_сервиса

Дальше вы знаете, что делать с этой ошибкой, главное что у вас есть зацепка, а дальше все можно решить, ну или почти все.

Здесь, как и всегда большинство ошибок связано с тем, что что-то не установлено, какого-то файла нет или к чему-то невозможно получить доступ, тогда решение проблем linux не вызовет много забот.

Проблемы с драйверами и ядром

Проблемы с драйверами, модулями ядра или прошивками могут вызвать много неприятностей во время загрузки системы. Это может быть просто медленная загрузка системы, неработоспособность определенных устройств неправильная работа видео или полная невозможность запустить графическую подсистему. Исправление ошибок Linux начинается с просмотра логов.

Вы можете посмотреть все сообщения ядра с момента начала загрузки, выполнив команду чтобы узнать какую linux выдает ошибку:

Чтобы иметь возможность удобно листать вывод можно выполнить:

Или сразу выбрать все ошибки:

sudo dmesg | grep error

Дальше будет очень просто понять какого драйвера не хватает, что система не может загрузить или что нужно установить. Если возникает ошибка ввода-вывода linux, то, скорее всего, драйвер несовместим с вашим устройством, в таком случае, может помочь обновление ядра, чтобы получить самую новую версию драйвера. В некоторых случаях ядро может само предложить вариант решения проблемы прямо в сообщении об ошибке вплоть до того какую команду выполнить или какой файл скачать. Если же нет, вы все еще можете воспользоваться поиском для решения своей проблемы linux.

Проблемы с графической оболочкой

Когда проблемы linux касаются графической оболочки, то решить их новичкам не так уж просто. Больше всего потому что доступен только терминал. Графическая оболочка может просто зависнуть или вовсе не запускаться, например, после обновления.

При проблемах с графической оболочкой вы можете всегда переключиться в режим терминала с помощью сочетания клавиш Ctrl+Alt+F1. Далее, вам нужно ввести логин и пароль, затем можете вводить команды терминала.

Посмотреть логи графической оболочки вы можете в том же файле

Если проблема наблюдается после обновления до новой версии, то можно очистить кеш и удалить папку с настройками, обычно это помогает.

Проблемы с диском и файловой системой

Если это случилось, вам, скорее всего, придется переключиться в режим терминала и удалить несколько файлов. Вы можете удалять файлы логов или кэша пакетного менеджера. Много файлов удалять не нужно, достаточно освободить несколько мегабайт, чтобы прекратились ошибки системы linux и нормально работала графическая оболочка, а затем уже в ней решать все проблемы linux.

Выводы

Теперь исправление ошибок Linux будет для вас немного проще. Ошибки системы linux довольно сложная тема и этой информации явно мало, если у вас остались вопросы или есть предложения по улучшению статьи пишите в комментариях!

Источник

No such file or directory при выполнении элементарного скрипта

под root выполняю скрипт fs.sh, находящийся в /var/

Помогите разобраться, почему скриптом не могу попасть в каталог, а если в консоли набрать cd / то прекрасно перехожу.

photo

1 ответ 1

содержимое вашего скрипта:

видно, что строки оканчиваются двумя символами: rn (cr+lf).

а должны заканчиваться одним символом r (cr).

преобразовать файл можно, например, с помощью программы dos2unix (в популярных дистрибутивах операционной системы gnu/linux обычно входит в одноимённый пакет):

photo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками ubuntu bash или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.10.29.40598

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

  1. Check Path and Interpreter to Solve the bash: No such file or directory Error in Linux Bash
  2. Install Library Packages to Solve the bash: No such file or directory Error in Linux Bash
  3. Use the dos2unix Command to Solve the bash: No such file or directory Error in Linux Bash

Solve No Such File or Directory Error in Linux Bash

Linux terminal allows you to execute programs. This article will explain how to execute files properly and solve the bash: No such file or directory error in Linux Bash.

There are many code-related reasons why you get a bash: No such file or directory error in Bash. We will explain the most common mistakes and ways to fix them.

Check Path and Interpreter to Solve the bash: No such file or directory Error in Linux Bash

First, make sure you execute the program with the correct path. If you make a typo on the directory or file name, you will get this error or give the wrong path.

If you are executing the file with a relative path (../../file), try executing with the absolute path (/path/to/file) instead.

Another reason you might get this error could be that you are using the wrong interpreter. The first line in the code is called shebang (#!/bin/bash).

It tells the operating system which shell to use to parse the file. If the shebang is not specified correctly, your program will not run.

Make sure the program uses the proper interpreter.

Install Library Packages to Solve the bash: No such file or directory Error in Linux Bash

Missing libraries on your system can cause you to get the bash: No such file or directory error. Examine the file with the file command.

If the file is a 32-bit executable, you need some libraries to execute it on a 64-bit architecture OS. To solve this error in Ubuntu, add the i386 architecture with the dpkg command, then install the necessary libraries.

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Use the dos2unix Command to Solve the bash: No such file or directory Error in Linux Bash

Unix operating systems use line feed ("n") as the end of the line, but Windows operating systems use carriage return and line feed ("rn"). So if you try to execute a code written in Windows on Linux, you may get this error.

You must clear the carriage return characters to be able to execute the file.

The dos2unix command-line tool is a DOS to Unix text file format converter and vice versa. You can use the dos2unix tool to make your file Unix compatible.

Its usage is as follows.

The file will be converted to Unix format. You can now execute the file.

While we have explained the most common errors and solutions here, this error can have many code-related causes. You can solve this by choosing the solution that suits your application.

Содержание

  1. Нет такого файла или каталога
  2. linux / init.h: нет такого файла или каталога
  3. ТОП 10 сообщений об ошибках в Linux
  4. Ошибка: mkdir — Cannot Create Directory
  5. mkdir: cannot create directory – File exists
  6. Возможные решения проблем mkdir: cannot create directory
  7. Сценарий file exists
  8. Переименовать (или переместить) существующий файл
  9. Удалить существующий файл
  10. Ошибка Linux при загрузке разделяемых библиотек: невозможно открыть файл общих объектов: нет такого файла или каталога
  11. ОТВЕТЫ
  12. Ответ 1
  13. Ответ 2
  14. Ответ 3
  15. LDCONFIG
  16. Dev-пакет или неправильная версия
  17. Местоположение библиотеки
  18. Ответ 4
  19. Ответ 5
  20. Ответ 6
  21. Ответ 7
  22. Ответ 8
  23. Ответ 9
  24. Ответ 10
  25. Ответ 11
  26. Ответ 12
  27. Ответ 13
  28. Ответ 14
  29. Ответ 15
  30. Ответ 16
  31. Ответ 17
  32. Ответ 18

Нет такого файла или каталога

Приветствую. Проблема такая — скачал игру (ее нет в репозиториях), распаковал, пытаюсь запустить — получаю

chmod +x cataclysm-tiles

Сделал естественно, не помогает.

Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher

Покажи еще вывод file cataclysm-tiles и uname -a.

Покажи еще вывод file cataclysm-tiles и uname -a.

Попробуй полный путь указать (/home/user/Downloads/cataclysmdda-0.B/cataclysm-tiles) или через cataclysm-launcher

Спасибо, помогло. Правда пришлось ставить кучу всего дополнительно, но заработало.

Ну да, я собственно это и имел в виду:

ELF 32-bit LSB executable
x86_64 x86_64 x86_64

Источник

linux / init.h: нет такого файла или каталога

Я пытаюсь создать модуль ядра для своего класса и получаю огромное количество ошибок, но в верхней части этой стены находится печально известная ошибка «Нет такого файла или каталога». Похоже, в этом корень проблемы. Похоже, что это влияет не только на init.h, но также на module.h и kernel.h. Первые три строки программы выглядят следующим образом:

Я осмотрелся и попробовал другие пути, где эти файлы должны быть при просмотре аналогичных проблем, но пока ничего не помогло. Самое странное, что я уже использовал этот модуль; Мне предоставили стартовый код, в котором это было вверху (я ничего не менял), и это не дало мне этой ошибки. Хотя, очевидно, что код после него другой, но это кажется самой большой проблемой на данный момент.

Полный код выглядит следующим образом:

  • Где находится ваша копия и какой путь включения вы переходите к gcc?
  • Вы можете разместить свой код? Вы используете Makefile из / lib / module?
  • Что ж, мне нужно кое-что сообщить. Во-первых, похоже, что init.h и module.h исчезли. Далее я попытался исправить эту проблему, и все .. как-то пошло не так. Я попытался использовать команду «sudo apt-get install linux-headers-generic», и это дало мне сообщение об ошибке: «E: Пакет ‘linux-headers-generic’ не имеет кандидата на установку».
  • Я не использую Makefile, о котором вы говорите, но он есть в каталоге модуля, который я пытаюсь запустить. Что касается публикации кода, между ними ОЧЕНЬ много заполнителей, которые не очень важны . Я буду работать над его размещением; У меня он работает на виртуальной машине.

Я думаю, вы должны сначала установить что-то вроде linux-headers- [версия ядра] с помощью apt-get, затем вы должны создать Makefile следующим образом:

установите для переменной KERNELDIR в Makefile соответствующую версию ядра, по умолчанию она использует ваше работающее ядро. Если вы используете этот Makefile, вам нужно изменить свой include на следующий формат:

Я думаю, что для разработки модуля ядра лучше использовать стандартное ядро ​​от Linus Torvalds git. Для некоторых простых модулей ядра см. Это.

  • Дело в том, что это для назначения, поэтому нам дали правильный make-файл для загрузки и помещения в правильный каталог (что я и сделал, поскольку он уже работал хотя бы один раз), и я попытался получить заголовки .. . это точный ввод, который мне нужно было ввести в терминал?
  • нет, вы должны сначала использовать , чтобы получить версию ядра, а затем использовать что-то вроде , чтобы получить заголовок ядра для соответствующего выпуска.
  • да, это не сработало. как и в комментариях выше, он не может найти то, что я пытаюсь установить
  • Хорошо, пришлите мне свой результат в комментариях.
  • Это действительно странно, теперь вроде как ни с того ни с сего работает. Я пытался сделать это до сегодняшней встречи с моим профессором, но не смог. Мы открыли его сегодня утром, запустили, конечно, получили кучу ошибок, но это не одна из них. Спасибо, что попробовали!

при сборке модулей ядра вы должны использовать make файлы

Источник

ТОП 10 сообщений об ошибках в Linux

Многие ошибки, которые вы встретите при выполнении команд системы Linux, являются результатом неправильных действий с файлами или процессами. Приведем распространенные сообщения об ошибках и разберем их.

No such file or directory
Вероятно, вы пытались получить доступ к несуществующему файлу. Поскольку ввод/вывод в системе Unix не делает различий между файлами и каталогами, это сообщение об ошибке появляется везде. Вы получите его, если попытаетесь выполнить чтение несуществующего файла, или решите перейти в отсутствующий каталог, или попробуете записать файл в несуществующий каталог и так далее.

File exists
В данном случае вы, возможно, пытались создать файл, который уже существует. Это часто бывает, когда вы создаете каталог, имя которого уже занято каким-либо файлом.

Not a directory, Is a directory
Эти сообщения возникают, когда вы пытаетесь использовать файл в качестве каталога или каталог в качестве файла. Например, так:

Обратите внимание на то, что сообщение об ошибке относится только к части a пути a/b. Когда вы столкнетесь с такой проблемой, вам потребуется время, чтобы отыскать компонент пути, с которым обращаются как с каталогом.

No space left on device
На вашем жестком диске закончилось свободное пространство.

Permission denied
Эта ошибка возникает, когда вы пытаетесь выполнить чтение или запись, указав файл или каталог, к которым вам не разрешен доступ (вы обладаете недостаточными правами). Эта ошибка говорит также о том, что вы пытаетесь запустить файл,для которого не установлен бит выполнения (даже если вы можете читать этот файл). Из раздела 2.17 вы больше узнаете о правах доступа.

Operation not permitted
Обычно такая ошибка возникает, когда вы пытаетесь завершить процесс, владельцем которого не являетесь.

Segmentation fault, Bus error
Суть ошибки сегментации состоит в том, что разработчик программы, которую вы только что запустили, где-то ошибся. Программа пыталась получить доступ к области памяти, к которой ей не разрешено обращаться, в результате операционная система завершила работу программы. Подобно ей, ошибка шины означает, что программа пыталась получить доступ к памяти не должным образом. Если вы получаете одну из этих ошибок, то, вероятно, вы передали на ввод программы какие-либо неожиданные для нее данные.

Источник

Ошибка: mkdir — Cannot Create Directory

Новички в Linux часто не понимают, что делать при получении ошибки “mkdir: cannot create directory” во время работы с командной строкой. Есть несколько причин возникновения такой ошибки, и в этом переводе своей англоязычной статьи с сайта Unix Tutorial я покажу эти причины и их устрание на примерах.

mkdir: cannot create directory – File exists

В переводе с английского сообщение означает: невозможно создать каталог — файл уже существует.

ФАЙЛ существует? А при чём тут проблема создания каталога? И почему ошибка говорить “существует файл”, когда мы вообще пытаемся создавать каталог, а не файл?

На самом деле всё просто: большинство объектов в Linux являются файлами и структурами в файловой системе. Поэтому эта ошибка означает, что там, где вы пытаетесь выполнить команду создания нового каталога, уже существует другой объект с таким же именем. В данном случае — это файл, а не каталог. Но у файла такое же имя, как у желаемого каталога, так что создать второй объект с таким же именем не получится.

намекает, что у нас уже есть файл с именем /tmp/try.

Очень просто проверить эту гипотезу с помощью команды ls:

Так и есть, у нас существует файл с таким именем.

Возможные решения проблем mkdir: cannot create directory

Сценарий file exists

Если файл с таким именем уже существует, а каталог всё же очень хочется создать, то есть решения.

Переименовать (или переместить) существующий файл

Используем команду mv для перемещения /tmp/try в другой каталог (или просто сменим имя try на другое, оставив файл в том же каталоге /tmp). Вот как можно переименовать файл в имя oldtry:

Теперь давайте попробуем ту же команду mkdir:

…и всё замечательно работает! Никаких ошибок, и создался новый каталог под названием /tmp/try. Подтверждаем это с помощью команды ls:

Удалить существующий файл

Ещё одна опция, которая напрашивается сама собой — можно просто удалить неугодный файл, который мешает созаднию нашего нового каталога.

Для этого примера создадим новый пустой файл с названием /tmp/newtry

Если попробовать mkdir, то получится ожидаемая ошибка:

А теперь мы просто удалим неугодный файл и попробуем mkdir снова:

В этот раз нет никаких ошибок, всё снова сработало:

##mkdir: cannot create directory – Permission denied

Это — ещё один распространённый сценарий при создании каталогов.

В переводе на русский, сообщение говорит: невозможно создать каталог — недостаточно прав доступа. То есть файлов с таким же именем нет, но текущий пользователь, под которым мы пытаемся создать каталог, не имеет прав в текущем месте файловой системы для создания новых каталогов (и файлов).

Основной подход к такой ошибке — проверка прав доступа в каталоге, где получена ошибка. Команда ls и здесь поможет. You should use ls command on the higher level directory to confirm permissions.

Все эти команды сработали без ошибок, и ls показывает, что у меня есть полные права доступа к каталогу try2018 — rwx для меня, rwx для моей группы и r-x для всех остальных (это я читаю фрагмент drwxrwxr-x в строке с try2018).

Теперь давайте уберём права на запись (и создание новых объектов) в каталоге try2018:

Теперь мои права к этому каталогу сменились с полных (rwx — read/write/execute) на только чтение (r-x — read/execute). Так что если я попробую создать в try2018 какой-то подкаталог, выйдет та самая ошибка про недостаток прав доступа:

Чтобы исправить проблему, нужно исправить права доступа на каталоге, где мы видим ошибку. И пробуем mkdir снова:

Вот теперь — порядок, всё создалось,

На сегодня — всё! Будут ещё вопросы по самым основам Linux — обращайтесь!

Источник

Ошибка Linux при загрузке разделяемых библиотек: невозможно открыть файл общих объектов: нет такого файла или каталога

Программа является частью набора тестов Xenomai, скомпилированного с ПК Linux в Linux + Xenomai ARM toolchain.

Изменить: ОК. Я не заметил, что .1 в конце был частью имени файла. Что это значит в любом случае?

ОТВЕТЫ

Ответ 1

Обновить
Хотя то, что я пишу ниже, верно в качестве общего ответа об общих библиотеках, я думаю, что наиболее частой причиной такого рода сообщений является то, что вы установили пакет, но не установили «-dev версию этого пакета».

Ну, это не вранье — в этом листинге нет libpthread_rt.so.1 . Вам, вероятно, нужно переконфигурировать и перестроить его так, чтобы оно зависело от имеющейся у вас библиотеки, или установить то, что предоставляет libpthread_rt.so.1 .

Как правило, числа после .so являются номерами версий, и вы часто обнаруживаете, что они являются символическими ссылками друг на друга, поэтому, если у вас есть версия 1.1 libfoo.so, у вас будет настоящий файл libfoo.so.1.0, и символические ссылки foo.so и foo.so.1, указывающие на libfoo.so.1.0. И если вы установите версию 1.1, не удаляя другую, у вас будет libfoo.so.1.1, а libfoo.so.1 и libfoo.so теперь будут указывать на новую, но любой код, для которого требуется эта точная версия, может используйте файл libfoo.so.1.0. Код, который опирается только на API версии 1, но не заботится, будет ли он 1.0 или 1.1, указывать libfoo.so.1. Как отметил Орип в комментариях, это хорошо объясняется на http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html.

В вашем случае, вы можете сойти с символической ссылки libpthread_rt.so.1 на libpthread_rt.so . Однако нет никаких гарантий, что это не нарушит ваш код и не поужинает на телевидении.

Ответ 2

Ваша библиотека является динамической библиотекой. Вы должны сообщить операционной системе, где она может найти его во время выполнения.

Для этого нам понадобятся следующие простые шаги:

(1) Найдите, где находится библиотека, если вы ее не знаете.

(2) Проверьте наличие переменной среды пути динамической библиотеки ( LD_LIBRARY_PATH )

если нечего отображать, добавьте значение пути по умолчанию (или нет, если хотите)

(3) Мы добавляем желаемый путь, экспортируем его и пробуем приложение.

Обратите внимание, что путь должен быть каталогом, в котором находится path.so.something . Так что если path.so.something находится в /my_library/path.so.something он должен быть:

Ответ 3

Вот несколько решений, которые вы можете попробовать:

LDCONFIG

Как отметил AbiusX: если вы только что установили библиотеку, вам просто нужно запустить ldconfig.

ldconfig создает необходимые ссылки и кеширует самые последние общие библиотеки, найденные в каталогах, указанных в команде line в файле /etc/ld.so.conf и в доверенных каталогах (/lib и /usr/lib ).

Обычно ваш менеджер пакетов позаботится об этом при установке новой библиотеки, но не всегда, и это не помешает запустить ldconfig, даже если это не ваша проблема.

Dev-пакет или неправильная версия

Если это не сработает, я также рассмотрю предложение Paul и поискать версию библиотеки «-dev». Многие библиотеки разделены на dev и non-dev пакеты. Вы можете использовать эту команду для поиска:

Это также может помочь, если у вас установлена ​​неправильная версия установленной библиотеки. Некоторые библиотеки публикуются в разных версиях одновременно, например, Python.

Местоположение библиотеки

Если вы уверены, что установлен правильный пакет, а ldconfig его не нашел, он может быть просто нестандартным. По умолчанию ldconfig выглядит в /lib , /usr/lib и каталогах, перечисленных в /etc/ld.so.conf и $LD_LIBRARY_PATH . Если ваша библиотека находится где-то в другом месте, вы можете добавить каталог в свою строку в /etc/ld.so.conf , добавить путь библиотеки к $LD_LIBRARY_PATH или переместить библиотеку в /usr/lib . Затем запустите ldconfig .

Чтобы узнать, где находится библиотека, попробуйте следующее:

(Замените libraryname на имя вашей библиотеки)

Если вы перейдете по маршруту $LD_LIBRARY_PATH , вы захотите поместить его в свой файл

/.bashrc , чтобы он запускался каждый раз при входе в систему:

Ответ 4

У меня была аналогичная ошибка, я мог бы разрешить ее, указав

Надеюсь, это поможет.

Ответ 5

Вам необходимо убедиться, что вы указали путь к библиотеке во время связывание при компиляции вашего .c файла:

gcc -I/usr/local/include xxx.c -o xxx -L/usr/local/lib -Wl, -R/USR/локальные/Библиотека

Часть -Wl, -R сообщает полученному двоичному файлу также искать библиотеку в /usr/local/lib во время выполнения, прежде чем пытаться использовать его в /usr/lib/

Надеюсь, это поможет вам.

Ответ 6

Страница ссылки linux.org объясняет механику, но не объясняет мотивацию: — (

Кроме того, обратите внимание, что «внешнее управление версиями» в значительной степени устарело в Linux, поскольку управление версиями символов (расширение GNU) позволяет вам иметь несколько несовместимых версий одной и той же функции в одной библиотеке. Это расширение позволило glibc иметь ту же внешнюю версию: libc.so.6 за последние 10 лет.

Ответ 7

Попробуйте добавить LD_LIBRARY_PATH , который указывает пути поиска, в ваш файл

Ответ 8

добавить эти строки в конец

Ответ 9

Другое возможное решение в зависимости от вашей ситуации.

Если вы знаете, что libpthread_rt.so.1 совпадает с libpthread_rt.so, вы можете создать символическую ссылку:

Затем ls -l /lib должен теперь показать символическую ссылку и то, на что она указывает.

Ответ 10

У меня была эта ошибка при запуске моего приложения с Eclipse CDT в Linux x86.
Чтобы исправить это:

Выполнить как → Выполнить настройки → Среда

Ответ 11

У меня была похожая ошибка, и она не устранилась с выдачей LD_LIBRARY_PATH в

/.bashrc. Что решило мою проблему, добавив файл .conf и загрузив его. Перейти к терминалу и быть в Су.

Добавьте путь к вашей библиотеке в этом файле и сохраните его (например,/usr/local/lib). Вы должны выполнить следующую команду, чтобы активировать путь:

Проверьте ваш новый путь к библиотеке:

Если это показывает ваши файлы библиотеки, то вы готовы.

Ответ 12

попробуйте установить sudo lib32z1

Ответ 13

Все, что мне нужно было сделать, было запущено:

Я был в папке, расположенной в /usr/lib/x86_64-linux-gnu , и работал отлично.

Ответ 14

Если вы запускаете приложение в Microsoft Windows, путь к динамическим библиотекам (DLL) должен быть определен в переменной среды PATH.

Если вы запускаете приложение в UNIX, путь к динамическим библиотекам (.so) должен быть определен в переменной среды LD_LIBRARY_PATH.

Ответ 15

Произошла ошибка, поскольку система не может сослаться на упомянутый файл библиотеки. Сделайте следующие шаги:

  1. При запуске locate libpthread_rt.so.1 будет locate libpthread_rt.so.1 путь ко всем файлам с этим именем. Предположим, что путь это /home/user/loc .
  2. Скопируйте путь и запустите cd home/USERNAME . Замените USERNAME на имя текущего активного пользователя, с которым вы хотите запустить файл.
  3. Запустите vi.bash_profile и в конце параметра LD_LIBRARY_PATH , прямо перед . , добавьте строку /lib://home/usr/loc:. , Сохраните файл.
  4. Закройте терминал и перезапустите приложение. Это должно бежать.

Ответ 16

Я получил эту ошибку, и я думаю, что это та же самая причина, по которой вы

Попробуй это. Исправьте права на файлы:

«sudo su», чтобы получить разрешения для вашей файловой системы.

Ответ 17

Я получил эту ошибку, и я думаю, что это та же самая причина, по которой вы

ошибка при загрузке общих библиотек: libnw.so: невозможно открыть файл общего объекта: такого файла или каталога нет

Попробуй это. Исправьте права на файлы:

Ответ 18

похожая проблема найдена здесь: https://bugzilla.redhat.com/show_bug.cgi?id=1456202 Я пробовал упомянутое решение, и оно на самом деле работает.

Решения в предыдущих вопросах могут работать. Но я думаю, что это простой способ исправить это. Попробуйте переустановить пакет libwbclient в fedora:

Источник

Понравилась статья? Поделить с друзьями:
  • Это не играет никакого значения лексическая ошибка
  • Это не было ошибкой глупою
  • Это наша локация ошибка исключена
  • Это моя ошибка перевод на английский
  • Это можно объяснить особенностями национального менталитета лексическая ошибка