为现有的二进制文件制作deb包[转]

为现有的二进制文件制作deb包[转]

如何制作Deb包和相应的软件仓库,其实这个很简单。这里推荐使用dpkg来进行deb包的创建、编辑和制作。

1. deb包的文件结构
deb 软件包里面的结构:它具有DEBIAN和软件具体安装目录(如etc, usr, opt, tmp等)。在DEBIAN目录中起码具有control文件,其次还可能具有postinst(postinstallation)、 postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。
1.1 control文件
control这个文件主要描述软件包的名称(Package),版本(Version)以及描述(Description)等,是deb包必须具备的描述性文件,以便于软件的安装管理和索引。同时为了能将软件包进行充分的管理,可能还具有以下字段:

Section: 这个字段申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, `x11′ 等;
Priority: 这个字段申明软件对于系统的重要程度,如`required’, `standard’, `optional’, `extra’ 等;
Essential: 这个字段申明是否是系统最基本的软件包(选项为yes/no),如果是的话,这就表明该软件是维持系统稳
           定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)
Architecture: 申明软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;
Source: 软件包的源代码名称;
Depends: 软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;
Pre-Depends: 软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;
Recommends: 这个字段表明推荐的安装的其他软件包和库文件;
Suggests: 建议安装的其他软件包和库文件。

对于control,这里有一个完整的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
Package: bioinfoserv-arb
Version: 2007_14_08
Section: BioInfoServ
Priority: optional
Depends: bioinfoserv-base-directories (>= 1.0-1), xviewg (>= 3.2p1.4), xfig (>= 1:3), libstdc++2.10-glibc2.2
Suggests: fig2ps
Architecture: i386
Installed-Size: 26104
Maintainer: Mingwei Liu < lmingwei@gmail.com >
Provides: bioinfoserv-arb
Description: The ARB software is a graphically oriented package comprising various tools for \
 sequence database handling and data analysis.If you want to print your graphs you probably  \
need to install the suggested fig2ps package.

1.2 其他文件
preinst: 这个文件是软件安装前所要进行的工作,工作执行会依据其中脚本进行;
postinst: 这个文件包含了软件在进行正常目录文件拷贝到系统后,所需要执行的配置工作。
prerm: 软件卸载前需要执行的脚本
postrm: 软件卸载后需要执行的脚本现在来看看如何修订一个已有的deb包软件

2. 制作Deb包
debian制作DEB包(在root权限下),打包位置随意。
2.1 建立要打包软件文件夹

mkdir Cydia
cd   Cydia

2.2 依据程序的安装路径建立文件夹,并将相应程序添加到文件夹

mkdir Applications
# 当前目录相当于系统的根目录:“/”,以下目录安装后位于:/var/mobile/Documents。
mkdir var/mobile/Documents

2.3 建立DEBIAN文件夹

mkdir DEBIAN

2.4 创建control文件
在DEBIAN目录下创建一个control文件,并加入相关内容。

vi DEBIAN/control

control文件内容可参考1.1内容。

2.5 在DEBIAN里还可以根据需要设置脚本文件
2.5.1 preinst
在Deb包文件解包之前,将会运行该脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。

2.5.2 postinst
该脚本的主要任务是完成安装包时的配置工作。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
如:

1
2
3
4
5
#!/bin/sh
if [ "$1" = "configure" ]; then
    /Applications/MobileLog.app/MobileLog -install
    /bin/launchctl load -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist 
fi

2.5.3 prerm
该脚本负责停止与软件包相关联的daemon服务。它在删除软件包关联文件之前执行。
如:

1
2
3
4
5
#!/bin/sh
if [[ $1 == remove ]]; then
    /Applications/MobileLog.app/MobileLog -uninstall
    /bin/launchctl unload -wF /System/Library/LaunchDaemons/com.iXtension.MobileLogDaemon.plist 
fi

2.5.4 postrm
该脚本负责修改软件包链接或文件关联,或删除由它创建的文件。

2.6 改变脚本权限
如果DEBIAN目录中含有postinst 、prerm等执行文件,则执行:

chmod -R 755 DEBIAN

2.7 退出打包软件文件夹,生成DEB

dpkg-deb --build Cydia

3. 实践
3.1 所有的目录以及文件:

1
2
3
4
5
6
7
mydeb
|----DEBIAN
|      |-------control
|      |       |-------postinst
|      |-------postrm
|----boot
|      |----- initrd-vstools.img

3.2 在任意目录下创建如上所示的目录以及文件

mkdir -p /root/mydeb                            # 在该目录下存放生成deb包的文件以及目录
mkdir -p /root/mydeb/DEBIAN                     #目录名必须大写
mkdir -p /root/mydeb/boot                       # 将文件安装到/boot目录下
touch /root/mydeb/DEBIAN/control                # 必须要有该文件
touch /root/mydeb/DEBIAN/postinst               # 软件安装完后,执行该Shell脚本
touch /root/mydeb/DEBIAN/postrm                 # 软件卸载后,执行该Shell脚本
touch /root/mydeb/boot/initrd-vstools.img       # 所谓的“软件”程序,这里就只是一个空文件

3.3 control文件内容

1
2
3
4
5
6
7
Package: my-deb   (软件名称,中间不能有空格)
Version: 1                  (软件版本)
Section: utils            (软件类别)
Priority: optional        (软件对于系统的重要程度)
Architecture: amd64   (软件所支持的平台架构)
Maintainer: xxxxxx < xxxxxxxx@xxxx.xx > (打包人和联系方式)
Description: my first deb (对软件所的描述)

3.4 postinst文件内容
软件安装完后,执行该Shell脚本,一般用来配置软件执行环境,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postinst

#!/bin/sh
echo "my deb" > /root/mydeb.log

3.5 postrm文件内容
软件卸载后,执行该Shell脚本,一般作为清理收尾工作,必须以“#!/bin/sh”为首行,然后给该脚本赋予可执行权限:chmod +x postrm

#!/bin/sh
rm -rf /root/mydeb.log

3.6 给mydeb目录打包

dpkg -b   mydeb   mydeb-1.deb      # 第一个参数为将要打包的目录名,
                                   # 第二个参数为生成包的名称。

3.7 一些命令
安装deb包

dpkg -i   mydeb-1.deb      # 将initrd-vstools.img复制到/boot目录下后,执行postinst,
                           # postinst脚本在/root目录下生成一个含有"my deb"字符的mydeb.log文件

卸载deb包

dpkg -r   my-deb      # 这里要卸载的包名为control文件Package字段所定义的 my-deb 。
                      # 将/boot目录下initrd-vstools.img删除后,执行posrm,
                      # postrm脚本将/root目录下的mydeb.log文件删除

查看deb包是否安装:

dpkg -s   my-deb      # 这里要卸载的包名为control文件Package字段所定义的 my-deb

查看deb包文件内容:

dpkg   -c   mydeb-1.deb

查看当前目录某个deb包的信息:

dpkg --info mydeb-1.deb

解压deb包中所要安装的文件

dpkg -x   mydeb-1.deb   mydeb-1    # 第一个参数为所要解压的deb包,这里为 mydeb-1.deb
                                   # 第二个参数为将deb包解压到指定的目录,这里为 mydeb-1

解压deb包中DEBIAN目录下的文件(至少包含control文件)

dpkg -e   mydeb-1.deb   mydeb-1/DEBIAN    # 第一个参数为所要解压的deb包,
                                          # 这里为 mydeb-1.deb
                                          # 第二个参数为将deb包解压到指定的目录,
                                          # 这里为 mydeb-1/DEBIAN

来自: Now Code, 转载请注明出处: http://now-code.com/archives/589


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
制作一个 UOS deb 安装,你需要遵循以下步骤: 1. 创建一个 deb 目录:在终端中使用 `mkdir -p myapp-1.0/DEBIAN` 命令创建一个名为 myapp-1.0 的目录,并在其中创建一个名为 DEBIAN 的子目录,用于存储控制文件。 2. 编写控制文件:在 myapp-1.0/DEBIAN 目录下创建一个名为 control 的文件,并将以下内容添加到文件中: ``` Package: myapp Version: 1.0 Architecture: amd64 Maintainer: Your Name <youremail@example.com> Depends: libc6 (>= 2.27), libqt5widgets5 Section: utils Priority: optional Description: My Qt App A simple Qt app for UOS. ``` 这是一个基本的控制文件,你需要根据你的应用程序的实际情况进行修改。 3. 将二进制文件复制到目录中:将你的 Qt 应用程序复制到 myapp-1.0/opt/myapp 目录中。 4. 创建桌面文件:在 myapp-1.0/usr/share/applications 目录下创建一个名为 myapp.desktop 的文件,并将以下内容添加到文件中: ``` [Desktop Entry] Type=Application Name=My App Exec=/opt/myapp/myapp Icon=/opt/myapp/myapp.png Categories=Qt;Utility; ``` 这将在安装时为你的应用程序创建一个桌面图标。 5. 创建安装脚本:在 myapp-1.0/DEBIAN 目录下创建一个名为 postinst 的文件,并将以下内容添加到文件中: ``` #!/bin/sh set -e # Add desktop file if [ -f /usr/share/applications/myapp.desktop ]; then update-desktop-database -q else echo "Error: desktop file not found." >&2 fi # Add launcher if [ -f /usr/share/applications/myapp.desktop ]; then xdg-desktop-menu install --novendor /usr/share/applications/myapp.desktop else echo "Error: desktop file not found." >&2 fi exit 0 ``` 这是一个基本的安装脚本,它将在安装后将桌面文件添加到系统中,并在启动器中创建一个启动器。 6. 打 deb 安装:在终端中使用 `sudo dpkg-deb --build myapp-1.0` 命令将 myapp-1.0 目录打成一个 deb 安装。 现在你可以安装你的应用程序了,使用 `sudo dpkg -i myapp-1.0.deb` 命令进行安装。安装完成后,在桌面和启动器中应该会自动出现你的应用程序的图标。如果你想卸载应用程序,可以使用 `sudo dpkg -r myapp` 命令将其从系统中删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值