Linux的软件包管理

Posted 拨云见日

tags:

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

软件包的安装方式

分类 安装 版本
rpm安装 预先编译打包,安装简单 软件版本偏低,(依赖包问题难解决)
yum安装 预先编译打包,安装简单(实际上是rpm软件包仓库) 软件随网络仓库更新(自动安装依赖包)
源码包 手动编译打包,安装繁琐 软件版本随意
二进制包 解压即可使用, 安装简单 不能修改源码

RPM(RedHat Package Manager)

RPM介绍

RPM(软件包管理器)是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件,与Dpkg类似。

RPM包命名规则

name: 软件包名称
version: 版本号
count:该版本的编译发布次数
release: 发布版本 el6, el7
arch: 支持的CPU架构,可以为 i386(i686) / x86_64 / noarch(兼容前两者,即32位与64位)

RPM包获取途径

1.阿里云镜像/华为源/网易源
2.各种软件包的官方网站
3.光盘镜像

RPM命令

rpm	        #基于本地的rpm包进行管理


        -i	# 安装(install)
        -v	# 详细过程(verbose)
        -h	# 在安装过程中显示哈希标记进度条,配合-v使用(hash标记即#)
        -e	# 卸载(erase)
        -U      # 升级(update)
        -q 	# 查看指定软件包是否安装,后面加RPM报名(query)
        -qa	# 查看系统中已安装的所有RPM软件包(query all)
        -qi     # 查看指定软件的详细信息(query information)
        -ql     # 列出指定软件的安装目录和文件(query list)
        -qc     # 查询指定软件的配置文件(query config)
        -qd     # 查看指定软件的帮助文档(query documentation file)
        -qf     # 查询目录或文件属于哪个RPM软件包(query file)
        -q --scripts     # 查看软件安装前后执行的脚本
        -p      # 查看没有安装的软件包,常用格式 -qip(查看没有安装的软件包详细信息),-qlp(查看没有安装的软件包的安装目录)
# 一些示例

# 联网下载mongodb这个软件,版本号为3.0.0
[root@wqh06 ~]# rpm -ivh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.0/x86_64/RPMS/mongodb-org-mongos-3.0.0-1.el7.x86_64.rpm


# 将mongodb这个软件版本升级为4.0.0
[root@wqh06 ~]# rpm -Uvh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-mongos-4.0.0-1.el7.x86_64.rpm

# 查询命令属于哪个软件包(效果和rpm -qf相同)
[root@wqh06 ~]# rpm -q --file /etc/hosts
setup-2.8.71-10.el7.noarch

# 查看命令属于哪个软件包,前提必须使用绝对路径查询,本地必须要有这个命令
[root@wqh06 ~]# rpm -qf  `which  ifconfig`
net-tools-2.0-0.25.20131004git.el7.x86_64

# 查询指定的软件包是否安装  
[root@wqh06 ~]# rpm  -q  httpd
httpd-2.4.6-88.el7.centos.x86_64
[root@wqh06 ~]# rpm  -q  samba
package samba is not installed

# 查询所有的已安装的软件包
[root@wqh06 ~]# rpm  -qa  | grep  tree
tree-1.6.0-10.el7.x86_64

# 查询跟软件包相关的目录和文件
[root@wqh06 ~]# rpm -ql  httpd

# 查看一个软件的相关配置文件
[root@wqh06 ~]# rpm -qc  httpd

# 显示软件包的本身相关信息 
[root@wqh06 ~]# rpm -qi  httpd

# 显示未安装的软件包的详细信息
[root@wqh06 zabbix]# rpm -qip zabbix-web-pgsql-3.4.3-1.el7.noarch.rpm 

# 显示未安装的软件包的安装目录
[root@wqh06 zabbix]# rpm -qlp zabbix-server-mysql-3.4.14-1.el7.x86_64.rpm 

# 显示某个软件包的相关命令
[root@wqh06 ~]# rpm -ql $(rpm -qf /etc/hostname)| egrep \'/usr/sbin/|/usr/bin/\'

# 爬取zabbix的全部rpm包
// 用awk命令
[root@wqh06 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/ |awk -F \'["]\' \'{print "wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/"$2}\'|grep \'.rpm\'|bash

// 用sed命令
[root@wqh06 zabbix]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/ | sed -nr \'s#.*="(.*)".*#wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/\\1#gp\' | grep \'rpm\' |bash

// 用  awk -F \'["]+\' \'$2~/rpm/\'  替换掉  grep \'.rpm\'  ,(精确找出需要下载的href连接的行)
[root@wqh06 zabbix]# curl -s  https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/  | awk -F \'["]+\' \'$2~/rpm/\'| awk -F \'["]\' \'{print "wget https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/"$2}\'|bash   

YUM(Yellow dog Updater, Modified)

YUM介绍

YUM软件包管理器基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

YUM命令

# 安装软件:yum install tree-x.x.x.rpm 或 yum install tree
# 删除软件:yum remove tree-x.x.x.rpm 或 yum erase tree-x.x.x.rpm
# 升级软件:yum update tree 或 yum upgrade tree
# 查询信息:yum info tree (软件名即可,不要接整个RPM包名)
# 搜索软件:yum search tree (RPM软件包中含有tree字串的)
# 显示软件包依赖关系:yum deplist tree

选项:

  -q                # 静默执行 
  -t                # 忽略错误
  -y                # 自动应答yes
  --skip-broken     # 忽略依赖问题
  --nogpgcheck      # 忽略GPG验证

  check-update       # 检查可更新的包
  clean all          # 清除全部
  clean packages     # 清除临时包文件(/var/cache/yum 下文件)
  clean headers      # 清除rpm头文件
  clean oldheaders   # 清除旧的rpm头文件
  deplist            # 列出包的依赖
  list               # 可安装和可更新的RPM包
  list installed     # 已安装的包(与 rpm -qa 相似)
  list extras        # 已安装且不在资源库的包
  info               # 可安装和可更新的RPM包信息(与 rpm -qi 相似)
  info installed     # 已安装包的详细信息
  install[RPM包]     # 安装包
  localinstall       # 安装本地的 RPM包,如果缺少依赖包会自动获取下载安装
  update[RPM包]      # 更新包
  search[关键词]      # 搜索包,根据 RPM包名所含字段搜索
  provides[关键词]    # 搜索包,根据文件名或者命令搜索对应的 RPM包(与 rpm -qf 相似)
  reinstall[RPM包]   # 重新安装包(如果不小心删除配置文件,install会报错,使用reinstall)
  repolist           # 显示资源库的配置
  remove[RPM包]      # 卸载包
    history            # 查看yum历史命令
         info [N]      # 查看某条历史yum命令的详细信息
         undo [N]      # 撤销某条历史yum命令,此命令可以卸载依赖包 

以上是关于Linux的软件包管理的主要内容,如果未能解决你的问题,请参考以下文章

linux下的软件包管理与源代码方式安装软件

Linux系统红帽软件包管理器(RPM)

Linux学习:软件包管理+常用命令

Linux用 RPM 管理软件包(rpm)

linux软件包管理

linux基础入门之管理linux软件