rpmyum管理及源码安装程序包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpmyum管理及源码安装程序包相关的知识,希望对你有一定的参考价值。


linux程序包管理:

        为了更好的实现程序的安装、升级、卸载、查询、校验以及数据库的维护,所以把将编译好的程序的各个组成文件打包成一个或者多个程序包文件。

       软件包的获取途径:

            1、到各个镜像网站获取:

                    比如:mirrors.aliyun.com   mirrors.163.com   mirrors.souhu.com

            2、到各个程序官网获取

                    比如:apache.org  nginx.org

            3、通过第三方组织

                    比如:epel、搜索引擎



  1、rpm包管理  :  不能处理依赖关系

        RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序,系统中存在着一个rpm数据库来记录包与包之间以及安装的包的依赖关系,安装快捷,缺点是得先解决包之间的依赖条件。

          rpm命令:

                         -i:安装

                        -U:升级     --oldpackage   降级

                        -e:卸载

                        -q:查询

                        -V:检验

                        --buliddb或者--initdb:数据库维护

                         -v:详细信息,可视化

                         -h:输出进度条

                        --nosignature:忽略包的签名的合法性

      每一个rpm包的名称都由”-“和”.”分成了若干部分,拿nginx-1.8.1-1.el7.ngx.x86_64.rpm这个包来解释一下,nginx 为包d的名称;1.8.1则为版本信息;1.el7.ngx为发布版本号;x86_64为运行平台。有的包后面写了个noarch,表示不限制平台。

      示例:  安装              

[[email protected] src]# rpm -ivh nginx-1.8.1-1.el7.ngx.x86_64.rpm 
warning: nginx-1.8.1-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:nginx-1:1.8.1-1.el7.ngx          ################################# [100%]

         升级

[[email protected] src]# rpm -Uvh nginx-1.8.1-1.el7.ngx.x86_64.rpm 
warning: nginx-1.8.1-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing...                          ################################# [100%]
	package nginx-1:1.8.1-1.el7.ngx.x86_64 is already installed

rpm包的查询命令:

             rpm [-q | --query] [select-options] [query-options]            

           -q  查询指定的程序包是否安装,会显示详细信息

                     -a  查询所有已安装的包

                      -f file|/path/to/somefile  查询指定的文件由哪个程序包安装生成的

                      -p package  用于实现查询未安装的包 

                       -i  提供软件包的相关信息

                         --whatprovides  查询指定的capability由哪个程序包提供

                          --whatrequires  查询指定的capability被哪个包提供

                       -l 软件安装生成的所有文件列表

                       -c  配置文件

                       -d 提供的文档

                         --provides  列出指定的程序包提供所有的功能

                        -R --requires 查询指定软件包的依赖关系       

[[email protected] src]# rpm  -qa nginx   //查询程序是有那个包提供的
nginx-1.8.1-1.el7.ngx.x86_64
[[email protected] src]# rpm  -ql nginx   //查询包安装的文件列表
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
[[email protected] src]# rpm  -qf /etc/nginx  //根据路径来查找是哪个包提供的
 nginx-1.8.1-1.el7.ngx.x86_64
[[email protected] src]# rpm  -qi nginx   //查询包信息
Name        : nginx
Epoch       : 1
Version     : 1.8.1
Release     : 1.el7.ngx
Architecture: x86_64
Install Date: Sat 19 Mar 2016 02:56:36 AM CST

 rpm包的卸载:

          rpm -e               

        --allmatches   卸载匹配所有指定名称的软件包的所有版本  (不建议)

               --nodeps  忽略依赖关系

               --test   测试卸载

[[email protected] src]# rpm -evh nginx
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:nginx-1:1.8.1-1.el7.ngx          ################################# [100%]

数据库重建: 在安装卸载或升级程序包时怎么都出错,切报错run recovery之类的,这时需要重建。

            rpm --initdb  --dbpath=/path/to/somefile

            rpm --rebuilddb --dbpath=/path/to/somefile         

[[email protected] src]# rpm --initdb --dbpath=/tmp/rpm
warning: Generating 12 missing index(es), please wait...

              注意:rpm的数据库存放在/var/lib/rpm


