DEB 파일을 수동으로 작성하고 싶습니다. 설치할 데이터가 들어있는 폴더와 설치 후 실행할 스크립트를 제공하고 싶습니다.
이게 가능해?
DEB 파일을 수동으로 작성하고 싶습니다. 설치할 데이터가 들어있는 폴더와 설치 후 실행할 스크립트를 제공하고 싶습니다.
이게 가능해?
답변:
나의 추천은 소스 패키지를 만드는 것입니다. 설치 빌드 - 필수 , debhelper , DH-메이크업을 . 설치하려는 파일이있는 디렉토리로 변경하고 ( $PACKAGE-$VERSION
예 : myapp-4.2-1
Myapp V4.2 패키징 시도시 디렉토리 이름의 형식이어야 함 ) 다음을 실행하십시오 dh_make --createorig
. 질문에 대답하십시오. Debhelper는라는 서브 디렉토리 ( debian
일부 필수 파일 및 선택적 파일 용 템플리트)에 파일 을 생성하여 패키지를 빌드하는 데 필요한 기본 인프라를 작성 합니다. 다음 파일 중 일부를 수정해야 할 수도 있습니다.
debian/rules
올바른 위치에 파일을 빌드하고 설치해야하는 것을 빌드하도록 편집하십시오 . 일부 파일을 복사하고 컴파일하지 않아도되는 경우 파일 debian/install
을 편집하여 설치할 파일 을 지정하십시오.debian/copyright
패키지에 대한 라이센스 정보와 최신 버전을 구할 수있는 위치에 관한 정보를 추가하려면 편집하십시오 (관련된 경우).debian/changelog
ITP에 대한 참조를 제거하도록 편집하십시오 (데비안 프로젝트에서 작업하는 경우에만 해당). 설치 후 이름 debian/postinst.ex
을 바꾸고 debian/postinst
설치 후 명령을 추가하십시오. 나중에 패키지를 업데이트 debchange -i
하는 경우 변경 로그 항목을 추가하거나 Emacs ( dpkg-dev-el이 설치된 상태) 에서 파일을 편집하기 위해 실행 하십시오 .패키지 dpkg-buildpackage -rfakeroot -us -uc
를 빌드하기 위해 실행하십시오 .deb
( -us -uc
PGP 키로 패키지에 서명하려는 경우 제거 ).
소스 패키지에서 바이너리 패키지를 빌드하지 않고 직접 바이너리 패키지를 작성하기로 결정한 경우 프로세스를 용이하게하는 도구가 많지 않기 때문에 실제로는 쉽지 않습니다. deb 패키지 형식에 대한 기본 지식이 필요합니다. 그것은에서 설명 데비안 정책 안내서 (Debian Policy Manual) 특히, CH. 3 (이진 패키지의 형식) , ch. 5 (제어 파일) , ch. 6 (설치 스크립트) 및 부록 B (이진 패키지 조작) .
패키지가 예상 파일 /usr/share/doc/copyright
(패키지 내용의 라이센스 및 최신 버전의 패키지를 찾을 수있는 위치 /usr/share/doc/changelog.Debian.gz
포함 )과 (deb 패키지의 변경 로그 포함 )를 설치했는지 확인하십시오 . 사내에서만 패키지를 사용하려는 경우에는 필요하지 않지만 패키지를 사용하는 것이 좋습니다.
데비안 도구를 사용할 수 있으면 dpkg-deb
패키지를 구성하는 데 사용 하십시오. 설치할 데이터가 포함 된 디렉토리 DEBIAN
에서 제어 파일 및 유지 보수 스크립트가 포함 된 최상위 레벨에서 호출 된 디렉토리를 추가하십시오 .
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
데비안 도구가없는 경우 패키지하려는 파일의 아카이브 data.tar.gz
, control.tar.gz
(하위 디렉토리 없음) 라는 제어 파일의 별도 아카이브 , debian-binary
및을 포함하고 텍스트를 포함 하는 텍스트 파일을 빌드 하십시오 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
당신은 적어도 필요한 제어 파일 필드와 Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, 및 필요한 의존성 선언.
설치 후 실행될 스크립트를 호출 postinst
합니다. 실행 가능하게 만드십시오. 그것은 함께 간다 control
.
다른 배포판의 이진 패키지가 이미있는 경우 외계인 을 사용 하여 변환 할 수 있습니다 .
dch -i
.
ar
그 일을 tar
되지 않는 이유는 무엇입니까?
dh_make --createorig
용도를, 당신이 필요 export DEBEMAIL="me@example.com"
하고 export DEBFULLNAME="Firstname Lastname"
사전.
먼저 빌드 폴더와 파일의 아카이브를 만들어야합니다. tar czvf data.tar.gz files
그런 다음 빌드 폴더에서 원하는 정보가 포함 된 제어 파일을 작성해야합니다.
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
그런 다음 독립적으로 preinst, postint, prerm 및 postrm 셸 스크립트를 추가하여 .deb 파일의 사전 및 사후 설치 및 사전 및 사후 제거 동작을 제어 할 수 있으며 tar를 사용하여 제어 아카이브를 만들 수 있습니다. tar czvf control.tar.gz control preinst postinst prerm postrm
그런 다음 데비안 바이너리 파일이 필요합니다 : echo 2.0 > debian-binary
. 빌드 폴더에 다음 파일이 있어야합니다. debian-binary
control.tar.gz
및 data.tar.gz
.
마지막으로 ar
.deb 파일을 만들려면 패키지가 필요 합니다.ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
가 순서를 강조 할 가치가있을 수 있습니다 중요 : 제어 데이터 앞에 와야합니다.
포장에 데비안 위키를 참조 어쩌면, equivs
만족을 이미 요구 사항을 (링크 참조).
deb
파일 형식 의 Wikipedia 페이지 에도 유용한 링크가 많이 있습니다.
데비안의 Zimbra 7에서 우분투 패키지를 사용하여이 문제를 해결했습니다. (나는 짐 브라가 우분투에 대해서만 공개했지만 데비안> 부분 투를 좋아한다.) 내가이 문제를 어떻게 해결했는지 확실하지 않다.
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
모든 새 .deb 파일은에 있습니다 new/
.
참고 : 이것은 압박에 빠졌습니다. wheezy의 dpkg에는 이제 --force-bad-version이 있습니다.
패키지를 빠르게 작성하기 위해 사용자는 설치 프로그램을 점검 할 수 있습니다. 프로그램을 설치하고 변경 사항을보고 deb 또는 rpm 패키지를 만듭니다.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage