단일 Python 스크립트에 대한 deb 패키지를 작성하는 방법


78

deb 패키지로 배포하려는 단일 Python 스크립트가 있습니다. Unity 패널에 현지 날짜를 표시 하는 표시기 입니다. 스크립트 또는 바이너리에서 .deb 패키지 만들기를 수행 했지만 실패했기 때문에 deb 패키지를 만들 수 없습니다.

누군가 내가해야 할 일에 대한 단계별 지시를 줄 수 있습니까? 내가 아는 한이 스크립트는에 의존합니다 python-appindicator.

참고 :
데비안 / 우분투 패키지 지침에 대한 링크를 원하지 않습니다. 나는 그들의 대부분을 보았다. 나는 초보자에게 친숙하지 않습니다.


6
데비안과 우분투 패키징 명령어 초보자에게 친숙 하지 않지만 (내가 아는 바), deb를 생성하는 많은 GUI 응용 프로그램은 lintian과 같은 최종 패키지 검사기를 실행할 때 많은 오류를 발생시킵니다. 포장에 대해 진지한 경우 포장을 다듬고 지침을 따르는 것이 가장 좋은 방법입니다.)
Thomas Boxley

패키징에 대해서는 잘 모르지만 추가하려는 기능은 Unity에 내장되어 있습니다.
그것은 Willem

답변:


84

다음은 파이썬 스크립트의 소스 패키지가 어떻게 보이는지에 대한 기본 예입니다. 대부분의 패키징 자습서는 약간 복잡하지만 문제가 발생하면 실제로 도움이 될 수 있습니다. 즉, 먼저 데비안 패키지를 살펴보면서 데비안 패키지의 기본 사항을 배웠습니다. apt-get source예를 들어 비슷한 것을 배우십시오.

기본 소스 패키지 레이아웃은 다음과 같습니다.

my-script/
    -- myScript
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

dch --create올바른 형식의 debian/changelog항목 을 작성하려면 디렉토리에서 실행하십시오 .

데비안 / 저작권 은 다음과 같아야합니다.

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: myScript
Upstream-Contact: Name, <email@address>

Files: *
Copyright: 2011, Name, <email@address>
License: (GPL-2+ | LGPL-2 | GPL-3 | whatever)
 Full text of licence.
 .
 Unless there is a it can be found in /usr/share/common-licenses

데비안 / compat 은 다음과 같습니다 :7

데비안 / 규칙 :

#!/usr/bin/make -f

%:
    dh $@ --with python2

공백이 아니라 앞에 "tab"이 있어야 dh $@ --with python2합니다.

데비안 / 제어 :

Source: my-script
Section: python
Priority: optional
Maintainer: Name, <email@address>
Build-Depends: debhelper (>= 7),
               python (>= 2.6.6-3~)
Standards-Version: 3.9.2
X-Python-Version: >= 2.6


Package: my-script
Architecture: all
Section: python
Depends: python-appindicator, ${misc:Depends}, ${python:Depends}
Description: short description
 A long description goes here.
 .
 It can contain multiple paragraphs

데비안 / 설치 :

myScript usr/bin/

이 파일은 어떤 파일이 어떤 폴더에 설치 될지를 나타냅니다.

이제 빌드 debuild --no-tgz-check

기능적인 deb 패키지가 생성됩니다. Lintian은 orig.tar.gz의 부재에 관해 경고를하게 될 것입니다. 그러나 tarball 릴리즈를 만드는 적절한 업스트림 프로젝트를 만들 계획이 없다면 지금은 무시하고 싶을 것입니다.


12
패키지 러 및 백 포터로서 파이썬 스크립트를 상당히 자주 패키지합니다. 여기 에이 답변이 단일 파이썬 스크립트 용 패키지를 만드는 방법에 대한 가장 완벽한 설명이라고 안전하게 말할 수 있습니다.
토마스 워드

