通常我们用源码包安装软件都需要编译,而编译就会带来时间的消耗。如果只是有一两台服务器需要这样,我们还能够接受,但当你需要对十台,几十台甚至上百台服务器进行编译安装源码包,你会不会疯掉呢?现在可以这样做,将编译安装好的程序打包成deb,再为这些deb包做一个网络源。以后就在需要安装的服务器(系统环境相同)中配置好该网络源,通过apt-get安装即可,这样就省去了很多繁琐的工作,节省了大量时间。
以一个例子具体讲述怎样去实现 1、要制作nginx的deb包; 2、将制作好的deb包放到一台能够提供web访问的服务器中,并配置成网络apt源; 3、最后在客户端服务器的源配置中添加该源的访问地址; 4、客户端通过apt-get安装编译好的nginx。
1、目录及文件设定 apt目录
/home/apt/mydeb //存放需要打包成deb的源程序 /home/apt/ubuntu //存放打包好的deb包以及所有deb软件包信息文件Packages.gz
mydeb目录
DEBIAN //存放包的控制文件以及一些执行脚本 srcname //将要打包的程序源码目录
DEBIAN目录
control //deb 包的控制文件信息 postinst //deb 包安装后执行的命令 postrm //deb 包卸载时执行的命令
2、生成deb包前准备工作
mkdir /tbt/apt/mydeb/tbt-nginx1.6 cp nginx /home/apt/mydeb/tbt-nginx1.6/ //将编译好的nginx拷贝到此目录 cd /home/apt/mydeb/tbt-nginx1.6/ mkdir DEBIAN //创建DEBIAN目录 vim DEBIAN/control //创建控制文件,并填写相关配置项 Package: tbtnginx1.6 //软件包名称,apt-get install使用的软件包名称 Version: 1.0 //版本号,用于软件更新 Section: tbt //包分类 Priority: required //软件对于系统的重要程度,如‘required’, ‘standard’, ‘optional’, ‘extra’ 等; Architecture: all //软件包结构,如基于‘i386’,‘amd64’等 Depends:make,gcc,g++,libpcre3-dev,libssl-dev //需要的依赖包 Essential: no //是否为系统最基本的软件包(‘yes’/‘no’),yes表明该软件是维持系统稳定和正常运行的软包,不允许任何形式的卸载(除非进行强制性的卸载) Installed-Size: 1024 //软件包的大小,单位为“kb” Maintainer: tbt.com //软件包维护者 Description: tbt nginx1.6 for ubuntu //描述软件包 vim postintl //编写软件包安装后执行的脚本,可以设定目录,需要的用户,权限等 #!/bin/bash dir="/home/tbt" mkdir -p $dir mv -f /nginx /home/tbt/nginx groupadd www useradd -g www www chown www.www -R /home/tbt/nginx vim postrm //编写软件包卸载时需要执行的脚本 #!/bin/bash dir="/home/tbt" rm -rf $dir/nginx chown 755 postintl //给与脚本755权限 chown 755 postrm
注:control文件中的Denpends参数尤为重要,这项参数会让你在安装软件时同时安装指定的依赖包,如果缺失依赖包,软件可能会运行失败。
3、生成deb软件包
cd /home/apt/ubuntu dpkg --build /home/apt/mydeb/tbt-nginx1.6 ./tbt-nginx1.6_v1.deb
1、设置网络源的域名
假设有一台服务器A(192.168.1.10),用做提供apt-get源服务器 vim /etc/hosts //设置访问域名,也可通过dns服务器指定 192.168.1.10 tbt-source.server
2、配置域名对外访问
安装nginx或apche提供网络访问,并将制作好的deb包存放目录/home/apt/ubuntu设置为网站家(root)目录 vim tbt-source.server.conf server { listen 80; server_name tbt-source.server; root /home/apt/ubuntu; }
3、将制作好的deb包制作成源
将deb包都放在/home/apt/ubuntu目录下,并在此目录执行如下命令生成deb包信息文件 dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
1、客户端的添加apt-get源
要保证客户端能访问到tbt-source.server(可以通过dns设置或绑定host) vim /etc/apt/source.list deb http://tbt-source.server/ubuntu / //地址后的“ /”不能缺少
2、通过apt-get安装
apt-get update //更新源,如果deb包发生变化,就需要更新 apt-get install tbtnginx1.6 //在control文件中配置的报名,会自动安装依赖软件包
3、查看安装位置
ls /home/tbt/ //原本软件是默认安装在“/”下,执行postintl脚本后被移动到此目录下 nginx
1、参照章节二,唯一不同的就是版本号的设定,然后重新生成deb包
将DIBIAN目录下control文件中的Version进行更改 vim /home/apt/mydeb/DIBIAN/control Version: 2.0
2、参照章节三,重新将deb包做成源
3、客户端执行apt-get update,更新源并执行apt-get安装