CentOS软件包管理

前端之家收集整理的这篇文章主要介绍了CentOS软件包管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

CentOS软件包管理

系统环境:CentOS 6.9和7.3


CentOS 6.9系统软件包管理

rpm - RPM Package Manager

rpm --version

RPM version 4.8.0


linux包管理

二进制应用程序的组成部分:二进制文件,库文件配置文件,帮助文件

debian:deb文件,dpkg包管理器

Redhat:rpm文件,rpm包管理器

ldd /bin/cat 查看软件依赖的库文件

ldd /bin/ls

删除系统库文件恢复方法

光盘启动进入救援模式

默认挂载到/mnt/sysimage

运行chroot /mnt/sysimage改变挂载点

还原移动或删除的库文件,重启即可

查看和管理本机装载的库文件

ldconfig

/sbin/ldconfig -p

配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf

缓存文件:/etc/ld.so.cache

第三方安装源EPEL――rpmforge

搜索:http://pkgs.org http://rpmfind.net http://rpm.pbone.net https://sourceforge.net/

rpm包命名格式

包名-包版本号-编译版本号.cpu架构.rpm

name-version-release.arch.rpm

例: bash-4.2.46-19.el7.x86_64.rpm

VERSION: major.minor.release

release: release.OS

常见的 arch:

x86: i386,i486,i586,i686

x86_64: x64,x86_64,amd64

powerpc: ppc

跟平台无关: noarch

制作rpm包命令:rpmbuild 和FPM

查找所有包的平台架构

ls -al /mnt/Packages/ > lsrpm.log

more lsrpm.log | egrep -o "[^.]+\.rpm" |cut -d. -f1 |sort| uniq

######################

安装-i

安装选项:

  1. --test:测试安装,但不真正执行安装,即dryrun模式
  2. --nodeps:忽略依赖关系
  3. --replacepkgs|replacefiles用于同一个包,替换包,即重新安装|替换文件,用于不同的包
  4. --nosignature:不检查来源合法性
  5. --nodigest:不检查包完整性
  6. --noscripts:不执行程序包脚本
  7. %pre:安装前脚本;--nopre
  8. %post:安装后脚本;--nopost
  9. %preun:卸载前脚本;--nopreun
  10. %postun:卸载后脚本;--nopostun
  11. --root=/mnt/sysimage救援模式下重新安装kernel需要指定/目录或者运行chroot
  12. rpm-ivhrpmfile安装软件包

#######################

查询-q

选项:

  1. -a查询所有已经安装的包
  2. -f查询指定的文件由哪个程序包安装生成
  3. -prpmfile查询指定包内容,必须跟rpm包路径
  4. -c查询程序的配置文件
  5. -d查询程序的文档
  6. -i查询程序的详细信息
  7. -l查询程序包的所有文件
  8. -R查询指定程序包所依赖的功能
  9. -s:查询所有文件的状态
  10. --changelog
  11. --scripts:程序包自带的脚本
  12. --provides:列出指定程序包所提供的功能
  13. 常用组合选项:
  14. -qi查询软件包的详细信息
  15. -ql查询软件包生成的所有文件列表
  16. -qc查询软件包生成的所有配置文件(/etc目录下)
  17. -qd查询软件包生成的所有说明文件man帮助文档)
  18. -qR查询软件包的依赖包关系
  1. rpm-qkernel
  2. rpm-qatree
  3. rpm-qa|greptre模糊搜索tree
  4. rpm-qa|wc-l查询所有已安装的软件包
  5. rpm-qf/etc/issue查看指定文件属于哪个rpm
  6. rpm-qf/bin/bash
  7. rpm-qf`whichrpm`查询指定命令由哪个包生成
  8. rpm-qplrpmfile查看指定包文件列表
  9. rpm-qpirpmfile查询指定包信息
  10. rpm-qpl--scriptsbash-xxx.rpm查询指定安装包的安装脚本
  11. rpm-qabash--scripts
  12. rpm-qcbash配置文件
  13. rpm-qdbash文档
  14. rpm-qltree
  15. rpm-qitree查询已经安装过的包
  16. rpm-q--whatprovidesbash查询指定命令由哪个包提供
  17. rpm-q--whatrequiresbash查询指定命令依赖哪个包

查询系统是否安装了指定软件

  1. rpm-qlogrotate
  2. rpm-qlogrotating

查询系统工具来自哪个安装包

  1. #rpm-qf`whichlsblk`
  2. util-linux-2.23.2-33.el7.x86_64
  3. #yuminstallutil-linux
  1. rpm2cpiorpmfile|cpio-itv查看rpm包内文件的详细信息,包括权限,大小的,类似于ls显示
  2. rpm2cpiorpmfile|cpio-id"*.conf"提取安装包内的指定文件
  3. rpm2cpio/mnt/sdb1/Packages/tree-1.5.3-3.el6.x86_64.rpm|cpio-itv
  4. rpm2cpio/mnt/sdb1/Packages/tree-1.5.3-3.el6.x86_64.rpm|cpio-id*.gz
  5.  
  6. 恢复误删除文件,此种方式可能会有权限问题,注意查看属主和权限,不推荐
  7. #rpm2cpiotree-1.6.0-10.el7.x86_64.rpm|cpio-itv
  8. #rpm2cpiotree-1.6.0-10.el7.x86_64.rpm|cpio-id./usr/bin/tree
  9. #llusr/bin/tree
  10. -rwxr-xr-x.1rootroot62768Jun914:29usr/bin/tree
  11. #ll/usr/bin/tree
  12. -rwxr-xr-x.1rootroot62768Jun102014/usr/bin/tree
  13. #cpusr/bin/tree/usr/bin

