当前位置: 首页>>技术教程>>正文


我如何创建PPA?

,

问题描述

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

最佳解决方案

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

这是一个detailed explanation

次佳解决方案

如何创建.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.
    

    如果你喜欢,你可以编辑内容。详细了解此文件herehere的格式。

  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
    

    如描述here(来源:create a .deb Package from scripts or binaries)

  8. 安装新创建的.deb软件包。您可以用software-center打开它,但它可能不允许您安装。所以我建议使用gdebi软件包管理器。

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

    现在你可以安装它。在安装过程中,您应该看到一个gtk对话框

    安装程序:zenity_hello.sh ……

  9. 安装打开终端并键入zenity_hello后。如果程序正确安装,一切正常,你应该看到一个gtk对话HELLO FROM PROGRAM

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

    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抓取Public-URL。它应该看起来像这样:

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

摆脱那个链接的结束,给它添加更多的词语,你现在可以使用并填充sources.list的以下行:

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

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

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

第三种解决方案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/513.html,未经允许,请勿转载。