linux软件包管理

在windows下安装软件很简单,大多数软件都只需要按照提示完成安装操作。但是,在linux下安装软件稍微复杂了一点,需要用到命令行工具。下面通过在Red Hat Enterprise Linux 5下安装RPM软件包来了解Linux下的安装

1.使用rpm命令。

RPM 全称为(Redhat Package Manager),最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。由此,Red Hat Enterprise Linux5 也内置了这个命令行小工具,用它来管理RPM软件包。可以使用rpm来查询已经安装的软件包、安装软件、升级软件和卸载软件等信息。

RPM 命令常用参数:

-q 在系统中查询软件或查询指定 rpm 包的内容信息

-i 在系统中安装软件

-U 在系统中升级软件

-e 在系统中卸载软件

-h 用 #(hash) 符显示 rpm 安装过程

-v 详述安装过程

-p 表明对 RPM 包进行查询,通常和其它参数同时使用,如:

-qlp 查询某个 RPM 包中的所有文件列表

-qip 查询某个 RPM 包的内容信息

2.RPM 命令参数使用方法

以上参数有些需要组合使用,比如说 rpm -h package.rpm 是没有意义的,但 rpm -ih package.rpm 即表示安装 package 并用 # 符显示安装进度。

• 安装 RPM 包 :

# rpm -ivh package.rpm

• 升级 RPM 包命令 :

# rpm -Uvh package.rpm

• 卸载 RPM 包命令 :

# rpm -ev package

• 查询 RPM 包中包含的文件列表命令:

# rpm -qlp package

• 查询 RPM 包中包含的文件列表命令:

# rpm -qlp package

• 查询 RPM 包中包含的内容信息命令:

# rpm -qip package

• 查询系统中所有已安装 RPM 包 :

# rpm -qa

3.RPM 包管理示例

以下步骤描述了一个普通用户安装 IBM Lotus Notes V85 ( 以下简称 Notes) 的典型操作过程。 Notes 的 RPM 包名为 ibm_lotus_notes-8.5.i586.rpm 。

01.首先查询是否该软件是否已经在系统中存在      
    # rpm -qa | grep ibm_lotus_notes

注: 如果返回信息为空那么说明该软件还未被安装。

02.查询 Notes 软件包内容:  
    # rpm -qip ibm_lotus_notes-8.5.i586.rpm 
    Name        : ibm_lotus_notes           Relocations: /opt/ibm/lotus/notes
    Version     : 8.5                               Vendor: IBM 
    Release     : 20081211.1925             Build Date: Sat 13 Dec 2008 09:38:55 AM CST
    Install Date: (not installed)               Build Host: dithers.notesdev.ibm.com
    Group       : Applications/Office          
    Source RPM: ibm_lotus_notes-8.5-20081211.1925.src.rpm
    Size        : 603779427                        License: Commercial
    Signature   : DSA/SHA1, Sat 13 Dec 2008 09:43:02 AM CST, Key ID 314c8c6534f9ae75
    Summary     : IBM Lotus Notes
    Description :
    IBM Lotus Notes software provides a robust ..

03.安装 Notes:      
    # rpm -ivh ibm_lotus_notes-8.5.i586.rpm

返回信息 :
      
    Preparing...             ########################################### [100%]
    1:ibm_lotus_notes        ########################################### [100%]

04.升级 Notes:
    若今后需要基于该版本升级至更高版本的 Notes( 缝 .0 - ibm_lotus_notes-9.0.i586.rpm),则使用 -U 参数:

# rpm -Uvh ibm_lotus_notes-8.5.i586.rpm 
    注:在该步骤中如果使用 -i 则系统通常会报文件冲突错误,无法正常安装。

05.卸载 Notes
    注意:卸载软件使用软件名称,而不是包文件名:

# rpm -ev ibm_lotus_notes

4.软件包依赖性关系

由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直令用户感到头疼。如果 package_a 依赖于 package_b,那么在一个没有安装 package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。

基于以上 package_a 和 package_b 的关系,在一个干净的系统中 ( 未安装 package_a 或 package_b),欲安装 package_a,错误通常会表现为:

RHEL 5.2
    
    # rpm -ivh package_a.rpm

error: Failed dependencies:
        pacakge_b = version info is needed by package_a

查询 RPM 包的依赖关系,   使用 rpm -qRp:
    
    # rpm -qRp package_a.rpm

package_b = version_info
  或
    package_b >= version_info
  或
    package_b <= version_info

对于 package_a,正确的安装方法应该是:
    ##RPM
     # rpm -ivh package_b.rpm
     # rpm -ivh package_a.rpm

