如何创建 PPA?

Jeb*_*d17 140 ppa

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

hhl*_*hlp 116

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

这里有一个详细的解释

  • FWIW 在签署行为准则之前,我能够激活我的 PPA。 (7认同)
  • 这是最好的答案。您刚刚被告知如何创建 PPA。下面的回复(由 totti 提供)不是 PPA,而是一个公共存储库。尽管(可能)完成相同的事情,但两者是不同的。他甚至在他的回答的第一行中说:“这个问题有一个写得很好的、被接受的答案。由于 OP 想要一种简单的方式来发布他的包,我给出了一个简单的技巧。” 因为您更喜欢简单的 hack 并不能使它成为最佳答案。 (2认同)

tot*_*tti 100

如何创建 .deb 文件

这是一个关于从给定的示例脚本创建基本 .deb 文件的教程。在本教程中,我们首先在 bash 中创建一个示例程序,它只显示“HELLO FROM PROGRAM”。然后我们为程序创建一个控制文件以制作 debian 安装程序。最后将它们打包成一个.deb文件。

脚步:

  1. 在 bash 中创建一个示例程序

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
    Run Code Online (Sandbox Code Playgroud)

    将以下代码粘贴到其中

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使程序可执行

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为 debian 包创建控制文件

    制作一个名为controlinside 文件夹的文件DEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    
    Run Code Online (Sandbox Code Playgroud)

    并粘贴以下详细信息

    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.
    
    Run Code Online (Sandbox Code Playgroud)

    您可以根据需要编辑内容。在此处此处阅读有关此文件格式的更多信息。

  4. 创建postinst脚本,安装包后立即执行

    gedit "$HOME"/create_deb/DEBIAN/postinst
    
    Run Code Online (Sandbox Code Playgroud)

    然后粘贴

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    
    Run Code Online (Sandbox Code Playgroud)

    并使其可执行

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建prerm脚本,在删除包之前执行

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    
    Run Code Online (Sandbox Code Playgroud)

    并使其可执行

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
    Run Code Online (Sandbox Code Playgroud)
  6. 制作包结构并复制程序、数据等。
    创建已安装程序及其数据的结构。在本例中,我们将文件放在/bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
    Run Code Online (Sandbox Code Playgroud)
  7. 构建.deb文件。

    dpkg-deb --build "$HOME"/create_deb .
    
    Run Code Online (Sandbox Code Playgroud)

    .会自动名称.deb,版本,牌坊等。或者您的自定义名称的文件

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    
    Run Code Online (Sandbox Code Playgroud)

    或者,如果您使用以下命令构建 .deb 文件

    debuild -k'your GPG key here' -S
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可以将它上传到 Ubuntu Launchpad

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    
    Run Code Online (Sandbox Code Playgroud)

    就像这里描述的一样(来源:从脚本或二进制文件创建一个 .deb 包

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

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    
    Run Code Online (Sandbox Code Playgroud)

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

    安装程序:zenity_hello.sh ......

  9. 安装后打开终端并输入zenity_hello. 如果程序正确安装并且一切正常,您应该会看到一个gtk 对话框

    程序中的你好

  10. 移除包裹

    sudo apt-get remove zenity_hello
    
    Run Code Online (Sandbox Code Playgroud)

在 2 分钟内发布您的存储库

由于 OP 想要一种简单的方法来发布他的软件包,因此我提供了一个简单的方法。

要求:具有公共文件夹的dropbox(或任何其他服务,例如github)帐户。

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

    mkdir ~/Dropbox/Public/deb-packages  
    
    Run Code Online (Sandbox Code Playgroud)

    或在其他地方创建该文件夹并在您的公共文件夹中放置一个符号链接:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
    Run Code Online (Sandbox Code Playgroud)
  2. 进入该文件夹并创建一个脚本,该脚本在执行时会创建 Packages.gz,其中包含有关您的 deb 包的所有所需信息。创建:

    gedit import.sh  
    
    Run Code Online (Sandbox Code Playgroud)

    把这个放进去:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    
    Run Code Online (Sandbox Code Playgroud)

    使其可执行:

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

    cd ~/deb-packages/ 
    ./import.sh
    
    Run Code Online (Sandbox Code Playgroud)

    这应该创建所谓的Packages.gz文件,apt 会查找该文件以了解该存储库中的哪些包。


就是这样

现在,等待 Dropbox 同步文件夹并Packages.gz. 它应该是这样的:

http://dl.getdropbox.../Packages.gz
Run Code Online (Sandbox Code Playgroud)

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

deb http://dl.getdropbox.../deb-packages ./
Run Code Online (Sandbox Code Playgroud)

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

注意: dpkg-scanpackagesdpkg-dev
参考

  • 如果您在第 7 步中使用 `debuild -us -uc -k'your GPG key here'` 构建 .deb 文件,那么您可以使用 `dput ppa:&lt;lp-username&gt;/&lt;ppa-name&gt; packet- 上传它source.changes` 到 Launchpad,如 [此处描述](https://help.launchpad.net/Packaging/PPA/Uploading)(来源:[从脚本或二进制文件创建 .deb 包](http://askubuntu.com /a/27731)) (4认同)
  • +1 太好了!这有效:我使用了 Github 和文件夹 `releases/` 的原始目录,请参阅 https://github.com/rubo77/mouse-speed/blob/master/release/mouse-speed.list (3认同)