DEB打包:快速构建一个Meta Package

部分参考:Building your First Package

需要安装的软件:

创建工作目录:

mkdir hello-1.0

要求为“包名+版本号”

初始化目录(创建必要的文件):

cd hello-1.0/
dh_make --native #本地的

这里的包类型我们选择single(其它类型会在之后的文章说,可能)

Type of package: (single, indep, library, python)
[s/i/l/p]?

之后输入y确认生成

这时候你当前的目录应该就多了个debian目录

编辑debian/control看到如下:

Source: hello
Section: unknown
Priority: optional
Maintainer: user <user@unknown>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.8
Homepage: <insert the upstream URL, if relevant>
#Vcs-Git: https://anonscm.debian.org/collab-maint/hello.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/hello.git

Package: hello
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>

这里还有个debian/changelog文件用于记录修改,这里不做修改。(之后建议使用dch处理这个文件)

最后还有个关于版权的文件debian/copyright,同样这里作为示例不做修改

创建一个脚本:

mkdir -p usr/bin/
cat << EOF > usr/bin/hello.sh
#!/bin/bash
echo hello
EOF
chmod +x usr/bin/hello.sh

你可以再丢个文本:

mkdir -p usr/share/doc/hello
cat << EOF > usr/share/doc/hello/README
Hello
EOF

新建.install文件:

cat << EOF > debian/hello.install
usr/* usr

你或许发现了,这里的usr/xxx/xxx都是相对于系统的目录的路径创建的,而.install文件则是告诉包管理如何处理这些文件(将包根目录内的usr目录复制到系统的usr目录)

生成.dsc与源码包,这些东西就是你在Debian 软件源pool目录看到的那堆东西了:

dpkg-source -b .

构建deb包,这里因为是meta包,可以直接构建,一般情况下建议使用pbuilder构建,之后的文章会写:

dpkg-buildpackage -us -uc

生成的文件都在上一级目录

最后你就可以试试安装你创建的deb包了:

dpkg -i ../hello_1.0_amd64.deb #构架名称可能不同

试试运行下吧:

user@hostname:~/hello-1.0$ hello.sh
hello
1条评论
  1. a-wing
    a-wing2019-03-12

    不讲一下 debuild 和 pbuilder ?

    回复
添加新评论