linux包管理

简介

Linux安装程序包分为源码包和二进制包(源码编译以后),源码包安装须要编译,只有编译了的源码包,才能被解析;若编译时出错,运维人员难以解决;并且,源码包安装的时间较长;通常的源码包格式为“\*.tar.gz”,须要自行到官网下载。node

  • 源码包通常包含文件linux

    • 源代码
    • 配置和检测程序(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格式

误删系统命令修复
    一、从新安装一遍
    二、提取文件,复制到对应的位置

例:误删/bin/ls
    一、查看ls属于哪一个软件包  rpm -qf /bin/ls
    二、模拟误删   mv /bin/ls /root/ 
    三、提取命令文件  rpm2cpio /mnt/cdrom/packages/cors...|cpio -idv ./bin/ls 
    四、复制到对应的位置  cp /root/bin/ls /bin/
RPM数据库问题
若是判断是RPM数据库问题,就要基于光盘或者其余源的来源处获取获得的SambaRPM文件进行检查了
rm -f /var/lib/rpm/_db.*  #删除RPM数据库
rpm --rebuildddb   #重建数据库
SRPM包
源码形式发布,再封装成RPM包
格式:与RPM格式相同,只是多了一个“src”的标志
使用rpmbuild管理,先将SRPM包解开,将源码编译成二进制文件,在将二进制文件从新打包成RPM包
一、安装
    a、rpmbuild 参数 包全名
    --rebuild:编译SRPM包,不会自动安装,手动安装
    --recompile:编译SRPM+自动安装
    b、*.spec安装
        rpm -i SRPM包  解包
        rpm -ba /root/rpmbuild/SPEC/httpd.spec  在/root/rpmbuild中生成目录,选择对应的按照方式便可

1、yum在线管理

解决RPM安装强依赖性问题
本质:安装的仍是RPM包
yum源搭建
rpm -qa | grep yum    #是否安装yum软件

vim /etc/yum.repos.d/CentOS-Base.repo   #查看容器内容
  • 网络yum源web

    • 配置文件:/etc/yum.re-pos.d/,扩展名必定是“\.repo”,即只要是“\.repo”才会生效
ls /etc/yum.repos.d/   #查看yum目录

image.png

  • 光盘yum源
CentOS-Media.repo  #光盘yum源模板文件

一、挂载光盘
二、修改其它yum源后缀,使得他们失效
三、修改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 软件组名   #卸载软件组

2、源码包管理

linux大多数源码包都是用C语言编写的,安装源码包,必需要有gcc编译器
一、查看是否安装gcc编译器
    rpm -q gcc
二、查看make编译器是否安装
    rpm -qa make
源码包安装
  • 下载源码包
  • 下载格式:常见的“.tar.gz”或者“.tar.bz2”
  • 保存源码的位置:“/usr/src”:内核源码;“/usr/local/src”:用户下载的源码
  • 删除的时候直接找到安装目录删除掉便可
一、下载软件包
二、解压缩
三、进入解压目录
四、./configure软件配置检查:①检查硬件环境是否符合要求 ②自定义功能选项,例如安装路径等 ③将系统环境的检测结果和定义好的功能选项写入Makefile这个文件中
    注意:./configure不是系统命令,是源码包自带的检测脚本,必须采用./configure执行
    ./configure --help:查看帮助  例:./configure--prefix=/usr/local/src/apache   #指定安装目录
五、make编译:调用gcc编译器,编译Makefile中的内容,将源码文件编译为二进制文件
六、make clean:清空编译内容(非必须);若是在./configure或者make时报错,从新编译时,必定要先执行make clean
七、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”来同步的

3、函数库管理

本质:SDK
位置:/usr/lib;内核调用的函数库:/lib/modules
分类
静态函数库——“\*.a”:优势——不须要外部数据,能够直接执行;缺点——编译生成的文件较大,升级困难
动态函数库——“\*.so”:优势——没有整合到程序中,文件小,升级方便;缺点——易出现问题
安装函数库
ldd -v 可执行文件名   #查看调用的函数库
例:ldd -v /bin/ls    #查看ls调用的函数库


导入新的函数库
    一、将函数库复制到/usr/lib目录中  cp *.so /usr/lib/
    二、修改函数库的配置文件  vi /etc/ld.so.conf
    三、写入函数库所在的目录(默认/usr/lib/已经被识别) include ld.so.conf.d/*.conf /usr/lib/
    四、idconfig命令从新读取/etc/ld/.so.conf至缓存中
    五、ldconfig -p:列出缓存中的函数库

4、脚本程序包管理

很少见,常见的是一些硬件的驱动
一、安装Webmin
    a、tar -zxvf webmin-1.610.tar.gz
    b、cd webmin-1.610
    c、./setup.sh

5、推荐

Linux底层模块和自带软件,推荐使用RPM安装,例:gcc、GUI、开发库等,手工定制的软件推荐yum安装
服务器上的应用程序,推荐源码安装,例:apache、DNS、Mail等
软件卸载时,不推荐yum卸载,容易卸载了某个依赖,致使系统奔溃
相关文章
相关标签/搜索