2
Python 3 용으로 업데이트 할 수 있습니까? debian/rulesdebian/control에서 변경해야한다고 생각 하지만 확실하지 않습니다.
Aditya

1
@Aditya, Python3에 대한 새로운 질문이 있습니까? 대답은 크게 다르지 않지만이 대답은 Python 스크립트를 패키지하는 방법에 대한 가장 단순하고 최소한의 예입니다. 여러 구현으로 혼란스럽게하고 싶습니다.
andrewsomething

@andrewsomething가 : 그럼 당신이 관심을 가질만한 이 하나 ... 나는 그것을 내 손을 시도 할 것이다, 그 코멘트 ... 편집의 비트가 하나 필요합니다를 떠나 저를 묻는 메시지가
아 디트

1
도서관은 어떻습니까? 파이썬 스크립트가 라이브러리를 가져 오면 작동하지 않습니다.
D.Snap

18
  1. 집에 어떤 이름 으로든 폴더를 만드십시오. 예 : mypyscript
  2. 폴더를 열고 이름이 'DEBIAN'및 'usr'인 두 개의 폴더를 작성하십시오.
  3. DEBIAN 폴더를여십시오. 이름이 'control'인 텍스트 파일 (확장자 없음)을 작성하십시오.
  4. 'control'을 열고 다음과 같이 입력하고 DEBIAN에 저장하십시오.

    Package: mypyscript
    Version: 0.01
    Architecture: all
    Maintainer: your name<your mail id>
    Installed-Size: 2
    Depends: python-appindicator
    Section: extras
    Priority: optional
    Homepage: your homepage
    Description: describe
  5. mypyscript라는 폴더로 돌아갑니다. 'usr'을여십시오. 'bin'이라는 폴더를 만듭니다. 'bin'을 열고 파이썬 파일을 거기에 붙여 넣으십시오.

  6. 메뉴 항목을 만들 수도 있습니다. 그러나 이것이 필수적인 것은 아닙니다.
  7. 'mypyscript'폴더가있는 홈 폴더로 돌아가거나 파일 브라우저를 닫으십시오.
  8. 터미널을 엽니 다. 터미널이 홈 폴더에 있는지 확인하십시오. 그런 다음 dpkg -b mypyscriptEnter 키를 누릅니다. 몇 초 안에 deb 패키지가 준비되었습니다

참고 : 'control'파일을 올바르게 채우십시오. 아포스트로피를 사용하지 마십시오. 이름을 나타내는 것입니다.


1
잘 작동합니다! 허용되는 답변은 복잡합니다.
SuB

'myscript'의 권한을 755로 변경하고 소유자를 루트로 변경하는 것을 잊지 마십시오.
SuB

메뉴 항목을 작성하는 방법
To Do

9

패키지 작성을위한 GUI 도구 인 Debreate를 사용해 볼 수 있습니다.


Debcreate는 멋지다. 나는 지금까지 그것을 좋아했고, 파이썬 소스 코드에서 빌드하기 위해 오늘 그것을 사용하기 시작했다.
answerSeeker


2

pkgme을 사용해보십시오 . 그냥 작동해야합니다.

다음을 통해 설치하십시오.

sudo apt install pkgme

다음을 통해 실행 :

pkgme
debuild

(새로운 개발자가 실행해야 할 수도 있습니다. 이를 올바르게하려면 개발 키 서명gpg --gen-key참조하십시오 )



0

Debreate를 사용해보십시오.

이것은 위에 나열된 웹 사이트에서 PPA를 다운로드하지 않으려는 경우 PPA를 사용할 수있는 패키지 및 항목을 작성하기위한 Gui 인터페이스입니다.

sudo add-apt-repository ppa:antumdeluge/<ppaname>; sudo apt update; sudo apt install debreate

나는 한 줄의 코드로 실행되도록 ppa를 집약했습니다! 멋진 질문에 감사하고 터미널에 해당 코드 줄을 계속 붙여야합니다!

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