软件包管理
软件的运行和编译
- ABI 由于window和linux不兼容 linux是ELF window 是PE 对应的内核解析方式不同,可以用虚拟化
- API 只程序与程序的公用的接口,相互调用方式
- 程序源代码 –>预处理–>编译–>汇编–>链接
- 预处理只会引入相对于的文件,不会检查语法,但预处理检查语法,链接的库文件可以为动态编译文件.so 和静态编译文件.a,链接分为静态链接和动态链接
- 二进制应用程序的组成部分:二进制文件,库文件,配置文件,帮助文件
- 程序包管理器 rpm :Redhat Package Manger
- rpm的包名的命名方式 name-VERSION-release.arch.rpm
> bash-4.2.46-19.el.x86_64.rpm 版本号,企业备注,系统试用 - 包的分类和拆包VERSION主包 devel 开发包 utils 其他包 libs 相关其他包
- 包之间存在依赖关系,解决方式rpm包管理的前端工具, dnf包管理的前端工具
- 查看 二进制 程序所依赖的库文件
> ldd /bin/ls - 管理及查看本机装载的库文件 ldconfig ,, /sbin/ldconfig -p 显示本机已经缓存的所有可用库文件
- 库文件的配置 /etc/ld.so.conf ,/etc/ld.so.conf.d/*.conf
- 缓存文件:/etc/ld.so.cache
程序包管理
功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷的实现程序包的安装,卸载,查询,升级,和校验等管理操作
1. 包文件组成(每个包独有)RPM包内的文件和元数据,如名称,版本,依懒性,描述
2. 数据库(公共):/var/lib/rpm 程序包的名称及版本依赖关系,功能说明,安装后生产的校验码信息
3. 管理程序包的方式,,使用包管理器:rpm 使用前端工具:yum ,dnf
获取程序包的途径:
- 系统发版的光盘或官方的服务器
> centos镜像 http://www.centos.org/download/ ,https://mirrors.aliyun.com/centos/7.3.1611/isos/x86_64/,https://mirrors.sohu.com/centos/7.3.1611/isos/x86_64/ - 第三方组织
> RHEL推荐,包很全,搜索引擎 http://pkgs.org
> 第三方包建议要检查合法性,来源合法性,程序包的完整性 - 自己制作
安装包操作(完整的文件名 路径)
> rpm -ivh PACKAGE _FILE
| 参数 | 用途 |
| —- | —-: | :—: |
| i | 安装 |
| v | 显示安装过程|
| h | 显示执行进度 |
| –test |测试安装
|–replacepkgs|–replacefiles
|–nodigest |不检查包完整性
|–noscript|不执行程序包脚本
|%pre:安装前脚本|–nopre
|%post:安装后脚本|–nopost
|%preun:卸载前脚本|–nopreun
|%postun:卸载后脚本|–noposttun
—–
升级
1. rpm -U ,upgrade :安装有旧版本程序包,则‘升级’,不存在就安装 rpm -Uvh PACKAGE_FILE
2. rpm -F,freshen 安装有旧版程序包,则安装,如何不存在就不执行升级操作
rpm -Fvh PACAGE
–oldpackage 降级 –force 强制安装
—
包查询 rpm -q(已安装的包)
| 参数 | 用途 |
| —- | :—-|—:|
|–changelog|查询rpm包的changelog
|-c|查询程序的配置文件
|-d|查询程序的文档
|-i|information
| l|查看指定的程序包安装后生成的所有文件(包名)
|–scripts|程序包自带的脚本
|–provides|列出指定程序包所提供的CAPAB
|–R|查询指定的程序所依赖的CAPABILITY
|-a|所有包
|-f|查看指定的文件由哪几个程序包安装生成(路径+包名)
|-p|针对尚未安装的程序包文件做查询操作
|–whatprovides|查询指定的capabilitv由哪几个包所提供
|–whatrequires |查询指定的capab被哪个包所依赖
<br />
rpm -ivh /path/文件名/.rpm 包名<br />
rpm -q ftp &>/dev/null ||yum -y install ftp (包名)<br />
rpm -e 包名(卸载)<br />
rpm -qi(包名)<br />
rpm -qpi /path/文件名.rpm<br />
rpm -qf /path/文件名<br />
rpm -ql 包名<br />
rpm -q --scripts 包名<br />
-k 文件名 验证签名<br />
--import /etc/pki/rpm-gpg/<br />
-V 包名<br />
<br />
which java ->/usr/bin/java<br />
rpm -qf /usr/bin/java<br />
rpm -q --whatprovides java<br />
rpm2cpio
> rpm2cpio 包文件|cpio -itv 预览包内文件
rpm2cpio
> rpm2cpio 包文件|cpio -id “.config” 释放包内文件
包卸载(卸载包名)
> rpm -e PACKAGE 包卸载 不能卸载包的依赖关系
包校验
> rpm -V 包名 rpm -V tree (修改包名里面的内容,检测)
| 参数 | 用途 |
| —- | —-: | :—: |
|s |file size |大小
|5|digest|md5 加密
|D|Device major|设备信息
|L|readLink|链接信息
|U|user ownership|用户信息
|G|group ownership|组信息
|T|mtime differs|时间差异
包校验
- 来源合法性验证及完整性验证
- 完整性验证:SHA256 来源合法性验证:RSA
- 公钥加密:对称加密:加密/解密使用同一密钥 public key :公钥,公开所有人 secret key :私钥 ,不能公开
- 导入所需要的公钥
- rpm-k|checksig rpmfile 检查包的完整性和签名
- rpm –import /etc/pki/rpm-gqp/RPM-GPG-KEY-centOS-7
- Centos 7 发行版光盘提供:RPM-GPG-KEY-Centos-7
- rpm -qa “gpg-pubkey”
数据库的重建
> /var/lib/rpm rpm –initdb :初始化
——
yum 安装
yum:yellowdog update modifier ,rpm 的前端程序,可解决软件包相关依懒性,可以在多个库之间定位软件包
1. yum repository:yum repo 储存了众多rpm包,以及包的相关的元数据文件(放置在特定目录repodata下)
2. 文件服务器 ftp:// http:// file://
3. yum客户端配置文件
> /etc/yum.conf :为所有仓库提供公共配置
> /etc/yum.repos.d/*.repo 为仓库的指向提供配置
| 参数 | 用途 |
| —- | —-: | :—: |
|name|some name for |名字
|baseurl|url://path/to/reposi| 安装源来源
|enable|(1,0)|是否禁止
|gpgkey|URl|签名信息
|enablegroup=(1,0)|安装群
yum的repo配置文件中可用的变量
| 参数 | 用途 |
| —- | —-: | :—: |
|$releasever|当前OS的发行版的主版本号
|$arch|平台,i386,i486
|$basearch|基础平台,i386
<br />
http://server/centos/$releasever/$basearch/<br />
http://server/centos/7/x86_64<br />
http://server/centos/6/i384<br />
—–
1. 阿里云repo文件 http://mirrors.aliyun.com/repo/
2. centos系统yum源 阿里云:https://mirrors.aliyun.com/centos/$releaserver/os/x86_64
3. 教学环境 http://172.16.0.1/cobbler/ks_mirror/$releaserver/
4. 生成172.16.0.1_cobbler_ks_mirror_CentOS-x-x86_64_repo
> yum-config-manager –add-repo=http://172.16.0.1/cobber/ks_mirror/7/
5. yum-config-manager –disable “仓库名” 禁用仓库
6. yum-config-manager –enable “仓库名” 启用仓库
—–
yum命令
- yum list [all | glob_exp1] 显示所有的yum
- yum repolist[all |enable |disable] 显示安装的仓库
- yum install package 安装包
- yum reinstall package 重新安装包
- yum updata package 升级包
- yum downgrade package 降级包
- yum check-update 检查可用升级
- yum remove | erase package 卸载程序包(删除依赖包名)
- yum info package 查看程序包信息
- yum provides |whatprovides feature 查看指定的特征(可以是莫文件)是哪个程序包提供
- yum clean [all|packages] ,,,,/var/cache/yum/$basharch/$releasever 缓存
- yum makecache 构建缓存
- yun search string 以指定的关键字搜索程序包及summary信息
- yum deplist package1 查看指定包所依赖的capailities
yum 事务历史
- yum history [info | list | packages-info]
- yum history 查看历史记录
- yum history info 6 查看指定的历史
- yum history undo 6 删除安装的包,安装以前的包
日志文件
> /var/log/yum.log
包组管理的相关命令
- yum grouplist group1 查看包内容
- yum groupinstall group1 组安装
- yum groupupdate group1 升级包
- yum groupremove group1 移除包
- yum groupinfo group1 包信息
yum的命令行选项
- –nogpgcheck ;禁止进行gpg check
- -y :自动回答’yes’
- -q :静默模式
- — disablerepo=repoidglob 临时禁止用此指定的repo
- — enablerepo=repoidglob 临时启用此处指定的repo
- –noplugins 禁止所有插件
系统安装光盘作为本地yum仓库
- 挂载光盘至莫个目录 /media/cdrom
> mount /dev/cdrom /media/cdrom
2 创建配置文件<br />
[Cenros7]<br />
name=<br />
baseurl=<br />
gpgcheck=<br />
enable=<br />
<br />
ls /misc/<br />
cd /misc<br />
cd cd/<br />
df<br />
<br />
[base]<br />
baseurl=file://misc/cd<br />
<br /> - 创建yum仓库
> createrpo [options]<br />
df 查看磁盘<br />
rpm -q kernel 查看内核<br />
uname -r 内核名<br />
yum update kernel 升级kernel<br />
<br />
yum list | grep vsftpd<br />
yum clean all<br />
<br />
<br />
原创文章,作者:zhangguanglei,如若转载,请注明出处:http://www.178linux.com/74159
评论列表(1条)
主要介绍了程序包的安装和管理,内容写的很精细,排版也很好,继续努力!