@mritd
2016-07-31T16:34:06.000000Z
字数 5898
阅读 1883
Linux
在漫长的 Linux 发展史中,由于 Linux 系统的特性,所有软件都为绿色的,编译成二进制解压后即可运行,所以软件安装和管理成了一个复杂的体力劳动,而软件包管理器应运而生。
软件编译主要考虑以下两个因素 :
bin
、/sbin
、/usr/bin
、/usr/sbin
、/usr/local/bin
、/usr/local/sbin
/lib
、/lib64
、/usr/lib
、/usr/lib64
、/usr/local/lib
、/usr/local/lib64
;程序开发时调用 API,运行时调用 ABI,通过调整 /etc/ld.so.conf.d/*.conf
可改变内核装载的共享库文件/etc
目录中,同时如果程序安装选择了指定目录,如 /usr/local/nginx
,那么此时程序的可执行文件等将可能不会在标准目录中。应用管理器一般应该实现以下功能 :
name-major.minor.release.tar.gz
常用发行版都有其自己的软件包管理器,如 :
dpkg
管理rmp
管理rpm
管理,注意,SUSE 的系统结构与 RadHat 不同,虽然都是用 rpm 管理,但其软件包内部文件组织不同,不能通用常用的软件包管理器都具备以下功能 : 打包、安装、查询、升级、卸载、校验、数据库管理
包管理器虽然解决了软件包的管理混乱问题,但是其无法解决包分发等问题,因此出现了基于软件包管理器的前端管理器,如 Debian 系列的 apt-get
、RadHat 系列的 yum
等
rpm 全称
RadHat Package Manager
,后经过 Linux 基金委员会吸纳为标准包管理工具,重新定义为RPM is Package Manager
.
rpm -i PACKAGE [...]
: -i 即 --install,安装软件包 -v
: 安装时显示安装信息,如进度-vv
: 二级详细显示-vvv
; 三级详细显示-h
: -h 即 hash,以 # 的形式显示安装进度,通常一个 # 代表 2%rpm -ivh --test PACKAGE
: 仅测试,不进行安装rpm -ivh --nodeps
; 忽略依赖关系,当出现包依赖时,可使用此选项强制安装(装完可能不能用)rpm -ivh --replacepkgs
: 重新安装软件包,原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件rpm -e PACKAGE
: -e 即 --erase,卸载指定软件包,如果该软件包被其他程序依赖,可使用 --nodeps
忽略依赖rpm -q PACKAGE
: 查询某软件包是否安装,rpm -q
用于查询,一般需要附带查询参数如 a
rpm -qa PACKAGE
: 查询安装的所有软件包,包名支持通配符,如 rpm -qa php*
查询 php 开头的所有包rpm -qi PACKAGE
: 查询包的描述信息,如下
Name : docker
Version : 1.10.3
Release : 44.el7.centos
Architecture: x86_64
Install Date: 2016年07月25日 星期一 10时28分19秒
Group : Unspecified
Size : 43643976
License : ASL 2.0
Signature : RSA/SHA256, 2016年06月24日 星期五 11时43分08秒, Key ID 24c6a8a7f4a80eb5
Source RPM : docker-1.10.3-44.el7.centos.src.rpm
Build Date : 2016年06月24日 星期五 08时10分54秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : https://github.com/docker/docker
Summary : Automates deployment of containerized applications
Description :
Docker is an open-source engine that automates the deployment of any
application as a lightweight, portable, self-sufficient container that will
run virtually anywhere.
Docker containers can encapsulate any payload, and will run consistently on
and between virtually any server. The same container that a developer builds
and tests on a laptop will run at scale, in production*, on VMs, bare-metal
servers, OpenStack clusters, public instances, or combinations of the above.
rpm -ql PACKAGE
: 查询软件包安装后的文件列表rpm -qf FILE
: 反查询,查询某个文件由那个软件包生成/释放的rpm -qd PACKAGE
: 查询某个包安装完成后生成的文档文件rpm -qc PACKAGE
: 查询某个软件安装后生成的配置文件rpm -q --scripts
: 查询软件爱你安装脚本,脚本一般包含4类,如下: rpm -qpl PACKAGE
: 查询某尚未安装软件包安装后生成的文件列表rpm -qpi PACKAGE
: 查询某尚未安装软件包的描述信息rpm -U PACKAGE
: 升级或安装软件包(可以与 v、h等一起使用)rpm -F PACKAGE
: 升级软件包(可以与 v、h等一起使用)rpm -U --force PACKAGE
: 强行升级或安装,当当前软件包被其他软件包所依赖、或升级后新版本跟其他软件包冲突时,可使用此选项进行强制升级或安装rpm -V PACKAGE
: 检验指定软件包是否被修改,以下为修改后返回状态位含义
S file Size differs 大小
M Mode differs (includes permissions and file type) 头文件
5 digest (formerly MD5 sum) differs MD5
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs 属主
G Group ownership differs 属组
T mTime differs 修改时间
P caPabilities differ 能力改变了
rpm -K PACKAGE
: 校验 rmp 完整性和来源(-checksig) --nosigeature
: 不检查来源合法性--nodigest
: 不检查完整性rpm --import KEY
: 导入 rpm 包制作商密钥rpm 数据库位置: /var/lib/rpm
rpm --initdb
: rpm 数据库初始化,如果事先不存在则新建rpm --rebuilddb
: rpm 数据库重建,直接重建并覆盖原有数据yum 全称 Yellowdog Update Modifier,是一个基于 rpm 软件包管理器的前端软件包管理器,其最主要的功能便是能自动管理软件包依赖关系。
yum 仓库顾名思义是一个 rpm 软件仓库,域名安装软件时从仓库下载至本地并安装。yum 仓库实质是一个 rpm 软件包共享服务器,其中主要包含 rpm 的各种软件包,以及各个软件包之间相互依赖关系的元数据信息,服务器使用的协议可自行选择,比如 ftp、http、nfs、file 等。
yum 客户端在使用 yun 仓库时,主要完成以下操作 :
yum 客户端配置文件主要存放于 /etc/yum.conf(主配置文件)
、/etc/yum.repo.d/*.repo(自定义仓库配置)
yum 配置文件一般分为 主配置段([main])、仓库配置段([repo]),类似于 Windows 的 ini 文件,yum 仓库配置示例如下 :
[repo_ID]
name=String
baseurl=仓库的访问路径
enabled={1|0} 1:表示启用 0:表示不启用
gpgcheck={1|0} 1:验证gpg 0:表示不验证
gpgkey=公钥地址(可以是本地,也可以是服务器端路径)
cost=定义此仓库开销,默认为1000
yum repolist[all|enabled(默认)|disabled]
: 列出所有可用的 yum repoyum clean [all|packeages(包)|metadata(元数据)|expire-cache(过期数据)|rpmdb(rpm数据)|plugins]
: 清理 yum 缓存yum list [all|installed(已安装过的)|available(可用)]
: 列出 yum 软件包yum info PACKAGE
: 显示软件包信息yum grouplist
: 列出所有软件包组yum groupinfo GROUP
: 列出软件包组信息,包括必要的安装软件包和可选的软件包,其中有三个跟开发相关的包组: Development Tools
和 DeveLopment Libraries
Development tools
和 Server Platform Development
yum install PACKAGE
: 安装软件包,PACKAGE 可为本地 rpm 包路径,此时为安装本地 rpm 包,如包检查不通过可使用 --nogpgcheck 手动禁用包来源和完整性验证yum reinstall PACKAGE
: 重新安装软件包yum check-update PACKAGE
: 检查软件包是否有升级yum update PACKAGE
: 升级指定软件包yum downgrade PACKAGE
: 降级软件包yum erase|remove PACKAGE
: 删除/卸载软件包yum whatprovides|provides FILE
: 查询某文件是有那个软件包提供的yum groupinstll GROUP
: 安装软件包组yum groupremove GROUP
: 删除软件包组yum history
: 查看 yum 历史yum 配置文件中有很多可用的宏变量,用于动态替换,以下列举常用的 :