
Linux 시스템에서 소프트웨어를 컴파일하고 수동으로 설치하는 좋은 방법이 무엇인지 알고 싶습니다. 내 말은 다음과 같은 일반적인 방법으로 코드를 얻고, 빌드하고, 설치한다는 것입니다.
git clone https://a-repo/foo.git
cd foo/
./configure
make
make install
- 이런 상황을 피해야 할까요? 아니면 추천하시나요? 어쩌면 당신이 사용하고 있는 배포판을 위한 패키지를 만드는 것이 더 나을지도 모릅니다.
- 버전 및 업데이트 관리에 대한 팁이 있습니까?
./configure
일을 할 때, 특히 일을 할 때 좋은 습관이 있나요--prefix=
?- 올바르게 설치/제거하는 방법은 무엇입니까? 실행할 소스를 항상 유지해야 합니까
make uninstall
? - 예를 들어 몇 가지 도구를 본 적이 있지만
stow
논란의 여지가 있는 솔루션인 것 같습니다. 어쩌면 또 다른 솔루션일까요?
배포 독립적인 솔루션을 선호하지만 모든 제안과 의견을 환영합니다!
감사해요!
편집하다:사람들이 내 질문을 이해하지 못하는 것 같습니다. 나는 논쟁을 시작하려는 것이 아니라 위의 사항에 대해 가능한 한 명확하게 답변하고 싶습니다. 나는 이것이 어떤 사람들에게 도움이 될 수 있다고 생각합니다. 당신의 기여에 감사드립니다.
답변1
접근 방식의 문제점은 소프트웨어를 제거할 때 삭제해야 하는 파일을 파악하는 것입니다.
가장 좋은 방법은 배포용 패키지를 구축하는 것입니다. 여기에는 몇 가지 장점이 있습니다. 패키지를 쉽게 설치, 업그레이드 및 제거할 수 있습니다. 이를 통해 별도의 컴퓨터에서 소프트웨어를 컴파일할 수 있으므로 각 컴퓨터에 컴파일러를 설치할 필요가 없습니다. 업스트림이 다른 버전/릴리스로 이동할 때 패키지를 쉽게 업그레이드할 수 있습니다. 게다가 루트 없이도 소프트웨어를 구축할 수 있습니다.
rpmbuild 및 사양 파일을 사용하는 방법을 배우기 전에 내가 사용한 빠르고 더러운 작업은 다음과 같습니다.
./configure
make
make DESTDIR=/tmp/build install
이렇게 하면 "설치된" 모든 파일이 올바른 설치 트리와 함께 /tmp/build 디렉터리에 배치됩니다. 그런 다음 디렉터리에 있는 모든 파일의 소유자/그룹을 변경합니다. 그 다음에:
tar cvfj <filename> -C /tmp/build/
설치하려면:
tar xvf <filename> -C /
제거하려면:
tar tf <filename> | xargs rm