작업중인 프로그램에 대한 PPA를 작성하는 방법


36

C, C ++ 또는 Python으로 작성된 작동하는 응용 프로그램이 있다고 가정 해 봅시다. 다른 사람들이 패키지에서 쉽게 설치할 수 있도록 런치 패드 PPA를 작성하려고합니다. 처음부터 끝까지이를 수행하기위한 단계별 지침을 제공하십시오. 또는 동일한 작업을 수행하는 링크를 제공하십시오.

  • 프로그래밍 언어가 중요합니까? (bash 스크립트 일 수 있습니까?)
  • 빌드에 추가해야합니까?
  • 빌드 자체는 어디에 설치해야합니까?
  • 종속성을 어떻게 정의합니까?
  • 의존성을 어떻게 사용합니까?
  • .deb는 어떻게 만듭니 까?
  • Launchpad에 업로드하기 전에 어떻게해야합니까?

1
FLOSS 프로젝트에서 PPA를 만들 것을 권장하기 때문에이 질문을하고 있습니다 (따라서 쉽게 설치할 수 있습니다).
david.libremone

답변:


32

그것은 매우 광범위한 질문입니다. 최대한 답변을 드리려고 노력하지만,단계별 지시 사항 은 아닙니다 . 패키지를 생성하는 단계별 알고리즘이 없기 때문입니다. 이를 수행하는 방법은 대부분 패키지 유형 (응용 프로그램, 라이브러리), 소스 구조 및 세부 사항에 따라 많은 요소에 따라 다릅니다.

다행히 http://packaging.ubuntu.com에 철저한 가이드가 있습니다 .

전체 프로세스를 이해하는 데 도움이되도록 노력하겠습니다. 따라서 조금 더 익숙해지면 패키징 안내서에는 추가 도움이 필요한 리소스가 포함되어 있습니다.


우선 패키지 (.deb 파일)를 만드는 것은 PPA를 만드는 것과 별개의 프로세스라는 것을 알아야합니다. PPA 작성은 런치 패드의 프로파일로 이동하여 "새 PPA 작성"링크를 클릭하면됩니다. 그게 다야. 만들어졌지만 작동하지만 비어 있습니다. 패키지를 업로드하려면 먼저 패키지를 작성해야합니다. 그러나 먼저 몇 가지 사소한 질문에 대답하겠습니다.

  • 프로그래밍 언어 전혀 중요 하지 않습니다 . C ++ 애플리케이션, Bash 스크립트, Brainfuck Hello World, 단일 README 파일 또는 멋진 사진 세트 일 수 있습니다. 패키지는 모든 파일을 포함 할 수 있습니다. 설치하는 동안 패키지는 파일 시스템의 루트 ( "/")에 추출됩니다. 이 방법으로 일부 파일을 이진 폴더에 넣거나 일부 배경 화면을 그놈 기본 세트에 추가하거나 사용자에게 Bash 스크립트를 제공 할 수 있습니다.
  • 당신은 DO 소스에 뭔가를 추가해야합니다. "debian"이라는 최상위 디렉토리 여야합니다. 패키지 세부 정보가 포함 된 일부 파일이 있습니다. 패키지의 유형 등을 정의하는 데 사용됩니다.
  • 종속성은이 파일 중 하나에 나열됩니다 (다른 세부 사항 중에서도). 어디서 구할 수 있습니까? 응용 프로그램에서 사용하는 다른 패키지 일뿐입니다. 응용 프로그램 개발자는 자신의 프로그램에 필요한 라이브러리와 리소스를 알고 있으므로 목록을 작성하는 데 많은 어려움을 겪지 않아야합니다.
    • 패키지 (pbuilder)를 빌드하는 데 사용되는 일부 도구는 컴파일 중에 앱에 필요한 것을 결정하여 종속성을 자동으로 채울 수 있습니다.
  • 그것은 또한 매우 사용을 권장 autotools를 . 추가해야 할 수도 있지만 거의 모든 소프트웨어가 이미 사용하고있을 것입니다. AutoTools는 automake, autoconf 및 autoscan과 같은 매우 유용한 프로그램입니다. 유명한 ./configure && make && make install로 프로그램을 컴파일하고 설치할 때 그런 다음 autotools는 소스를 자동으로 처리하고, 소스에 포함 된 다른 리소스를 설치 준비하고, 컴파일 결과를 적절한 위치에 추출하는 데 사용됩니다 (질문에 대한 답변 : 빌드는 여러 장소로 추출됩니다). 바이너리는 / usr / local / bin으로 이동하고, 문서는 / usr / local / share / docs로 이동합니다. 또한 패키지의 바이너리는 바이너리가 / usr / bin으로 다른 위치로 이동합니다. 이 복잡한 디렉토리 레이아웃으로 AutoTools를 사용하십시오-AutoTools를 사용하면 자동으로 관리되므로 유용합니다.)