2、yum管理程序包   :   能自动处理依赖关系

        yum(全称为 Yellow dog Updater, Modified),yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包,非常的方便。

   yum配置文件:

                     /etc/yum.conf:为所有仓库提供公共配置

                     /etc/yum.repos.d/*.repo:配置一个或多个仓库文件


      显示yum所安装的程序包:

                     yum list (all |glob-expr)   :支持通配符搜索

                     yum grouplist :显示包组

              

       安装程序包:

                    yum install :安装程序包      -y:表示自动回答为yes,直接安装

                    yum reintsall:                     

[[email protected] yum]# yum -y install vim
Loaded plugins: fastestmirror
base                                                                          | 3.6 kB  00:00:00     
epel                                                                          | 4.3 kB  00:00:00     
Loading mirror speeds from cached hostfile
Package 2:vim-enhanced-7.4.160-1.el7.x86_64 already installed and latest version
Nothing to do

       检查可用升级:                    check-update

       卸载程序包   :                     remove       

[[email protected] yum]# yum remove httpd
Loaded plugins: fastestmirror
No Match for argument: httpd
No Packages marked for removal

   检查程序包的信息:                 info    

[[email protected] yum]# yum info nginx
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name        : nginx
Arch        : x86_64
Epoch       : 1
Version     : 1.6.3

 查看指定的特性(可以是某文件)是由那个程序包提供的

             provides

      yum provides /bin/bash

[[email protected] yum]# yum provides ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
net-tools-2.0-0.17.20131004git.el7.x86_64 : Basic networking tools
Repo        : @base
Matched from:
Filename    : /usr/sbin/ifconfig

       centos7上面ifconfig命令是需要安装的,这时可以用yum查看ifconfig是有哪个包提供的,由net-tools提供。


   清理本地缓存 :       clean all

   生成缓存       :       makecache 

             遇到yum安装程序包时,会报错error之类的,这时就可以yum clean all下,然后生成本地缓存makecache.


 搜索:模糊搜索  :          search string|路径   

[[email protected] yum]# yum search nginx
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
======================================== N/S matched: nginx =========================================
collectd-nginx.x86_64 : Nginx plugin for collectd
munin-nginx.noarch : Network-wide graphing framework (cgi files for nginx)
nginx-filesystem.noarch : The basic directory layout for the Nginx server
owncloud-nginx.noarch : Nginx integration for ownCloud
pcp-pmda-nginx.x86_64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver
nginx.x86_64 : A high performance web server and reverse proxy server

  Name and summary matches only, use "search all" for everything.


yum仓库配置文件是放在/etc/yum.repos.d/下以.repo结尾的文件 。

      仓库的配置文件定义:

                            [repositoryID]  

                            name=          //仓库的名称

                            baseurl=       //下载rpm包的路径

                            enabled={1|0}   //是否应用此仓库,默认为1启用

                            gpgcheck={1|0}  //检查包签名的合法性

                            gpgkey=URL    //检查密钥

                            enablegroups={1|0}                              

              failovermethod={roundrobin|priority}

                                                            轮询   | 优先级

[base]
name=local
baseurl=  //ftp仓库 
        http://mirrors.163.com/centos/7/os/x86_64/                 //镜像仓库     
                                                //本地光盘仓库 
gpgcheck=0

配置完成后可以通过yum repolist查看yum配置的源  :

[[email protected] yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                      repo name                                         status
base                                         local                                             9,007
epel                                         Fedora epel                                       8,508
repolist: 17,515

            

程序包编译安装:

       安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的,比如扩展模块等。

       安装过程:源代码 --> 预处理 --> 编译(gcc)-->链接 -->执行

     源码的安装需要用到编译器,而linux上C、C++语言的编译器就是gcc,通过gcc吧源码编译成可执行的二进制文件,如果系统没装的话可以yum -y install gcc.

        源码安装的三步骤:

               1、./configure                     

                             1、通过选项传递参数,指定启用特性、安装路径等

                                  执行时会参考用户的指定及makefile.in生成makefile

                             2、检查依赖到的外部环境; 

               2、make   

                            根据makefile文件来构建应用程序,gcc在工作。

               3、make install  

                             安装步骤,生成相关的软件存放目录和配置文件的过程。


  示例:已nginx-1.8.0.tar.gz为例安装nginx.           

[[email protected] src]# tar -xvf nginx-1.8.0.tar.gz ^C
[[email protected] src]# ls
nginx-1.8.0  nginx-1.8.0.tar.gz
[[email protected] nginx-1.8.0]# ./configgure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-229.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
checking for gcc -pipe switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found

  --prefix表示指定nginx的安装路径,还有其他选择,比如--with、--with-module等。可以通过./configure --help查看。

     按回车执行check操作,检查完后生成Makefile文件。  

creating objs/Makefile
[[email protected] nginx-1.8.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src

   看到这个就表示生成了Makefile,如果缺少其它库没安装的话就会报错,安装nginx时如果报错  ./configure: error: the HTTP rewrite module requires the PCRE library.可以下载一个pcre包然后编译安装下,如果还报错  ./configure: error: the HTTP gzip module requires the zlib library.则yum -y install zlib-devel.

  make完成后执行make install 

sed -e "s|%%PREFIX%%|/usr/local/nginx|" 	-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" 	-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" 	-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" 	< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory `/usr/local/src/nginx-1.8.0‘
[[email protected] nginx-1.8.0]# make install

 至此nginx源码安装完成,测试nginx是否安装成功

[[email protected] sbin]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[[email protected] sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[[email protected] sbin]# ps -ef |grep nginx
root     44644     1  0 05:18 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody   44645 44644  0 05:18 ?        00:00:00 nginx: worker process
root     44647 21932  0 05:19 pts/1    00:00:00 grep --color=auto nginx

   启动nginx并查看nginx进程。

   安装后的配置:

                1、导出二进制程序目录至path环境变量

                     编辑文件/etc/profile.d/name.sh

                       export path=/path/to/bin:$path

                2、导出库文件路径

                     编辑/etc/ld.so.conf.d/name.conf

                        添加新的库文件所在目录至此文件中                       

                     让系统重新生成缓存:

                          ldconfig [-v]

                3、导出头文件

                       基于链接的方式实现

                       ln -sv

                4、导出帮助手册

                    编辑/etc/man.config文件

                       添加一个manpath


         


以上是关于rpmyum管理及源码安装程序包的主要内容,如果未能解决你的问题,请参考以下文章

教你使用rpmyum编译等方式安装软件

Linux程序包管理

软件包管理rpmyum及编译安装

rpmyum 源码软件安装

2018-1-8 5周1次课 rpmyum源码包

软件包安装方法rpm包介绍rpmyum