参考:http://linuxconfig.org/easy-way-to-create-a-debian-package-and-local-package-repository
如果需要比较详细的deb包制作手册可以参照以下链接:
官方的debian制作手册:http://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html
1,创建自己的简单程序(用来实验的程序)
1 | vi linuxconfig.cc |
编辑添加以下内容:
1 | #include <iostream> |
2 |
3 | int main() |
4 | { |
5 | using namespace std; |
6 | cout << "linuxconfig.org\n" ; |
7 |
8 | return 0; |
9 | } |
为了能够编译,需要相应的编译工具,可以使用命令:
1 | sudo apt-get install build-essential |
从build-essential包信息:
build-essential
依赖: libc6-dev
依赖:
libc6-dev
依赖: gcc
依赖: g++
依赖: make
依赖: dpkg-dev
可以得知,安装来build-essential即等于安装了以上显示的依赖包。
编译并执行测试输出:
1 | g++ linuxconfig.cc -o linuxconfig |
2 |
3 | . /linuxconfig |
4 | linuxconfig.org |
一个简单的在屏幕输出linuxconfig.org的程序。
2,创建自己的deb包
deb包的内容分为两大部分:
一,控制信息:位于在DEBIAN目录下的control文件中(另可能由md5sums文件,用来校验文件完整性,可有可无)。
二,安装内容:其目录结构会映射到’/'目录下,即deb包内安装内容在usr/xx/yy下,则安装后将会安装在/usr/xx/yy下。
现在来创建我们的deb包:
1 | mkdir linuxconfig |
2 | cd linuxconfig |
3 | mkdir DEBIAN |
4 | vi DEBIAN /control |
在control中添加内容:
Package: linuxconfig Version: 1.0 Section: custom(代表软件类别) Priority: optional Architecture: all Essential: no Installed-Size: 1024 Maintainer: linuxconfig.org Description: Print linuxconfig.org on the screen
1 | mkdir -p usr /bin/ |
2 | cp path /to/linuxconfig usr /bin |
这样安装内容和控制信息就都布置好了。
创建包:
1 | cd .. |
2 | dpkg --build linuxconfig/ linuxconfig-1.0_i386.deb |
执行成功后就能看到linuxconfig-1.0_i386.deb的包。
3,发布你的deb包
首先需要安装apache2:
1 | sudo apt-get install apache2 |
默认的网站内容是在/var/www目录下的,我们建立一个mydeb文件夹用来存放自己的deb包:
1 | cd /var/www |
2 | mkdir mydeb |
3 | cp /path/to/linuxconfig-1 .0_i386.deb /var/www/mydeb/ |
使用dpkg-scanpackages 来生成Packages.gz(存放所有包的信息,以便用户获取):
Packages
实质上是
deb
文件的
control
信息集合,另外多了
deb
文件本身的信息。(
control
文件是记录
软件包本身的信息,但没有
deb
文件本身)
Packages
实质上是
deb
文件的
control
信息集合,另外多了
deb
文件本身的信息。(
control
文件是记录
软件包本身的信息,但没有
deb
文件本身)
1 | cd /var/www/mydeb/ |
2 | dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz |
dpkg-scanpackages 第一个参数用来指定要扫描的目录(当前所在目录的相对路径),通过’|'管道使用gzip(-9c 对应最高质量的压缩)输出到Packages.gz包中。
也可以将该命令写到文件中,方便以后执行:
1 | sudo vi /bin/scan-mydeb |
添加内容:
1 | #!/bin/bash |
2 | cd /var/www/mydeb/ |
3 | dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz |
修改执行权限:
1 | sudo chmod u+x /bin/scan-mydeb |
之后直接执行:
1 | sudo scan-mydeb |
就可以实现Packages.gz的更新。
在浏览器中输入localhost/mydeb/可以看到:
4,获取deb包:
在其他机子上添加源:
1 | sudo vi /etc/apt/sources .list |
添加一行:
deb http://服务器地址/mydeb
执行:
1 | sudo apt-get update |
2 | sudo apt-get install linuxconfig |
成功安装!
1 | linuxconfig |
可以看到输出:linuxconfig.org
通过apt-get remove可以卸载:
1 | sudo apt-get remove linuxconfig |
ok.
Packages实质上是deb文件的control信息集合,另外多了deb文件本身的信息。(control文件是记录软件包本身的信息,但没有deb文件本身)
Packages
实质上是
deb
文件的
control
信息集合,另外多了
deb
文件本身的信息。(
control
文件是记录
软件包本身的信息,但没有
deb
文件本身)
Packages文件本身的信息。(deb
control
文件是记录
软件包本身的信息,但没有
deb
文件本身)
所有评论(0)