如何创建自己的自定义PPA与Ubuntu社区共享?我正在尝试创建自己的自定义软件包集,我非常想与社区分享。
如何创建自己的自定义PPA与Ubuntu社区共享?我正在尝试创建自己的自定义软件包集,我非常想与社区分享。
Answers:
使用个人软件包存档(PPA),您可以直接向Ubuntu用户分发软件和更新。创建您的源程序包,将其上传,Launchpad将构建二进制文件,然后将其托管在您自己的apt存储库中。
这是详细的说明。
这是有关从给定的示例脚本创建基本.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
在文件夹内命名的文件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启动板
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
由于OP希望以一种简单的方式发布他的软件包,因此我给出了一个简单的技巧。
要求:具有公用文件夹的保管箱(或其他服务,例如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-packages的所有必需信息。创造:
gedit import.sh
把它放进去:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
使它可执行:
chmod x import.sh
将一些* .deb文件复制到文件夹中。可能是您自己的,也可能是其他存储库无法提供的。然后进入Folder并执行我们放置在其中的脚本:
cd ~/deb-packages/
./import.sh
这将创建所谓的Packages.gz文件,该文件会查找以了解哪些Packages位于此存储库中。
现在,等待Dropbox同步Folder并从中Packages.gz
获取Public-URL。它看起来应该像这样:
http://dl.getdropbox.../Packages.gz
摆脱该链接的结尾,在其中添加一些文字,您现在可以使用并填充sources.list的以下行:
deb http://dl.getdropbox.../deb-packages ./
就是这样,您正在运行自己的deb存储库。始终在本地同步,但任何人随时随地都可以使用。
注意: dpkg-scanpackages
可从dpkg-dev
参考中获得
releases/
见github.com/rubo77/mouse-speed/blob/master/release/...
debuild -us -uc -k'your GPG key here'
则可以dput ppa:<lp-username>/<ppa-name> packet-source.changes
按此处所述将其上载到Launchpad (来源:从脚本或二进制文件创建.deb包)
debuild -k'your GPG key here' -S
因为启动板将创建deb文件(如果未拒绝)-什么-us -uc是为了什么?