#######################

校验-V

  1. rpm-Vtree查询软件是否被更改过
  2. rpm-Vatree查询系统中所有可能被更改过的文件
  3. rpm-Vprpmfile查询该软件包被更改过的文件列表
  4. rpm-Vffilename查询文件属性

列出你的Linux内的logrotate这个软件是否被更改过

rpm -V logrotate

查询一下你的/etc/crontab是否有被更改过

# rpm -V tree

S.5....T. /usr/bin/tree

# 被更改过所以会列出被更改过的信息类型

# rpm -Vf /etc/ssh/sshd_config

S.5....T. c /etc/ssh/sshd_config

显示的信息类型如下:

S :(file Size differs) 文件大小已被改变

M :(Mode differs) 文件的权限(rwx)已被改变

5 :(MD5 sum differs) MD5验证不同

D :(Device major/minor number mis-match) 设备的主/次号码不匹配

L :(readLink(2) path mis-match) Link路径已被改变

U :(User ownership differs) 文件的所有者已被改变

G :(Group ownership differs) 文件的所属组已被改变

T :(mTime differs) 文件的mtime时间已被改变

显示文件类型如下:

c :配置文件(config file)

d :文档文件(documentation)

g :ghost文件,指该文件不被软件包所包含,较少发生(ghost file)

l :许可证文件(license file)

r :自述文件(read me)

chgrp bin /usr/bin/tree

rpm -V tree

echo >> /usr/bin/tree

rpm -V tree

rpm -Va

包来源的完整性验证:SHA256,来源合法性验证:RSA

对称加密:加密,解密使用同一密钥

非对称加密:密钥是成对出现的,公钥和私钥

rpm -K rpmfile 检查包的完整性和签名

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 导入公钥,光盘里也有

rpm -qa "gpg-pubkey"

rpm -qi gpg-pubkey

# rpm -K tree-1.5.3-3.el6.x86_64.rpm

tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

#######################

升级-U/-F

  1. rpm-Uvhrpmfile
  2. rpm-Fvhrpmfile
  3. -U,--upgrade:安装有旧版程序包,则升级;如果不存在则安装
  4. -F,--freshen:安装有旧版程序包,则升级,如果不存在则不执行升级操作
  5. --oldpackage:降级
  6. --force:强制安装,不能用于卸载

#######################

卸载-e

卸载rpm包

  1. rpm-etree
  2. rpm-qtree
  3. rpm-ekernel-2.6.32-573.el6.x86_64内核需要加上版本号
  4. rpm-erpm不能直接删除
  5.  
  6. rpm-erpm--nodeps去除依赖性
  7. rpm删除后需要通过光盘启动救援模式来重新安装rpm包,然后重启
  8. rpm-ivh/mnt/cdrom/Packages/rpm.rpm--root=/mnt/sysimage指定新的/目录

rpm数据库重建:存放路径/var/lib/rpm

--initdb:初始化数据库,如果原先不存在则新建,否则不执行任何操作。

--rebuilddb:重建已安装的包头数据库索引

rpm的查询和安装都依赖rpm数据库,很重要,这里即使重建,但是数据为空,重建也无意义,所以最好提前做备份。

如何制作一个rpm包?


yum - Yellowdog Updater Modified

yum是一个交互式的RPM包管理程序,可自动解决包依赖问题,基于repository元数据来查询,安装,更新,卸载软件包,执行系统更新,检查包依赖性等操作

repodata:存储rpm包以及依赖包的相关元数据

repodata的父目录就是yum仓库的路径,Redhat5系列在Server目录下,centos6之后为光盘根目录。

支持4种路径http:// https:// ftp:// file://

yum日志:/var/log/yum.log

/var/lib/yum/ yum的元数据

/var/lib/rpm/ rpm数据库

yum只能同时运行一个进程,底层依赖rpm命令。

yum --version 查看版本等信息


yum

选项:

  1. -c指定配置文件
  2. -q静默模式,只提示必要的包列表信息
  3. -y,--assumeyes自动回答yes
  4. --assumeno自动回答no
  5. --installroot=[path]指定安装的根目录
  6. --nogpgcheck禁止进行gpgcheck
  7. --noplugins禁用所有插件
  8. --version

