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

来源:互联网 发布:淘宝差评后可以退货吗 编辑:程序博客网 时间:2024/05/23 02:04

http://www.douban.com/note/369020689/

1. create 一个目录 如下
mkdir hello

2. c 源码如下
root@evan-pc:~/deb# cat hello.c
#include <stdio.h>
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 <enter> 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、开始打包
dpkg-buildpackage



root@evan-pc:~/hello-1.0# dpkg-buildpackage
dpkg-buildpackage: 源码包 hello
dpkg-buildpackage: 源码版本 1.0-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: 源码修改者 root <evan886@gmail.com>
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就搞定了

from http://www.linuxchina.net/?p=2074

终端彩色
cp /etc/skel/.bashrc ~/ && . /root/.bashrc

0 0