程序包管理rpm,yum用法解析及自动化部署apache server实战,让您轻松拥有apache网站!

程序包管理器rpm,yum用法及apache httpd服务的自动化部署

程序包管理?

通常来说在windows中将需要安装的程序,程序名.exe下载下来然后点击setup的安装程序或直接点击程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流发行版有着不同的程序包管理机制.比较主流的主要是rpm程序包管理器和deb程序包管理.

这里要区别:

包名(PACKAGEFILE): rpm包程序文件的全名
程序名(PACKAGE
NAME): rpm包不带版本号的程序名,比如QQ而不是QQ-8.0.1.exe

现在先了解一下rpm的管理命令是如何"双击"安装卸载管理rpm包的?

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

如何查看rpm中的文件?

rpm2cpio x.rpm | cpio -tv 预览
rpm2cpio x.rpm | cpio -d  解包

rpm管理器会将程序,安装时建立数据库文件用来记录程序的信息: /var/lib/rpm,
利用rpm 命令查询已安装的程序时的查找依据.

rpm 如何获得呢?

  1. 程序的官方网站获得.
  2. 官方认证的rpm源仓库
  3. 第三方组织:fedora-epel源
  4. 几个常用rpm包网站:http://rpm.pbone.net/
        https://www.rpmfind.net
  5. 自己制作,FPM:制作rpm包工具

RPM 包管理器十分强大,但是当遇到包之间存在调用,依赖关系,有时安装一个包依赖很多包
 不得不一个一个安装,此类包的安装效率存在缺陷,为了解决依赖性,产生了yum管理器,
并不意味着取代rpm命令,二者互为重要,yum依赖于rpm程序.

如何使用yum(Yellowdog Update Modifier)包管理器?

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配置文件的命令:

yum- config-manager --add-repo=http://mirrors.sohu.com/centos/6.9/os/x86_64/
yum- config- manager -- disable “仓库名 " 禁用仓库
yum- config- manager -- enable “仓库名 ” 启用仓库

yum命令的用法:

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

yum配置文件可用的变量:
$arch
$basearch
$releasever

如果rpm被卸载了,如何解决安装软件的需求呢?

第三种管理软件包的方式:源码编译编译安装,优点还可以根据平台特性进行安装,发挥最佳性能.

一般安装步骤(仅仅是安装):源代码-- >预处理-- >编译-- >汇编-- >链接-- >执行

1.解压源码xxx.tar.bz2 或者其他类型
2. cd 进入源码编译的目录
3. ./configure --prefix=/PATH/INSTALL/ 生成MakeFile模板文件(预处理)
4. make  编译
5. make install 编译安装

下面来做一下实战,熟悉一下上面的知识.

在centos 6中源码编译安装apache服务程序httpd,并尝试自动化实现批量编译安装?

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://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2
      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
      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 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
      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 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=/home/apache/apr --sysconfdir=/etc/apache &>/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 上面实现的,其他发行版未曾经过测试.也可根据自己的情况修改安装的路径
 及版本,这里只完成了主体功能,可能还有部分功能体验没有优化,可根据您的情况进行优化调整.

愿linuxer  学习愉快

时间: 2024-10-12 15:27:08

程序包管理rpm,yum用法解析及自动化部署apache server实战,让您轻松拥有apache网站!的相关文章

linux程序包管理 rpm yum 编译

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE] 安装:-i, --install 升级:-U, --update, -F, --freshen 卸载:-e, --erase 查询:-q, --query 校验:-V, --verify 数据库维护:--builddb, --initdb 安装:rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm  -ivh  PACKAGE_FILE ... GENERAL

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux 程序包管理 rpm yum dnf

Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文

程序包管理之yum的用法

程序包管理之yum的用法: yum(全称为 Yellow dog Update Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 工作机制: 基于RPM包管理,能够从配置文件中指定服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖的程序包,无须繁琐地一次次下载.安装. 当yum接收到用户的安装指令后,yum将会通过读取配置文件中的信息并从指定的远程服务器上下载该程序包,并会分析该程序包的依赖关系并同时下载改程序包所依赖的

程序包管理rpm、yum与简单编译安装程序

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档. ?

Linux程序包管理rpm与yum

Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  

详解程序包管理RPM

一.定义      RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了. 二.RPM包管理的用途 1.可以安装.删除.升级和管理软件:当然也支持在线安装和升级软件:2.通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包:3.可以在查询系统中的

Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作. Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程. Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支: debian: 使用d

RPM程序包管理以及yum的应用

在早期我们使用源代码的方式来安装软件时,都需要先把源程序代码编译成可执行的二进制安装程序,然后进行安装.这就意味着每次安装软件都需要经过预处理-->编译-->汇编-->链接-->生成安装文件--> 安装,这个复杂而艰辛的过程.为简化安装步骤,便于广大用户的安装部署程序,程序提供商就在特定的系统上面编译好相关程序的安装文件并进行打包,提供给大家下载,我们只需要根据自己的系统去下载相应的安装包进行安装即可,其类似 Windows 的安装方式,由程序开发者直接在已知的系统上面编译好