PPAを作成するにはどうすればよいですか?


123

Ubuntuコミュニティと共有する独自のカスタムPPAを作成するにはどうすればよいですか?独自のカスタムパッケージセットを作成しようとしています。コミュニティで共有したいと思っています。



回答:


97

Personal Package Archive(PPA)を使用して、Ubuntuユーザーにソフトウェアと更新を直接配布できます。ソースパッケージを作成してアップロードすると、Launchpadがバイナリをビルドし、独自のaptリポジトリでホストします。

詳細な説明はこちらです。


5
FWIW行動規範に署名する前に、PPAを有効にすることができました。
スパルホーク14

2
これが最良の答えです。PPAの作成方法を教えられました。以下の応答(tottiによる)はPPAではありませんが、公開リポジトリです。(可能性として)同じことを達成しているにもかかわらず、2つは異なります。彼は答えの最初の行で、「この質問にはよく書かれた、受け入れられた答えがあります。OPは彼のパッケージを公開する簡単な方法を望んでいるので、簡単にハッキングします。」簡単なハックを好むからといって、それが最良の答えになるわけではありません。
lbaile200 14

わかりましたが、この回答のリンクのどれも、最初からそれを行う方法を本当に説明していません。より多くの材料にすでにここでは、開発者のために作られているすべてのリンク、
rubo77

1
@ rubo77-「作成方法」は厳密には広すぎて答えられません。それはすべてあなたがパッケージしようとしているものに依存します。実際、上記の回答の各ステップは、それぞれ詳細に回答できる個別のQにすることができます。
fossfreedomの

1
トッティの新しい答えはすでに素晴らしいです
rubo77 14

86

.debファイルを作成する方法

これは、特定のサンプルスクリプトから基本的な.debファイルを作成するためのチュートリアルです。このチュートリアルでは、最初に「プログラムからこんにちは」と表示するだけのサンプルプログラムをbashで作成します。次に、プログラムの制御ファイルを作成して、debianインストーラーを作成します。最後に、.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. debianパッケージの制御ファイルを作成します

    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. * .debファイルを置くPublic-Dropbox-Folder内にフォルダーを作成します。

    mkdir ~/Dropbox/Public/deb-packages  
    

    または、そのフォルダを別の場所に作成し、パブリックフォルダにシンボリックリンクを配置します。

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. そのフォルダーに移動して、実行時にdeb-packagesに必要なすべての情報を含む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ファイルと呼ばれるファイルが作成されます。このファイルは、aptがこのリポジトリにあるパッケージを知るために探します。


それでおしまい

次に、DropboxがFolderを同期し、からPublic-URLPackages.gzを取得するのを待ちます。次のようになります。

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

そのリンクの終わりを取り除き、さらにいくつかの単語を追加すると、sources.listに次の行を使用して入力できます。

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 14

これは自己ホスト型PPAについて説明していますが、Ubuntu debianパッケージ
rubo77 14

3
手順7.で.debファイルをビルドすると、ここで説明するようにLaunchpadにdebuild -us -uc -k'your GPG key here'アップロードできます(ソース:スクリプトまたはバイナリから.debパッケージを作成しますdput ppa:<lp-username>/<ppa-name> packet-source.changes
rubo77

@ rubo77、ありがとう、私の答えの最後にこの情報を追加することを歓迎します。
トッティ14

1
OK、ちょうど今、.debファイルを作成しないように、Launchpadに他のパラメーターが必要であることがわかりました(ちょうど-S):debuild -k'your GPG key here' -SLaunchpadはdebファイルを作成するため(拒否されない場合)-何`-us -uc`はそうでしたか?
rubo77 14

2

PPAを作成するには、Launchpad.netアカウントが必要です。Launchpadでユーザーをクリックして(左上の名前をクリックして)PPAを作成します。最初に行動規範に署名し、アカウントにGPGキーを登録する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.