소스에서 빌드된 바이너리를 두 번째 컴퓨터에 설치할 수 있나요?

소스에서 빌드된 바이너리를 두 번째 컴퓨터에 설치할 수 있나요?

이곳이 질문하기에 가장 좋은 곳인지 잘 모르겠습니다. 더 좋은 곳이 있으면 올바른 방향을 알려주세요.

가정적으로 두 대의 컴퓨터가 있다고 가정해 보겠습니다. A는 개발 컴퓨터이고 B는 생산 컴퓨터입니다. A에는 소스에서 소프트웨어를 빌드하는 데 사용할 수 있는 컴파일러와 같은 소프트웨어가 있지만 B에는 없습니다.

A에서는 일반적인 루틴에 따라 소스에서 소프트웨어를 쉽게 빌드할 수 있습니다.

./configure
make

그런 다음 sudo make install. 하지만 제가 정말로 하고 싶은 것은 방금 B에 구축한 소프트웨어를 설치하는 것입니다. 그렇게 하는 가장 좋은 방법은 무엇입니까?

내가 고려한 몇 가지 옵션이 있습니다.

  1. 패키지 관리자를 사용하여 B에 소프트웨어를 설치합니다. 패키지 관리자에서 사용할 수 있는 소프트웨어가 매우 오래되었기 때문에 이 옵션은 나에게 적합하지 않습니다.
  2. B에 컴파일러 및 기타 빌드 도구 설치: 다양한 제약으로 인해 프로덕션 시스템에 빌드 도구를 설치하지 않는 것이 좋습니다.
  3. A에서 B로 바이너리를 수동으로 복사합니다. 이는 오류가 발생하기 쉬우므로 바이너리가 프로덕션 시스템 전체에 걸쳐 일관된 방식으로 설치되었는지 확인하고 싶습니다.
  4. B에만 설치하고 make소스 디렉터리를 전송한 다음 sudo make installB에서 실행합니다. 이것은 지금까지 제가 찾은 최고의 솔루션이지만 어떤 이유로(아마도 클럭 오프셋) make이미 설치했어야 하는 소프트웨어를 다시 빌드하려고 시도합니다. 빌드 도구가 B에 설치되지 않았기 때문에 실패합니다. 내 컴퓨터의 I/O 속도도 형편없기 때문에 소스 디렉터리를 전송하는 데 시간이 매우 오래 걸립니다.

바이너리와 구성 파일을 설치하기 위해 전송 및 실행할 수 있는 빌드된 바이너리가 포함된 일종의 패키지를 만들 수 있다면 정말 좋을 것입니다. 그러한 도구가 존재합니까?

답변1

지금까지 가지고 있는 것을 사용하여 makefile이 GNU autotools로 생성된 경우 다음을 설정합니다.대상 위치 또는 설치 경로~와 함께

./configure --prefix=/somewhere/else/than/the/usual/usr/local

그런 다음 실행

make && make install

마지막으로 접두사 폴더의 파일을 usr/다른 컴퓨터의 폴더로 복사합니다. 이는 두 시스템이 동일한 아키텍처를 가지고 있다고 가정하고 그렇지 않은 경우 해당 크로스 툴체인을 사용합니다.

답변2

이를 수행하는 가장 깔끔한 방법은 아마도 OS가 애플리케이션용 패키지를 생성하는 데 사용하는 패키징 도구를 사용하고 다른 패키지와 마찬가지로 설치하는 것입니다. 이를 수행하는 방법은 패키지 관리자와 시스템에 따라 다르며 특정 학습 곡선이 있습니다.

/opt/packagename소스 패키지가 일부 하위 트리(예: 또는 /usr/local/packagename) 내에 소프트웨어 설치를 지원하는 경우 수동 설치가 다소 더 쉬울 수 있습니다 . 한 시스템에서 컴파일하고 설치한 다음 해당 하위 트리만 다른 시스템의 동일한 위치에 복사합니다. 디렉터리에는 모든 관련 파일만 포함되어야 합니다.

에서 변경이 필요한 경우 /etc수동으로 변경해야 합니다. 또한 실제로 바이너리에 액세스하려면 해당 바이너리를 경로의 일부 디렉터리에 심볼릭 링크하거나 패키지 bin디렉터리를 경로에 추가해야 합니다. autoconf/를 사용하는 대부분의 패키지는 설치 경로를 설정하기 위해 스크립트 에 인수를 automake사용할 수 있습니다 .--prefix./configure

어떤 경우든 컴파일한 응용 프로그램에 어떤 라이브러리 등이 필요한지 확인하고 두 컴퓨터 모두에 호환 가능한 버전이 있는지 확인해야 합니다.

관련 정보