PPA는 어떻게 만듭니 까?


답변:


97

PPA (Personal Package Archive )를 사용하면 소프트웨어 및 업데이트를 Ubuntu 사용자에게 직접 배포 할 수 있습니다. 소스 패키지를 작성하고 업로드하면 Launchpad가 바이너리를 빌드 한 다음 자신의 적절한 저장소에 호스트합니다.

자세한 설명 은 다음과 같습니다 .


5
FWIW 행동 강령에 서명하기 전에 PPA를 활성화 할 수있었습니다.
Sparhawk

2
이것이 가장 좋은 대답입니다. PPA를 만드는 방법을 방금 들었습니다. 아래의 답변 (totti 별)은 PPA가 아니지만 공용 저장소입니다. (잠재적으로) 동일한 일을 달성하더라도 두 사람은 다릅니다. 그는 자신의 답변의 첫 번째 줄에서 "이 질문은 잘 쓰여지고 받아 들여진 대답을 가지고 있습니다. OP는 패키지를 게시하는 간단한 방법을 원하기 때문에 쉽게 해킹하고 있습니다." 쉬운 해킹을 선호한다고해서 최고의 해답이되는 것은 아닙니다.
lbaile200

OK, 그러나이 답변의 링크 중 어느 것도 처음부터 그것을하는 방법을 실제로 설명하지 않습니다. 더 많은 재료로 이미 여기에 개발자를 위해 만들어진 모든 링크,
rubo77

1
@ rubo77- "만드는 방법"은 대답하기에 너무 광범위합니다. 그것은 모두 당신이 포장하려고하는 것에 달려 있습니다. 실제로 위의 답변의 각 단계는 각각 좋은 답변이있는 개별 Q 일 수 있습니다.
fossfreedom

1
Totti의 새로운 답변은 이미 훌륭합니다
rubo77

86

.deb 파일을 만드는 방법

주어진 샘플 스크립트에서 기본 .deb 파일을 만드는 방법에 대한 자습서입니다. 이 튜토리얼에서는 먼저 'HELLO FROM PROGRAM'을 보여주는 bash 로 샘플 프로그램 을 만듭니다 . 그런 다음 데비안 설치 프로그램을 만들기 위해 프로그램에 대한 제어 파일 을 만듭니다 . 마지막으로 .deb파일 로 패키지됩니다 .

단계 :

  1. bash에서 샘플 프로그램을 작성하십시오.

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    다음 코드를 붙여 넣습니다

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. 프로그램을 실행 가능하게 만들기

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. 데비안 패키지를위한 제어 파일 만들기

    control폴더 안에 이름이 지정된 파일 만들기DEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    다음 세부 사항을 붙여 넣기

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    원하는 경우 내용을 편집 할 수 있습니다. 이 파일의 형식에 대한 자세한 내용은 여기여기를 참조하십시오 .

  4. postinst패키지 설치 직후에 실행되는 스크립트 작성

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    그런 다음 붙여 넣기

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    그리고 그것을 실행 가능하게 만드십시오

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. prerm패키지를 제거하기 전에 실행되는 스크립트 작성

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    그리고 그것을 실행 가능하게 만드십시오

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. 패키지 구조를 만들고 프로그램, 데이터 등을 복사
    하십시오. 설치된 프로그램 및 해당 데이터의 구조를 작성하십시오. 이 예에서는 파일을에 배치합니다 /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. .deb 파일을 빌드 하십시오.

    dpkg-deb --build "$HOME"/create_deb .
    

    .의지 자동 이름 .deb버전, 아치 등 또는 사용자 정의 이름을 가진 파일을

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    또는 .deb 파일을

    debuild -k'your GPG key here' -S
    

    그런 다음 Ubuntu Launchpad에 업로드 할 수 있습니다.

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    여기에 설명 된 것처럼 (출처 : 스크립트 또는 바이너리에서 .deb 패키지 만들기 )

  8. 새로 작성된 .deb패키지를 설치하십시오 . 당신은 그것을 열 수 software-center있지만 설치를 허용하지 않을 수 있습니다. 따라서 gdebi패키지 관리자 를 사용하는 것이 좋습니다 .

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    이제 설치할 수 있습니다. 설치하는 동안 gtk 대화가 나타납니다

    프로그램 설치 : zenity_hello.sh ......

  9. 설치 후 터미널을 열고을 입력하십시오 zenity_hello. 프로그램이 올바르게 설치되고 모든 것이 정상이면 gtk 대화가 나타납니다.

    프로그램에서 안녕하세요

  10. 패키지 제거

    sudo apt-get remove zenity_hello
    

