소프트웨어를 컴파일하고 설치하는 것은 제가 극복할 수 없는 고통이자 문제입니다. 나는 다음 단계로 나아가기 위해 내 생각을 정리하기 위해 더 지식이 풍부한 사람과 함께 프로세스에 대한 이해를 얻으려고 노력하고 있습니다.
나에게 필요한 과학 소프트웨어의 대부분은 소프트웨어 패키지로 배포되지 않습니다. 나는 "./configure"가 컴파일 변수를 설정하고 종속성을 확인한다는 것을 이해합니다. "make"는 "sudo make install"을 컴파일하고 모든 라이브러리와 저장소를 해당 위치에 놓습니다. 그러나 그것은 결코 작동하지 않았습니다. 나는 a) 종속성 지옥에 빠지지 않고 "./configure" 단계를 종료하는 경우가 거의 없으며, 만약 종료한다면 b) "sudo make install"은 아마도 내 상자를 파괴할 것입니다.
a) 의존 지옥은 매우 실망스럽습니다. 때로는 도서관이 있는데 마음에 들지 않습니다. 아니면 도서관에서 설치를 원하지 않습니다. 또는 "구성"에서 찾을 수 없습니다. 아니면 내 배포판이 있어서는 안되는 위치에 배치합니다. 아니면 내 시스템에 두 가지 버전이 있습니다. 문제는 이러한 문제를 진단하고 해결하는 방법을 이해할 수 없다는 것입니다. 프로그래머가 될 필요가 없는 사람들이 배울 수 있는 좋은 참고 자료는 무엇입니까?
b) "make install"은 일부 라이브러리를 대체하고 설정을 변경하지만 내 패키지 관리자는 이에 대해 알지 못한다는 것을 알고 있습니다. 결과적으로 일부 프로그램은 실행되지 않으며 다른 프로그램은 업데이트되지 않습니다. 따라서 "make install"을 사용하지 않고 컴파일된 바이너리를 사용자 디렉토리에 보관하고 PATH에 심볼릭 링크를 추가하면 명확하게 알 수 있습니까?
내 상자는 수많은 무료 HD를 갖춘 단일 사용자이므로 라이브러리 사본을 여러 개(수십 개) 보유하면 문제가 해결되는지 여부는 별로 신경 쓰지 않습니다. 공간은 저렴합니다.
답변1
대부분의 패키지에는 빌드 시 연결해야 하는 <package>-dev
(Debian 기반의 경우) 또는 (Red Hat 기반의 경우) 라이브러리가 있습니다.<package>-devel
예를 들어, 소스에 가 필요하다고 말하면 libxml
데비안 기반 시스템에서는 libxml2
및 ( 찾는 libxml2-dev
데 사용됨 )을 찾을 수 있습니다.apt-cache search <dependancy>
libxml2-dev
빌드하고 libxml2
실행 해야 합니다 .
이 ./configure
단계는 일반적으로 --with-libxml=/usr/lib/
올바른 라이브러리를 가리키는 플래그를 지원합니다( ./configure --help
모든 옵션이 나열되어야 함). 또한 일반적으로 를 사용하여 설치 위치 변경을 지원합니다 --prefix=$HOME/sw
. 패키지 관리자의 제어 범위 밖에서 접두사를 사용하는 것이 패키지 관리자가 설치한 소프트웨어와의 충돌을 피하는 가장 좋은 방법입니다.
데비안과 그 파생물을 사용 --prefix
하는 /usr/local/
것은 /opt/local/
안전해야 합니다 .
필요한 라이브러리(또는 버전)가 패키지 관리자에 없으면 소스를 다운로드하고 유사한 옵션으로 컴파일하면 됩니다. 가장 중요한 것은 --prefix
외부 패키지 관리자를 사용하고 소프트웨어를 컴파일할 때진짜을 사용하고 싶습니다 --with-<library>=/<path/to/installed/library>
.
답변2
auto-apt
이를 위한 도구가 있습니다 .
~에서남자는 자동으로 적응한다:
auto-apt는 auto-apt 환경에서 실행되는 프로그램의 파일 액세스를 확인하는 프로그램입니다. 프로그램이 설치되지 않은 패키지의 파일에 액세스하는 경우 auto-apt는 apt-get을 사용하여 파일이 포함된 패키지를 설치합니다.
사용 방법은 다음과 같습니다.
auto-apt run ./configure
또 다른 방법은 데비안 기반 배포판에서 사용하는 것입니다 apt-get build-dep <package>
.
답변3
RPM 기반 배포판의 경우 적절한 패키지를 만들어 볼 수 있습니다.저것딱딱한...).
올바른 패키지의 이점은 패키지 관리자가 소프트웨어를 추적할 수 있고 설정을 다른 위치/다음 시스템에 쉽게 복사할 수 있다는 것입니다. 다음에 처음부터 모든 문제를 해결하는 것보다 올바른 소스 패키지로 포워딩(새 업스트림 버전, 버그 수정 패치, 기본 라이브러리 업데이트)하는 것이 더 쉽습니다.