RPM包管理和YUM仓库的总结

1,软件运行和编译
2,RPM包使用于管理
3,YUM仓库创建与管理

1,软件运行和编译

程序源代码 –> 预处理 –> 编译 –> 汇编 –> 链接

静态编译: .a

动态编译: .so

 

库文件

查看二进制程序所依赖的库文件  如:

ldd  /bin/ls

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

ldconfig -p  显示本机已经缓存的所有可用库文件名及文件路径映射关系

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

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

 

误删除了库文件可以进入救援模式修复。

救援模式:

如果某些重要文件被删除,导致系统某些重要功能失效出错,可以进入救援模式修复,首先挂载好光盘,

然后用光驱启动,选择救援模式进入,系统会变成由光盘加载的shell的小系统,可以执行各种命令。需要

注意的是,在救援模式下,系统的根目录/会变成/mnt/sysimage/。

在救援模式下建立软链接,必须考虑路径问题,推荐用相对路径,直接进入文件目录建立链接较好。

 

2,包管理器 RPM

 

二进制应用程序的组成部分:

二进制文件、库文件、配置文件、帮助文件

RPM包能解决软件安装的问题,但解决不了软件依赖性的问题。

RPM包格式:

ftp-0.17-54.el6.x86_64.rpm

ftp:软件名称

0:软件的主版本号

17:软件的次版本号

54:软件编译次数

x86_64:软件适合的硬件平台

 

rpm   -options    PACKAGE_FILE…

-i 就是install

-v  就是过程可视化

-h 就是#表示安装进度

–test:不执行真正安装,仅报告依赖关系和冲突信息等

–force :强制安装

–nodeps:忽略依赖关系安装

–replacepkgs:覆盖安装–重新安装并覆盖原有的文件

-U 升级或安装  不存在就安装

-F 升级     不存在则不安装

-e 卸载      package_name

-e –allmatches 如果一个程序包有多个版本,则一次全部卸载

(如果包配置文件曾经被修改,则删除时会被重命名(加后缀.rpmsave)后留存。

 

注意:

1.一定不要对内核执行升级;Linux允许多内核共存,如果需要可以直接安装不同版本内核!(如果确实要

新内核可以用安装的方法进行 RPM -ivh ,这样系统启动会有两个内核选择,在充分测试后确认新内核稳定

的情况下,再卸载旧内核)

2.如果程序包配置文件安装后曾被更改,升级时,新版本配置文件不会覆盖旧配置文件,而把新版本配置文

件重命名(加后缀.rpmnew)后保存。

 

包查询

rpm     -q    package_file       查询某些包是否已经安装

-qa                                            查询所有已经安装的包

-qf     path/to/file                  查询某个文件是由哪些包安装生成

-qpi   filename                        查尚未安装包文件的相关信息文件列表,跟的是文件名而不是包名

-qi    package_file                  查询某包简要信息,比较详细

-ql     package_file                 查询某包安装生成的文件列表

-qc      package_file               查询某包安装生成的所有配置文件

-q   –whatprovides     Capability    查询指定的能力由哪个包所提供

-q    –whatrequires    Capability     查询指定的能力被哪些包所依赖

-q    –scripts                          查询脚本

 

常见用法

1.rpm -q  vsftpd &> /dev/null || rpm -ivh /misc/cd/packages/vsftpd-2…  &> /dev/null

2.rpm -qa  | grep  你要找的包名

3.误删除了/usr/bin/tree 但是不知道这个文件来自于哪个安装包可以用命令

rpm -qf    /usr/bin/tree

4.rpm2cpio 恢复文件方法

rpm2cpio   /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -tv 查看包包含哪些文件,要

恢复的是哪个文件。

rpm2cpio   /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -idv ./usr/bin/tree   解压需要

恢复的文件,注意是在当前目录。

然后再用cp或者mv命令把文件恢复到原路径位置即可

缺点:有可能会改变文件属性,例如所有者所属组和权限问题

 

包校验

rpm  -V    package_name    校验包安装之后生成的文件是否发生改变

(S M 5 D L U G T P)

rpm  -K  package_name      检查包的来源及完整型 后面跟的是包完整名字

要先导入合法的KEY文件:

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

或者直接只光盘里导      /run/media/root/Centos/……./x86_64/RPM-GPG-KEY-…

卸载密钥用

rpm -qa “gpg-pubkey*”       查询现有的key

rpm  -e gpg-pubkey-….        卸载现有的key

注意:以上功能都依赖rpm数据库,里面含有各种已经安装的rpm包信息,建议备份,否则连装了什么都

不知道,无法安装和卸载。

/var/lib/rpm

注意:如果删除了整个rpm命令文件怎么办??

例如: rpm -e rpm –nodeps

进入救援模式(光盘模式启动)

1,建一个临时的文件夹

mkdir   /mnt/cdrom

2,挂光盘

mount  /dev/sr0   /mnt/cdrom

3,安装rpm

rpm -ivh /mnt/cdrom/Packages/rpm-…..    –root=/mnt/sysimage/

4,可以直接在救援模式下切换到根下测试下效果

chroot /mnt/sysimage/

5,rpm 可用则可以重启

 

3,YUM仓库的创建与管理

 

yum可以解决各软件的依赖关系问题,但底层依然是rpm,实际上是对rpm的二次封装。

yum cache 储存 meta data

yum安装完成文件后默认会删除安装包

缓存的默认路径可以在/etc/yum.conf里查看

/var/cache/yum….

yum cache 的信息过旧就必须清除

yum clean all       清除缓存

yum出故障一般是这2个问题

1) 配置文件格式或者参数写错

