소스에서 무언가를 설치할 때 필요한 라이브러리 목록을 가져옵니다.

소스에서 무언가를 설치할 때 필요한 라이브러리 목록을 가져옵니다.

소스(예: Ruby 1.9.2)에서 무언가를 설치할 때 어떤 명령을 실행하면 얻을 수 있나요?충분히애플리케이션을 설치하는 데 필요한 모든 종속성 목록은 무엇입니까? 가능합니까?

답변1

짧은 답변:불가능한. 소스 배포판에서 정확한 종속성을 얻는 것이 어렵다는 점은 Linux에서 패키지 관리가 널리 사용되는 이유입니다(글쎄, 이는 여러 이유 중 하나입니다). 사실, 꼭 필요하고 어떻게 완료되었는지 신경 쓰지 않는다면, 종속성을 얻는 가장 신뢰할 수 있는 방법은 아마도 배포판 패키지(젠투 ebuild는 사용하기 쉽습니다)를 잡고 다음 목록을 가져오는 것입니다. .

그렇지 않고 운이 좋다면 관리자는 readme 파일이나 유사한 파일에 종속성 목록을 생성할 것입니다. 이것이 가장 먼저 확인할 장소가 될 것입니다. 실패하면 C 프로젝트이고 손을 더럽혀도 괜찮다면 구성 스크립트(또는 더 나은 구성.ac 또는 생성되는 모든 항목)를 살펴보고 내용을 기반으로 종속성을 파악할 수 있습니다. 관계 확인하다.

답변2

소스에서 빌드

나는 그것을 프로그래밍하는 방법을 모르고 일반적으로 일반적인 아이디어를 얻기 위해 릴리스 노트 및/또는 소프트웨어 추가 정보 파일을 탐색합니다. 이는 실제로 반복적인 프로세스이므로 갖고 있지 않거나 놓친 라이브러리 한두 개를 찾아서 가져와야 할 수도 있습니다.

패키지 관리자로 빌드

반면에 aptgithub 또는 github와 같은 패키지 관리자를 사용하는 경우 yum이러한 시스템의 도움을 받아 관련 패키지를 설치/빌드하기 전에 모든 종속성을 미리 설치하는 데 도움을 받을 수 있습니다.

적절한 기반 배포

$ sudo apt-get build-dep <package>

냠 기반 배포

$ sudo yum-builddep --nogpgcheck <source package>

-또는-

$ sudo yum-builddep --nogpgcheck <package>

답변3

전반적으로 100% 해결책을 드릴 수는 없지만, 사용된 대부분의 소스에 대해서는자동 도구, grep을 사용 하여 합계를 configure.ac찾을 수 있습니다 .AC_SEARCH_LIBSAC_CHECK_HEADERSPKG_CHECK_MODULES

첫 번째 매개변수 AC_CHECK_HEADERS는 파일 이름이거나 파일 이름이 포함된 경로입니다.

PKG_CHECK_MODULES으로 소개되었습니다.패키지 구성그리고 IIRC의 두 번째 인수 PKG_CHECK_MODULES에는 파일이 있어야 하는 패키지 이름이 포함됩니다 <pkg-name>.pc.

두 번째 매개변수 AC_SEARCH_LIBS는 Linux를 사용하여 찾고 있는 라이브러리 이름입니다 lib<second-argument-to AC_SEARCH_LIBS>.so.

이들 중 어느 것도 완벽하지 않으며 포괄적인 요구 사항 목록을 제공할 필요는 없지만...

  1. 소스 코드 유지관리자는 이러한 세 가지 사항을 통해 전체 요구 사항 목록을 확인하는 데 점점 더 많은 관심을 갖고 있습니다.

  2. 일부 스크립트에서는 이 세 가지를 사용하여 배포 패키지를 검색하고 누락된 파일을 제공하는 패키지를 찾을 수 있습니다. 예를 들어 apt-file searchFaheem Mitha가 언급했듯이 모든 Debian 기반 Linux에 해당됩니다.

답변4

우분투(데비안):sudo apt-get build-dep <package>

관련 정보