Linux 커널: 3.0.13-0.27-기본 #1 SMP
"대화 상자" 유틸리티( /usr/bin/dialog )를 설치했으며 bin 파일을 /usr/bin에 복사했습니다.
실행하려고 하면 libncursesw.so.5 lib가 누락되었다는 오류 메시지가 나타납니다.
문제를 해결하기 위해 libncursesw.so.5 파일을 /usr/lib/에 복사하려고 시도했지만 도움이 되지 않았습니다.
• 이제 또 다른 오류가 발생했습니다.
“error while loading shared libraries: /usr/lib/libncursesw.so.5: file too short”…
답변1
복사한 바이너리 dialog
는 동적 실행 파일입니다. 즉, 실행의 일부로 공유 라이브러리에 의존합니다. 다음을 사용하여 이를 볼 수 있습니다 ldd
.
$ ldd "$(type -p dialog)"
linux-vdso.so.1 (0x00007fff54fb1000)
libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007fbc0ecee000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fbc0e9eb000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fbc0e640000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbc0ef4d000)
제 경우에는 이것이 의존하는 라이브러리입니다. 버전, 컴파일 옵션 및 기타 요인에 따라 바이너리 요구 사항이 다를 수 있습니다.
종속성 해결을 수행하지 않고 바이너리를 수동으로 복사했으므로 /usr/bin
이러한 공유 라이브러리가 시스템에 존재하지 않을 가능성이 높습니다. 두 번째 오류 메시지인 "파일이 너무 짧습니다"는 해당 라이브러리에 문제가 있음을 나타냅니다(실제로는 너무 짧으므로 파일 대신 심볼릭 링크여야 합니다. 사용자가 거기에 무엇을 넣었는지 알 수 없습니다). 혼자 질문).
이 경로를 따르는 대신 먼저 dialog
패키지 관리자에서 /usr/bin
직접 복사하는 대신 설치를 시도해야 합니다. 이렇게 하면 패키지 설치 기록을 유지하고 번거로움 없이 업데이트를 받을 수 있습니다. 패키지 관리자가 자동으로 설치한 종속성입니다. OpenSUSE를 사용 중이므로 수동으로 복사한 파일( /usr/bin/dialog
및 /usr/lib/libncursesw.so.5
)을 제거한 후 를 실행 해 보세요 yum install dialog
. 이렇게 하면 모든 문제가 해결됩니다.