우분투 소스 패키지 의존성 트리


10

패키지가 있습니다. 의 그들을 부르 자 A.deb, B.deb하고 C.deb. 각 패키지에는 해당 소스 패키지 A.dscA.tar.gz, B.dscB.tar.gz, C.dscC.tar.gz있습니다. 패키지는 서로 의존합니다 : C.deb의존 B.deb하고 B.deb의존합니다A.deb

를 수정 A.deb하면 다시 빌드해야합니다 B.deb. 그렇지 않으면 작동하지 않습니다. 동일은 간다 B.deb하고 C.deb. 이 프로세스를 자동화하는 방법이 있습니까? 나에게 도움이 될 도구 나 스크립트가 있을까? 그렇지 않다면 어떻게 직접 자동화 할 수 있습니까?

또한 패키지가 없습니다.


2
당신은 "C.deb는 B.deb에 의존하고 B.deb는 A.deb에 의존한다"고 말하는 것이므로 바이너리 패키지를 언급하고 있다고 생각 하십니까? 또한 A의 외부 라이브러리에 대한 B 컴파일을 언급하고 있습니까? 그렇다면 A 개발자가 그러한 라이브러리의 인터페이스를 변경하지 않았기 때문에 패키지를 다시 빌드 할 필요가 없어야 합니다. ; 당신이 그들 모두의 개발자라면, 단지 인터페이스에서 Agnostic의 구현을 최대한 최대한 유지하여 호환성을 최대한 보장하십시오).
kos December

1
나는 리눅스 에서이 수준에서 물건을하지 않지만, 그것이 make발명 된 것이라고 생각합니다 . makefile에는 변경된 내용에 따라 재 컴파일 / 재 구축해야 할 사항을 결정하는 규칙이 포함되어 있습니다.
Joe

1
@xiaodongjie-당신은 소중한 질문을 가진 사랑하는 사람입니다-그래서 당신은 이미 배쉬와 배쉬 스크립팅을 알고 있습니까? ---> 이렇게하면 스위치 케이스 루프로 작은 스크립트를 작성한 다음 엘리베이터 빌드에서 패키지에 대해 수행 할 작업을 다른 경우에 만들 수 있습니다. 내 스크립트가 없습니다. 당신은 우리가 똑똑한 것처럼 똑똑합니다-웃습니다. -이 스크립트는 물론 자동으로 작동하도록 데몬처럼 설정할 수 있습니다.
dschinn1001

1
@Joe는 다음 make과 같이 말했습니다 : use , 당신이 말한 것처럼, @xiaodongjie, make 대상은 결과 패키지이며 패키지 간 종속성이 선언되고 각 대상에 대한 관련 동작은 패키지를 만드는 명령입니다 . 그것에 관한 모든 것을 읽으려면 설치 make-doc하고 입력 info make하십시오.
Ralph Rönnquist

1
빌드 프로세스에 대한 별명을 작성하는 것은 어떻습니까?
빌헬름 에라스무스

답변:


3

다음과 같이 빌드 종속성이 선언 된 Makefile을 사용합니다.

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

명령 들여 쓰기는 TAB입니다.

그것으로 Makefile, 당신은 명령을 사용합니다

make

이것은 파일의 타임 스탬프에 따라 어떤 패키지를 어떤 순서로 빌드하고 순서대로 정리 한 다음 빌드합니다. 말하자면이 경우 예는, B.tar.gz나중에보다 타임 스탬프가 있습니다 B.deb(즉, 패키지 B의 새로운 소스를 가지고), 그 다음이 먼저 발생할 것 B.deb재건을 할, 그리고 그것이 나중에보다 더 각인 될 수 있도록하는 것처럼 C.deb, 그것은 원인이 C.deb아니라 다시 할 수 있습니다.


1

글쎄, 느릅 나무 나는 것 단순히 우리 A, 난 완전히 당신의 포인트를 실종 해요,하지만 당신 같은거야 재 컴파일 패키지 A를 소리와 패키지 B & C를 컴파일 할 메이크 위해.


더 자세히 설명해 주시겠습니까?
xiaodongjie

또는 모든 예.
xiaodongjie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.