2)  yum cache 数据过旧

 

配置yum

1)准备配置文件

主配置文件:

/etc/yum.conf

选项

keepcache=1                              保留安装包

logfile=/var/log/yum.log       yum使用记录

gpgcheck=0                               不检查包的可靠性

 

配置自己的yum端:

一、光盘源:

1.移动默认到bak/目录下,没有则mkdir创建

2.在指定目录下创建.repo后缀的文件

/etc/yum.repos.d/*.repo

一般源为光盘默认叫base.repo

vim base.repo

[base]                                                      repoid   不要带空格

name=centos cdrom                             描述信息

baseurl=file:///mnt/cdrom               源路径为repodata的父目录,其他看以下注意

gpgkey=file:///mnt/cdrom/RPM-GPG…      为了安全要校验,路径可以直接光盘导入

#gpgcheck=0                                         不校验签名,一般不推荐,可以删除

#enabled=0                                            禁用源,启用则用1

#failovermethod=priority                    源为多路径时,按顺序访问,roundrobin随机

#cost=                                                       默认1000   ,多仓库时,靠cost值判断优先级,越小越优先

 

注意:

1.仓库路径最好不要带空格,由于默认光盘目录repodata父目录有空格,所以最好不要用。用:

mkdir    /mnt/cdrom

mount  /dev/sr0   /mnt/cdrom

 

2.仓库路径为多路径时,可以把多路径写入一文件,例如:

创建文件baselist

baseurl=file:///mnt/cdrom

http://172.20.0.1/centos/7/

修改base.repo的baseurl为

mirrorlist=file:///root/baselist即可

 

二、网络源

例如添加epel源

内容可以直接在原文件base.repo下添加,或者另外建立新文件配置

[epel]

name =centos 7 epel

baseurl=https://mirrors.aliyun.com/epel/7/x86_64/                这里的是阿里的epel源

gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7       阿里的key

#enabled=0                                            禁用源,启用则用1

 

如果做了上述操作后发现源没有更新,那么要清理缓存

yum  clean all

 

彻底点可以直接执行

rm -rf /var/cache/yum

yum repolist           列出已经配置的所有启用仓库源

yum repolist    all    列出所有仓库包括已经禁用的仓库源

yum  repolist    disable    只列禁用仓库

yum list

仓库里所有的包,读取的是缓存里的数据

yum list  ‘*ftp*’

 

centos7下挂载光盘工具包

yum install  autofs

systemctl start autofs

systemctl  enable autofs

/misc/cd  可挂载光盘

另可用yum-config-manager 来直接生成repo文件

yum-config-manager –add-repo=//172.20.0.1/centos/7/

 

yum仓库管理

 

yum repolist                                  列出已经配置的所有可用仓库

yum clean all                                 清除缓存

yum install  packagename           安装

yum  remove packagename         卸载

yum  reinstall  packagename       重装,可以用于修复被损坏的功能

yum -y                                              自动回答yes

yum search                                      支持模糊搜索

yum info                                           查询信息

yum deplist                                      查询某个包所依赖的能力

yum   –nogpgcheck                        禁止进行gpg check

 

yum history                                       查看历史

yum history   info  7

yum history   undo  7                         直接撤销 如果包含n个程序,也会一并删除

yum history   redo 7                          重做

 

注意:

1.只需要提供包名

2.如果某包由再不同仓库中有多个不同版本,则默认安装最新版本

3.如果要指定安装版本:install PACKAGE-VERSION

4.如果要删除某个带有依赖其他包的包,可以查询history,通过undo相关编号就可以实际删除包以及所依

赖的相关包。

 

包组

需要安装某些较多套件的包,例如安装图形界面,就必须涉及到包组

yum  grouplist            查看包组清单

yum  groupinstall       安装包组

yum  groupremove    卸载包组

yum  groupinfo          包组信息

 

注意:

1.安装包组名带空格的包要加引号

yum groupinstall  “Development Tools”

2.静默并自动选择卸载httpd

yum -y -q remove  httpd

 

创建自定义yum仓库

如生产环境中打包的新软件需要放上yum,则可在放rpm包目录下运行命令,例如把/data建成yum仓库

createrepo  /data

创建yum数据,创建完后当前文件夹/data有repodata目录,只要建立或修改相应的repo文件下的baseurl添

加此路径就可以创建成功安装了。

 

创建yum仓库服务器

这里以7.4服务器做为6.9和7.4两个版本的yum仓库服务器

1.安装httpd

systemctl     start   httpd         启动httpd服务

systemctl enable httpd           设置开机自动启动

2.关闭防火墙

centos 6

service iptables stop

chkconfig iptables off

centos 7

systemctl stop firewalld

systemctl disable firewalld

3.打开浏览器,输入ip就可访问网页,同时在系统编辑内容

cd   /var/www/html

echo welcome to  Max Page > index.html

mkdir  -p   centos/{7,6}/os/x86_64/                 建立了2个目录

4.增加光驱,挂载光盘

在虚拟机软件增加光驱然后执行

echo  ‘- – -‘ > /sys/class/scsi_host/host2/scan       执行磁盘扫描命令

不行则重启…..

挂载光盘

mount /dev/sr0     centos/7/os/x86_64/

mount /dev/sr1        centos/6/os/x86_64/

 

注意:

1,可能会显示错误,可以用mount命令检查是否成功

2, cat   centos/7/os/x86_64/ 检查防止挂反了

4,记得修改原repo文件的baseurl路径

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96647

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code