.deb 패키지를 작성하는 것은 정말 복잡한 과정으로 보일 수 있지만 그렇게 어렵지는 않습니다. 패키지 작성에 대한 공식 우분투 가이드를 강력히 추천합니다 : http://packaging.ubuntu.com

엄청나지만, 빌드하려는 패키지에 따라 텍스트의 대부분을 건너 뛸 수 있습니다. 기본적으로 패키징 프로세스는 다음과 같은 부분으로 구성됩니다 (모두 안내서에 명확하게 설명되어 있음) .

  1. 패키지를 만드는 데 사용되는 도구를 초기화하십시오.
  2. 소스 받기
  3. ./debian 디렉토리를 작성하고 필요한 데이터로 채우십시오.
  4. debuild로 패키지 빌드 [패키지 에 대한 데이터와 처리 방법을 담당하는 * .dsc, * _source.build, * _source.changes를 포함한 파일 세트를 생성해야합니다. 소스 .tar.gz)]
  5. 테스트 여부 (이것은 위에서 언급 한 모든 파일을 자동으로 autotools를의 도움으로 소스를 구축함으로써, 뎁 패키지로 결합을 시도합니다 로컬로는 pbuilder을 실행하여 모든 작업 - 그들은 포장에 중요한 이유입니다 솔직히 [말하기 - 아닙니다-당신은 그들없이 또는 대안을 가지고 갈 수는 있지만, 가장 쉬운 방법이며, 다른 방법은 빌더에게 소스를 빌드하는 방법을 지시해야하기 때문에 고급 설정이 필요할 수 있습니다 (./debian/rules 파일 사용) )-하지만 초보자에게는 적합하지 않습니다.] )-.deb 패키지 만 가져 오려면 완료됩니다.

이제이 도움말 페이지에서 설명하는 PPA 에 업로드 해야합니다. https://help.launchpad.net/Packaging/PPA/Uploading

  1. dput을 사용하여 이러한 파일을 런치 패드에 업로드하십시오.
  2. 런치 패드가에는 pbuilder을 실행 자신의 컴퓨터 및 깨끗한 환경에서 패키지를 생성
  3. 마지막으로 패키지가 PPA에 나타납니다.

보시다시피 PPA 작성은 그렇게 간단하지 않습니다 . 그러나 두려워하지 마십시오 . 그렇게 어렵지는 않습니다. 또한 개발자가 PPA를 사용하도록 장려하지 않는 것이 좋습니다. 아마도 추가 작업을 수행해야 할 필요가 있기 때문에 아마도 귀하의 말을 듣지 않을 것이기 때문입니다. 우분투 개발자와 전체 커뮤니티를 지원하고 준비한 패키지를 제공하려고합니다. :)

나는 당신에게 원하는 행운을 당신이 내 대답은 도움 바랍니다, 패키지를 만드는 :)

당신의 친구 Rafał Cieślak


자체 인프라에서 호스팅되는 비 런치 패드 PPA를 어떻게 만들 수 있습니까? 적절한 디렉토리 구조를 가진 단순한 웹 서버입니까?
교수 Moriarty

brainf * ck 예제가 정말로 필요한가?
Camden

5
  • 패키지를 업로드하기 전에 패키지를 설정해야합니다 . .debUbuntu PackagingGuide를 참조하십시오 .

  • 소프트웨어 용 패키지를 빌드 할 수 있으면 런치 패드의 PPA 설명서를 참조하십시오 . PPA 작성에서 패키지 업로드까지 안내합니다.

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