일련의 파일을 설치하는 deb 패키지를 만드는 방법


23

일련의 파일을 설치하기 위해 새로운 deb 패키지를 만들고 싶습니다. 가능한 경우 설치의 일부로 이러한 파일이 들어있는 폴더를 알려진 폴더 위치에 압축을 풀고 싶습니다. 실패하면 소스 폴더와 파일을 패키지하는 방법에 대한 지식이 매우 유용합니다.

질문은-가능합니까? 그렇다면 가능합니까?

예를 들어 보자.

~/mypluginfolder/파일 포함 x, y, 불리는 하위 폴더 abc다른 파일이라는 것을 내부를 z.

이 폴더를 타르 고 싶습니다. tar -cvf myfiles.tar ~/mypluginfolder

내 데비안 패키지는 다음과 같다고 가정합니다.

myfiles.tar.gz
myfiles+ppafoss_0.1-1/
   myfiles.tar
   DEBIAN
      changelog, compat, control, install, rules source

myfiles.tar예를 들어 알려진 폴더 위치로 언 타르트 할 수 있습니까?

/usr/share/rhythmbox/plugins/

따라서 최종 결과는 다음과 같습니다.

/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z

런치 패드에 소스가 필요하다고 가정하면 소스 폴더와 파일을 deb 패키지 구조에 놓을 위치에 대한 조언이 필요합니다.


이것은 결국 일련의 개별 런치 패드 PPA 패키지가 될 것입니다.

내가 선호하는 것은 (그러나 달성하지 못할 수도 있습니다 ...) 포장을 최소한으로 유지하는 것입니다-템플릿에서 일련의 패키지를 만들고 최소한으로 변경하십시오 (changelog 등 + tar 파일 / 파일 및 폴더 구조) .


음 ... 왜 .deb가 타르 추출을 원 하십니까? tar 에서 소스 코드 가져 와서 소스 와 처음부터 deb를 만드는 이유는 무엇 입니까?
토마스 워드

2
어도비 플래시 스타일의 다른 곳에서 타르볼을 얻을 수 있습니다.
jrg

@jrg, tarball이 아닌 .bin 설치 프로그램을 다운로드합니다. 어도비 패키징 스타일은 소스 (폐쇄 소스)를 제공하지 않습니다. 그러나 개념은 여전히 ​​동일합니다. 다른 곳에서 코드를 다운로드 한 다음 압축을 풉니 다 (여기서 nit = picky : P)
Thomas Ward

@LordofTime 같은 차이점. ; p
jrg

답변:


31

아래에서는 소스가 열려 있고 (예 : Python 스크립트) 아키텍처 (예 : amd64 또는 i386)에 바인딩되지 않으므로 "all"이라고 가정합니다. C 소스가있는 경우 Architecture: amd64 i386소스 control파일 에서 사용해야 합니다.


런치 패드 준비 패키지 작성

이것은 결국 일련의 개별 런치 패드 PPA 패키지가 될 것입니다.

내가 선호하는 것은 (그러나 달성하지 못할 수도 있습니다 ...) 포장을 최소로 유지하는 것입니다-템플릿에서 일련의 패키지를 만들고 최소값 (changelog 등 + tar 파일)을 조정하십시오.

런치 패드는 소스 패키지 만 허용하므로 rules올바른 위치에 파일을 설치하는 파일을 작성 하십시오. 편의상 debhelper를 사용하겠습니다 . 파일이있는 디렉토리는 다음과 같아야합니다.

debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...

debian/copyright파일은 패키지와 관련된 라이센스에 대해 사용자에게 알리는 유용 할 수 있습니다. postinst일부 파일 만 추출하면되기 때문에 스크립트 가 필요하다고 생각하지 않습니다 . compatdebhelper 호환성 수준을 포함해야합니다 (예 : "8"). ( 자세한 내용 은 debhelper 매뉴얼 페이지 를 참조하십시오)

changelog파일은 편집 할 수 있습니다 dch로부터 사용할 수있는 명령, devscripts패키지로 제공된다. rules(사용 debhelper)를 포함해야합니다 :

#!/usr/bin/make -f
%:
    dh $@
override_dh_install:
    dh_install mypluginfolder/ /usr/share/rhythmbox/plugins

를 사용하여 실행 가능하게 만드십시오 chmod 755 debian/rules. 를 사용하여 소스 패키지를 빌드 할 수 있습니다 debuild -S. 라는 디렉토리에 있어야 <package-name>-<version>합니다. override_동작 및 dh명령 에 대한 자세한 내용은 해당 매뉴얼 페이지를 참조하십시오 .

데비안 새로운 관리자 안내서 나이를 이해하는 매우 가치이고, 그것은 권장 독서입니다. 패키징 예제는 https://github.com/Bumblebee-Project/bumblebee-ppa 에서 찾을 수 있습니다 .


기존 파일 트리에서 패키지 작성

dpkg-deb -b기존 파일 트리에서 타르볼을 만드는 데 사용할 수 있습니다. 먼저, 패키지 이름을 딴 디렉토리를 만드는 것으로 시작하십시오. 이름을 myplugin정하고에 넣고 싶다고 가정하겠습니다 /usr/share/rhythmbox/plugins/mypluginfolder. 또한 DEBIAN패키지 정보를 저장할 디렉토리 (대문자!)를 작성 하십시오.

mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN

파일을 복사하십시오.

cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins

다음으로, 패키지를 설명하는 소위 제어 파일 이 필요 myplugin/DEBIAN/control합니다. 이러한 파일의 내용은 다음과 같습니다.

Package: myplugin
Version: 1.0-1
Maintainer: You <whatever@contact.address>
Architecture: all
Description: plugins for Rhythmbox
 Longer description here
 .
 As you can see, new paragraph are split by a single dot,
 and lines have to be indented by one space.

이제 패키지의 내용을 선택적으로 확인할 수 있습니다. 다음 명령은 파일 및 디렉토리 항목 내용을 나열합니다 myplugin.

find myplugin -ls

만족한다면, 현재 디렉토리에 패키지를 빌드하십시오 :

dpkg-deb -b myplugin .

<package>_<version>_<architecture>.deb이 예에서 와 같이 이름이 지정된 새 파일이 나타납니다 myplugin_1.0-1_all.deb. less프로그램을 사용 하여 파일을 들여다 볼 수 있습니다 . 예를 들면 다음과 같습니다 less myplugin_1.0-1_all.deb.


3
절대 천재 +1-나는 당신에게 인사합니다. 감사!
fossfreedom

이 큰 도움에 감사드립니다! 컨트롤 파일에 문제가 있었지만 결국에는 효과가 있었지만 어떻게하는지 묻지 않았습니다.)
Gerhard Burger
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.