rpm和yum软件管理
1.rpm简介 这是一个数据库管理工具,可以通过读取数据库,判断软件是否已经安装,如果已经安装可以读取出来所有文件的所在位置等,并可以实现删除这些文件。 rpm:RPM is Redhat Package Manager(递归缩写) rpm可以完成的操作 安装软件 卸载软件 查询软件信息 升级、降级 检验 打包程序 rpm仅仅能管理符合rpm格式的程序包,不能管理源码格式的程序 程序的格式 1)源码格式的程序:都是以压缩方式呈现的(后缀都是.tar.gz|bz2) 2)rpm格式的程序:这都是编译以后的程序 (后缀都是.rpm) 软件安装方式总结 方式1:编译安装 将源码程序按照需求进行先编译,后安装 缺点: 安装过程复杂,而且很慢 优点: 安装过程可控,真正的按需求进行安装(安装位置、安装的模块都可以选择) 方式2:rpm安装(用rpm来安装rpm后缀的安装包) 优点: 安装和卸载过程非常方便 缺点: 安装过程不可控(安装位置,安装那些功能模块) rpm包的依赖关系非常复杂 方式3:yum安装 yum安装,其实就是自动分析rpm包的依赖关系,然后按照需要的顺序依次安装 方式4:绿色安装 2.rpm的操作 yum install lrzsz -y rz;window文件传送到linux中 sz:把Linux文件传送到window a.安装rpm包 格式:rpm -ivh 软件包名 选项 -i:安装软件 -v:显示安装过程 -h:用#表示安装进度(# 2%) -vv:显示更详细的安装过程信息 -vvv:显示更更详细的安装过程信息 b.卸载rpm包 格式:rpm -e 软件名 选项: -e:卸载软件 例子:卸载软件包ken # rpm -e ken c.查询已经安装的rpm包 格式:rpm -q 软件名 选项: -q:查看一个已经安装的软件 -a:查看所有已经安装的软件all -l:显示软件安装完成以后生成文件列表(所有文件)list -i:查看软件包的相关信息 info -d:显示该软件所生成的说明性质的文档列表docfiles #了解即可 -c:查看软件所生成的配置文件列表configfiles #了解即可 --scripts:查看软件相关的脚本 补充: 安装前脚本(preinstall) 安装后脚本(postinstall) 卸载前脚本(preuninstall) 卸载后脚本(postuninstall) 例子:查看ken是否安装 # rpm -q ken 例子:查看当前系统所有已经安装的软件 # rpm -qa rpm -qa | wc -l #统计安装了多少软件 d.查看文件是哪个软件生成的 rpm -qf /path/to/file #/path/to/file 是路径 e.升级软件 -U:升级或安装软件 rpm -Uvh 软件包名 -F:仅仅是升级操作 rpm -Fvh 软件包名 3.软件管理yum 也是一个rpm包的管理工具,可以实现自动解决rpm包的依赖关系(自动安装依赖顺序进行rpm包的安装) 为何rpm包会有依赖关系? 制作rpm的人,在制作rpm包的时候,就将这个rpm的所依赖的软件的信息保存在这个rpm包的内部 4.yum的工作原理 1. 需要首先创建一个yum仓库(rpm包仓库、软件仓库) 1)仓库其实就是一个目录 2)仓库中存放的是rpm包 3)仓库中还保存了一个文件,文件中记录了该仓库中所有rpm包的元数据信息 4)元数据信息包括 软件名 软件版本 软件是否已经安装 软件的依赖关系 2. 用 yum 来从仓库中找软件进行安装的过程(比如要安装软件A,A依赖B 和C,B依赖C D) 1)yum首先会扫描保存元数据信息的文件,检查A是否已经安装,如果已经安装,那提示已经安装 2)如果A尚未安装,那么扫描A的依赖关系信息,会发现A 依赖B 和C 3)yum会再次扫描元数据文件,检测B C 是否安装,如果都已经安装,那么会开始开始安装A 4)如果B C尚未安装,那么会检测 B C的依赖关系,会发现B依赖C D 5)yum会再次扫描元数据文件,检测C D是否安装,如果都已经安装,那么会开始开始安装B,然后安装C,,然后安装A 5.yum仓库 本地:将本地的一个目录做成yum仓库,只有当前系统可以 网络:通过网络将服务器上的一个目录作为yum仓库,网络中的全部主机都可以用 使用yum仓库的方式,就是修改yum的配置文件 yum的配置文件 主:/etc/yum.conf #主配置文件一般不需要更改 子:/etc/yum.repos.d/*.repo /etc/yum.conf文件 cachedir=/var/cache/yum/$basearch/$releasever 指定缓存文件的保存位置,默认:/var/cache/yum/x86_64/7/ keepcache=0 指定是否保留缓存文件 用yum安装软件过程中会从yum仓库下载并缓存多个资源 1)会将yum仓库的元数据文件缓存到配置文件所指定的路径中 2)会将要安装的软件及其依赖的软件一并缓存到配置文件指定的目录中 6.yum配置文件的构成 [localRpm] <<< 指定yum仓库的id,可以随便写,但是中间不能有空格 name=xxx <<< 指定yum仓库的名称,可以随便写 enabled=0|1 <<< 指定是否使用该yum仓库,0表示不使用;1表示使用 gpgcheck=0|1 <<< 指定是否对rpm包做完整性和来源合法性验证,0表示不做验证;1表示必须做验证 gpgkey= <<< 指定公钥文件(如果gpgcheck=1,那么该项不能省略) baseurl= <<< 指定yum仓库的url cost <<<制定优先级,网络默认为1000,数值越小,优先级别越高。 7.yum仓库的url的表示方式 注意:在指定yum仓库的时候,其实不是指向rpm包的目录,而是执行repodata所在目录 本地yum仓库 file:// 例子:比如我的yum仓库 /myrpm,此时yum仓库的表示方式就是file:///myrpm 网络yum仓库 http:// 8.创建本地yum仓库 使用光盘中的rpm包作为yum仓库 第一步:挂载光盘 # mount /dev/cdrom /media #创建本地yum仓库,需要的rpm包在镜像文件里。 第二步:备份yum自带的配置文件 # cd /etc/yum.repos.d # mkdir bak # mv *.repo bak 第三步:在/etc/yum.repos.d中创建yum的配置文件,使用光盘作为yum仓库 # vim 1.repo [myrepo] name=my repo enabled=1 gpgcheck=0 baseurl=file:///media [test] name=test enabled=1 gpgcheck=1 gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7 #RPM-GPG-KEY-CentOS-7在mnt目录下 baseurl=file:///mnt 第四步:执行yum命令检测结果 yum clean all <<< 清空yum缓存的全部数据 yum repolist <<< 检查yum仓库中有多少个可用的rpm包 9.yum使用 1. 安装软件 yum -y install 软件1 软件2 软件3 .... 2. 卸载软件 yum -y remove 软件1 软件2 软件3 .... 3. 管理包组 grouplist:查看系统中的全部的包组 groupinfo 包组名:查看指定包组的信息(包组的作用、包含的软件) groupinstall 包组名:安装指定的包组 groupremove 包组名:卸载指定的包组 CentOS7: 命令行界面升级为图形化界面 yum groupinstall "X Window System" -y yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y 这时,我们可以通过命令 startx 进入图形界面,第一次进入会比较慢,请耐心等待。(可能需要重启,命令为reboot) 4. 管理yum的缓存数据 clean [ packages | metadata | all ] all:清除所有数据 packages:仅仅清除rpm包 metadata:仅仅清理缓存元数据 5. 查看所有已经安装和尚未安装rpm包 yum list all 或者yum list 可以列出所有的软件包 6. yum list available:仅仅显示可以安装但是尚未安装的rpm包 7. yum list installed:仅仅显示已经安装rpm包 @:表示已经安装rpm 8. 查看yum仓库的信息 yum repolist 10.网络yum源的使用方式 国内主流的网络yum仓库地址 mirrors.aliyun.com mirrors.163.com mirrors.sohu. rpm的yum源 centos提供的 epel提供的: 例子:使用aliyun提供的epel 和centos的yum源 cd /etc/yum.repos.d mkdir bak mv *.repo bak vim new.repo [centos] name=centos repo enabled=1 gpgcheck=0 baseurl=http://mirrors.163.com 在网络yum源中repodata所在网址 11.制作一个网络yum源 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 按钮 – 在Twitter Bootstrap中更改btn-group .active样式
- 网络应用程序 – 何时在电梯中使用映射器或记录?
- scala通过嵌套函数或多个参数列表进行currying
- 如何在Angular 2中与子路径共享信息?
- WCF 学习总结1 -- 简单实例
- 如何在Angular中创建一个模拟observable来测试http rxjs重试
- 【数据结构】线性表之顺序存储结构
- angularjs – ui-select多重选择在显示选项上非常慢
- AngularJS,如果变量=某事,使用ng-class分配一个类
- angular2:错误:(62,33)TS2339:类型’typeof Injector’上