命令:

  1. yumrepolist列出可用的yum
  2. yumlist显示所有安装包,@表示已经安装,installed表示是通过rpm命令安装的
  3. yumsearch通过yum数据库查询软件包
  4. yuminfo查询软件包的信息
  5. yuminstall安装
  6. yumreinstall重新安装
  7. yumupdate升级
  8. yumdeplist查询包依赖关系
  9. yumprovides查询命令或功能由哪个包提供
  10. yumdistribution-synchronization同步已安装的软件到最新版本
  11. yumremove|erase卸载
  12. yumcheck-update检查更新
  13. yumhistory显示yum操作历史
  14. yumshell进入yum自带shell

包组命令:

  1. yumgroupinfo显示包组信息
  2. yumgroupinstall安装包组
  3. yumgrouplist显示所有包组列表
  4. yumgroupupdate更新包组
  5. yumgroupremove卸载包组
  6.  
  7. yumhistory[info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]
  8.  
  9. yumhistory
  10. yumhistoryinfo2显示yum历史列表为2的详细操作
  11. yumhistoryundo2回退操作,即还原安装历史序列号为2的所有操作
  12.  
  13. yumrepolistall显示所有的的yum
  14. yumlistinstalled|more查询已安装的包
  15. yumlistavailable|more查询可用的安装包
  16.  
  17. yumgrouplist|grep-A10Installed//查看已安装的软件包组
  18. yumgrouplistdevelopmenttools//查询指定包组
  19. ServerPlatformDevelopmentDevelopmenttools这两个包组是完全一样的,一般只需要安装后者即可
  20. yumgroupinstallDevelopmenttools

更新缓存:

  1. yumcleanall
  2. yummakecache

yum源配置文件

/etc/yum.conf 全局配置,为所有仓库提供公共配置

/etc/yum.repos.d/*.repo 配置yum仓库

  1. vibase.repo
  2. [base]//仓库名不能重名
  3. name=centos6//描述信息
  4. baseurl=URL//元数据路径,即repodata目录的路径,支持http,ftp,file
  5. enabled={1|0}//1启用,0禁用
  6. gpgcheck={1|0}//验证
  7. gpgkey=URL
  8. enablegroups={1|0}
  9. failovermethod={roundrobin|priority}//roundrobin表示随机挑选,默认值;priority表示按顺序访问
  10. cost=//默认为1000

yum的repo配置文件中可用的变量:

$releasever:当前OS的发行版的主版本号

$arch:平台,i386,x86_64

$basearch:基础平台,i386,x86_64

$YUM0-$YUM9:自定义变量

http://server/centos/$releasever/$basearch/ 通用方式,可以表示以下两种

http://server/centos/7/x86_64

http://server/centos/6/i386

最简单的repo文件

  1. [base]
  2. name=centos6
  3. baseurl=ftp://192.168.1.1/pub/6
  4. gpgcheck=0

yum只能同时运行一个进程,如果有其他用户同时使用yum,可以通过fuser -km /repodata-path 强行结束。

  1. fuser-km/var/ftp/pub/6
  2. mount--bind/misc/cd/var/ftp/pub/6
  3. mount
  4. yuminstallgcc

创建yum仓库:createrepo .

先把rpm文件放到一个目录,然后执行createrepo 目录路径即可生成repodata目录仓库


配置yum源

1.光盘yum源配置,通过autofs服务开机自动挂载光盘

  1. yuminstallautofs
  2. serviceautofsstart
  3. vi/etc/yum.repos.d/base.repo
  4. [cdrom]
  5. name=cdrom
  6. baseurl=file:///misc/cd
  7. gpgcheck=0
  8. enabled=1

更新yum源缓存并测试安装软件,以下均省略说明

  1. yumcleanall
  2. yummakecache
  3. yumrepolist
  4. yumremovetree
  5. yuminstalltree

2.网络yum源配置,推荐使用http方式

  1. yuminstallhttpd
  2. mkdir/var/www/html/yum
  3. mount/dev/sr0/var/www/html/yum
  4. servicehttpdstart
  5. vi/etc/yum.repos.d/base.repo
  6. [yumsrc]
  7. name=yumsrc
  8. baseurl=http://192.168.10.61/yum
  9. gpgcheck=0
  10. enabled=1

更新yum源缓存并测试安装软件,同上

3.搭建自定义的yum源

  1. yuminstallcreaterepo
  2. mkdir/app/Packages
  3. cp/root/xxx.rpm/app/Packages
  4. createrepo/app/Packages
  5. mkdir/var/www/html/yum
  6. mount-obind/app/Packages/var/www/html/yum
  7. vi/etc/yum.repos.d/base.repo
  8. [yumsrc]
  9. name=yumsrc
  10. baseurl=http://192.168.10.61/yum
  11. gpgcheck=0
  12. enabled=1

更新yum源缓存并测试安装软件,同上


CentOS 7.3系统软件包管理

yum groups命令与6不同,如下:

yum groups list 查询包组

yum groups info

yum groups install

yum groups remove

yum groups summary

yum groups list | grep -A 10 Installed //查看已安装的软件包组

yum groups info Development Tools

猜你在找的CentOS相关文章