wine
실행 파일 (버전 2.12)을 시작하고 싶지만 다음 오류가 발생합니다 ($
= shell 프롬프트) :
$ wine bash: /usr/bin/wine: No such file or directory $ /usr/bin/wine bash: /usr/bin/wine: No such file or directory $ cd /usr/bin $ ./wine bash: ./wine: No such file or directory
그러나 파일은 다음과 같습니다.
$ which wine /usr/bin/wine
실행 파일은 확실히 있고 죽은 심볼릭 링크는 없습니다.
$ stat /usr/bin/wine File: /usr/bin/wine Size: 9712 Blocks: 24 IO Block: 4096 regular file Device: 802h/2050d Inode: 415789 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-07-13 13:53:00.000000000 +0200 Modify: 2017-07-08 03:42:45.000000000 +0200 Change: 2017-07-13 13:53:00.817346043 +0200 Birth: -
32 비트 ELF입니다.
$ file /usr/bin/wine /usr/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=eaf6de433d8196e746c95d352e0258fe2b65ae24, stripped
실행 파일의 동적 섹션을 가져올 수 있습니다.
$ readelf -d /usr/bin/wine Dynamic section at offset 0x1efc contains 27 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libwine.so.1] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000001d (RUNPATH) Library runpath: [$ORIGIN/../lib32] 0x0000000c (INIT) 0x7c000854 0x0000000d (FINI) 0x7c000e54 [more addresses without file names]
그러나 :
$ ldd /usr/bin/wine /usr/bin/ldd: line 117: /usr/bin/wine: No such file or directory
strace
프로그램 :
execve("/usr/bin/wine", ["wine"], 0x7fff20dc8730 /* 66 vars */) = -1 ENOENT (No such file or directory) fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 4), ...}) = 0 write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory ) = 40 getpid() = 23783 exit_group(1) = ? +++ exited with 1 +++
@jww의 제안을 추가하도록 수정 됨 : 문제가 동적으로 연결되기 전에 발생하는 것으로 보입니다. 도서관 ld
디버그 메시지가 생성되지 않기 때문에 요청됩니다.
$ LD_DEBUG=all wine bash: /usr/bin/wine: No such file or directory
LD_DEBUG
대신 오류가 발생합니다.
$ LD_DEBUG=help wine bash: /usr/bin/wine: No such file or directory
추가하도록 수정 됨 @Raman Sailopal의 제안 : /usr/bin/wine
의 내용을 이미 생성 된 다른 파일로 복사하면 문제가 실행 파일 내에있는 것 같습니다. 동일한 오류
root:bin # cp cat testcmd root:bin # testcmd --help Usage: testcmd [OPTION]... [FILE]... Concatenate FILE(s) to standard output. [rest of cat help page] root:bin # dd if=wine of=testcmd 18+1 records in 18+1 records out 9712 bytes (9.7 kB, 9.5 KiB) copied, 0.000404061 s, 24.0 MB/s root:bin # testcmd bash: /usr/bin/testcmd: No such file or directory
문제는 무엇이며 어떤 파일이나 디렉토리가 누락되었는지 확인하려면 어떻게해야합니까?
uname -a
:
Linux laptop 4.11.3-1-ARCH #1 SMP PREEMPT Sun May 28 10:40:17 CEST 2017 x86_64 GNU/Linux
댓글
파일을 찾을 수 없음 ” 오류가 발생했지만 파일이 바로 여기에 있습니다. ‘ 인터프리터가 누락되었습니다.file
명령은이 실행 파일에 대해 설정된 인터프리터를 보여줍니다.
Answer
이 :
$ file /usr/bin/wine /usr/bin/wine: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=eaf6de433d8196e746c95d352e0258fe2b65ae24, stripped
다음과 결합 :
$ ldd /usr/bin/wine /usr/bin/ldd: line 117: /usr/bin/wine: No such file or directory
강력하게 제안 시스템에 /lib/ld-linux.so.2
ELF 인터프리터가 없습니다. 즉,이 64 비트 시스템에는 32 비트 호환성 라이브러리가 설치되어 있지 않습니다. 따라서 @ user1334609 “의 대답은 기본적으로 정확합니다.
댓글
- 오도하는 오류 메시지에 대해 이야기 할 사람이 있습니까?
답변
알겠습니다. CPU 과열로 인해 종료 된 후 시스템을 가동하고 다시 실행하기 위해 지난 8 시간 동안 바빴습니다. . 재부팅 할 때 너무 엉망이되어 initrd의 폴백 콘솔조차도 더 이상 내 키보드를 인식하지 못하는 것이 분명해졌습니다. 당신의 수많은 제안을 구현하려고 노력하는 동안 시스템이 어떻게 오랫동안 작동 할 수 있었는지는 저에게는 미스테리입니다 (정말 감사합니다 !!)
재부팅 문제 :
Warning: /lib/modules/4.11.3-1-ARCH/modules.devname not found - ignoring ERROR: device "UUID=..." not found. Skipping fsck. ERROR: Unable to find root device "UUID=...". You are being dropped to a recovery shell Type "exit" to try and continue booting sh: can"t access tty: job control turned off
나중에 키보드가 작동하지 않습니다. 🙂
문제 : 업데이트가 심볼릭 링크를 대체했습니다. /lib -> /usr/lib
디렉토리가 있습니다. 따라서 /lib
에있을 것으로 예상되는 모든 라이브러리와 커널 모듈이 누락되었습니다. 🙂
그래서 심볼릭 링크를 다시 만들고 기본 시스템을 다시 설치했습니다. 라이브 CD.
이제 인터넷에 다시 연결되었으므로 이 스레드
도 발견했습니다.
또한 내 패키지 관리자를 사용했습니다. 라이브 CD에서 브릭 온 디스크 설치 (pacman
라고 함)를 사용하여 기본 그룹 ( 커널 만있을 수 있으므로 linux
패키지로 충분할 수 있습니다. 모르겠습니다.
이를 수행하려면 브릭 설치의 주 파티션을 다음 위치에 마운트합니다. 라이브 CD 시스템의 /mnt
디렉토리를 찾고 chroot
를 사용하여 pacman
가 /mnt
는 /
입니다 (sdXXX
에 대한 브릭 시스템의 기본 파티션 삽입)
mount /dev/sdXXX /mnt # Recreate the /lib -> usr/lib symlink ln -s usr/lib /lib # Mount essential system folders also to the respective subfolders of /mnt mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev # Fake /mnt to be /, so that pacman installs the packages to the correct places chroot /mnt # Reinstall the Arch Linux base system pacman -Sy base
기록 : 상대 심볼릭 링크를 생성하여 ln -s /usr/lib /mnt/lib
div가 아니라 ln -s usr/lib /mnt/lib
>, 초기 시스템 부팅 (initrd 단계) 중에 주 파티션이 먼저 마운트되기 때문입니다. /new_root
로.심볼릭 링크가 절대적이면 초기 부팅 중에 위에서 언급 한 오류가 발생합니다.
코멘트
- 작은 힌트 : systemrescuecd를 사용할 때 저는 종종 proc / sys / dev를 반복합니다 (proc sys dev의 경로에 대해; do mount -obind / $ path / mnt / $ path; 완료) chroot를 수행하기 전에. 그러나 ‘ arch install iso를 사용하는 경우 제공된 arch-chroot 실행 파일을 실행하는 것이 훨씬 더 쉽습니다. 누군가가 찌르고 싶다면 arch-install-scripts 패키지에 있습니다. 🙂
답변
64 비트 운영 체제에서 32 비트 응용 프로그램을 실행하려고합니다. 이 기능이 작동하려면 32 비트 호환성 라이브러리 (특히 glibc)를 설치해야합니다.
설명
- 솔루션이 사례를 해결하는 방법을 명확히하십시오. 그리고 질문에 답하세요.
- Romeo가 말한 것; pacman 대신 arch-linux 시스템에서 apt-get을 실행 하시겠습니까? 압축 라이브러리와 ncurses가 어떻게 도움이 될까요?
Answer
FYI, 동일한 문제가 발생했습니다. 알파인 기반 도커 이미지에서. 실행 파일은 64 비트 ELF이고 알파인 이미지는 64 비트였으며 실행 파일은 다른 컨테이너에서 작동했습니다. 그래서 아마도 잘린 알파인 라이브러리는 내 실행 파일과 호환되지 않았습니다. node.js Docker 허브 페이지 참고 :
주요 경고 [Alpine 기반 컨테이너에서 실행] 은 div 대신 musl libc 를 사용한다는 것입니다. > glibc 및 친구 . 따라서 특정 소프트웨어는 libc 요구 사항의 깊이에 따라 문제가 발생할 수 있습니다. 그러나 대부분의 소프트웨어에는 문제가 없으므로이 변형은 일반적으로 매우 안전한 선택입니다. 자세한 내용은 이 Hacker News 댓글 스레드 를 참조하세요. 발생할 수있는 문제와 Alpine 기반 이미지 사용에 대한 몇 가지 장단점 비교.
내 솔루션은 다른 방법 (예 : Debian Jessie 기반)을 사용하는 것이 었습니다. 컨테이너 이미지입니다.
댓글
- 원래 시스템 관리자 문제를 ” 새
컨테이너의 세계!
/etc/pacman.conf
에서 활성화됩니다.wine
패키지의 모든 종속성이 설치됩니다. 그러나 확인하기 위해 다시 설치하십시오 …/lib/ld-linux.so.2
가 시스템에 있습니까? 모든 증상은 확인 만하면 누락되었음을 나타냅니다./lib
가 누락되었습니다. 🙂