5.嵌套的依赖关系

如上示例为最理想的依赖关系,实际应用中往往最令用户头疼的是 package_a 依赖于 package_b/c/d/e/f 等多个包 , 而 package_b/c/d/e/f 等包又依赖于 package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 ... ... 为保证软件的正常使用,必须找到所有依赖包以及子依赖包并且安装。过多的依赖关系大大降低了 Linux 软件安装的用户友好性。所以针对此类问题,使用了更高级的包管理策略去解决 - Yum/APT 。

更友好的包管理软件 - YUM

YUM 基于 RPM 包管理工具,能够从指定的源空间(服务器,本地目录等)自动下载目标 RPM 包并且安装,可以自动处理依赖性关系并进行下载、安装,无须繁琐地手动下载、安装每一个需要的依赖包。此外,YUM 的另一个功能是进行系统中所有软件的升级。如上所述,YUM 的 RPM 包来源于源空间,在 RHEL 中由 /etc/yum.repos.d/ 目录中的 .repo 文件配置指定,如 rhel-debuginfo.repo 的内容:

rhel-debuginfo.repo
    [rhel-debuginfo]
    name=Red Hat Enterprise Linux 5Client - i386 - Debug
    baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/i386/Debuginfo/
    enabled=0
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

YUM 的系统配置文件位于 /etc/yum.conf,内容如:
    [main]
    cachedir=/var/cache/yum
    keepcache=1
    debuglevel=2
    pkgpolicy=newest
    logfile=/var/log/yum.log
    distroverpkg=redhat-release
    tolerant=1
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    exclude= firefox gftp

配置文件用来定义用户期望的 yum 行为,比如,gpgcheck 表明安装时不进行 gpg 验证,exclued=firefox gftp 表明进行系统全软件升级时不升级 firefox 和 gftp 。

YUM 常用命令

安装指定软件 :

# yum -y install package-name

列出系统中已安装软件 :

# yum list

列出系统中可升级的所有软件 :

# yum check-update

升级系统中可升级的所有软件 :

# yum update

升级指定软件  :

# yum update package-name

在升级过程中接受所有互动问答 :

# yum -y update

卸载指定软件  :

# yum remove package-name

6.常见问题列表

01.可以手动强制不进行 RPM的依赖性关系检查吗?

RPM 可以。使用 --nodeps 辅助参数,则安装过程将不理会依赖性关系限制,强制安装目标包,

如:# rpm -i --nodeps package_a.rpm

02.RPM 中的 --force 是干什么用的?

RPM 中的默认安装规则是不允许同一个包多次安装的,也不允许降级安装。使用 --force 辅助参数将不考虑以上

因素,强制安装 RPM 包。但是,--force 无法强制安装一个不满足系统依赖性关系的包 ( 此时需要用到 --nodeps

参数 ) 。使用方法如:
     # rpm -i --force package_a.rpm

03.RPM支持远程安装吗?

RPM 是。 RPM 支持 HTTP 和 FTP 协议,如:# rpm -Uvh ftp://user:pass@ftpserver/package.rpm
    04.RPM提供包安装成功的验证机制吗?

RPM 是。 可以使用 -V 参数进行验证。
    05.RPM提供包安全签名吗?

RPM 是。可以使用 --import 导入与软件同时发布的 GPG KEY, 接着使用 -K 命令来验证包的安全性,如:
    # rpm --import pub_ibm_lotus_notes.gpg # rpm -K ibm_lotus_notes-8.5.i586.rpm 返回信息 :  ibm_lotus_notes-

8.5.i586.rpm: (sha1) dsa sha1 md5 gpg OK

06.如果 RPM 的底层数据库损坏,RPM 还能使用吗?

RPM 如果底层数据库损坏,RPM 将无法正常使用。此时最常用的解决方法是重构数据库:
    # rm -f /var/lib/rpm/__* ; rpm -vv --rebuilddb

07.可以查询系统中已经安装的某个文件属于哪个 RPM 包吗?

RPM  可以。使用 -qf 参数 , 如在安装了 Notes8.5 的系统中:
    # rpm -qf /opt/ibm/lotus/notes/notes 返回信息 : Ibm_lotus_notes-8.5-20081211.1920

08.可以查询 RPM 包的安装时间吗?

RPM 可以。可使用 --last 查询。如:
    # rpm -qa --last 返回信息 : 系统中所有软件的安装时间。

结束

......

表明 package_a.rpm 依赖于 version_info 版的 package_b,或者任何高于并包括 version_info 版的 package_b,亦或低于或包括 version_info 版的 package_b 。所以 package_b.rpm 必须在 package_a 之前安装于系统中。

