=
程序包管理器rpm,yum用法及apache httpd服务的自动化部署
通常来说在windows中将需要安装的程序,程序名.exe下载下来然后点击setup的安装程序或直接点击程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流发行版有着不同的程序包管理机制.比较主流的主要是rpm程序包管理器和deb程序包管理.
这里要区别:
包名(PACKAGEFILE): rpm包程序文件的全名
程序名(PACKAGENAME): rpm包不带版本号的程序名,比如QQ而不是QQ-8.0.1.exe
rpm:RPM Package Manager
-q <程序名> 查看程序是否安装,一般配合其他选项来查询 -p <包名> 一般用于查看未安装程序的信息,配合其他选项使用可用于预览程序 -V <包名> 验证包的来源及安全性 -K 验证数字签名(没有检测工具,默认not ok) -v 显示详细信息 -vv 显示的更为详细 -U | -F 升级程序包,会删除旧程序包(慎用) -R 检查包依赖关系 -ivh 安装rpm程序包 -e 卸载程序包 -qi 查看程序包的相关信息 -ql 安装时生成的文件 -qf 查看某个文件来自于哪个程序 -qc 查看程序生成的配置文件 --replacepkgs 覆盖安装,已有的保留 --replacefiles 覆盖某个已有的文件 --ql --script 查看安装脚本 --script 查看包中的脚本文件 --whatprovides "function" 查看某功能由那个软件提供 --import 导入密钥key
rpm2cpio x.rpm | cpio -tv 预览 rpm2cpio x.rpm | cpio -d 解包
rpm管理器会将程序,安装时建立数据库文件用来记录程序的信息: /var/lib/rpm, 利用rpm 命令查询已安装的程序时的查找依据.
程序的官方网站获得.
官方认证的rpm源仓库
第三方组织:fedora-epel源
几个常用rpm包网站:http://rpm.pbone.net/
https://www.rpmfind.net自己制作,FPM:制作rpm包工具
RPM 包管理器十分强大,但是当遇到包之间存在调用,依赖关系,有时安装一个包依赖很多包
不得不一个一个安装,此类包的安装效率存在缺陷,为了解决依赖性,产生了yum管理器, 并不意味着取代rpm命令,二者互为重要,yum依赖于rpm程序.
yum管理器基于c/s架构,服务端主要存rpm包及描述rpm包属性的元数据(metadata).
客户端配置:
/etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库指向服务端地址提供配置
国内的yum源:
1.阿里云yum源:http://mirrors.aliyun.com/repo/
2.网易yum源:http://mirrors.163.com/
3.搜狐yum源:http://mirrors.sohu.com/
yum- config-manager --add-repo=http://mirrors.sohu.com/centos/6.9/os/x86_64/ yum- config- manager -- disable “仓库名 " 禁用仓库 yum- config- manager -- enable “仓库名 ” 启用仓库
yum [options] [command] [package ...] yum repolist all 显示yum仓库中有哪些软件 yum list 显示程序名 yum search 查找程序是否存在 yum install 安装程序,同时将所依赖程序安装 yum history 查看yum的操作历史 yum reinstall 重新安装,有些软件安装途中意外终止再安装提示已安装卸载提示未安装可用此选项 yum Update 升级程序包 yum check-update 检查可用升级 yum remove|erase 卸载软件,不会卸载安装时安装的依赖包 yum provide 某个功能由哪个包提供 yum clean all 清除本地缓存,每次更改客户端的配置文件指向地址,建议清除 yum makecache 建立本地缓存
几个常用选项:
-- nogpgcheck: 禁止进行gpg check -y 自动回答"y" -q 静默模式
yum操作的日志文件历史依据: /var/log/yum.log
$arch $basearch $releasever
第三种管理软件包的方式:源码编译编译安装,优点还可以根据平台特性进行安装,发挥最佳性能.
一般安装步骤(仅仅是安装):源代码-- >预处理-- >编译-- >汇编-- >链接-- >执行
1.解压源码xxx.tar.bz2 或者其他类型
2. cd 进入源码编译的目录
3. ./configure --prefix=/PATH/INSTALL/ 生成MakeFile模板文件(预处理)
4. make 编译
5. make install 编译安装
下面来做一下实战,熟悉一下上面的知识.
1.分析httpd-2.2.32源码编译所依赖的程序(版本可能不同),将其先安装.
(1).apr-1.5.2
(2).apr-util-1.5.4
(3).apr-iconv-1.2.1
(4).pcre-8.40 :通过测试安装此依赖包,需要gcc,gcc-c++编译器,前一步先安装
2.分析完主要的依赖包,我这里是centos6版本,视情况而定可能有的不缺,先安装依赖包.
第一个依赖包还要被第二三个依赖包所依赖所以先安装第一个依赖包.
1.apr-1.5.2的安装.
wget http://www-eu.apache.org/dist/apr/apr-1.5.2.tar.bz2 tar jxf apr-1.5.2.tar.bz2 #解压依赖包 cd
apr-1.5.2.tar.bz2
./configure --prefix=/home/apache/apr
make #编译
make instal #编译安装
2. apr-util的安装
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2
tar jxf apr-util-1.5.4.tar.bz2 #解压依赖包
cd apr-util-1.5.4
./configure --with-apr=/home/apache/apr/ --prefix=/home/apache/apr-util
make #编译安装依赖包
make install
3.apr-iconv的安装
wget
http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2
tar jxf apr-iconv-1.2.1.tar.bz2 #编译安装依赖包
cdapr-iconv-1.2.1
./configure --prefix=/home/apache/apr-iconv
make
make install
4.pcre-8.40的编译安装
在安装他之前先将gcc和gcc-c++装好,需要他们来编译,我这里直接用yum来装gcc和gcc-c++了, 如果真的没有rpm程序,就要考虑源码安装这两个编译器了.
wget -c https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2 tar jxf pcre-8.40.tar.bz2 #编译安装依赖包 cd pcre-8.40 ./configure --prefix=/home/apache/pcre &>/dev/null make &>/dev/null make install
3.安装完成依赖包后开始安装主程序httpd.
wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2 tar jxf httpd-2.2.32.tar.bz2 cd httpd-2.2.32 ./configure --prefix=/home/apache/httpd --with-apr=/home/apache/apr --sysconfdir=/etc/apache #我这里指明了安装路径和配置文件的路径便于查找 make &>/dev/null #编译安装httpd程序 make install
4.安装完成,激动人心的时刻启动Apache httpd程序.
/home/apache/httpd/bin/apachectl start #httpd程序的启动命令
5.开放Linux防火墙的80端口或者临时直接关掉(我这里先临时关掉).
iptables -F
6.在浏览器中输入我的Linux主机ip地址,看到It works! 的字样证明,大功告成,成功拥有了自己的网站!
#!/bin/bash # #version 0.9 # OLDPWD=$(pwd) #保存当前程序的所在路径 echo -e "\033[31mWARNING:The operation is will be uninstall old httpd!\033[0minstalling apache site on centos6 , wating please..." echo -e "[## ]10%" rpm -qa| grep apr-util &>/dev/null && yum -y remove apr-util &>/dev/null #清除以前安装的apr-util程序 rpm -qa| grep apr-icon &>/dev/null && yum -y remove apr-icon &>/dev/null #清除以前安装的apr-icon程序 rpm -qa| grep apr &>/dev/null && yum -y remove apr &>/dev/null #清除以前安装的apr程序 rpm -qa| grep httpd &>/dev/null && yum -y remove httpd &>/dev/null #清除以前安装的httpd程序 if [ ! -e ./apr-1.5.2.tar.bz2 ];then #判断安装包是否存在 wget -c http://www-eu.apache.org/dist/apr/apr-1.5.2.tar.bz2 &>/dev/null fi tar jxf apr-1.5.2.tar.bz2 cd apr-1.5.2 ./configure --prefix=/home/apache/apr &>/dev/null #编译安装apr依赖包 make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[#### ]20%" if [ ! -e ./apr-util-1.5.4.tar.bz2 ];then #判断安装包是否存在 wget -c http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2 &>/dev/null fi tar jxf apr-util-1.5.4.tar.bz2 #解压依赖包 cd apr-util-1.5.4 #编译安装依赖包 ./configure --with-apr=/home/apache/apr/ --prefix=/home/apache/apr-util &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[###### ]30%" if [ ! -e ./apr-iconv-1.2.1.tar.bz2 ];then #编译安装依赖包 wget -c http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2 &>/dev/null fi tar jxf apr-iconv-1.2.1.tar.bz2 cd apr-iconv-1.2.1 ./configure --with-apr=/home/apache/apr --prefix=/home/apache/apr-iconv &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[######## ]40%" yum install -y gcc gcc-c++ &>/dev/null #依赖包pcre编译安装需要gcc和gcc-c++ if [ ! -e ./pcre-8.40.tar.bz2 ];then wget -c https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2 &>/dev/null fi tar jxf pcre-8.40.tar.bz2 #编译安装依赖包 cd pcre-8.40 ./configure --prefix=/home/apache/pcre &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[############ ]60%" if [ ! -e ./httpd-2.2.32.tar.bz2 ];then wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2 &>/dev/null fi tar jxf httpd-2.2.32.tar.bz2 cd httpd-2.2.32 ./configure --prefix=/home/apache/httpd --with-apr=/app/apache/apr --sysconfdir=/etc/apache \ --with-apr-util=/app/apache/apr-util --with-pcre=/app/apache/pcre &>/dev/null make &>/dev/null #编译安装httpd程序 make install &>/dev/null echo -e "[####################]100% install complete" echo -e "staring site...\nEnter your IP address in browser." /home/apache/httpd/bin/apachectl start &>/dev/null #启动apache程序 echo "apache server is installed at `date +%F-%T`,you can see /home/apache/install.log" echo -e "Install_Package: apr-1.5.2.tar.bz2 Install_Path: /home/apache/apr \n Install_Package: apr-util-1.5.4.tar.bz2 Install_Path: /home/apache/apr-util \n Install_Package: apr-iconv-1.2.1.tar.bz2 Install_Path: /home/apache/apr-iconv \n Install_Package: pcre-8.40.tar.bz2 Install_Path: /home/apache/pcre \n Install_Package: httpd-2.2.32.tar.bz2 Install_Path: /home/apache/httpd Configfile_dir: /etc/apache">>/home/apache/install.log #生成一段日志便于得知程序的安装情况
上面的脚本程序我在 centos6 Everthing上面实现的,其他发行版未曾经过测试.近期通过miniinstall测试出现了一些问题,并做了改动.也可根据自己的情况修改安装的路径 及版本,这里只完成了主体功能,可能还有部分功能体验没有优化,可根据您的情况进行优化调整.这种方式实现的Apache server不受service httpd start的统一管理,在后面的学习中,我会继续编写用service命令的管理脚本.如果您是apache配置小白直接复制上面shell 代码运行完毕就可以访问页面了!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。