如何创建自己的自定义 PPA 以与 Ubuntu 社区共享?我正在尝试创建自己的自定义软件包集,并非常希望与社区共享。
答案1
使用个人软件包存档(电力供应协议),您可以直接向 Ubuntu 用户分发软件和更新。创建您的源包,上传它,Launchpad 将构建二进制文件,然后将它们托管在您自己的 apt 存储库中。
- 创建启动板账户。
- 激活 PPA。
- 你只能在以下情况下激活 PPA:签署了 Ubuntu 行为准则。
- 什么是 PPA 以及如何使用它们?
- 上传源包。
这里有一个详细说明。
答案2
如何创建 .deb 文件
这是关于从给定的示例脚本创建基本 .deb 文件的教程。在本教程中,我们首先创建一个示例程序在 bash 中,它只显示“HELLO FROM PROGRAM”。然后我们创建一个控制文件为程序制作 Debian 安装程序。最后将它们打包成一个.deb
文件。
脚步:
在 bash 中创建示例程序
mkdir "$HOME/create_deb/pgmdir" gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
粘贴以下代码
#!/bin/bash echo 'HELLO FROM PROGRAM' | zenity --text-info
使程序可执行
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
为 debian 软件包创建控制文件
control
创建一个名为inside 文件夹的文件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.
创建
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"
创建
prerm
在删除包之前执行的脚本#!/bin/sh set -e echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
并使其可执行
chmod +x "$HOME/create_deb/DEBIAN/prerm"
制作包结构并复制程序、数据等。
创建已安装程序及其数据的结构。在此示例中,我们将文件放在/bin
。mkdir -p "$HOME"/create_deb/bin cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
构建.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 包)
安装新创建的
.deb
包。你可以用它打开它,software-center
但它可能不允许您安装。所以我建议使用gdebi
包管理器。sudo apt-get install gdebi gdebi "$HOME"/create_deb/hellodeb.deb
现在您可以安装它了。在安装过程中,您应该会看到gtk 对话
安装程序:zenity_hello.sh......
安装后,打开终端并输入
zenity_hello
。如果程序正确安装且一切正常,您应该会看到gtk 对话来自程序的问候
删除包
sudo apt-get remove zenity_hello
2 分钟内发布您的存储库
由于 OP 想要一种简单的方法来发布他的包裹,所以我给出了一个简单的破解方法。
要求:dropbox(或任何其他服务,例如github) 帐户和一个公用文件夹。
在您的 Public-Dropbox-Folder 中创建一个文件夹,将 *.deb 文件放入其中:
mkdir ~/Dropbox/Public/deb-packages
或者在其他位置创建该文件夹并将符号链接放在公共文件夹中:
mkdir ~/deb-packages cd ~/Dropbox/Public ln -s ~/deb-packages/ deb-packages
进入该文件夹并创建一个脚本,该脚本在执行时会创建 Packages.gz,其中包含有关您的 deb 包的所有必要信息。创建:
gedit import.sh
把这个放进去:
#!/bin/bash dpkg-scanpackages . /dev/null |gzip > Packages.gz
使其可执行:
chmod x import.sh
将一些 *.deb 文件复制到文件夹中。可以是您自己的,也可以是其他存储库中没有的。然后进入文件夹并执行我们放在那里的脚本:
cd ~/deb-packages/ ./import.sh
这应该会创造所谓的软件包.gz文件,apt 会查找该文件以了解哪些软件包位于该存储库中。
就是这样
现在,等待 Dropbox 同步文件夹并抓取公共 URL 来自Packages.gz
。它看起来应该像这样:
http://dl.getdropbox.../Packages.gz
删除该链接的末尾,添加一些文字,然后现在可以使用并填充 sources.list 中的以下行:
deb http://dl.getdropbox.../deb-packages ./
就这样,您就拥有了自己的 deb 存储库。始终在本地同步,但任何人、任何时间、任何地点都可以访问。
笔记: dpkg-scanpackages
可从dpkg-dev
参考资料中获取
答案3
您需要一个 Launchpad.net 帐户来创建 PPA。只需在 Launchpad 上单击您的用户(单击左上角的您的姓名)并创建 PPA。您可能必须先签署行为准则并在您的帐户中注册 GPG 密钥。
答案4
PPA 只是存储库。URLppa://
只是简单的 URL,脚本使用 Launchpad 并遵守其要求apt-add-repository
将其转换为deb
文件中的一行/etc/apt/sources.list.d/
。(我读过源代码。)
TL:DR:见底部。
这只是为了获得权力和控制我们这些所谓“愚蠢”、“无助”的用户,基于一种以“简单”为卖点的有害文化,最终源于苹果对待用户的方式,因为史蒂夫·乔布斯是一个病态的控制狂。(来源:直接在他手下工作的人写的书。)
但这是你的电脑,所以他们在这里没有权力。:)
如果你看一下这些deb
行,你会发现它们包含真实的存储库 URL。例如
deb [arch=amd64 签名=/etc/apt/keyrings/maarten-fonville-android-studio-jammy.gpg]https://ppa.launchpadcontent.net/maarten-fonville/android-studio/ubuntu果酱主
如果你打开该 URL,你会看到一个特定的目录结构。这就是“魔法”。
当然,最简单的方法是
在您选择的目录中创建本地存储库(家庭服务器、本地 PC、您的主页等),然后
如果是本地的,请运行一个非常简单的 httpd 服务器(“web 服务器”)来为目标受众(例如您、您的家人、朋友)提供该目录。
然后任何想要使用你的存储库的人都可以将你的存储库的密钥(作为文件)放入他的存储库中
/etc/apt/keyrings/
,然后向他的文件中添加一个文本文件
/etc/apt/sources.list.d
,其中包含deb
与上述相同的行,但当然包含您的密钥和您的 url,以及正确的架构和版本代码名称(例如 jammy)。
从长远来看,可能更容易的是一个非常简单的(单行?)脚本,它接受任何正常的存储库 URL,并自动创建这些文件,模仿 apt-add-repository,而无需通过 Launchpad 看门人。
这个答案充当了(之前缺失的)链接,“ppas”只是具有一点“安全性”的存储库(主要来自您,而不是像人们想象的那样为您),所以......
TL;DR:正确的问题是:如何创建(和添加)存储库?
Debian 维护着有关如何执行此操作的完整指南:
https://wiki.debian.org/DebianRepository/#Set_up_and_maintain_a_repository
例如使用reprepro
。
所以你不需要启动板帐户,不需要服从任何主人,也不需要签署行为准则审查、仇恨和反向歧视。
当然,如果你想与那些更喜欢服从和遵循 Canonical/Ubuntu/Launchpad 的实体分享它,并且拒绝信任任何其他东西,因此除非他们的主人同意它对他们是安全的,否则他们不会使用任何东西,那么这相当于与他们的主人打交道。他们目前要求完全服从。(就像签署 CoC 一样。)……我不会那么卑鄙,所以我不能告诉你怎么做。