简介
Linux安装程序包分为源码包和二进制包(源码编译之后),源码包安装需要编译,只有编译了的源码包,才能被解析;若编译时出错,运维人员难以解决;而且,源码包安装的时间较长;一般的源码包格式为“\*.tar.gz”,需要自行到官网下载。
源码包一般包含文件
- 源代码
- 配置和检测程序(configure或者config)
- 安装说明(README)
零、RPM管理
强依赖性
www.rpmfind.net:查询库文件属于的软件包
二进制包和源码包可以同时安装,但是只能启动一个
RPM一般采用默认路径安装,源码包一般通过手动指定(一般为/usr/local/src)
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd:软件包名
2.2.15:版本
15:软件发布次数
el6:软件发行商
i686:适合的硬件平台
RPM包安装
rpm -ivh #包全名 注意路径
rpm -ivh a.rpm b.rpm c.rpm #同时安装多个包
--nodeps:不检查依赖性安装
--replacefiles:替换文件安装,因为某个文件已经存在而报错,可以使用此参数忽略
--replacepkgs:替换软件包,重装软件
--force:强制安装,--replacefiles和--replacepkgs综合
--test:测试安装
--prefix:指定安装路径
RPM包升级
rpm -Uvh 包全名
RPM包查询
查询的位置是/var/lib/rpm/
rpm -qa 包名 #是否安装
rpm -qa |grep 包名 #列出所有包名称相同的包
rpm -qi 包名 #列出已经安装包详细信息
rpm -qip 包全名 #列出未安装包详细信息
rpm -qil 包名 #软件包中的文件列表
rpm -qf 系统文件名 #查询文件系统属于哪个RPM 例:rpm -qf /bin/ls
rpm -qR 包名 #查询软件包所依赖的软件包
RPM卸载
注意:卸载有依赖性,如果不按照依赖性卸载就会报错
rpm -e 包名
可以使用--nodeps,不检测依赖性,但是这样会导致其它软件包无法正常使用
RPM包校验和数字证书
校验:已安装文件与/var/lib/rpm/目录下的数据库内容比较
rpm -V 已安装的包名
rpm -Vf 系统文件名 #校验是否被修改过
S:大小是否改变
M: 类型或者文件的权限是否改变
5:文件MD5校验是否改变
D:设备的主从代码是否改变
L:文件的路径是否改变
U:所属关系是否改变
G:所属组是否改变
T:修改时间是否改变
上述校验只是校验了文件,如果RPM包本身被动过手脚,只能利用数字证书校验
RPM包文件提取
cpio:文件与文件库交互,问题是不能自己指定备份或者还原的文件是什么,必须有其它命令告知
如果发现某个系统文件出了问题,可以将这个问题文件提取出来进行修复
rpm2cpio 包全名 | cpio -idv . 文件的绝对路径
rpm2cpio:将rpm包转换为cpio格式
误删系统命令修复
1、重新安装一遍
2、提取文件,复制到对应的位置
例:误删/bin/ls
1、查看ls属于哪个软件包 rpm -qf /bin/ls
2、模拟误删 mv /bin/ls /root/
3、提取命令文件 rpm2cpio /mnt/cdrom/packages/cors...|cpio -idv ./bin/ls
4、复制到对应的位置 cp /root/bin/ls /bin/
RPM数据库问题
如果判断是RPM数据库问题,就要基于光盘或者其他源的来源处获取得到的SambaRPM文件进行检查了
rm -f /var/lib/rpm/_db.* #删除RPM数据库
rpm --rebuildddb #重建数据库
SRPM包
源码形式发布,再封装成RPM包
格式:与RPM格式相同,只是多了一个“src”的标志
使用rpmbuild管理,先将SRPM包解开,将源码编译成二进制文件,在将二进制文件重新打包成RPM包
1、安装
a、rpmbuild 参数 包全名
--rebuild:编译SRPM包,不会自动安装,手动安装
--recompile:编译SRPM+自动安装
b、*.spec安装
rpm -i SRPM包 解包
rpm -ba /root/rpmbuild/SPEC/httpd.spec 在/root/rpmbuild中生成目录,选择对应的按照方式即可
一、yum在线管理
解决RPM安装强依赖性问题
本质:安装的还是RPM包
yum源搭建
rpm -qa | grep yum #是否安装yum软件
vim /etc/yum.repos.d/CentOS-Base.repo #查看容器内容
网络yum源
- 配置文件:/etc/yum.re-pos.d/,扩展名一定是“\.repo”,即只要是“\.repo”才会生效
ls /etc/yum.repos.d/ #查看yum目录
- 光盘yum源
CentOS-Media.repo #光盘yum源模板文件
1、挂载光盘
2、修改其它yum源后缀,使得他们失效
3、修改CentOS-Media.repo文件
yum常用命令
yum list #查询所有可用软件包列表
yum list 包名 #查询yum源服务器中是否包还某个软件包
yum search 关键字 #查询yum源服务器中所有和关键字相同的软件包
yum install -y 包名 #自动回答yes安装
yum -y update 包名 #升级指定的软件包
yum remove 包名 #软件卸载,注意:卸载的时候一定要确定软件的依赖包不影响系统,否则会导致系统奔溃
yum grouplist #查询可以安装的软件组
yum groupinfo 软件组名 #查询软件组中包含的软件
yum groupinstall 软件组名 #安装软件组
yum groupremove 软件组名 #卸载软件组
二、源码包管理
linux大多数源码包都是用C语言编写的,安装源码包,必须要有gcc编译器
1、查看是否安装gcc编译器
rpm -q gcc
2、查看make编译器是否安装
rpm -qa make
源码包安装
- 下载源码包
- 下载格式:常见的“.tar.gz”或者“.tar.bz2”
- 保存源码的位置:“/usr/src”:内核源码;“/usr/local/src”:用户下载的源码
- 删除的时候直接找到安装目录删除掉即可
1、下载软件包
2、解压缩
3、进入解压目录
4、./configure软件配置检查:①检查硬件环境是否符合要求 ②自定义功能选项,例如安装路径等 ③将系统环境的检测结果和定义好的功能选项写入Makefile这个文件中
注意:./configure不是系统命令,是源码包自带的检测脚本,必须采用./configure执行
./configure --help:查看帮助 例:./configure--prefix=/usr/local/src/apache #指定安装目录
5、make编译:调用gcc编译器,编译Makefile中的内容,将源码文件编译为二进制文件
6、make clean:清空编译内容(非必须);如果在./configure或者make时报错,重新编译时,一定要先执行make clean
7、make install:安装,真正的安装过程,这个时会写清楚安装位置,可以记录下此内容,共卸载使用
补丁的生产与使用
升级时不需要卸载已经安装好的文件,打个补丁,重新make一下即可
diff 参数 old new #比较old与new文件的不同
diff -Naur old.txt new.txt > txt.patch #比较两个文件,并且生成补丁文件
patch -pn < txt.patch #安装补丁文件进行更新
说明:补丁文件是要打入旧文件的,但是当前所在的目录不一定和补丁文件中记录的目录匹配,需要使用“-pn”来同步两个目录,
即:“-pn”取消补丁文件中记录的目录的“/” 例:/root/test/old.txt “-p2”:test/old.txt
make:重新编译打过补丁的文件
make install:重新安装
patch -R < txt.patch #还原补丁
注意:①给旧文件打补丁依赖的不是新文件,是补丁文件,所以即使新文件删除也无关 ②补丁文件中记录的目录和你当前所在的目录是需要通过“-pn”来同步的
三、函数库管理
本质:SDK
位置:/usr/lib;内核调用的函数库:/lib/modules
分类
静态函数库——“\*.a”:优点——不需要外部数据,可以直接执行;缺点——编译生成的文件较大,升级困难
动态函数库——“\*.so”:优点——没有整合到程序中,文件小,升级方便;缺点——易出现问题
安装函数库
ldd -v 可执行文件名 #查看调用的函数库
例:ldd -v /bin/ls #查看ls调用的函数库
导入新的函数库
1、将函数库复制到/usr/lib目录中 cp *.so /usr/lib/
2、修改函数库的配置文件 vi /etc/ld.so.conf
3、写入函数库所在的目录(默认/usr/lib/已经被识别) include ld.so.conf.d/*.conf /usr/lib/
4、idconfig命令重新读取/etc/ld/.so.conf至缓存中
5、ldconfig -p:列出缓存中的函数库
四、脚本程序包管理
不多见,常见的是一些硬件的驱动
1、安装Webmin
a、tar -zxvf webmin-1.610.tar.gz
b、cd webmin-1.610
c、./setup.sh