때때로 우리는 여러 가지 이유로 소스에서 무언가를 설치해야 할 수도 있습니다. 적절한 종속성이 주어지면 소프트웨어를 설치하는 방법은 상당히 표준이지만 향후 편의를 위해 이러한 설치를 관리하는 방법은 명확하지 않습니다.
더 구체적으로:
-
쉽고 깨끗하게 제거 할 수 있도록하기 위해 무엇을 할 수 있습니까?
-
소스에서 다시 설치할 수있는 동일한 소프트웨어를 쉽고 깨끗하게 업그레이드하기 위해 무엇을 할 수 있습니까?
-
기본 패키지 (apt-get을 사용하여 설치)와 패키지의 최신 버전 (소스에서 설치)이있는 경우 잠재적 충돌을 최소화하려면 어떻게해야합니까?
답변
를 사용 checkinstall make install
하면 임시 패키지가 생성되어 설치됩니다. 이는 패키지 관리자에 기록되어 있으며 제거 할 수 있음을 의미합니다.
답변
가장 좋은 방법은 새로운 버전의 데비안 패키지를 직접 만드는 것입니다. dpkg
그리고 apt
도구를 언급하고 그 목적을 위해 의도 된 것이 세 가지 일을. 바퀴를 재발 명하는 대신 사용하십시오. 포장에 대한 안내서가 많이 있습니다. 소프트웨어가 이미 리포지토리에 존재하는 경우, apt-get src
자신의 패키지를 연구하고 시작하는 데 사용할 수있는 소스 패키지 ( )를 얻을 수 있습니다.
/ubuntu//a/485230/158442에 대한이 답변 은 일반적인 지침으로 유용 할 수 있습니다.
하지만 checkinstall
신속하고 더러운 솔루션에 좋은 곳입니다, 장기적으로는 적절한 포장을 사용해야합니다.
답변
우선, 소스 코드 관리 방법에 따라 달라집니다. 나는 디렉토리를 좋아 ~/sources
하고 모든 프로그램을 서브 디렉토리에 넣는 반면, 다른 사람들은 모든 프로그램에 대해 새로운 디렉토리를 만들 것입니다.
마찬가지로 나와 같은 일부는 모든 새 버전에 대해 새 하위 하위 디렉토리를 만들고 새 버전에 작업을 중단시키는 중대한 버그가없는 경우에만 이전 버전을 제거합니다.
이 작업을 수행하는 단일 방법은 없지만 원하는 방법을 선택 하여 관리하기 가장 쉬운 방법을 선택하십시오 .
-
깨끗한 제거
-
rem_dep.sh
다음과 같은 스크립트를 작성하는 것이 좋습니다 .#! /bin/bash sudo apt-get remove dep1 dep2 ... depn
dep1, dep2, depn
종속성은 어디에 있습니까 ?
-
-
깨끗하고 쉬운 업그레이드
-
당신은 같은 자동화 된 버전 관리 시스템의 소스 코드를 얻을 경우
git
나bazaar
또는 링크가 예측할 수있는 경우는 것입니다 쉘 스크립트를 만들 수 있습니다#1 make a backup of earlier version #2 get new source #3 configure, build/make the source #5 if make went correctly, remove earlier version. #6 make install new version, update dependencies if required.
-
다른 경우에도 수동 작업으로 이러한 스크립트를 어느 정도 만들 수 있습니다.
-
-
갈등 관리
- 가장 좋은 방법은
--prefix
소프트웨어를 설치하는 동안 이 옵션 을 사용하는 것입니다. - 다른 중요한 점은 충돌을 최소화하기 위해 시스템을 업데이트하는 것입니다.
- 가장 좋은 방법은
참고 : 자신이 원하는 것보다 많은 소프트웨어를 컴파일하는 경우 (
max_limit
5 또는 10 또는 100과 같이 a 를 설정 하십시오) 우분투를 떠나 아치 리눅스로 옮기는 것이 가장 좋습니다.
답변
종속성을 빌드하십시오.
-
AFAIK는 수동으로 기록해야합니다. README와 같은 파일을 작성하여 수동으로 설치된 종속성 목록을 유지할 수 있습니다.
-
해당 소프트웨어에 이미 Ubuntu 또는 PPA 리포지토리에 빌드 된 바이너리가있는 경우 설치하는 동안 종속성 추적이 쉬워야합니다.
sudo apt-get build-dep target_package
완전히 제거 :
구성된 소스 폴더를 유지하십시오 . 종속성 파일이 설치된 특정 폴더의 모든 소스를 수집하는 것이 좋습니다.
클린 업그레이드 및 설치된 파일 격리 :
구체적으로 설치하십시오 --prefix
(바람직하게는 --prefix=/opt/software_name-version/
).
이렇게하면 많은 문제가 해결됩니다. 리포지토리의 버전과 동시 버전; 깨끗한 업그레이드; 소스가 삭제 된 경우 더티 제거가 더 쉽습니다.
@muru가 대답하는 것처럼 더 정교하거나 가장 좋은 방법은 데비안 패키지를 만듭니다 (Ubuntu / PPA 리포지토리에서 사용 가능한 패키지)