![linux + 대화 상자 유틸리티를 실행할 수 없음 + 오류 발생](https://linux55.com/image/51109/linux%20%2B%20%EB%8C%80%ED%99%94%20%EC%83%81%EC%9E%90%20%EC%9C%A0%ED%8B%B8%EB%A6%AC%ED%8B%B0%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%9D%8C%20%2B%20%EC%98%A4%EB%A5%98%20%EB%B0%9C%EC%83%9D.png)
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
. 그러면 모든 문제가 해결됩니다.