从源码开始(Hello World) 制作deb包

1. create 一个目录 如下
mkdir hello
2. c 源码如下
root@evan-pc:~/deb# cat hello.c
#include
int main(int argc, char* argv[])
{
printf("Hello world!\n");
return 0;
}

root@evan-pc:~/deb# cat Makefile
OBJS=hello.o
CC=gcc -g
all:$(OBJS)
$(CC) -o hello $(OBJS)
clean:
rm -f *.o hello
.PHONY:all clean

3. 我们make一下,测试程序编译是否有问题,然后在./hello检查程序是否正确执行.如果没问题进行下一步,如果有问题我们检查程序代码
root@evan-pc:~/deb# make
gcc -g -c -o hello.o hello.c
gcc -g -o hello hello.o
4、我们清理下刚才编译程序的垃圾,make clean一下
make clean
5、输入命令,切回上级目录
cd ..
6、 改名:因为文件名必须包含文件名还有版本号
mv hello hello-1.0
说明:文件名后必须用-,不能用_
tar zcvf hello_1.0.tar.gz hello-1.0
cd hello-1.0

root@evan-pc:~/hello-1.0# dh_make -e evan886@gmail.com -f ../hello_1.0.tar.gz
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
[s/i/m/l/k/n] s
Maintainer name : root
Email-Address : evan886@gmail.com
Date : Thu, 10 Jul 2014 16:25:54 +0800
Package Name : hello
Version : 1.0
License : blank
Type of Package : Single
Hit to confirm:
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the hello Makefiles install into $DESTDIR and not in / .
#tar zcvf hello_1.0.orig.tar.gz hello-1.0
说明:压缩包的名字必须是包含文件名及版本号
7、开始打包
root@evan-pc:~/hello-1.0# dpkg-buildpackage
dpkg-buildpackage: 源码包 hello
dpkg-buildpackage: 源码版本 1.0-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: 源码修改者 root
dpkg-buildpackage: 主机架构 amd64
dpkg-source –before-build hello-1.0
debian/rules clean
dh clean
dh_testdir
dh_auto_clean
make[1]: 正在进入目录 `/root/hello-1.0′
rm -f *.o hello
make[1]:正在离开目录 `/root/hello-1.0′
dh_clean
dpkg-source -b hello-1.0
dpkg-source: info: using source format `3.0 (quilt)’
dpkg-source: info: building hello using existing ./hello_1.0.orig.tar.gz
dpkg-source: 警告: 忽略对文件 hello.o 的删除指令
dpkg-source: 警告: 忽略对文件 hello 的删除指令
dpkg-source: info: building hello in hello_1.0-1.debian.tar.gz
dpkg-source: info: building hello in hello_1.0-1.dsc
debian/rules build
dh build
dh_testdir
dh_auto_configure
dh_auto_build
make[1]: 正在进入目录 `/root/hello-1.0′
gcc -g -g -O2 -fstack-protector –param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -c -o hello.o hello.c
gcc -g -o hello hello.o
make[1]:正在离开目录 `/root/hello-1.0′
dh_auto_test
debian/rules binary
dh binary
dh_testroot
dh_prep
dh_auto_install
dh_installdocs
dh_installchangelogs
dh_perl
dh_link
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dpkg-gencontrol: 警告: Depends field of package hello: 未知的替换变量 ${shlibs:Depends}
dpkg-gencontrol: 警告: File::FcntlLock not available; using flock which is not NFS-safe
dh_md5sums
dh_builddeb
dpkg-deb:正在新建软件包 hello,包文件为 ../hello_1.0-1_amd64.deb。
dpkg-genchanges >../hello_1.0-1_amd64.changes
dpkg-genchanges: 上传数据中包含完整的原始代码
dpkg-source –after-build hello-1.0
dpkg-buildpackage: 完整上载(包含原始的代码)
root@evan-pc:~/hello-1.0#
打包成功,看到上级目录有 deb包就成功了( 我这里为hello_1.0-1_amd64.deb)
root@evan-pc:~/hello-1.0# ls ../hello
hello-1.0/ hello_1.0-1.debian.tar.gz hello_1.0.tar.gz
hello_1.0-1_amd64.changes hello_1.0-1.dsc
hello_1.0-1_amd64.deb hello_1.0.orig.tar.gz
问题 解决
root@evan-pc:~/deb# make
Makefile:4: *** 遗漏分隔符 。 停止。
root@evan-pc:~/deb# vim Makefile
root@evan-pc:~/deb# make
Makefile:6: *** 遗漏分隔符 。 停止。
root@evan-pc:~/deb# vim Makefile
用tab就搞定了
http://hi.baidu.com/meme_orange/item/f740da8027b3b9dc5e0ec1a8
终端彩色
cp /etc/skel/.bashrc ~/ && . /root/.bashrc