我如何创建PPA?

如何创建自己的自定义PPA以与Ubuntu社区共享? 我正在尝试创建自己的自定义包集,我真的想与社区分享。

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

  • 创建启动板帐户 。
  • 激活PPA 。
  • 如果您已签署Ubuntu行为准则,则只能激活PPA。
  • 什么是PPA以及如何使用它们?
  • 上传源包 。

这是一个详细的解释 。

如何创建.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包创建控制文件

    在文件夹DEBIAN一个名为control文件

     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文件生成.deb文件

     debuild -k'your GPG key here' -S 

    然后你可以上传到Ubuntu Launchpad

     dput ppa:/ 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. 进入该文件夹并创建一个脚本,该脚本在执行时会创建Packages.gz,其中包含有关deb包的所有必需信息。 创建:

     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同步文件夹并Packages.gz获取公共URL 。 它应该看起来像这样:

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

摆脱该链接的末尾,再添加一些单词,您现在可以使用并填充sources.list的以下行:

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

那就是你有自己的deb存储库运行。 始终在本地同步,但随时随地都可供任何人使用。

注意: dpkg-dev dpkg-scanpackages中提供了dpkg-scanpackages
参考

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