码迷,mamicode.com
首页 > 其他好文 > 详细

程序包管理:rpm、yum、编译

时间:2016-01-03 17:44:31      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:程序包管理

概述:

    在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础,只有我们学会了软件包的管理才能谈得上其它的应用,软件包的安装、更新、查询,以及几个常用的软件包管理工具rpmyum、编译。

 

    不同发行版系统程序包管理器:

      Debiandptdpkgdeb

      Redhatrpm 

      S.u.S.E:  rpm.rpm

 

一、Rpm

1.概述rpm包里包含可执行的二进制程序,这个程序和window是的软件包中的.exe文件类似是可执行的;一个rpm包中     的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其他特定版本文件,这就是软件包的依赖关       系;依赖关系并不是Linux特有的,windows操作系统中也是同样存在的,比如我们在windows系统中运行3D游戏,在     安装的时候,他可能会提示,要安装Direct 9linuxwindows的系统原理是差不多的。

 

2.rpm包命名格式

     re-pppoe  -   3.1  -     5   .     X86_64      .rpm

     软件名称   版本信息  发布次数  适合硬件平台  扩展名

3.获取程序包的途径

    (1)系统发行版的光盘或者官方的文件服务器(或镜像站点)

     http://mirrors.aliyun.com

     http://mirrors.sohu.com

     http://mirrors.163.com

   (2)项目的官方站点

   (3)第三方组织

     (aEPEL

     (b)搜索引擎

        http://pkgs.com

        http://rpmfind.net

    (4)检查其合法性、来源合法性、程序包的完整性

技术分享

 

 

4.rpm的使用权限

     Rpm软件的安装、删除、更新只有root权限才能使用,对于查询功能任何用户都可以操作,如果普通用户拥有安装      目录的权限,也可以进行安装

 

5.rpm的使用用法

   1)通过rpm命令查询一个rpm包是否安装了,也是通过rpm数据库来完成的,所以我们要经常用下面的两个命令来初    始化rpm数据库;

技术分享

    注:第二个命令要花好长时间,有时rpm系统出了问题,不能安装和查询,大多是这里出了问题。

   2)rpm命令:rpm

        安装:-i

        升级:-U

        卸载:-e

        查询:-q

        校验:-V

        数据库维护:--builddb--initdb

  * 安装:rpm -ivh file.rpm

 参数:-iinstall的意思

      -v:查看更详细的安装信息

      -vv:查看更详细的输出

      -h:以安装信息栏显示安装的进度,每个#表示2%的进度

     --test:测试安装,检查并报告依赖关系及冲突消息等

     --nodeps:忽略依赖关系,不建议,虽能安装成功,但不保证能运行成功。

     --replacepkgs:重新安装

 注意:rpm可以自带脚本

     四类:--noscripts

          preinstall:安装过程开始之前运行的脚本,%pre--nopre

          postinstall :安装过程完成之后运行的脚本,%prost.--nopost

          preuninstall :卸载过程真正开始执行之前运行的脚本,%preun--nopreun

          postuninstall:卸载过程完成之后运行的脚本,%postun--nopostun

          

              --nosignature:不检查包签名信息,不检查来源合法性

              --nodigest:不检查包完整性信息

语法结构:

技术分享

 

 

*升级:

技术分享

    区别: -Uvh :后面接的软件即使没有安装过,则系统将予以直接安装,若后面接的软件有安装过旧版本,则系统自动     更新至新版

    -Fvh:如果后面接的是软件并未安装到你的linux系统上,则该软件不会被安装。即只有已安装到你的linux系统内的软     件会被“升级”。

--oldpackage:降级

--force:强制升级

   注意:1.不要对内核做升级操作,linux支持多内核版本并存,因此,直接安装新版本内核

      2.如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版    本的配置文件,而是把新版本的配置文件重命名后提供。

 

*卸载:rpm -e 软件包名

      --allmatches:卸载所有匹配指定名称的程序包的各版本

      --nodeps:忽略依赖关系

      --test:测试卸载,dry run模式

    举例:我想移除lynx包,完整的操作应该是:

技术分享

     

      如果有依赖关系,您也可以用--nodeps忽略依赖的检查来删除,但尽可能不要这么做,最好用软件包管理               器system-config-packages来删除或者添加软件;

 

 

*查询:

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

      rpm的查询功能是极为强大,是极为重要的功能之一

1)查询系统已安装的软件: 

       rpm -q 软件名

2)查看系统中所有已经安装的包,要加-a参数;

       rpm -qa 

3)如果分页查看,再加一个管道|more命令

       rpm -qa |more

4)在所有已经安装的软件包中查找某个软件,比如说 gaim;可以用 grep 抽取出来

       rpm -qa|grep gaim

5)查询一个已经安装的文件属于哪个软件包

       rpm -qf 文件名   注:文件名所在的绝对路径要指出

6)查询已安装软件包都安装到何处 

      rpm -ql 软件名

7)查询一个已安装软件包的信息

      rpm -qi 软件名

8)查询一下已安装软件的配置文件

      rpm -qc 软件名

9)查看一个已经安装软件的文档安装位置

      rpm -qd 软件名

10)查看一下已安装软件所依赖的软件安装包及文件

     rpm -qR 软件名

11)查看一个软件包的用途、版本等信息

     rpm -qpi file.rpm

12)查看一个软件包所包含的文件

     rpm -qpl file.rpm 

13)查看一个软件包的配置文件

     rpm -qpc file.rpm

14)查看一个软件包的依赖关系

     rpm -qpR file.rpm

 

*导入签名

技术分享

 

 

 

