@mritd
2016-07-31T16:34:06.000000Z
字数 5898
阅读 2154
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 : dockerVersion : 1.10.3Release : 44.el7.centosArchitecture: x86_64Install Date: 2016年07月25日 星期一 10时28分19秒Group : UnspecifiedSize : 43643976License : ASL 2.0Signature : RSA/SHA256, 2016年06月24日 星期五 11时43分08秒, Key ID 24c6a8a7f4a80eb5Source RPM : docker-1.10.3-44.el7.centos.src.rpmBuild Date : 2016年06月24日 星期五 08时10分54秒Build Host : worker1.bsys.centos.orgRelocations : (not relocatable)Packager : CentOS BuildSystem <http://bugs.centos.org>Vendor : CentOSURL : https://github.com/docker/dockerSummary : Automates deployment of containerized applicationsDescription :Docker is an open-source engine that automates the deployment of anyapplication as a lightweight, portable, self-sufficient container that willrun virtually anywhere.Docker containers can encapsulate any payload, and will run consistently onand between virtually any server. The same container that a developer buildsand tests on a laptop will run at scale, in production*, on VMs, bare-metalservers, 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 MD5D Device major/minor number mismatchL readLink(2) path mismatchU 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=Stringbaseurl=仓库的访问路径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 LibrariesDevelopment tools 和 Server Platform Developmentyum 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 配置文件中有很多可用的宏变量,用于动态替换,以下列举常用的 :