linux包管理

撸猫鼠

简介

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目录

image.png

  • 光盘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

五、推荐

Linux底层模块和自带软件,推荐使用RPM安装,例:gcc、GUI、开发库等,手工定制的软件推荐yum安装
服务器上的应用程序,推荐源码安装,例:apache、DNS、Mail等
软件卸载时,不推荐yum卸载,容易卸载了某个依赖,导致系统奔溃
阅读 534
7 声望
0 粉丝
0 条评论
你知道吗?

7 声望
0 粉丝
宣传栏