2 분 안에 리포지토리 게시

OP는 패키지를 게시하는 간단한 방법을 원하므로 쉽게 해킹 할 수 있습니다.

요구 사항 : 공용 폴더가있는 dropbox (또는 다른 서비스, 예를 들어 github ) 계정.

  1. Public-Dropbox-Folder 내에 * .deb 파일을 넣을 폴더를 만듭니다.

    mkdir ~/Dropbox/Public/deb-packages  
    

    또는 다른 곳에서 해당 폴더를 만들고 공용 폴더에 심볼릭 링크를 넣으십시오.

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. 해당 폴더로 이동하여 실행될 때 deb 패키지에 필요한 모든 정보가 들어있는 Packages.gz를 작성하는 스크립트를 작성하십시오. 창조하다:

    gedit import.sh  
    

    이것을 넣으십시오 :

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    그것을 실행 가능하게 만드십시오 :

    chmod  x import.sh
    
  3. * .deb 파일을 폴더에 복사하십시오. 자신의 것이거나 다른 저장소를 통해 사용할 수없는 것일 수 있습니다. 그런 다음 폴더로 이동하여 거기에 넣은 스크립트를 실행하십시오.

    cd ~/deb-packages/ 
    ./import.sh
    

    그러면 이 리포지토리에 어떤 패키지가 있는지 알기 위해 소위 Packages.gz 파일을 만들어야 합니다.


그게 다야

이제 Dropbox가 폴더를 동기화하고에서 공개 URL을 가져 오기Packages.gz 를 기다립니다 . 다음과 같이 보일 것입니다 :

http://dl.getdropbox.../Packages.gz

해당 링크의 끝을 제거하고 더 많은 단어를 넣으면 소스에 다음 행을 사용하고 채울 수 있습니다.

deb http://dl.getdropbox.../deb-packages ./

그것은 당신 자신의 deb 저장소를 실행하는 것입니다. 항상 로컬로 동기화되지만 언제 어디서나 누구나 사용할 수 있습니다.

참고 : dpkg-scanpackages 에서 사용할 수 있습니다 dpkg-dev
참조


3
+1 좋아요! 이것은 효과가 있었다 : 나는 Github을 사용했고 폴더의 raw 디렉토리는 github.com/rubo77/mouse-speed/blob/master/release/를releases/ 참조하십시오 .
rubo77

이것은 자체 호스팅 PPA를 설명하지만 어떻게 우분투 데비안 패키지를 만들
있습니까

3
7 단계에서 .deb 파일을 빌드하면 여기에 설명 된대로 Launchpad에 debuild -us -uc -k'your GPG key here'업로드 할 수 있습니다 (소스 : 스크립트 또는 바이너리에서 .deb 패키지 만들기 )dput ppa:<lp-username>/<ppa-name> packet-source.changes
rubo77

@ rubo77, 감사합니다. 답변이 끝날 때이 정보를 추가 할 수 있습니다.
totti

1
OK, 난 그냥 않았다, 나는 또한 런치 패드는 지금 (단지 -S) 뎁 파일을 만들 수 없습니다하는 다른 매개 변수를 필요, 발견 : debuild -k'your GPG key here' -S런치 패드가 (이 거부되지 않은 경우) DEB 파일을 생성하기 때문에 - 어떤 `-us -uc`가 있었을까요?
rubo77

2

PPA를 만들려면 Launchpad.net 계정이 필요합니다. 런치 패드에서 사용자를 클릭하고 (왼쪽 상단의 이름을 클릭) PPA를 작성하십시오. 먼저 행동 강령에 서명하고 계정에 GPG 키를 등록해야 할 수도 있습니다.

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