乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Redhat 3.00 RPM软件管理系统
2016-10-06 06:59:44
67
0
0
admin
> 这里介绍REDHAT 的RPM 软件管理系统的使用方式,包括安装/升级/卸载/查询 包 和 rpm 系统本身的维护。 #使用RPM 安装/升级/卸载/查询 软件 rpm 命令 -v 显示详细输出 -h 用井号显示进度条 --dbpath 路径 使用某个路径作为rpm系统数据库所在目录,默认为/var/lib/rpm ##安装 ``` rpm -ivh xxx.rpm #安装包 rpm -ivh --relocate /=/opt/xxx xxx.rpm #实际安装时替换某些目录 rpm -ivh --root /XXX/XXXX XXX.rpm #实际安装时把某目录当成跟目录 rpm -ivh --prefix /XXX/XXX XXX.rpm #把软件装在某个目录下 rpm -ivh --test XXX.rpm #仅测试依赖关系,不真的安装 --nodeps 不管依赖关系,**危险!** --replacefiles 允许覆盖一些其他包的文件,可以用在版本冲突或者某些文件已经存在的时候,**危险!** --replacepkgs 允许重复安装包。 --force == --replacepkgs && --replacefiles && --oldpackage --test 只是测试能否安装 --justdb 只升级rpm数据库 --nosignature 不检查签名 --noscripts 安装时不运行rpm 自带的脚本 --prefix path 强制安装路径 --reloacte xx=xx 将原本的安装路径中的某一个路径替换成其它的 --reloacte /=path 等同于 --prefix path ``` ###安装源码rpm 包 REDHAT官方发行的系统包通常是源码RPM包。 ``` rpm -i XXX.src.rpm #安装源码包 cd /usr/src/redhat/SPECS 方法一: rpmbuild -bb XXX.specs #通过源代码创建RPM包 cd /usr/src/redhat/RPMS/i386 #也可能是i686 noarch rpm -i XXX.rpm #安装包 方法二: rpmbuild -bp xxx.specs cd /usr/src/redhat/BUILD/xxx/ ./configure make make install ``` ##升级 ``` rpm -Uvh xxx.rpm #升级或安装某个包 rpm -Fvh xxx.rpm #仅升级某个包 rpm -Uvh --oldpackage xxx.rpm #降级某个包到旧版本 ``` ##卸载 rpm -e xxx.rpm #卸载某个包 ##查询 ###查询安装好的 ``` rpm -qa #列出安装的所有的包,用" | grep " 可以查询某个包是否已经安装。 rpm -ql xxx #列出某个包安装在系统中的的文件 rpm -qi xxx #显示某个包的信息 rpm -qf 路径/文件名 #查询某个文件属于哪个已经安装的包 rpm -qc xxx #查询某个包的配置文件 rpm -qd xxx #查询某个包的文档文件(man) rpm -qR xxx #查询某个包的依赖关系 ``` ###查询下载在某目录的rpm 包 ``` rpm -qpl xxx.rpm #列出某个包将会安装在系统中的的文件 rpm -qpi xxx.rpm #显示某个包的信息 rpm -qpc xxx.rpm #查询某个包的配置文件 rpm -qpd xxx.rpm #查询某个包的文档文件(man) rpm -qpR xxx.rpm #查询某个包的依赖关系 ``` ###检查安装好的包是否被改变 rpm -V xxx #检查某个包有没有丢失文件,有没有文件被改变过 rpm -Va #检查所有rpm包,很很很费时 rpm -Vp xxx.rpm #通过一个下载在本地的rpm 包来检查已经安装好的rpm 包状态 rpm -Vf 路径/文件名 #只检查某个文件 *rpm -V 的输出的含义* ``` 文件改变项 S 文件大小改变 M 文件类型/权限改变 5 MD5改变 D Device major/minor number mismatch L 软链接不匹配 U 文件USER权限改变 G 文件GROUP权限改变 T mTime 改变 P Capabilities 改变 (一种细分root 权限的更高级的权限控制) 文件类型: c 配置文件 d 数据文件 g 幽灵文件,不属于某个软件包 l 授权文件,关于license r readme 文件 ``` ##安全 rpm -K xxx.rpm 检查rpm 包的签名 rpm --import PUBKEY 导入rpm包公钥 ##从rpm包中抽取文件 rpm2cpio httpd-2.2.15-54.el6.centos.x86_64.rpm | cpio -t 查看rpm 包中的文件 rpm2cpio httpd-2.2.15-54.el6.centos.x86_64.rpm | cpio -ivd 将rpm 包解压 *** #RPM系统的排错 rpm 命令的使用依赖于rpm 数据库(/var/lib/rpm/),这是Berkeley DB数据库。 如果数据库被破坏的话,整个系统都会受影响,故此强烈建议备份该目录。 如果该数据库出了问题,可以用以下方法重建:(重建前备份该目录) ``` cd /var/lib/rpm rm -f __db* /usr/lib/rpm/rpmdb_verify ./Packages if [[ $? -ne 0 ]];then mv Packages Packages.bk db_dump Packages.bk |db_load Packages fi rpm --rebuilddb ``` 如果数据库不在,可以用这样的方法初始化一个新的数据库 rpm --initdb *** #一些小技巧 有些包可以通过以下方式非root安装 ``` cp -r /var/lib/rpm /tmp/lala rpm -ivh --prefix /XXX/XXX --dbpath /tmp/lala ./XXX.rpm ```
上一篇:
Redhat 1.01 logrotate
下一篇:
Redhat 3.01 建立RPM包
文档导航