우리 회사는 현재 타사 라이브러리에서 데비안 deb
패키지를 만드는 중입니다. 라이브러리는 자동 도구를 사용하여 작성됩니다. 나는 전에 Autotools로 일한 적이 없으며 힘든 시간을 보내고 있습니다. 라이브러리 소스는 configure.in
및 Makefile.am
파일과 m4/
디렉토리를 포함합니다. 나는이 순서를 사용하여 라이브러리를 구축 할 수 있어요 :얼마나 자주 autoconf를 실행합니까?
aclocal -I m4 -I /usr/share/aclocal
autoheader
libtoolize --automake
automake -a
autoconf
./configure
make
파일 debian/rules
에서 내가 CDBS를 사용하고 싶습니다. 나는 이것을 썼다 :
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk
그러나 그것은 작동하지 않는다. configure
파일이 누락되었다고 불평합니다. 그리고 Autotools 클래스는이 파일이 존재하기를 기대하기 때문에 그렇습니다. 그러나 그것은 거기에 있지 않고 누군가 autoconf
와 친구에게 먼저 전화해야합니다!
왜 Autotools가 CDBS 클래스는 나를 autoconf
친구를 호출하지 않습니다? 어떻게 우회합니까?
여담 : 나는이 프로그램을 사용하면
, 나는, 그 때마다 컴파일하지 않습니다 내가 한 번 컴파일하고 바이너리를 다시 사용합니다. 사람들이 소프트웨어를 설치하면
, 그들 자신에 의해 컴파일하지 않는, 개발자는 한 번 컴파일 사람들은 바이너리 패키지를 다시 사용합니다.
유지 관리자가 패키지를 컴파일 할 때 컴파일 할 때마다 configure
스크립트를 만들지 않으므로 업스트림 작성자가 한 번만 생성했으며 관리자는이를 다시 사용할 수 있습니다.
는 마지막 문장 사실인가요? 왜냐하면 Autotools CDBS 클래스의 작성자가 같은 것을 가정했기 때문에 그들은 다른 아키텍처의 패키지를 컴파일하는 동안 configure
이 존재한다고 재촉합니다. 내가 맞습니까? configure
가 생성 될 수있는 경우
한편으로, 그것은 어디서나 존재해서는 안 - 당신이 그것을 필요로하는 경우에, 당신은 다른 파일에서 생성 된. 반면에 Autotools CDBS 클래스의 작성자는이 방법으로 구현해야하는 몇 가지 이유가 있어야합니다.
요약 :
- 내가 위에서 설명한 Autotools가 CDBS 클래스 문제를 해결하려면 어떻게합니까?
- 얼마나 자주
configure
를 재생합니까? (일반적으로 데비안 패키지를 구축 할 때.)
그러나'configure.ac '와'Makefile.am'에서'configure'를 생성 할 수 있다면, 우리는 항상 후자의 두 개를 배포하지 않아야합니까? 'configure '를 나에게 배포하는 것은 바이너리 파일을 저장소에 넣는 것과 같다. – Jasiu
GNU 빌드 시스템은 tarball의 압축을 푼 직후'./configure && make && make install '이 필요하므로'configure'스크립트를 tarball에 배포해야합니다. Makefile.in, Bison 생성 파서, Texinfo 문서는 모두 다른 파일에서 생성되고 배포되므로 최종 사용자는 다시 생성하기 위해 도구를 설치할 필요가 없습니다. 저장소에 들어가는 내용은 사용자 tarball의 내용과 다릅니다. 개발자는 생성 된 파일을 생략하는 경우가 많습니다. 그러나 실행하는 것은 작업을 모두 재생성하는 것입니다. – adl