精华内容
下载资源
问答
  • Linux 离线安装本地rpm的命令

    千次阅读 2019-09-10 14:30:57
    linux 安装本地rpm软件包命令,离线安装rpm软件 1、rpm 命令安装 单个安装:rpm -Uvh xxxx.rpm --nodeps --force 批量安装:rpm -Uvh *.rpm --nodeps --force -U:升级软件,若未软件尚未安装,则安装软件。 -v...

    linux 安装本地rpm软件包命令,离线安装rpm软件

    1、rpm 命令安装

    单个安装: rpm -Uvh xxxx.rpm --nodeps --force

    批量安装: rpm -Uvh *.rpm --nodeps --force

    -U:升级软件,若未软件尚未安装,则安装软件。
    -v:表示显示详细信息。
    -h:以"#"号显示安装进度。
    --force:强制安装
    --nodeps:不考虑相依属性的关系

    2、 yum 命令安装

    单个安装: yum localinstall -y xxxx.rpm

    批量安装: yum localinstall -y ./*

    3、区别

    rpm 安装软件 无法解决软件包的依赖关系。
    yum 命令安装时,自动解决相依性的问题。
     

    展开全文
  • RPM包管理器通过建立统一的文件数据库,对在Linux系统中安装、卸载、升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调、有序的整体环境中运行。 使用RPM机制...

    RPM包管理器通过建立统一的文件数据库,对在Linux系统中安装、卸载、升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调、有序的整体环境中运行。

    使用RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名-软件版本-发布次数.操作系统类型.硬件架构类型 .rpm”的文件名形式,如“bash-4.1.2-15.e16_4.x86_64.rpm”。其中硬件平台通常为“i386”“i686”等,表示适用于Intel公司的处理器,“x86_64”表示适用于64位的系统,如果是“noarch”表示不区分硬件架构(支持不同硬件体系的处理器)。

    RPM命令具有相当复杂 的命令格式,结合不同的选项及子选项主要可以实现以下三类功能

    • 查询、验证RPM软件包的相关信息
    • 安装、升级、卸载RPM软件包
    • 维护RPM数据库信息等综合管理

    维护RPM数据库

    重建数据库

    init 初始化的意思

    rebuild 重新建立 db(datebase)数据库

    rebuilddb重新建立数据库

    [root@localhost ~]#rpm --rebuilddb
    或
    [root@localhost ~]#rpm --initdb
    
    导入验证公钥

    import 导入的意思

    [root@localhost ~]#rmp --import
    /media/cdrom/RPM-GPG-KEY-redhat-release
    

    查询RPM软件包信息

    查询已安装的RPM软件包信息

    rpm [选项] 软件包

    查询功能主要通过 “ -q ” 来实现,主要针对当前系统中已经安装的软件包

    • -qa 查看已安装所有软件包
    • -qi 查看软件包更详细信息
    • -ql 查看软件包安装的所有文件包括路径
    • -qf 根据指定文件,查看属于哪个软件包
    • -qc 查看此软件包所有配置文件以.conf .cnf .ini文件属于配置文件,包括路径
    • -qd 查看软件包的文档(包括路径)
    查询未安装的RPM软件包信息

    rpm [选项] 软件包

    通过 “ -qp ” 可以针对尚未安装的RPM包文件进行查询

    • -qpi 查看未安装软件包详细信息
    • -qpl 查看该软件包准备要安装的所有目标目录、文件列表

    安装和升级RPM软件包

    • rpm -i 指安装指定的软件包

    • rpm -U 升级指定的软件包

    • rpm -v显示详细信息

    • rpm -h友好的显示文件大小

    卸载指定的RPM软件包

    • rpm -e + 软件包名

    • rpm -v显示详细信息

    • rpm -h友好的显示文件大小

    通常安装指定软包包时使用:rpm -ivh + 软件包名,卸载指定软件包时使用:rpm -evh +软件包名

    如何查看yum源:

    首先找一个目录作为挂载点,这里我们就使用/mnt,将/dev/sr0挂载到/mnt/目录下

    mount /dev/sr0 /mnt

    /mnt/packages (packages 包 里面有各种安装包)

    yum list

    挂载语法:

    mout 设备名称 挂载点*(本地目录)*

    rpm安装:

    在这里插入图片描述
    在这里插入图片描述

    rpm安装过程中遇到依赖性问题,无法解决

    yum安装:

    可以使用yum仓库来解决:(如果使用官方,则使用的都是最新包)

    [root@localhost ~]# yum install httpd -y
    已加载插件:fastestmirror, langpacks
    base                                                         | 3.6 kB  00:00:00     
    extras                                                       | 2.9 kB  00:00:00     
    updates                                                      | 2.9 kB  00:00:00     
    updates/7/x86_64/primary_db                                  | 2.8 MB  00:00:00     
    Loading mirror speeds from cached hostfile
     * base: centos.ustc.edu.cn
     * extras: centos.ustc.edu.cn
     * updates: centos.ustc.edu.cn
    正在解决依赖关系
    …………省略部分内容…………
    已安装:
      httpd.x86_64 0:2.4.6-90.el7.centos                                                
    
    作为依赖被安装:
      apr.x86_64 0:1.4.8-5.el7                       apr-util.x86_64 0:1.5.2-6.el7      
      httpd-tools.x86_64 0:2.4.6-90.el7.centos       mailcap.noarch 0:2.1.41-2.el7
      
    

    rpm卸载:

    [root@localhost ~]# rpm -evh bind
    准备中...                          ################################# [100%]
    正在清理/删除...
       1:bind-32:9.9.4-50.el7             ################################# [100%]
    
    

    yum卸载:

    [root@localhost ~]# yum -y remove httpd
    已加载插件:fastestmirror, langpacks
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 httpd.x86_64.0.2.4.6-90.el7.centos 将被 删除
    --> 解决依赖关系完成
    
    ……………省略部分内容………………
    
    删除:
      httpd.x86_64 0:2.4.6-90.el7.centos                                                
    
    完毕!
    
    

    yum私网仓库

    yum公网仓库

    • 1)自建仓库

    • 2)官方仓库

    yum list 加载yum列表
    yum安装语法:yum -y install 软件包
    yum 包卸载语法:yum -y remove 软件包
    清空缓存:yum -clean all (出现卡顿,延迟可使用)

    安装过成功需要手动确认, 安装时或卸载时 -y 可以免交互

    在这里插入图片描述
    在这里插入图片描述

    在无网络情况下建立本地yum仓库

    yum文件,都以.repo为结尾的配置文件

    进入yum本地配置文件

    [root@localhost ~]# ping www.baidu.com       //确定目前无网络状态
    ping: www.baidu.com: 未知的名称或服务
    [root@localhost ~]# cd /etc/yum.repos.d/      //进入yum配置文件目录
    [root@localhost yum.repos.d]# ls
    CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
    

    repo结尾的全是配置文件(需要使用网络,因为我们是在无网络情况下,所以暂时用不到,可以创建一个目录移动进去)

    [root@localhost yum.repos.d]# mkdir yum
    [root@localhost yum.repos.d]# ls
    CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  yum
    [root@localhost yum.repos.d]# mv CentOS* yum
    [root@localhost yum.repos.d]# ls
    yum
    

    现在,我们在yum.repos.d里面建立手工配置,建立一个文件,名字随意,如:abc

    格式 vim abc.repo

    进入后进行配置(如下图):

    [文件名字]

    描述信息,yum仓库的名称

    指定软件所放的路径 ,file:// 是固定格式 /mnt是路径

    1为开启yum仓库

    0为关闭校验,不需要检查了

    :wq 保存退出
    在这里插入图片描述
    这时使用yum list 就可以加载出来软件包了

    [root@localhost yum.repos.d]# vim abc.repo
    [root@localhost yum.repos.d]# yum list
    已加载插件:fastestmirror, langpacks
    abc                                             | 3.6 kB     00:00     
    (1/2): abc/group_gz                               | 156 kB   00:00     
    (2/2): abc/primary_db                             | 3.1 MB   00:00     
    Loading mirror speeds from cached hostfile
    已安装的软件包
    GConf2.x86_64                         3.2.6-8.el7             @anaconda
    GeoIP.x86_64                          1.5.0-11.el7            @anaconda
    ModemManager.x86_64                   1.6.0-2.el7             @anaconda
    ModemManager-glib.x86_64              1.6.0-2.el7             @anaconda
    NetworkManager.x86_64                 1:1.8.0-9.el7           @anaconda
    NetworkManager-adsl.x86_64            1:1.8.0-9.el7           @anaconda
    ………………省略部分内容…………
    

    在这里插入图片描述

    然后就可以进行安装了

    [root@localhost yum.repos.d]# yum -y install httpd
    已加载插件:fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
    正在解决依赖关系
    --> 正在检查事务
    ---> 软件包 httpd.x86_64.0.2.4.6-67.el7.centos 将被 安装
    --> 正在处理依赖关系 httpd-tools = 2.4.6-67.el7.centos,它被软件包 httpd-2.4.6-67.el7.centos.x86_64 需要
    --> 正在检查事务
    ---> 软件包 httpd-tools.x86_64.0.2.4.6-67.el7.centos 将被 安装
    --> 解决依赖关系完成
    
    …………省略部分内容…………
    
    已安装:
      httpd.x86_64 0:2.4.6-67.el7.centos                                   
    
    作为依赖被安装:
      httpd-tools.x86_64 0:2.4.6-67.el7.centos                             
    
    完毕!
    
    

    安装成功。通过实验可以看本地yum源会存在列表中没有此源文件而造成无法安装RPM包的问题,但是本地

    yum源是可以在无网络情况下正常安装RPM包。

    并且yum可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    展开全文
  • Linux 查看rpm安装

    千次阅读 2011-10-18 15:11:21
    Linux 查看rpm安装   rpm -qpl xxxxxx.rpm 安装RPM包的时候,一般是作为“root”登陆。 查询RPM的命令可用:> man rpm 1.如何安装rpm软件包 rmp软件包的安装可以使用程序rpm来完成。执行下面的命令

    Linux 查看rpm安装

     

    rpm -qpl xxxxxx.rpm

    安装RPM包的时候,一般是作为“root”登陆。

    查询RPM的命令可用:> man rpm

    1.如何安装rpm软件包

    rmp软件包的安装可以使用程序rpm来完成。执行下面的命令

    rpm -i your-package.rpm

    其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。

    安装过程中可能出现下面的警告或咛崾荆?

    ... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有

    的文件,缺省时这样的情况下是无法正确安装的可以用

    rpm --force -i 强制安装即可

    ... is needed by ...

    ... is not installed ... 此包需要的一些软件你没有安装可以用

    rpm --nodeps -i 来忽略此信息

    也就是说,rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包

    都能安装上,但这种强制安装的软件包不能保证完全发挥功能

    2.如何安装.src.rpm软件包

    有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时

    需要进行编译。这类软件包有两种安装方法,

    方法一:

    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即可安装完成。

    3.如何卸载rpm软件包

    使用命令 rpm -e 包名,包名可以包含版本号等信息,但是不可以有后缀.rpm

    比如卸载软件包proftpd-1.2.8-1,可以使用下列格式:

    rpm -e proftpd-1.2.8-1

    rpm -e proftpd-1.2.8

    rpm -e proftpd-

    rpm -e proftpd

    不可以是下列格式:

    rpm -e proftpd-1.2.8-1.i386.rpm

    rpm -e proftpd-1.2.8-1.i386

    rpm -e proftpd-1.2

    rpm -e proftpd-1

    有时会出现一些错误或者警告:

    ... is needed by ... 这说明这个软件被其他软件需要,不能随便卸载

    可以用rpm -e --nodeps强制卸载

    4.如何不安装但是获取rpm包中的文件

    使用工具rpm2cpio和cpio

    rpm2cpio xxx.rpm | cpio -vi

    rpm2cpio xxx.rpm | cpio -idmv

    rpm2cpio xxx.rpm | cpio --extract --make-directories

    参数i和extract相同,表示提取文件。v表示指示执行进程

    d和make-directory相同,表示根据包中文件原来的路径建立目录

    m表示保持文件的更新时间。

    5.如何查看与rpm包相关的文件和其他信息

    下面所有的例子都假设使用软件包mysql-3.23.54a-11

    1.我的系统中安装了那些rpm软件包

    rpm -qa 讲列出所有安装过的包

    如果要查找所有安装过的包含某个字符串sql的软件包

    rpm -qa |grep sql

    2.如何获得某个软件包的文件全名

    rpm -q mysql 可以获得系统中安装的mysql软件包全名,从中可以获得

    当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11

    3.一个rpm包中的文件安装到那里去了?

    rpm -ql 包名

    注意这里的是不包括.rpm后缀的软件包的名称

    也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。

    如果只是想知道可执行程序放到那里去了,也可以用which,比如

    which mysql

    4.一个rpm包中包含那些文件

    一个没有安装过的软件包,使用rpm -qlp ****.rpm

    一个已经安装过的软件包,还可以使用rpm -ql ****.rpm

    5.如何获取关于一个软件包的版本,用途等相关信息?

    一个没有安装过的软件包,使用rpm -qip ****.rpm

    一个已经安装过的软件包,还可以使用rpm -qi ****.rpm

    6.某个程序是哪个软件包安装的,或者哪个软件包包含这个程序

    rpm -qf `which 程序名` 返回软件包的全名

    rpm -qif `which 程序名` 返回软件包的有关信息

    rpm -qlf `which 程序名` 返回软件包的文件列表

    注意,这里不是引号,而是`,就是键盘左上角的那个键。

    也可以使用rpm -qilf,同时输出软件包信息和文件列表

    7.某个文件是哪个软件包安装的,或者哪个软件包包含这个文件

    注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以

    用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。

    首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf例如:

    # whereis ftptop

    ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz

    # rpm -qf /usr/bin/ftptop

    proftpd-1.2.8-1

    # rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt

    proftpd-1.2.8-1

    总结:

    获得软件包相关的信息用rpm -q,q表示查询query,后面可以跟其他选项,比如

    i 表示info,获得软件包的信息;

    l 表示list,获得文件列表;

    a 表示all,在所有包中执行查询;

    f 表示file,根据文件进行相关的查询;

    p 表示package,根据软件包进行查询

    需要的查询条件可以使用grep产生,或者从"` `"中的命令行产生

    6.关于rpm软件包的一些相关知识

    1.什么是rpm

    rpm 即RedHat Package Management,是RedHat的发明之一

    2.为什么需要rpm

    在一个操作系统下,需要安装实现各种功能的软件包。这些软件包一般都有各自的

    程序,但是同时也有错综复杂的依赖关系。同时还需要解决软件包的版本,以及安装,

    配置,卸载的自动化问题。为了解决这些问题,RedHat针对自己的系统提出了一个

    较好的办法来管理成千上百的软件。这就是RPM管理系统。在系统中安装了rpm管理系统

    以后,只要是符合rpm文件标准的打包的程序都可以方便的安装,升级,卸载

    3.是不是所有的linux都使用rpm

    任何系统都需要包管理系统,因此很多linux都使用rpm系统。但rpm系统是为RH专门

    但是TL,Mandrake等系统也都使用rpm。由于rpm的源程序可以在别的系统上进行编译,

    所以有可能在别的系统上也使用rpm

    除了rpm,其他一些系统也有自己的软件包管理程序,例如debian的deb包,

    slakware也都有自己的包管理系统

    4.rpm包的文件名为什么那么长

    rpm包的文件名中包含了这个软件包的版本信息,操作系统信息,硬件要求等等。

    比如mypackage-1.1-2TL.i386.rpm,其中mypackage是在系统中登记的软件包的名字

    1.1是软件的版本号,2是发行号,TL表示用于TL操作系统,还可能是RH等。i386表示

    用于intel x86平台,还可能是sparc等。

    5.软件包文件名中的i386,i686是什么意思

    rpm软件包的文件名中,不仅包含了软件名称,版本信息,还包括了适用的硬件架构

    的信息。

    i386指这个软件包适用于intel 80386以上的x86架构的计算机(AI32)

    i686指这个软件包适用于intel 80686以上(奔腾pro以上)的x86架构的计算机(IA32)

    noarch指这个软件包于硬件架构无关,可以通用。

    i686软件包的程序通常针对CPU进行了优化,所以,向后兼容比较用以,i386的包在

    x86机器上都可以用。向前一般不兼容。不过现在的计算机,奔腾pro以下的CPU已经很少

    用,通常配置的机器都可以使用i686软件包

    6.不同操作系统发行的rpm包可否混用?

    对于已经编译成二进制的rpm包,由于操作系统环境不同,一般不能混用。

    对于以src.rpm发行的软件包,由于需要安装时进行本地编译,所以通常可以在不同

    系统下安装。

    7.使用rpm时遇到的一些特殊问题

    Q 我用rpm -e **.rpm无法删除rpm包

    A 包名不要包括rpm,

    rpm -e 包名,可以包含版本号等信息,但是不可以有后缀.rpm

    Q 在MS的系统下有没有读RPM文件的工具?

    A wincmd with rpm plugins.....

    Q 是否可以通过ftp安装安装升级rpm包?

    A 可以。rpm -ivh ftp://xxxxxxxx/PATH2SomeRPM

    Q rpm安装时已有的包版本过高怎么办?

    A 有时由于安装的软件包太老,而系统中相关的软件包版本比较新,所以可能需要

    安装的包依赖的一些文件会找不到。这时有两种解决办法,

    第一是在系统文件中找到和需要的文件功能相同或相似的文件,做一个符号链接到

    需要的目录下。

    第二是下载安装新版本的软件包。
    展开全文
  • Linuxrpm本地打包

    千次阅读 2018-08-14 11:41:39
    Linuxrpm本地打包

    Linux之rpm本地打包

    rpm简介

    • RPM是RPM Package Manager(RPM软件包包管理器)的缩写,这一文件格式起源于RedHat操作系统,后来逐渐成为行业里面的标准,目前广泛应用于RHEL、Centos、Fedora等各种linux发行版中。
    • rpm在linux操作系统中的作用类似于Windows操作系统里面的”添加/删除程序”

    rpm相关命令

    安装命令

    linux安装包的包文件分两种:
    二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译。源代码包(Source)经常以.src.rpm作为文件后缀名。

    rpm -ivh ***.rpm: 安装软件(并且显示安装进度 --install--verbose--hash)
    rpm -Uvh ***.rpm: 升级软件(--Update)
    rpm -e: 卸载软件
    rpm -q [软件名称]: 查询程序是否安装
    rpm -qa: 查询已经安装的所有软件(Query All)
    rpm -qi [软件名称]: 列出该软件的详细信息
    rpm -qf [指定文件名]: 查找指定文件属于哪个RPM软件包(Query Files)
    rpm -qc [软件名称]: 列出该软件的所有文件
    rpm -qpi [软件名称]: 列出RPM软件包的描述信息(Query Packages install package(s))
    rpm -qpl [软件名称]: 列出该软件的所有文件(Query Packages list)
    rpm -qRp [软件名称]: 列出该软件的依赖(Query Rely Packages)
    rpm -Va [软件名称]: 校验所有的RPM软件包,查找丢失的文件(View List) 
    
    更多的选项使用, 请查阅man rpm

    rpm命令的常用参数(Install/Upgrade/Erase options:)

    -i, --install install package(s)
    -v, --verbose provide more detailed output
    -h, --hash print hash marks as package installs (good with -v)
    -e, --erase erase (uninstall) package
    -U, --upgrade=<packagefile>+ upgrade package(s)
    --replacepkge 无论软件包是否已被安装,都强行安装软件包
    --test 安装测试,并不实际安装
    --nodeps 忽略软件包的依赖关系强行安装
    --force 忽略软件包以及文件的冲突
    
    Query options (with -q or --query):
    -a, --all query/verify all packages
    -p, --package query/verify a package file
    -l, --list list files in package
    -d, --docfiles list all documentation files
    -f, --file query/verify package(s) owning file

    打包命令 rpmbuild

    • rpmbuild是rpm最新的打包工具,可以制作和发布rpm格式的源码包或者二进制包。主要依赖本地源码文件和spec说明文件,来进行安装构建。

    安装rpmbuild

    centos上:yum install rpm-build -y
    ubuntu上:sudo apt-get install rpmbuild -y

    rpmbuild常用命令

    rpmbuild [options] [spec文档|tarbal包|源码包]
    1. -bb 只建立二进制包(常用)
    2. -ba 建立源码与二进制包(常用)
    3. -bi 执行spec中%pre, %build与%install(准备, 编译并安装)
    4. 一些不常用options:-bl, -bc, -bp, -tp, -tc, -ti, -ta, -tb, -ts

    rpmbuild打包一般步骤

    • 根据rpmbuild标准,创建打包的目录结构
    • 将源码和辅助文件放到指定目录
    • 编写spec文件,放到指定目录
    • 根据需要构建rpm,或者rpmsrpm等。

    rpmbuild构建目录结构

    文件名类型说明
    SPECS目录包含rpm的xxx.spec文件(打包的描述文件)
    SOURCES目录包含源码包(如.tar包)和所有patch补丁、service启动文件等
    BUILD目录源码包被解压至此, 并在该目录的子目录完成编译
    BUILDROOT目录存放编译后的文件的临时目录(保存%install阶段安装的文件)
    RPMS目录经过编译成功后, 打包文件放在这个目录, 包含i386、i686、noarch等次级目录
    SRPMS目录包含.src.rpm的SPRM包(通常用于审核和升级软件包)

    rpmbuild内置变量

    rpmbuild --showrc 可查看内置的变量
    
    常用的几个变量:
    
    $RPM_BUILD_DIR /$HOME/rpmbuild/BUILD
    $RPM_BUILD_ROOT /$HOME/rpmbuild/BUILDROOT
    %{_sysconfigdir} /etc
    %{_sbindir} /usr/sbin
    %{_bindir} /usr/bin
    %{_prefix} /usr
    %{_localstatedir} /var
    更多的可以查看 --showrc

    rpmbuild spec规范说明

    Summary: 软件包的内容概要描述
    Name: 软件包的名称(spec文件名与其一致)
    Version: 软件的实际版本号,具体和源码包一致
    Release: 软件包的发布实际版本号
    Url: 软件的主页
    License: 软件授权方式(GPL等)
    Group: 软件分组,如(Application/System)
    Source: 软件的来源
    Patch: 补丁patch file依赖的软件,安装的时候需要检查的
    BuildRoot: 安装或者编译时使用的"虚拟目录",一般默认 
    BuildRequires: 编译过程中需要的软件
    Requires: 依赖的软件, 安装的时候需要检查的
    Packager: 软件的打包者
    Vendor: 软件发行商或者打包组织信息,如(Apache Software Foundation)
    
    %description: 软件包描述
    %prep: 编译前预处理。如: 1.打补丁; 2. 解压源码等
    %setup: 解压源码(一般是位于%prep下的macro, 自动解压源码)
    %build: 编译
    %install: 安装, 即把一些可执行文件和配置复制到目标目录中。
    %clean: 清理一些暂存文件
    %files: 定义哪些文件或者目录会放入rpm中
    %pre: rpm安装前执行的动作
    %post: rpm安装后执行的动作
    %preun: 卸载前执行脚本程序(preun)开始执行
    %postun: 卸载后执行脚本程序(postun)开始执行

    rpmbuild spec 示例

    %global pypi_name aodh
    %{!?upstream_version: %global upstream_version %{version}%{?milestone}}
    Name:       openstack-aodh
    Version:    2.0.0
    Release:    %{es_versions}%{?dist}
    Summary:    OpenStack Telemetry Alarming
    License:    ASL 2.0
    URL:        https://github.com/openstack/aodh.git
    BuildArch:  noarch
    Source0:    http://tarballs.openstack.org/%{pypi_name}/%{pypi_name}-%{version}.tar.gz
    
    ...
    %description
    Aodh is the alarm engine of the Ceilometer project.
    
    %prep
    %setup -q -n %{pypi_name}-%{upstream_version}
    
    %build
    %{__python2} setup.py build
    
    %install
    %{__python2} setup.py install --skip-buid --root %{buildroot}
    
    %files -n python-aodh
    %{python2_sitelib}/aodh
    ... 
    %files common
    %doc README.rst
    %dir %{_sysconfdir}/aodh
    %attr(-, root, aodh) %{_datadir}/aodh/aodh-dist.conf
    %config(noreplace) %attr(-, root, aodh) %{_sysconfdir}/aodh/aodh.conf
    ...
    %changelog

    如何从python源码包构建rpm

    • 在python源码目录执行
    python setup.py bdist_rpm # 即可在当前dist目录下生成rpm包
    • 定制spec:
    python setup.py bdist_rpm --spec-only # 只生成dist/<module>.spec
    # 重新编辑 dist/<module>.spec
    python setup.py bdist_rpm --spec-file=dist/<module>.spec
    • 在了解了rpm和打包基本知识后,就可以结合estack-packages中打包方法,编写打包spec,然后提交jenkins打包。
    • estack-packages操作方法详见:build_rpm

    rpm安装卸载注意

    rpm -ivh

    • -i: 被用来安装一个新的软件包。总是用于内核安装和升级使用。
    • 如果环境已经安装了该软件包,会提示包已经存在的警告。

    rpm -Uvh

    • -U: 使用这个选项时,如果环境不存在该包,则安装上;如果当前已经安装了一个包,那么升级当前已安装的包到一个新的版本。此外,在新安装的包安装后,所有其他版本的软件包将被移除
    • 相比于-i,对于非内核的软件包使用、或者非固定版本的软件包,使用-U是个更好的选择。如果是内核软件包安装,最好使用-i,避免使用-U导致的内核更新,引起下次启动时,内核无法引导的问题。

    rpm -e

    • -e: 只是像-i一样简单的移除该软件包,如果有其他安装包依赖此包,则报错。强制移除,需要添加-nodeps选项。

    rpm spec配置对rpm不同命令的影响

    • rpm spec中, 针对%files指令部分的文件列表,对于某些特定的配置文件,需要使用%config指令来做特殊处理。因为当软件包被移除,安装和升级期间,RPM会执行额外的处理(保存历史文件或者新文件等)。
    • 如上文spec示例中的:
    %config(noreplace) %attr(-, root, aodh) %{_sysconfdir}/aodh/aodh.conf
    • %config对rpm包影响如下图所示:
      rpm_config
    • 上图主要包括以下三种情况,以rpm报中的a.txt为例。
    • %config情况下使用rpm-Uvh
    • 如果磁盘上原始文件a.txt无改动,则会被新版本文件a.txt取代;
    • 如果磁盘上原始文件a.txt有改动,但是新版本文件并没有改动,则磁盘上原始文件保持不变;
    • 如果新版本文件有改动,则新版本文件a.txt取代原始文件a.txt,而原始文件a.txt改名变成a.txt.rpmsave
    • %config(noreplace)情况下使用rpm-Uvh
    • 如果磁盘上原始文件a.txt有改动,但是新版本文件并没有改动,则磁盘上原始文件保持不变;
    • 如果新版本文件有改动,则保留原始文件a.txt,来自于新版本的a.txt改名变成a.txt.rpmsave
    • %config(noreplace)情况下使用rpm -e
    • 如果文件a.txt无改动,则会被删除; 如果文件a.txt有改动,则生成a.txt.rpmsave
    • 更多详情参考: rpm_config

    JackDan Thinking

    展开全文
  • Linux软件安装rpm、yum

    千次阅读 2018-05-08 18:11:44
    rpm文件 .rpm,yum(redhat系列)大多数官方下载的安装包都是rpm格式rpm指令rpm -i /path/Package_Name:安装rpm安装包rpm -qa:查询所有已经安装的 .rpm 安装包rpm -q Package_Name:查询指定的包是否已安装rpm -...
  • 对于红帽系统来说,安装软件包一般的情况下用rpm可以解决,但是,如果碰上软件包的依赖性问题,rpm就不是很好解决了。...一般rpm 安装使用rpm -ivh (软件包名称) 例如: 查询是否安装成功用 rpm
  • 2、本地已经下载好对应版本的Linux源。 第一步,进入到本地源的路径 [root@ ]# cd /media/RHEL_6.5\ x86_64\ Disc\ 1/Packages/ 第二部,查找想要安装的包(以ncurses-devel-5.7-3.20090208.el6.x86_64.rpm为例) ...
  • Linux】Centos yum 安装保存RPM本地

    千次阅读 2020-07-12 22:10:07
    Centos中yum安装的包保存到本地 1、修改yum配置文件 sed -i "s/keepcache=0/keepcache=1/g" /etc/yum.conf 2、清理yum缓存 yum clean all 3、yum安装 yum -y install gcc 4、查看rpm包 /var/cache/yum/x86_64/7/...
  • RHEL完全离线安装NTP服务器 内网环境安装NTP服务,一般有2种方式。 1、如果没有现成的时间同步服务器。一台主机A做为NTP服务器,其它主机B只安装ntpdate服务,B主机...1、下载合适的NTP安装包(RPM) 查询主机Linu...
  • Linux下通过rpm安装mysql

    千次阅读 2019-04-23 08:22:06
    检查本地是否安装过其他版本的mysql [root@james ~]# rpm -qa | grep -i mysql MySQL-client-5.5.48-1.linux2.6.x86_64 MySQL-server-5.5.48-1.linux2.6.x86_64 二 .若是安装过需要先卸载 [root@james ~]# rpm -e --...
  • [Linux基础]-- yum安装(卸载)本地rpm

    万次阅读 2017-01-22 09:54:44
    举例 一、yum安装和卸载jdk   1、先查看是否有版本: #rpm -qa|grep jdk 2、再卸载 ...#yum remove java-*-openjdk –y ...#yum remove java-1.8.0-openjdk-...3、使用yum安装本地jdk的rpm包   #yum locali...
  • Linux安装程序有很多种方法,比如rpm安装,deb包安装,tar.gz源代码包安装,tar.bz2源代码包安装,apt方式安装,yum方式安装,bin文件安装等等。这里主要说一下rpm安装和yum安装rpm安装 rpm早期被称为RedHat ...
  • Linux服务器无法上网,离线安装工具(如.net core)时可能会提示缺少gcc,使用该离线包一步即可完成GCC的安装
  • (1)SELinux是Linux2.6以上版本捆绑的一个安全模块 (2)SELinux配置复杂,容易跟其他程序冲突,所以建议关闭 vi /etc/selinux/config 设置SELINUX=disabled 并使用reboot命令进行重启服务器让其生效 2、替换yum...
  • linux中用rpm安装mysql5.5

    千次阅读 2018-01-18 23:47:29
    一 检查本地是否安装过其他版本的mysql[root@iZuf6ih01h8fzeziddwkfdZ opt]# rpm -qa|grep -i mysqlMySQL-server-5.5.59-1.el7.x86_64MySQL-client-5.5.59-1.el7.x86_64MySQL-devel-5.5.59-1.el7.x86_64二 若是安装...
  • yum安装本地rpm

    千次阅读 2021-03-02 15:00:56
    进入下载了rpm包的那个目录,然后执行: sudo yum localinstall xxx.rpm
  • Linux软件rpm方式安装,yum源地址变更

    千次阅读 2018-05-08 09:17:43
    e 包名 如果已经有了安装包,卸载rpm -ivh 包名 安装rpm包 yum remove 包名 yum卸载安装包yum安装:改变yum源地址:yum相当于maven的中心库,地址是可以改变的cd /etc/yum.repos.d 本地的yum源库路径配置文件...
  • 如果电脑可以连接yum源,可以直接使用yum install telnet安装telnet客户端但是有时候电脑无法连接yum源,那么离线安装,可以下载离线包,也可以直接用镜像中的文件安装使用镜像中的文件操作方法:1 mkdir /mnt/cdrom...
  • 主要介绍了yum安装(卸载)本地rpm包的方法,非常不错,具有参考借鉴价值,需要的的朋友参考下
  • LINUXRPM安装软件

    千次阅读 2019-04-26 20:59:33
    什么是RPM安装包、RPM命令? Rehat发明的一种软件包安装工具和安装包格式。 目前大部分是编译好的,不包含源代码。 以Unix2dos的安装为例演示过程 wget ...
  • Linux安装rpm技巧

    千次阅读 2008-11-24 23:59:00
    1.如何安装rpm软件包rmp软件包的安装可以使用程序rpm来完成。执行下面的命令:rpm -i your-package.rpm其中your-package.rpm是你要安装rpm包的文件名,一般置于当前目录下。安装过程中可能出现下面的警告或者提示...
  • Linux下查看rpm 包的安装路径

    万次阅读 2013-12-27 15:16:03
    Linux下查看rpm 包的安装路径 rpm -qpl xxxxxx.rpm 1.如何安装rpm软件包  rmp软件包的安装可以使用程序rpm来完成。执行下面的命令  rpm -i your-package.rpm  其中your-package.rpm是你要安装rpm...
  • centos安装本地rpm

    千次阅读 2020-07-21 11:01:37
    sudo yum localinstall package.rpm | path/package.rpm
  • 内附:Linux,通过本地的FTP服务器添加删除RPM包,RPM,FTP 实验抓图文档,
  • yum安装本地rpm软件

    千次阅读 2019-01-23 15:55:30
    面对无法联网的centos系统,安装rpm软件包是一个比较耗时的工作,尤其是那些包含很多依赖的软件包,如果用rpm命令安装,可以说是一个噩梦。这里根据个人实践发布一个比较完整方便的解决方案。(注:本方案在centos6....
  • 卸载mysql输入如下命令,查看是否已安装mysql#rpm -qa | grep -i mysql如果系统返回以mysql开头的软件包信息(如图所示),则需先卸载已装mysql版本;如果没有返回信息,则无需进行卸载操作。卸载已安装的mysql软件包...
  • Linuxrpm、yum、源码包的安装

    千次阅读 2018-12-24 13:25:36
    Linux下软件rpm、yum、源码的安装 一、rpm安装 rpm:redhat packages manager红帽软件包管理工具,它的安装方式类似于windows下安装.exe格式的文件比较像。在Linux操作系统下,几乎所有的软件均通过RPM进行安装、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,306
精华内容 33,322
关键字:

linux使用本地rpm安装

linux 订阅