저는 Linux 배포판(보통 Debian 변종 및 Red Hat 변종)에서 많은 과학 소프트웨어를 사용합니다. 성능을 최대화하고 최신 기능을 얻으려면 일반적으로 소스에서 소프트웨어를 컴파일하는 것이 가장 좋습니다.
그러나 이렇게 하면 지저분해지며 패키지 관리자와 충돌이 발생할 수 있습니다. 다음에서 모든 제안을 확인했습니다.Unix & Linux 질문 "소스 코드에서 프로그램을 컴파일하고 설치하는 방법"그리고Unix & Linux 질문 "자체 컴파일된 소프트웨어를 어디에 두어야 합니까?"안내를 요청하세요. 이러한 질문은 좋은 출발점이지만 종속성을 쉽게 관리하는 방법이 명확하지 않습니다. 예를 들어 개발 브랜치를 빌드하면수치 시뮬레이션소스에서 이와 같은 것을 사용하십시오.설치 확인, CheckInstall로 구축된 패키지에 올바르게 추가할 수 있도록 종속성을 어떻게 감지해야 합니까? 내 목표는 구성을 복잡하게 하지 않고도 소프트웨어를 비교적 쉽게 설치하고 제거하는 것입니다.
또한 구성을 반복 가능하게 만들고 싶습니다. 내 말은, 새 OS 설치 시 정확하게 반복할 수 있도록 내 컴퓨터에 소프트웨어를 설치하는 워크플로를 설정하고 싶다는 것입니다. 모범 사례가 있습니까? 패키지 관리자의 표준 패키지와 관련하여 소프트웨어 설치를 반복하는 가장 쉬운 방법은 적절한 패키지를 포함하는 스크립트를 만드는 것입니다.
적절한 설치 <포장>(또는 이에 상응하는). 그러나 소스에서 소프트웨어를 설치할 때 이 방법은 매우 복잡해집니다. 더 좋은 방법이 있나요?
답변1
올바른 방법은 소프트웨어 패키지(RPM/Deb)를 빌드하고 패키지를 설치하는 것입니다. 이는 패키지 관리자와 올바르게 통합하고 종속성을 올바르게 처리하는 유일한 방법입니다. RPM/Deb이 어떻게 구축되었는지 이해한 다음 해당 소프트웨어에 대한 기존 패키지를 찾아 패키지의 기초로 사용할 것을 제안합니다.
Python 모듈은 시스템 전체에 걸쳐 패키지화되고 설치될 수 있으며 일반적으로 virtualenv와 함께 사용됩니다(하나를 사용하지 않는 한 --no-site-packages
). 그러나 이것이 virtualenv에 직접 설치하는 것보다 나은지는 pip
불분명합니다. 패키지 무게는 더 무겁지만 새 버전이 여러분을 놀라게 할 수 있기 때문에 virtualenv 설치는 반복성이 떨어지는 경향이 있습니다.
시스템을 구성하는 패키지 목록을 정의하려면위안바오는 파일이 포함되어 있지 않지만 종속성이 있는 패키지입니다. 이 메타패키지는 모든 필수 패키지(직접 구축한 패키지 및 업스트림 패키지)에 따라 달라집니다. 새 시스템을 설치하려면 이 메타패키지만 설치하면 됩니다.