바이너리용 deb에서 PKGBUILD 생성

바이너리용 deb에서 PKGBUILD 생성

소스 없이 제공되는 프로그램을 위해 .deb 패키지를 PKGBUILD로 변환했습니다. 문제는 이 바이너리가 Arch에서 다른 경로를 가지고 있는 Ubuntu 16.10에서 사용 가능한 일부 공유 라이브러리를 찾는다는 것입니다. 이것은 ldd바이너리에서 실행할 때 출력의 일부입니다 .

    libcurl-nss.so.4 => not found
    liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0x00007f460d645000)
    libboost_thread.so.1.61.0 => not found
    libboost_system.so.1.61.0 => not found
    libboost_filesystem.so.1.61.0 => not found
    libboost_program_options.so.1.61.0 => not found
    libxalan-c.so.111 => not found

이 프로그램에 Arch에서 라이브러리를 찾을 수 있는 위치를 알려주는 가장 좋은 방법은 무엇입니까?

답변1

그들은 같은 디렉토리에 있습니다. 그러나 그들 중 일부는존재하지 않음Arch에서 - 또는 최소한 프로그램에 필요한 정확한 .soname이 아닙니다.

부스트는 하나의 문제입니다. Arch에서는 이미 버전 1.64이고 불행히도 ABI 안정성이 없습니다. 즉, Boost를 사용하는 프로그램은 모든 버전마다 다시 컴파일해야 합니다. (".so"가 변경된 이유는 숫자 때문입니다.)

따라서 먼저 다양한 기존 "이전 버전" 패키지(예: glew1.10)와 유사한 방식으로 Boost 1.61용 패키지를 만들어야 합니다. .so 파일만 있고 다른 파일은 없으므로 최신 버전과 나란히 설치할 수 있습니다.

(아니요, 단순히 다른 버전을 심볼릭 링크하거나 이름을 바꿀 수는 없습니다. .soname은 이유 때문에 변경됩니다.)

cURL에는 버전 관리와 관련된 문제가 없지만(오랫동안 .so.4에 있었습니다) 세 가지 문제가 있습니다.변형– Arch는 OpenSSL과 GnuTLS만 제공합니다. 따라서 다시 libcurl-nss를 얻으려면 NSS 라이브러리에 대해 cURL을 컴파일하는 패키지를 만들어야 합니다. "curl-gnutls" 패키지를 기본으로 사용할 수 있습니다.

마지막 라이브러리인 xalan-c는 시스템에 설치되어 있지 않습니다.

관련 정보