联系我们联系我们
电子邮箱电子邮箱

使用RPM安装软件

[复制链接]
  • TA的每日心情
    无聊
    2019-9-27 09:24
  • 签到天数: 2 天

    [LV.1]初来乍到

    jia91921314 发表于 2020-9-9 17:14:32
    62 0
    本帖最后由 jia91921314 于 2020-9-9 17:17 编辑

    从一般意义上说。软件包的安装其实就是文件的复制,即把软件所用到的各个文件复制到特定目录。RPM安装软件包,也是如此。但RPM要更进一步,在安装前,它通常要执行以下操作。

    1.检查软件包的依赖: RPM格式的软件包中可包含对依赖关系的描述,如软件执行时需要什么动态链接库,需要什么程序存在以及版本号要求等。当RPM检查时发现所依赖的链接库或程序等不存在或不符合要求时,默认的做法是中止软件包的安装。

    2.检查软件包的冲突:有的软件与某些软件不能共存,软件包的作者会将这种冲突记录到RPM软件包中。安装时,RPM发现有冲突存在,将会中止安装。

    3.执行安装前脚本程序:此类程序由软件包的作者设定,需要在安装前执行。通常是检测操作环境,建立有关目录,清理多余文件等,为顺利安装作准备。

    4.处理配置文件: RPM对配置文件有着特别的处理。因为用户常常需要根据实际情况,对软件的配置文件做相应的修改。如果安装时简单地覆盖了此类文件,则用户又得重新手工设置,很麻烦。这种情况下,RPM将原配置文件换个名字保存了起来(原文件名后级加上. rpmorig)用户可根据需要再恢复,避免重新设置的尴尬。

    5.解压软件包并存放到相应位置这是最重要的部分,也是软件包安装的关键所在。在这一步,RPM将软件包解压缩,将其中的文件一个个存放到正确的位置,同时,文件的操作权限等属性相应的要设置正确。

    6.执行安装后脚本程序:此类程序为软件的正确执行设定相关资源。

    7.更新RPM数据库:安装后,RPM将所安装的软件及相关信息记录到其数据库中,便于以后升级、查询、校验和卸载。

    8.执行安装时触发脚本程序:触发脚本程序是指软件包满足某种条件时才触发执行的脚本程序,它用于软件包之间的交互控制。

    安装命令格式:
    Rpm -i [安装选项1 安装选项2......] [包文件1] [包文件2]...

    注意:可用-install代替i,效果相同。

    参数:包文件1、包文件2是将要安装的RPM包的文件名(:软件包名)

    详细安装选项及其说明见表6-1,通用选项和其他RPM选项及其说明见表6-2

    安装选项
    说明

    安装选项
    说明
    --excludedocs
    不安装软件包中的文档文件
    --nodeps
    不检查依赖关系
    --force
    忽略软件包及文件的冲突
    --noscripts
    不运行预安装和后安装脚本
    --ftpport  Port
    host作为FTP代理
    --percent
    以百分比的形式显示安装进度
    -hor --hash
    安装时输出hash记号(#
    --prefix path
    安装到由path指定的路径下
    --ignorearch
    不校验软件包的结构
    --replacefiles
    替换属于其他软件包的文件
    --ignoreos
    不检查软件包运行的操作系统
    --test
    只对安装进行测试,不实际安装
    --includedocs
    安装软件包中的文档文件




    通用选项

    其他RPM选项
    选项
    说明
    选项
    说明
    --dbpath path
    设置RPM资料库所在的路径为path
    --help
    显示帮助文件
    --rcfile rcfile
    设置rpmrc文件为rcfile
    --initdb
    创建一个新的RPM资料库
    --root path
    RPMpath制定的路径作为“根目录”,这样预安装程序和后安装程序都会安装到这个目录下
    --quiet
    尽可能地减少输出
    -v
    显示附加信息
    --rebuilddb
    重建RPM资料库
    -vv
    显示调试信息
    --version
    显示RPM的当前版本

    实例:安装.rpm软件包

    下面介绍使用RPM命令进行软件安装的方法。

    图片1.png

    进入安装包所在目录位置。之后进行安装.

    图片2.png

    安装.src.rpm源码包

    src.rpm是源码包,是未经编译的源代码文件经过压缩,形成.src.rpm格式的文件。所以,这个源码包是不分什么64位,32位的。换句话说,给你一个源代码,你在64位系统上编译出来的可执行文件就是64位的,在32位系统上编译出来的就是32位的。

    如何安装:

    1.rpm -ivh xxx.src.rpm 执行完毕,会在当前用户目录下生成文件夹"~/rpmbuild'',而这个文件夹包含两个子目录,一是SOURCES ,一是SPECS。其中SPECS存放的.specs文件,而 SOURCES目录存入的是所有文件和补丁以及一些相关的安装文件。

    2.我们cdSPECS目录下,执行rpmbuild -bp *.spec,此命令将SOURCES目录中对应的压缩文件解压,同时将目录下的所有补丁打 上,最后将最终的源代码全部文件放在新建目录BUILD中,这时如果对源码进行修改,便可以在BUILD目录中操作了。

    当然我们也可以直接用rpmbuild -bp *.spec,此命令和上一个命令不同的是,上一个命令只是将源代码文件全部放入BUILD目录下,而这个目录不仅将源代码文件放入BUILD目录下,还自动进行编译,编译生成最终的rpm文件,放置于~/rpmbuild/RPMS目录下

    方法一:

    1.执行rpm -i your-package.src.rpm
    2.cd /usr/src/redhat/SPECS
    3.rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件
    4.cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录
    5../configure 这一步和编译普通的源码软件一样,可以加上参数
    6.make
    7.make install

    方法二:

    1.执行rpm -i you-package.src.rpm
    2.cd /usr/src/redhat/SPECS (前两步和方法一相同)
    3.rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件

    这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 这个目录下,有一个新的rpm包,这个是编译好的二进制文件。执行:

    rpm -i new-package.rpm即可安装完成。
    rpm安装方式:rpm -ivh *.rmp

    有时候在尝试了上面两种方法后发现未能生成/usr/src/redhat/SPECS中的对应文件,可以再尝试第三种方法。

    方法三:

    直接解包成源码:

    1.packName.src.rpm解包,会生成一个.tar.gz或者.tar.bz2的压缩包,那个就是源码 rpm2cpio packName.src.rpm | cpio -id
    2. 解压缩源码包
    tar -jxvf packName.tar.bz(2)
    3. cd packName
    5. ./configure 这一步和编译普通的源码软件一样,可以加上参数
    6. make
    7. make install

    2)使用RPM删除软件

    rpm -e [删除选项1 删除选项2......] [软件名1] [软件名
    注意:可用--erase代替e,效果相同。
    参数:软件名1、软件名2是将要刪除的RPM包的软件名。详细删除选项及其说明见表6-3

    删除选项
    说明
    --nodeps
    不检查依赖关系
    --noscripts
    不运行预安装和后安装脚本
    --test
    只对安装进行测试,并不实际安装


    实例:使用rpm删除软件。

    删除上面实例中安装net-tools程序,如图所示。

    图片3.png

    注意如使用-e选项时是不能删除的,如果定要删除,应使用--nodeps 选项进行删除。

    3)使用RPM升级软件

    命令格式:

    Rpm -U[升级选项 1升级选项2 .. [包文件1] [包文件 2] ...
    注意:可用-upgrade代替-U,效果相同。

    参数:包文件1、包文件2是将要升级的RPM包的文件名(:软件包名)

    详细升级选项及其说明见表

    升级选项
    说明
    --excludedocs
    不安装软件包的文档文件
    --nodeps
    不检查依赖关系
    --force
    忽略软件包及文件的冲突
    --noscripts
    不运行预安装和后安装脚本
    --ftpport port
    指定FTP的端口号为port
    --oldpackage
    允许“升级”到一个老版本
    --ftpproxy host
    host作为FTP代理
    --percent
      以百分比形式显示升级安装的进度
    -h (or --hash)
    升级时输出hash记号(# )
    --prefix path
       将软件包升级到由path指定的路径
    --ignorearch
    不校验软件包的结构
    --replacefiles
      替换属于其他软件包的文件
    --ignoreos
    不检查软件包运行的操作系统
    --replacepkgs
    强制重新升级安装已安装的软件包
    - includedocs
    安装软件包中的文档文件
    - test
    只对升级安装进行测试,不实际安装

    实例:使用RPM升级软件。

    执行命令将net-tools进行升级

    图片4.png

    4)使用RPM查询软件

    命令格式:

    rpm -q [查询选项1 查询选项2......]<软件名|软件包名|文件名>
    注意:可用--query代替-q,效果相同。

    查询选项及其说明见表

    类别
    查询选项
    说明
    信息选项
    -c
    显示配置文件列表
    -d
    显示文档文件列表
    -i
    i表示info,显示软件包的概要信息
    -l
    I表示list,显示软件包中的文件列表
    -s
    显示软件包中文件列表并显示每个文件的状态
    <null>
    显示软件包的全部标识
    --dump
    显示每个文件的所有已校验信息
    --provides
    显示软件包提供的功能
    --queryformator--qf
    以用户指定的方式显示查询信息
    --requiresor-R
    显示软件包所需的功能
    --scripts
    显示安装、卸载校验脚本
    详细选项
    -a
    a表示all,查询所有安装的软件包
    -f<file>
    f表示file,查询<file>属于哪个软件包
    -g<group>
    查询属于<group>组的软件包
    -p<file>or-”)
    p表示package,查询软件包的文件
    --whatprovides<x>
    查询提供了<x>功能的软件包
    --whatrequires<x>
    查询所有需要<x>功能的软件包

    常用查询选项如下:

    #rpm -qa                        //列出当前系统所有已安装的包
    #rpm -qa | grep sql         //查找所有安装过的包含字符串SQL的软件包
    #rpm -q webmin                //查询某一个RPM包是否已安装。注意:参数是“软件名”
    #rpm -qi webmin                 //查询某一个RPM包的详细信息
    #rpm -ql webmin                  //列出某RPM包中所包含的文件
    #rpm -qf /usr/libexec/webmin/xmlrpc.cgi

    //查询某文件属于哪一个RPM包。注意:参数是"文件名”

    #rpm -qip webmin-1. 680-1. noarch. rpm

    //列出指定RPM包的详细信息。注意:参数是"软件包名"

    #rpm -qIp webmin-1.680- 1.noarch. rpm           //列出指定RPM包中的文件

    实例:使用rpm查询ftp软件。

    5)使用RPM检查软件包

    命令格式:rpm -K <软件包名>
    -K检查RPM包的GPG签名,在检查之前应该先导入红帽官方的GPG KEY文件。

    rpm -import /etc/pki/rpm-gpgRPM-GPG-KEY-redhat-release

    6)使用RPM校验软件

    命令格式:

    Rpm -V | -Va <软件名>
    -V 校验软件;-Va 校验所有软件。当一个软件包被安装后,用户可以对其进行检验,以检测软件是否被用户修改过。
    校验出被修改地方。S:文件大小;M:文件权限与类型;5: MD5求和;U:文件的所属用户;G:文件的所属组;T:更改时间。

    7)二进制包

    Linux系统中,扩展名为. bin的文件是二进制文件,它也是源程序经编译后得到的机器语言程序。有一些软件可以发布为以bin为后缀的安装包。
    安装很简单,将下载下来的*. bin文件加上可执行权限,便可以执行安装。下面以流媒体播放器RealPlayer for Linux为例来安装二进制软件包。

    #chmod 755 RealPlayer11GoLD.bin
    #. /RealPlayer11GoLD.bin

    8)源代码包

    Linux,使用的软件都是开源的,用户可以得到软件的源代码,经过编译后再进行安装。源代码包里的文件往往会含有很多源代码文件,比如*.h*.c*.cc*.cpp等。
    安装过程如下:

    #tar zvxf xxx.tar.gz                                        //解压
    #cd xxx
    #./configure                                                //配置
    #./configure --hlep                                        //查询configure选项
    #make                                                        //编译
    #make install                                                //安装
    #make uninstall                                        //卸载

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    发表新帖

    小黑屋|手机版|Archiver|华盟论坛 ( 京ICP备11013304号-8 )

    Powered by 华盟网 X 8.0  © 2001-2013 Comsenz Inc.  华夏黑客同盟