部分参考: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>
Section
是分类,这里改成misc
Maintainer
是维护者,这里随意(必须为“名字+空格+<邮箱>”的格式)Homepage
是软件的主页,这里作为示例故保留原样Package
决定了你的包名Architecture
是构架支持,如果是元数据(脚本,媒体文件,文本)可以不管Depends
是依赖,这里作为示例是没有依赖的故保留原样Description
是软件介绍,不可写太长(最长60个字符,多的另外起行,用空格缩进)这里还有个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
不讲一下 debuild 和 pbuilder ?