DEB 파일을 수동으로 생성하는 방법은 무엇입니까?

DEB 파일을 수동으로 생성하는 방법은 무엇입니까?

DEB 파일을 수동으로 생성하고 싶습니다. 설치할 데이터가 있는 폴더와 설치 후 실행할 스크립트를 제공하고 싶습니다.

가능합니까?

답변1

소스코드 패키지 만들기

내 제안은 소스 패키지를 만드는 것입니다. 설치하다구축하는 데 필요한,데브 도우미,dh-make. 설치하려는 파일이 있는 디렉토리로 변경하고( $PACKAGE-$VERSION예를 들어 myapp-4.2-1Myapp V4.2를 처음 패키지하려는 경우 디렉토리 이름은 형식이어야 함) 를 실행합니다 dh_make --createorig. 질문에 답하십시오. Debhelper는 debian템플릿에 대한 필수 및 선택 파일이 포함된 하위 디렉터리에 파일을 생성하여 패키지를 빌드하는 데 필요한 기본 인프라를 생성합니다 . 다음 파일 중 일부를 수정해야 할 수도 있습니다.

  • 편집하다debian/rules빌드해야 할 것을 빌드하고 올바른 위치에 파일을 설치하십시오. 일부 파일만 복사하고 내용을 컴파일하지 않으려면 파일을 편집하면 됩니다.debian/install어떤 파일을 어디에 설치해야 하는지 지정합니다.
  • 편집하다debian/copyright관련이 있는 경우 패키지에 대한 라이센스 정보와 최신 버전을 얻을 수 있는 위치에 대한 정보를 추가하세요.
  • 편집하다debian/changelogITP에 대한 참조를 제거하십시오(Debian 프로젝트에서 작업하는 경우에만 관련됨). debian/postinst.ex다음으로 이름 바꾸기debian/postinst거기에 설치 후 명령을 추가하십시오. 나중에 패키지를 업데이트하는 경우 실행하여 debchange -i변경 로그 항목을 추가하거나 Emacs에서 파일을 편집합니다(사용).dpkg-dev-el설치하다).

패키지를 dpkg-buildpackage -rfakeroot -us -uc빌드하려면 실행하세요 ( PGP 키를 사용하여 패키지에 서명하려면 제거하세요)..deb-us -uc

바이너리 패키지를 직접 생성

소스 패키지에서 빌드하지 않고 직접 바이너리 패키지를 만들기로 결정한 경우(프로세스를 용이하게 하는 도구가 많지 않기 때문에 쉽지 않음) deb 패키지 형식에 대한 기본 지식이 필요합니다. 그것은에 설명되어 있습니다데비안 정책 매뉴얼, 특히ch.3(바이너리 패키지 형식),채널 5(제어 파일),채널 6(설치 스크립트)그리고부록 B(바이너리 패키지 작업).

/usr/share/doc/copyright패키지가 예상 파일 (패키지 콘텐츠에 대한 라이센스 및 최신 버전의 패키지를 찾을 수 있는 위치 포함) 및 /usr/share/doc/changelog.Debian.gz(deb 패키지에 대한 변경 로그 포함)을 설치하는지 확인합니다 . 패키지를 내부적으로만 사용하려는 경우에는 필요하지 않지만 있으면 좋습니다.

데비안과 그 파생물에 대하여

사용 가능한 Debian 도구가 있으면 dpkg-deb이를 사용하여 패키지를 빌드하십시오. 설치할 데이터가 포함된 디렉터리에 DEBIAN제어 파일과 관리자 스크립트가 포함된 최상위 디렉터리를 추가합니다.

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

힘든 길

데비안 도구가 없으면 이름이 명명된 파일 아카이브 , 이름이 명명된 제어 파일의 별도 아카이브(하위 디렉터리 없음), data.tar.gz이름이 지정되고 텍스트가 포함된 control.tar.gz텍스트 파일을 만듭니다.debian-binary2.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.

다양한 형식의 바이너리 패키지 변환

다른 배포판에 대한 바이너리 패키지가 이미 있는 경우 다음을 사용할 수 있습니다.외계인그것을 변환합니다.

답변2

먼저 빌드 폴더와 파일 아카이브를 만들어야 합니다.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 <[email protected]>
 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.gzdata.tar.gz.

ar마지막으로 .deb 파일을 생성하려면 패키지가 필요합니다 .ar -r xxx.deb debian-binary control.tar.gz data.tar.gz

답변3

나는 많은 가방을 만들고 완전한 가방을 만드는 것은 작은 일이 아닙니다. 긍정적인 측면에서는 파일과 스크립트의 작업량이 훨씬 적습니다. 다음과 같은 도구를 사용하여 매우 간단하게 이러한 패키지를 만들 수 있습니다.토론.

Debreate는 간단한 DEB 패키지를 만들기 위한 매우 간단한 GUI입니다. 파일의 위치와 설치/사전 설치/제거 후에 수행할 작업을 지정하기만 하면 됩니다. 예전에는 모든 패키지를 표준 방식으로 수행했지만 이 도구를 사용하기 시작한 후에는 필요할 때만 다시 돌아갑니다.

답변4

Debian에서 Ubuntu 패키지와 함께 Zimbra 7을 사용할 때 이 문제가 발생했습니다. (저는 고집스럽고 Debian > bUbuntu를 선호합니다. 비록 Zimbra가 Ubuntu용으로만 출시되었음에도 말이죠.) 이전에 이 문제를 어떻게 해결했는지 잘 모르겠지만, 이전에 이것을 설치할 때 이 작업을 수행할 필요가 없었을 것이라고 확신합니다!

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의 squeeze-dpkg에는 이제 --force-bad-version이 있습니다.

관련 정보