包管理之rpm篇
来源:互联网 发布:红叶知弦邪恶本子 编辑:程序博客网 时间:2024/06/16 10:38
- 软件包的编译过程
- 查看文件依赖的操作系统 file
- 查看二进制程序所依赖的库文件
- 查看装载的库文件
- 添加库
- 包管理器
- 获取程序包的途径
- 系统发版的光盘或官方的服务器
- 项目官方站
- 第三方组织
- 搜索引擎
- rpm 命令
- 常用命令
- rpm -q pkgname 查看指定包的包全名
- rpm -qa 查询系统安装的所有包系统安装时从安装光盘中安装的包
- 安装包rpm -ivh pkgname force
- 列出包内文件 rpm -qlp q-query l-list p-package
- 列出包内文件包括脚本 rpm -qlp script
- 列出未安装的包内的文件
- 解压未安装的包
- 安装
- rpm -ivh PACKAGE_FILE
- install-options
- 升级
- rpm -Uupgrade install-options PACKAGE_FILE 存在则升级不存在则安装
- rpm -Ffreshen install-options PACKAGE_FILE 存在则升级不存在不做处理
- 包查询
- 常用查询用法
- 常用命令
- 包卸载
- 包校验 rpm -Vverify select-options verify-options
- Demo
- 完整性验正SHA256rpm -Kchecksig
- 来源合法性验正RSA
- 启动项配置 bootgrubgrubconf
- 救援模式
- centOS7
- centOS6
软件包的编译过程
源代码(.c|.py….)->预处理(.i)->编译(.a 汇编代码)->汇编(.o 二进制)->链接(.out)
查看文件依赖的操作系统 file
查看二进制程序所依赖的库文件:
ldd binary-path
查看装载的库文件
ldconfig -l
添加库
在/etc/ld.so.config.d/下面新建.config文件,添加库文件路径,即可装载库文件(使用ldconfig newconfig使新加的配置文件生效)
包管理器:
rp-pppoe - 3.1 - 5 .i386 .rpm套件名称 套件的版本信息 释出的次数 适合的硬件平台 附文件名
- 包文件组成 ( 每个包独有)
- RPM 包内的文件
- RPM 的元数据,如名称,版本,依赖性,描述等
- 安装 或卸载时运行的脚本
- 数据库( 公共) :/var/lib/rpm
- 程序包 名称及版本
- 依赖关系
- 功能说明
- 包安装后生成的各文件路径及校验码信息
获取程序包的途径
1. 系统发版的光盘或官方的服务器;
-CentOS 镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2. 项目官方站
3. 第三方组织
- Fedora-EPEL:Extra Packages for Enterprise Linux
- Rpmforge:RHEL 推荐,包很全
4. 搜索引擎 :
- http://pkgs.org
- http://rpmfind.net
- http://rpm.pbone.net
- https://sourceforge.net/
==第三方包建议要检查其合法性
来源 合法性, 程序包的完整性==
rpm 命令:
常用命令
rpm -q pkgname 查看指定包的包全名
rpm -q kernelkernel-2.6.32-696.el6.x86_64
rpm -qa 查询系统安装的所有包(系统安装时从安装光盘中安装的包)
安装包rpm -ivh pkgname –force
列出包内文件 rpm -qlp (q->query l->list p->package)
列出包内文件包括脚本 rpm -qlp –script
rpm -qlp tree-1.5.3-3.el6.x86_64.rpm warning: tree-1.5.3-3.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY/usr/bin/tree/usr/share/doc/tree-1.5.3/usr/share/doc/tree-1.5.3/LICENSE/usr/share/doc/tree-1.5.3/README/usr/share/man/man1/tree.1.gz
列出未安装的包内的文件
rpm2cpio 光盘中路径 |cpio -tv
解压未安装的包
rpm2cpio 光盘中rpm路径 | cpio -id 解压后的path
安装
rpm {-i|–install} [install-options] PACKAGE_FILE…
rpm -ivh PACKAGE_FILE …
[install-options]
升级
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …存在则升级,不存在则安装
rpm {-F|–freshen} [install-options] PACKAGE_FILE … 存在则升级不存在不做处理
rpm -Uvh PACKAGE_FILE ...rpm -Fvh PACKAGE_FILE ...--oldpackage :降级--force: 强制安装
==内核升级直接用ivh 不用Uvh,这样可多版本共存,万一出问题切换之前内核即可==
==如果原程序包的配置文件安装后曾被修改,升级时,新版本
的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而
把新版本的文件重命名(FILENAME.rpmnew)==
包查询
rpm {-q|–query} [select-options] [query-options]
[select-options]
#查询安装的包rpm -qa|grep xxx#查看xx包安装后的所有文件rmp -ql xxxrmp -qi xxx #查看xx包的信息(版本号,安装日期,官网等)rpm -qd #查看包的doc文档rpm -q --scripts sysstat 查看sysstat包的脚本rpm -qf file 查看file来自哪个包rpm -qf /usr/bin/treetree-1.5.3-3.el6.x86_64#查询java来自哪个包rpm -qf /usr/bin/javafile /usr/bin/java is not owned by any package#查询未安装的包包含的文件rpm -qpl 光盘中包路径#查询包配置指文件路径rpm -qc vim-common/etc/vimrc#查询包所依赖的库rpm -qR --provides treerpm -q --whatprovides kernel #查询这个包所依赖的包rpm -q --whatrequires kernel #查询哪些包依赖这个包rpm -q --changelog kernel #查询包的更新日志# 查询未安装的包的以上信息加p选项,包名使用光盘路径rpm -qp[licR --scripts --provides --whatrequires]
常用查询用法:
- -qi PACKAGE 包信息
- -qf FILE 文件所属包(注意不能跟软连接)
- -qc PACKAGE 包配置文件路径
- -ql PACKAGE 安装后文件列表
- -qd PACKAGE 包文档
- -qpi PACKAGE_FILE, 光盘中的的包信息
- -qpl PACKAGE_FILE, 光盘中包安装后的文件路径
- -qa 系统中所有已安装的包
包卸载:
rpm -e|
–test PACKAGE_NAME …
rpm2cpio包文件 |cpio –itv 预览包内文件
rpm2cpio包文件 |cpio –id “*.conf” ” 释放包内文件
包校验 rpm {-V|–verify} [select-options] [verify-options]
- -Va :列出目前系统上面所有可能被更动过的档案;
- -Vp :后面加的是文件名称,列出该套件内可能被更动过的档案;
- -Vf :列出某个档案是否被更动过~
Demo
rpm -Va 检查所有安装后的文件改动rpm -qf /etc/issue #通过文件查到包名centos-release-6-9.el6.12.3.x86_64[449][root@CentOS69: /]# rpm -V centos-releasemissing c /etc/yum.repos.d/CentOS-Base.repomissing c /etc/yum.repos.d/CentOS-Debuginfo.repomissing c /etc/yum.repos.d/CentOS-Media.repomissing c /etc/yum.repos.d/CentOS-Vault.repomissing c /etc/yum.repos.d/CentOS-fasttrack.repo范例:范例一:列出你的 Linux 内的 logrotate 这个套件是否被更动过?[root@linux ~]# rpm -V logrotate# 如果没有出现任何讯息,恭喜你,该套件没有被更动过。# 如果有出现任何讯息,才是有出现状况啊!范例二:查询一下,你的 /etc/crontab 是否有被更动过?[root@linux ~]# rpm -Vf /etc/crontabS.5....T c /etc/crontab# 瞧!因为有被更动过,所以会列出被更动过的信息!好了,那么我怎么知道到底我的档案被更动过的内容是什么?呵呵!简单的说明一下吧! 例如,我们检查一下 logrotate 这个套件:[root@linux ~]# rpm -ql logrotate/etc/cron.daily/logrotate/etc/logrotate.conf/etc/logrotate.d/usr/sbin/logrotate/usr/share/doc/logrotate-3.7.1/usr/share/doc/logrotate-3.7.1/CHANGES/usr/share/man/man8/logrotate.8.gz/var/lib/logrotate.status# 呵呵!共有八个档案啊![root@linux ~]# rpm -V logrotate..5....T c /etc/logrotate.conf# 上面的信息是这样的:S :file Size differs档案的容量大小是否被改变M :Mode differs (includes permissions and file type)档案的类型或档案的属性,如是否可执行等参数已被改变5 :MD5 sum differsMD5 这一种加密防骇的属性已被改变D :Device major/minor number mis-match装置名称已被改变L :readLink(2) path mis-matchLink 属性已被改变U :User ownership differs档案的所属人已被改变G :Group ownership differs档案的所属群组已被改变T :mTime differs档案的建立时间已被改变所以,如果当一个档案所有的信息都被更动过,那么他的显示就会是:SM5DLUGT c filename至于那个 c 代表的是『 Config file 』的意思,也就是档案的类型,档案类型有底下这几类:• c :设定档(config file)• d :文件数据文件(documentation)• g :鬼档案~通常是该档案不被某个套件所包含,较少发生!(ghost file)• l :授权档案(license file)• r :自述文件(read me)
完整性验正:(SHA256)rpm -K|checksig
rpm -K rpmfile或者checksig rpmfile 检查包的完整性和签名rpm --import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7CentOS 7 发行版光盘提供:CentOS_7_Final/RPM-GPG-KEY-CentOS-7rpm -qa “gpg-pubkey*”gpg-pubkey-c105b9de-4e0fd3a3rpm -qi gpg-pubkey-c105b9de-4e0fd3a3rpm -e gpg-pubkey-c105b9de-4e0fd3a3
来源合法性验正:RSA
启动项配置 /boot/grub/grub.conf
==shell乱码:reset==
作业
1. rm /lib64/libc.so.6 恢复.
2. 卸载rpm包
3. java来自哪个包
rpm -qa | grep java
rpm -ql java-1.7.0-openjdk|grep bin
4. 查看rpm包的所有支持的cpu架构
ls | grep -o '[^.]\+\.rpm'|cut -d. -f1|sort|uniq -cls|rev|cut -d. -f2|rev
救援模式
centOS7
- 挂载光盘
- 系统挂载在/mnt/sysimage
切换原系统的根chroot /mnt/sysimage
恢复文件可以把光盘文件考到/mnt/sysimage对应的目录
centOS6
- df 查询挂载路径
- mkdir /mnt/cdrom
- mount /dev/sr0 /mnt/cdrom 挂载光盘
rpm -ivh /mnt/cdrom/Packages/rpm.XXX.rpm –root=/mnt/sysimage 指定参考的根目录安装rpm包
- 包管理之rpm篇
- Linux:包管理之RPM
- RPM包管理之查询软件包
- Linux初窥:软件包管理之(RPM包管理)
- 使用RPM管理包
- linux rpm包管理
- rpm包管理详解
- rpm包管理详解
- RPM包管理
- rpm 包 管理 详解
- RPM包管理简介
- rpm包的管理
- RPM包管理
- RPM包管理详解
- rpm包管理
- rpm 包管理
- yum管理RPM包
- linux rpm包管理
- 关于css后代选择器和子选择器的区别
- 解决jqueryUI img tilte样式不显示问题
- 工作笔记
- unique-binary-search-trees
- 题目1387:斐波那契数列
- 包管理之rpm篇
- java中用HashMap,ArrayList,TreeMap实现一个模拟斗地主发牌的用例
- 树莓派(初级篇)--系统安装
- Redis基本数据类型
- MySQL学习笔记 3:子查询、连接、运算符和函数
- qss总结
- 题目1388:跳台阶
- iPad上添加顶部导航栏会遮挡控制器的view展示
- swift运行时打印所有属性