*校验:

   rpm -V|--verify} [select-options] [verify-options]

 参数:-V:后面加的是软件名称,若该软件所含的文件被改动过,才会列出来

       -Va:列出目前系统上面所有可能被改动过的文件

       -Vp:后面加的是文件名称,列出该软件内可能被改动过的文件。

       -Vf:列出某个文件是否被改动过

S:文件的容量大小是否被改动

M:文件类型或文件的属性是否被改变,如是否可被执行等参数已被改变

5MD5这一种指纹码的内容已经不同

D:设备的主、次代码已经改变

LLink路径已被改变

U:文件的所有者已被改变

G:文件的所属用户组已被改变

T:文件的创建时间已被改变

所以,如果当一个设置文件所有的信息都被改变过,那么它的显示就会是:   

                     SM5DLUGT  C  filename 

文件类型有下面类型;

C:设置文件

d:文档

g鬼文件,通常是该文件不被某个软件所包含,较少发生

l:授权文件

r:自述文件

 

*数据库重建:

   rpm管理器数据库路径:/var/lib/rpm/

 

                                                                                                               

 

 

 

二:Yum

概述: yum是通过分析rpm的标题数据后,根据各软件的相关性制作出属性依赖时的解决方案,然后可以自动处理软          件的依赖属性的问题,以解决软件安装或删除与升级的问题。

       文件服务器:

      ftp:// 

      http:// 

      nfs://

      file://

     yum客户端配置文件:/etc/yum.conf:为所有仓库提供公共配置

                  /etc/yum.repos.d/*.repo:为仓库的指向提供配置

     配置本地yum

     1.挂载系统安装光盘

     #mount  /dev/cdrom  /mnt/cdrom

    2.配置本地yum源

    #cd  /etc/yum.repos.d

    3.#ls

   会看到四个repo文件

   CentOS-Base.repoyum网络资源的配置文件

   CentOS-Media.repoyum本地资源的配置文件

   4. 修改配置文件vim /CentOS-Media.repo

技术分享

 

   5.禁用默认的yum网资源

   将yum网络源配置文件改名为CentOS-Base.repo.bam,mv /CentOS-Base.repo /CentOS-Base.repo.bak),否则会先在网络源    中寻找适合的包,改名之后直接从本地源读取。

   6.显示仓库列表

   yum repolist

  

   关于repor文件的格式

   所有repository服务器设置都应该遵循如下格式:

 技术分享

serverid是用于区别各个不同的repository,必须有一个独一无二的名称

name是对repository的描述,支持像$releasever$basearch这样的变量

baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:

技术分享

其中url支持的协议有http://  ftp://  file:// 三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:

技术分享

其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch 这样的变量。url之后可以加上多个选项,如gpgcheckexcludefailovermethod等,比如:

技术分享 

   其中gpgcheckexclude的含义和[main]部分相同,但只对服务器起作用,failovermethode有两个选项roundrobin和        priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失败则使用下一个,    依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin.

 

配置国内yum源

   系统默认的yum源速度往往不尽人意,为了达到快速安装的目的,在这里修改yum源为国内源。

   A、修改/etc/yum.repos.d/CentOS-Base.repo

   B、按照repo格式进行仓库指向的定义

   C、yum repolist 进行仓库列表检查是否指向成功

 

   yum的repo配置文件中可用的变量

    $releasever:当前OS的发行版的主版本号;

    $arch:平台

    $basearch:基础平台

    $YUM0-$YUM9

 

查询功能:

   yum [option] [查询工作项目] [相关参数]

主要参数:

  -y:当yum要等待用户输入时,这个选项可以自动提供yes的响应。

  --installroot=/some/path:将该软件安装在/some/path中而不使用默认路径

[查询工作项目][相关参数]这方面的参数有:

    search:搜索某个软件名称或者是描述的重要关键字

       list: 列出目前yum所管理的所有的软件名称与版本,有点类似于rpm -qa

      Info:同上,不过有点类似于rpm -qai的运行结果

      provides:从文件去搜索软件!类似于rpm -qf的功能

 

安装/升级功能:yum [install|update] 软件

yum [option] [查询工作项目] [相关参数]

参数:

    Install:后面接要安装的软件

    update:后面接要升级的软件,若要整个系统都升级,就直接update即可。

 

删除功能:yum [remove] 软件

    

编译安装

1.概述:

当前的一些开发者为了程序能在更好的能在不同的发行系统中运行,由于每个系统发行商对于程序的文件格式不一     样,因此开发者便提供源代码给用户,让用户自己通过编译安装来适应本系统。

2.编译流程:

 Testapp-VERSION-release.src.rp.---->安装后,使用rpmbuild命令制作成二进制格式的rpm----->安装

第一步:由于SRPM需要重新编译,而编译的过程当中,我们至少需要有make与其相关的程序,及gcccc++等其    他的编译用的程序语言来进行编译。同时还要安装“Development Tools,Server Platfrom Development开发组      件。

 

第二步:configure脚本

 选项:指定安装位置、指定启用的特性

  --help:获取其支持使用的选项

   选项分类:

      安装路径设定:

         --prefix=/PATH/TO/SOMEWHERE:指定默认安装位置,默认为/usr/local

         --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置

 

第三步: make 

 

第四步:make install

 

第五步:安装后的配置

 (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

 

     提示:如果configure安装为默认路径,就无须安装后配置文件。。

 

 

        

 

 

 

 

 

                                              


本文出自 “lkm” 博客,请务必保留此出处http://boblkm.blog.51cto.com/10835326/1731024

程序包管理:rpm、yum、编译

标签:程序包管理

原文地址:http://boblkm.blog.51cto.com/10835326/1731024

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!