소스(예: Ruby 1.9.2)에서 무언가를 설치할 때 어떤 명령을 실행하면 얻을 수 있나요?충분히애플리케이션을 설치하는 데 필요한 모든 종속성 목록은 무엇입니까? 가능합니까?
답변1
짧은 답변:불가능한. 소스 배포판에서 정확한 종속성을 얻는 것이 어렵다는 점은 Linux에서 패키지 관리가 널리 사용되는 이유입니다(글쎄, 이는 여러 이유 중 하나입니다). 사실, 꼭 필요하고 어떻게 완료되었는지 신경 쓰지 않는다면, 종속성을 얻는 가장 신뢰할 수 있는 방법은 아마도 배포판 패키지(젠투 ebuild는 사용하기 쉽습니다)를 잡고 다음 목록을 가져오는 것입니다. .
그렇지 않고 운이 좋다면 관리자는 readme 파일이나 유사한 파일에 종속성 목록을 생성할 것입니다. 이것이 가장 먼저 확인할 장소가 될 것입니다. 실패하면 C 프로젝트이고 손을 더럽혀도 괜찮다면 구성 스크립트(또는 더 나은 구성.ac 또는 생성되는 모든 항목)를 살펴보고 내용을 기반으로 종속성을 파악할 수 있습니다. 관계 확인하다.
답변2
소스에서 빌드
나는 그것을 프로그래밍하는 방법을 모르고 일반적으로 일반적인 아이디어를 얻기 위해 릴리스 노트 및/또는 소프트웨어 추가 정보 파일을 탐색합니다. 이는 실제로 반복적인 프로세스이므로 갖고 있지 않거나 놓친 라이브러리 한두 개를 찾아서 가져와야 할 수도 있습니다.
패키지 관리자로 빌드
반면에 apt
github 또는 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_LIBS
AC_CHECK_HEADERS
PKG_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
.
이들 중 어느 것도 완벽하지 않으며 포괄적인 요구 사항 목록을 제공할 필요는 없지만...
소스 코드 유지관리자는 이러한 세 가지 사항을 통해 전체 요구 사항 목록을 확인하는 데 점점 더 많은 관심을 갖고 있습니다.
일부 스크립트에서는 이 세 가지를 사용하여 배포 패키지를 검색하고 누락된 파일을 제공하는 패키지를 찾을 수 있습니다. 예를 들어
apt-file search
Faheem Mitha가 언급했듯이 모든 Debian 기반 Linux에 해당됩니다.
답변4
우분투(데비안):sudo apt-get build-dep <package>