hhl*_*hlp 116
使用个人软件包存档 ( PPA ),您可以直接向 Ubuntu 用户分发软件和更新。创建您的源包,上传它,Launchpad 将构建二进制文件,然后将它们托管在您自己的 apt 存储库中。
这里有一个详细的解释。
tot*_*tti 100
这是一个关于从给定的示例脚本创建基本 .deb 文件的教程。在本教程中,我们首先在 bash 中创建一个示例程序,它只显示“HELLO FROM PROGRAM”。然后我们为程序创建一个控制文件以制作 debian 安装程序。最后将它们打包成一个.deb
文件。
在 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)使程序可执行
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
Run Code Online (Sandbox Code Playgroud)为 debian 包创建控制文件
制作一个名为control
inside 文件夹的文件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)
创建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)创建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)制作包结构并复制程序、数据等。
创建已安装程序及其数据的结构。在本例中,我们将文件放在/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)构建.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 包)
安装新创建的.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 ......
安装后打开终端并输入zenity_hello
. 如果程序正确安装并且一切正常,您应该会看到一个gtk 对话框
程序中的你好
移除包裹
sudo apt-get remove zenity_hello
Run Code Online (Sandbox Code Playgroud)由于 OP 想要一种简单的方法来发布他的软件包,因此我提供了一个简单的方法。
要求:具有公共文件夹的dropbox(或任何其他服务,例如github)帐户。
在您的 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)进入该文件夹并创建一个脚本,该脚本在执行时会创建 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)将一些 *.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-scanpackages
可dpkg-dev
参考