问题描述
我如何创建自己的定制PPA以与Ubuntu社区共享?我正在尝试创建自己的自定义软件包集,我真的很想与社区分享它。
最佳解决方案
使用个人包档案(PPA),您可以直接向Ubuntu用户分发软件和更新。创建你的源代码包,上传它,Launchpad将构建二进制文件,然后将它们存放在你自己的apt库中。
-
如果您有signed the Ubuntu code of conduct,您只能激活PPA。
这是一个detailed explanation。
次佳解决方案
如何创建.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软件包创建控制文件
在文件夹
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.
-
创建
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
软件包。您可以用software-center
打开它,但它可能不允许您安装。所以我建议使用gdebi
软件包管理器。sudo apt-get install gdebi gdebi "$HOME"/create_deb/hellodeb.deb
现在你可以安装它。在安装过程中,您应该看到一个gtk对话框
安装程序:zenity_hello.sh ……
-
安装打开终端并键入
zenity_hello
后。如果程序正确安装,一切正常,你应该看到一个gtk对话HELLO FROM PROGRAM -
删除包
sudo apt-get remove zenity_hello
在2分钟内发布您的存储库
由于OP想要一个简单的方式来发布他的软件包,我给了一个简单的黑客攻击。
要求:dropbox(或任何其他服务,例如github)帐户与公用文件夹。
-
在你放置* .deb文件的Public-Dropbox-Folder中创建一个文件夹:
mkdir ~/Dropbox/Public/deb-packages
或者在其他地方创建该文件夹,然后在公用文件夹中添加一个符号链接:
mkdir ~/deb-packages cd ~/Dropbox/Public ln -s ~/deb-packages/ deb-packages
-
进入该文件夹并创建一个脚本,该脚本在执行时会创建Packages.gz,其中包含有关deb-packages的所有必需信息。创建:
gedit import.sh
把它放在里面:
#!/bin/bash dpkg-scanpackages . /dev/null |gzip > Packages.gz
使其可执行:
chmod x import.sh
-
将一些* .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密钥注册到您的帐户。
参考资料