转载于:https://blog.51cto.com/yangdong/540891

linux软件包管理详解相关推荐

  1. Linux用户管理详解大结局(下)

    Linux用户管理详解(下) 我们已经可以通过创建不同的用户来防止其他人使用自己的账号,之后每个账户对应一个单独的用户密码,构成了一个基本的用户管理思路.为了方便管理还可以使用组来设置相同属性的用户. ...

  2. linux系统日志管理详解

    了解 日志文件记录了时间,地点,人物,事件四大信息,故系统出现故障时,可以查询日志文件. 系统的日志文件默认都集中放置到/var/log/目录内,其中又以message记录的信息最多. 日志文件的重要 ...

  3. Ubuntu 软件包管理详解

    Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条命令: sudo apt-get install xxx 就几乎能帮你搞定所有的软件安装难题.但是有时你可能有这样的需求,查看某个软 ...

  4. linux内存管理详解,Linux内存管理图文讲解.pdf

    Linux内存管理图文讲解 逻辑地址.线性地址.物理地址和虚拟地址 一.概念 物理地址(physical address) 用于内存芯片级的单元寻址,和处理器和 CPU 连接的地址总线相对应. 这个概 ...

  5. Linux内存管理详解

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

  6. linux sys伪用户作用,linux用户管理详解

    Linux用户管理 配置文件 用户信息文件:/etc/password 密码文件:/etc/shadow 用户组文件:/etc/group 用户组密码文件:/etc/gshadow 用户配置文件:/e ...

  7. Linux 内存管理 详解(虚拟内存、物理内存,进程地址空间)

    Linux -操作系统内存管理 存储系统 存储器的层次结构 Linux的内存管理 物理内存 物理内存管理 虚拟内存 虚拟地址空间 (写时拷贝) 和物理地址映射关系 页表 虚拟内存优缺点 「在 4GB ...

  8. web linux进程管理,详解Supervisor安装与配置(Linux/Unix进程管理工具)

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...

  9. linux权限管理详解,linux权限管理详解-Go语言中文社区

    普通权限 -rw-r–r--. 1 root root 0 Feb 14 23:33 test 第1位标识文件类型: -:普通文件 b:块设备 c:字符设备 d:目录 l:符号链接 s:套接字文件 p ...

最新文章

  1. 这个假发太逼真!GAN帮你换发型,毫无违和感!
  2. PYTHON作业----编写多级菜单
  3. java 获取当前月份的第一天_JAVA获取本月的第一天和最后一天
  4. (三)Controller接口控制器详解(二)
  5. 七、jdk工具之jconsole命令(Java Monitoring and Management Console)
  6. java实现文件合并_Java实现文件分割和文件合并实例
  7. JAVA对时间的几个处理小方法
  8. http请求前后监听工具
  9. AI界的革命!终于可以自动标注了!
  10. python 网页转pdf
  11. POJ1742Coins
  12. JDK自带的命令行工具
  13. 微型计算机登录密码忘记了怎么办,一种基于微型计算机的密码锁的制作方法
  14. CMDS目的端数据库碎片整理记录
  15. 《千字文细谈》2021神级程序员都在用什么工具?-09-02
  16. 摘自 禅与生命体悟
  17. (uniapp-快速入门)运行到小程序模拟器微信开发工具
  18. eclipse安装html编辑器插件
  19. xampp mysql 卸载_XAMPP怎么卸载
  20. stata软件不出图_绘制回归分析结果的森林图,R和Stata软件学起来!

热门文章

  1. Mac 安装laravel 框架
  2. 虚幻gameframe_【虚幻4】从0开始的Galgame开发框架(2)--MainManager
  3. fpga电平约束有什么作用_FPGA从串模式
  4. POJ1988(带权并查集,搬砖块)
  5. hdu4496并查集的删边操作
  6. 【Groovy】集合声明与访问 ( 使用 [] 创建 ArrayList 和 LinkedList 集合 | 集合赋初值 | 使用下标访问集合 | 使用 IntRange 作为下标访问集合 )
  7. 【C 语言】结构体 ( 指针运算与指针内存操作 | 结构体成员偏移量计算 )
  8. 【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )
  9. 【错误记录】BLE 蓝牙搜索失效 ( 关闭了 GPS 定位导致的问题 | 蓝牙串口工具推荐 )
  10. 【运筹学】线性规划数学模型 ( 单纯形法 | 第一次迭代 | 方程组同解变换 | 计算新单纯形表 | 计算检验数 | 入基变量选择 | 出基变量选择 )