前端analysis | 3w & 1h

《Linux》- shell RPM包管理

2020-09-25

linux 源码包

编译源码包,安装速度很慢,尽可能采用二进制包,
编译源码包,需要gcc编译器二进制安装包;编译器是c c++编写的。
rpm包,安装速度快,但看不到源码,存在固定的依赖性

rpm包全名

httpd-2.2.15-15.el6.centos.1.i686.rpm

  • httpd 包名
  • 2.2.15 版本号
  • 15 发行次数
  • el6 发行商。代表red Hat
  • i686 适合的平台

rpm包安装

源码包和rpm包安装路径不同,同一个服务器可以安装,但是只能启动一个,服务占用的端口互斥
rpm采用系统默认安装路径;源码包,采用指定路径,默认/usr/local

  • rpm默认路径也可以指定,但是这样会影响启动,找默认路径,找不到,调用失败

安装格式

1
2
# install verbose hash# 
rpm -ivh [包全名1] [包全名2] ...
  • –nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意:这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
  • –replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报“某个文件已经存在”的错误,从而导致软件无法安装。使用这个选项可以忽视这个报错而覆盖安装。
  • –replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
  • –force:强制安装。不管是否已经安装,都重新安装。也就是–replacefiles和–replacepkgs的综合。
  • –test:测试安装。不会实际安装,只是检测一下依赖性。
  • –prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中,那么系统会找不到这些安装的软件,需要进行手工配置才能被系统识别。所以,我们一般采用默认路径安装RPM包

升级更新

1
2
3
4
5
#如果没有安装,则自动安装
rpm -Uvh 包全名

#必须先安装低版本,才能安装高版本
rpm -Fvh 包全名

rpm命令

rpm包搜索,搜索/var/lib/rpm下二进制文件

rpm包文件校验, 已经安装的文件和/var/lib/rpm/目录下的数据库内容进行比较,以确定是否有文件被修改

1
2
3
4
rpm -V httpd

#校验所有已安装的
rpm -Va
  • S:文件大小是否改变。
  • M :文件的类型或文件的权限(rwx)是否改变。
  • 5:文件MD5校验和是否改变(可以看成文件内容是否改变)。
  • D:设备的主从代码是否改变。* L:文件路径是否改变。
  • U:文件的属主(所有者)是否改变。
  • G:文件的属组是否改变。
  • T:文件的修改时间是否改变。apache配置文件的文件类型是c,那么,还有哪些文件类型呢?
  • c:配置文件(configuration file)。
  • d:普通文档(documentation)。
  • g:“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含。
  • l:授权文件(license file)。
  • r:描述文件(read me)。

已安装包

是否安装包名

1
rpm -q httpd 

查看所有已安装包

1
rpm -qa | grep httpd 

查看包详情

1
rpm -qi httpd 

查看包文件列表

1
rpm -ql httpd 

查看系统文件属于哪个安装包

1
rpm -qf /bin/ls

查看系统中特定包的依赖关系

1
rpm -qR httpd

卸载, 必须按照依赖关系,逐个卸载,否在其他软件无法使用
–nodeps 忽略依赖,直接卸载

1
rpm -e(erase) httpd

未安装包

查看包信息

1
rpm -qip 包全名

查看包文件列表

1
rpm -qlp 包全名 

查看包的依赖关系

1
rpm -qRp httpd

cpio

文件备份

1
2
3
4
5
6
7
8
9
# 备份到文件库
cpio -ocvB > xxx.cpio
-o 输出
-c 新portable format格式
-v 显示详情
-B 块形式

find . -print | cpio -ocvB > tt.cpio

文件提取

1
2
3
4
5
6
cpio -icvdu < tt.cpio
-i 提取
-c
-d 自动创建文件夹
-u 新的文件覆盖旧文件
-v 显示过程

文件夹备份

1
find . -print | cpio -p /temp/test 

文件提取

1
rpm2cpio 包全名 | cpio -ivduc 路径

服务启动

1
2
3
4
5
service 服务名 start | restart | stop | status 

service httpd restart

netstat -tlun | grep 80

SRPM包

源码形式封装成rpm包发布

安装方式

  • 利用rpmbuild –需要手动安装

    rpmbuild命令就是先把SRPM包解开,得到源码包;然后进行编译,生成二进制文件;最后把二进制文件重新打包生成RPM包

    1
    2
    3
    #--rebuild只编译,不安装 
    #--recompile编译且安装
    rpmbuild --rebuild xxx.src.rpm
  • 利用*.spec

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