标签:down 完成 eps odi 程序包安装 执行 option rpm包管理 etc
query软件包管理
预知识
静态和动态连接
连接主要作用是各个模块之间相互引用的部分处理好,使得各个模块之间能够正确衔接,分为静态和动态
静态:
把程序对应的依赖库复制到一份包里
libXXX.a
嵌入式程序包
升级难,需要重新编译
占用较多空间,迁移容易
动态:
只要把依赖加做一个动态连接
libxxx.so
连接指向
占用较小空间,升级方便
包管理器
二进制应用程序的组成部分
二进制文件 库文件 配置文件 帮助文件
程序包管理器
debian deb文件 dpkg包管理器
redhat rpm文件 rpm包管理器
rpm ====Redhat Package Manager
====RPM Package Manager
包命名和工具
包命名:
源代码包:
name- VERSION.tar.gz|bz2|xz
rpm包命名方式
name-VERSION-releas.arch.rpm
其中: VERSION:major minor release
release:release.OS
常见的arch
x86:i386 i486 i586 i686
x86_64:x86 x86_64 amd64
powerpc:ppc
跟平台无关:noarch
包:分类和拆包
Application-VERSION-ARCH.rpm 主包
Application-devel-VERSION-ARCH.rpm 开发子包
Application-utils-VERSION-ARCH.rpm 其他子包
Application-libs-VERSION-ARCH.rpm 其他子包
包之间:可能存在依赖关系
解决依赖包的管理工具:
yum
apt-get
zypper
dnf
库文件
查看二进制程序所依赖的库文件
ldd /path/to/binary_file 单个程序需要的库
eg: ldd /usr/bin/ls
管理及查看本机装载的库文件
ldconfig 加载库文件
/sbin/ldconfig -p 显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件: /etc/ld.so.conf /etc/ld.so.conf.d/*.conf
缓存文件: /etc/ld.so.cacha
包管理器 :
程序包管理器:
功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便实现
安装 卸载 查询 升级 校验
包文件组成(每个包独有)
RPM 包内的文件
RPM 的元数据,名称版本依赖性描述
安装或卸载时运行的脚本
数据库(公用)、/var/lib/rpm 系统统计的软件安装版本号什么的便于跟新和卸载
程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验信息
程序包的来源
管理程序包的方式:
使用包管理器RPM
使用前端工具 yum dnf
获取程序包的途径:
系统发版的光盘或官方服务器:
CentOS镜像
项目官方站点
第三方组织:
EPEL Extra Packages for ENterprise Linux
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
http://sourceforge.net
自己制作
rpmbuild
rpm
CentOS 系统使用rpm命令管理程序包
安装 卸载 升级 查询 校验 数据库维护
安装:
rpm {-i|--install} [install-option] package_file
-v:verbose
-h 显示安装进度条
-p 查询安装包
-l, --list list files in package
rpm -ivh package_file
rpm -ql package_file 查询软件的所有文件
[install-option]
--test 测试安装,不真实安装,测试是否兼容
--nodeps 忽略依赖 关系
--replacepkgs|-replacefiles 安装时替换包或者文件
--nosignature不检测来源合法性
--import 公钥的路径,一般在光盘的根目录 用于检测有无合法的工具
升级:
rpm {-U|--upgrade}[install-option] Pack_file
rpm {-F|-freshen} [install-option] pack _file
upgrade :安装有旧版程序包 则升级
没有则安装
freshen 安装如果有就版程序,则升级
没有则不执行
rpm -Uvh package-file 全名
rpm -Fvh package-file
--oldpackage 降级
--force 强制安装
注意:安装内核的时候最好使用安装的方法rpm -ivh 避免直接覆盖,安装两个内核版本
linux支持多内核版本并存
如果源程序包的配置恩建安装后曾被修改,升级时,新版本的提供同一个配置文
文件不会直接覆盖老版本的配置文件,而是把新版本的文件重命名后保留 filename.rpmnew
包查询
常用的查询方法:
--changelog 查询rpm包的changelog
-c 查询程序的配置文件
-d 查询程序的文档
-i information
-l 查看指定的程序包安装后生成的所有文件
--scripts 程序包自带的脚本
--provides 列出指定程序包所提供的capability
-R 查询指定程序包所依赖的capability
-qi package
-qf file file 来自哪个包安装的
-qc package
-ql package rpm -ql tree
-qd package
-qpi package_file
-qpl package_file
-qa
rpm -qa |grep vs
rpm -qf /etc/passwd 查询文件由那个包生成,即是删了也可以查询的到
rpm2cpio /misc/cd/Packages/tree.rpm| cpio -idv ./user/bin/tree 有可能解出来的权限不一致
rpm -qi bash 查询安装包信息,官网什么的
包卸载:
rpm -e [--allmatches][--nodeps][--noscripts][--notriggers][--test] package_name
包检验
rpm -V [select-options][verify-options] rpm -V tree
S file Size differs
M Mode differs
D Device major/minor number mismatch
L reaslink path mismatch
U User ownership differs
G Group ownership differs
T mTime differes
P capbilities differ
导入所需要公钥
rpm -K rpmfile 检查包的完整性和签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm -qa "gpg-pubkey*"
安装前检查一下是否是原版,前提是导入公钥rpm -qa "gpg-publickey
修复重要包,可以在重启中进入救援模式,系统会进行新的系统挂载,不过根目录是在指定的文件夹下
yum
CentOS :yum dnf yum是rpm的二次封装,不能删除rpm
YUM Yellowdog Update Modifier ,rpm的前端程序,可以解决软件包相关依赖性,可定位多个库
原理:进行yum install 后 向yum服务器提出请求要安装什么,服务器寻找到包的元数据meta data返回给yumclient
进行缓存以后也不删除,yum在吧新的需求发给yum服务器,服务器在吧所有需要的东西给client
进行安装之后,删除包,但是元数据不删
文件服务器:
http://
httpd://
ftp://
file:// 本地路径
yum客户端配置文件
/etc/yum.conf 为所有仓库提供公共配置
文件底部# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
/etc/yum.repo.d/*.repo 为仓库的指向提供配置
其中指向的定义
[repositoryID]
name=Some name for this repository
baseurl=url://path baseurl=file:///misc/cd
enable=1/0 默认为1 为零为失效
gpgcheck=1/0 是否检测公钥,完成性,生产时要为1,可以
gpgkey=url 可以不用gpgcheck 将路径加到gpgkey
enablegroups=1/0
failovemethod=roundrobin/priority/roundrobin(随机挑选,默认)
cost = 默认为1000
对于公钥的检测,可以用gpgkey=一个公钥的文件路径
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
中的keepcache改为1可以保留软件包,在装多台机器时建议
在此目录创建yum源,名字一定为*.repo 有格式要求,可以自己查看一下,多个源可以放在
同一个文件 但格式要复制一次
yum出故障:配置文件格式错误
缓存问题,可删除缓存在重新装
yum clean all
yum 源
阿里云repo文件:
http://mirrors.aliyun.com/repo/ 可以直接下载
CentOS系统yum源
阿里云:http://mirrors.aliyun.com/centos/$releasever/os/x86_64/
EPELyum源
阿里云:http://mirrors.aliyun.com/epel/$releasever/x86_64
yum 命令
yum [option] [command] [package]
显示仓库列表:
yum repolist all/enable/disabled
显示程序包
yum list
yum list [all |glob_exp1]
yum list installed/updates/available [glob_exp1] installed时,安装过的都是有@标记
安装程序包
yum install package1 package2...
yum reinstall package package2...重新安装
升级程序包:
yum update package1 package2
yum downgrade package1 降级
检查可用升级:
yum check-update
卸载程序包
yum remove package1 ..
查看程序包:
yum info package yum info bash
查看指定的特性(有谁得来)
yum provides feature1 (部分)... yum provides /usr/bin/ls
清除本地缓存
清除/var/cache/yum/$basearch/$releasever缓存路径
缓存的数据是元数据
yum clean [package metadata expire-cache rpmdb plugins all ]
构建缓存
yum makecache一般不需要手动
搜索:
yum search string1....如果包的名字记得不是很清楚可以使用查询
//查看指定包所依赖的capability
yum deplist package
查看yum事务历史
yum history list/ info num 列出yum的使用信息,列出单条具体信息yum history info 8
redo num 重做 yum history redo 6
undo num 撤销
日志:、var/log/yum.log
注意 yum install 也可以直接加rpm包
包租管理相关命令,功能相似的rpm包归到统一个组(套件)
yum groupinstall group
yum grouplist 查看包租列表
yum groupremove group
yum groupinfo group
yum命令行选项
-nogpgcheck 禁止进行gpg check
-y 不会询问y/n
-q 静默 但是与-y 是不难合并
--disablerepo=repoidglob 临时禁用此处指定的repo
--enablerepo=repoidglob 临时启用此处指定的repo
--noplugins 禁用所有插件
系统光盘yum仓库
系统安装光盘作为本地yum仓库:
挂载光盘至某目录 eg /mnt/cdrom
创建配置文件/etc/yum.repo/ 下
创建yum仓库repodata createrepo directory 可以将单个安装包创建yum源数据repodata
echo ‘- - -‘ > /sys/class/scsi_host//host2/scan 加载硬件设备后在线重新加载
CentOS7上添加便捷目录 systemctl start autofs
systemctl enable autofs
标签:down 完成 eps odi 程序包安装 执行 option rpm包管理 etc
原文地址:https://blog.51cto.com/14240011/2370925