如何创建PPA?


Answers:


97

使用个人软件包存档(PPA),您可以直接向Ubuntu用户分发软件和更新。创建您的源程序包,将其上传,Launchpad将构建二进制文件,然后将其托管在您自己的apt存储库中。

这是详细的说明


5
FWIW在签署行为准则之前,我可以激活我的PPA。
Sparhawk

2
这是最好的答案。您刚刚被告知如何创建PPA。下面的响应(由totti提供)不是PPA,而是公共存储库。尽管(可能)完成同一件事,但两者是不同的。他甚至在答案的第一行中说:“这个问题的答案写得很好,也被接受。OP希望通过一种简单的方式发布他的软件包,因此我很容易就可以破解。” 因为您更喜欢简单的技巧,所以它并不是最佳的答案。
lbaile200

可以,但是此答案中的任何链接都没有真正描述如何从头开始。这里的所有链接都是针对开发人员的,它们已经包含在材料中了
rubo77

1
@ rubo77-“如何创建”严格来说太宽泛,无法回答。这完全取决于您要打包的内容。实际上,以上答案中的每个步骤都可以是单独的Q,每个步骤都有一个很好的详细答案。
fossfreedom

1
托蒂的新答案已经很不错了
rubo77

86

如何创建一个.deb文件

这是有关从给定的示例脚本创建基本.deb文件的教程。在本教程中,我们首先在bash中创建一个示例程序,仅显示“ HELLO FROM PROGRAM”。然后我们为该程序创建一个控制文件,以制作一个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启动板

    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希望以一种简单的方式发布他的软件包,因此我给出了一个简单的技巧。

要求:具有公用文件夹的保管箱(或其他服务,例如github)。

  1. 在您的Public-Dropbox-Folder文件夹中创建一个文件夹,您可以在其中放置* .deb文件:

    mkdir ~/Dropbox/Public/deb-packages  
    

    或在其他位置创建该文件夹,然后在您的“公共”文件夹中放置一个符号链接:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. 进入该文件夹并创建一个脚本,该脚本在执行时将创建Packages.gz,其中包含有关deb-packages的所有必需信息。创造:

    gedit import.sh  
    

    把它放进去:

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

    使它可执行:

    chmod  x import.sh
    
  3. 将一些* .deb文件复制到文件夹中。可能是您自己的,也可能是其他存储库无法提供的。然后进入Folder并执行我们放置在其中的脚本:

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

    这将创建所谓的Packages.gz文件,该文件会查找以了解哪些Packages位于此存储库中。


而已

现在,等待Dropbox同步Folder并从中Packages.gz获取Public-URL。它看起来应该像这样:

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

摆脱该链接的结尾,在其中添加一些文字,您现在可以使用并填充sources.list的以下行:

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

就是这样,您正在运行自己的deb存储库。始终在本地同步,但任何人随时随地都可以使用。

注意: dpkg-scanpackages可从dpkg-dev
参考中获得


3
+1好极了!这工作:我使用Github上,有一个文件夹的原始目录releases/github.com/rubo77/mouse-speed/blob/master/release/...
rubo77

这描述了一个自托管的PPA,但是我如何构建Ubuntu debian软件包
rubo77

3
如果您在第7步中生成.deb文件,debuild -us -uc -k'your GPG key here'则可以dput ppa:<lp-username>/<ppa-name> packet-source.changes此处所述将其上载到Launchpad (来源:从脚本或二进制文件创建.deb包
rubo77

@ rubo77,谢谢,我欢迎您在回答的结尾添加此信息。
totti

1
好的,我刚刚做了,我也发现,您需要启动板其他参数才能立即不创建.deb文件(只是-S):debuild -k'your GPG key here' -S因为启动板将创建deb文件(如果未拒绝)-什么-us -uc是为了什么?
rubo77 2014年

2

您将需要一个Launchpad.net帐户来创建PPA。只需在Launchpad上单击您的用户(单击左上角的名称)并创建PPA。您可能必须先签署《行为准则》,并在帐户中注册一个GPG密钥。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.