apt-get이 라이브러리 패키지를 올바르게 설치하지 않는 것 같습니다.

apt-get이 라이브러리 패키지를 올바르게 설치하지 않는 것 같습니다.

liblz4.so최근에 library 를 설치했지만 apt-get install liblz4-1위 명령은 다음 파일/링크만 설치하는 것으로 나타났습니다.

/usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
/usr/lib/x86_64-linux-gnu/liblz4.so.1 -> liblz4.so.1.7.1

내가 이해하는 바는 Ubuntu에서 라이브러리 이름에 라이브러리 버전이 포함될 수 있지만 이를 포함하지 않는 이러한 파일 중 하나에 대한 링크가 항상 있어야 ld다른 바이너리/라이브러리가 이를 찾을 수 있다는 것입니다. 위의 예에서 이러한 링크는 입니다 /usr/lib/x86_64-linux-gnu/liblz4.so -> liblz4.so.1.7.1. 하지만 apt-get이 링크는 아직 생성되지 않았으므로 직접 생성해야 합니다.

이것이 패키지의 "실패"입니까 liblz4, 아니면 일부 Ubuntu 패키지에서 예상되는 것입니까? 수동으로 링크를 생성하지 않고 설치하는 더 좋은 방법이 있습니까?

답변1

~에서데비안 정책 매뉴얼, 이는 다음을 관리합니다.

바이너리 또는 다른 공유 라이브러리를 공유 라이브러리에 연결할 때 공유 라이브러리의 SONAME을 알 수 없습니다. 대신 .so가 추가된 라이브러리 이름과 일치하는 파일을 찾아서 공유 라이브러리를 찾습니다. 파일은 공유 라이브러리에 대한 심볼릭 링크로 파일 시스템에 존재합니다.

공유 라이브러리는 일반적으로 여러 바이너리 패키지로 나뉩니다. SONAME 심볼릭 링크는 런타임 공유 라이브러리 패키지에 의해 설치되며, 베어 .so 심볼릭 링크는 바이너리나 공유 라이브러리를 링크할 때만 사용되므로 개발 패키지에 설치됩니다.

따라서 liblz4-1런타임 라이브러리가 포함된 패키지 에서 다음 liblz4.so.1.7.1을 사용할 수 있습니다.컴파일된 바이너리개발 패키지에는 링커가 올바른 참조를 포함할 수 있도록 하는 심볼릭 링크가 liblz4-dev있습니다.liblz4.so컴파일할 때.

패키지 liblz4-dev는 런타임 패키지의 현재 버전에 따라 다르므로 심볼릭 링크는 매달려 있지 않으며 배포판이 출시되면 변경해야 합니다 SOVERSION.

답변2

에 따르면 apt-file search liblz4.so이를 설치하는 패키지는 선택한 패키지가 아니지만 다음과 같습니다 liblz4-dev.

$ apt-file search liblz4.so
liblz4-1: /usr/lib/x86_64-linux-gnu/liblz4.so.1
liblz4-1: /usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
liblz4-1-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/liblz4.so.1.7.1
liblz4-dev: /usr/lib/x86_64-linux-gnu/liblz4.so

liblz4.so.1.7.1와 사이의 차이점(있는 경우)이 무엇인지 모르겠습니다 liblz4.so. 이 검색은 Mint 19.3(Bionic)에서 수행되었습니다.

관련 정보