小c学Linux(4)--rpm和yum

  过了几天,我发现我电脑里面的这些程序都是linux光盘镜像自带的应用程序,然后想下载一些好玩的应用程序却不知道怎么下载,真是头疼呢!没办法,又只能去找L哥哥帮忙了,看看他又有什么好的点子!
  “hi,L哥哥,你在干嘛呀!我又有困难了,快来帮帮我~”,“好的,马上过来!”。不知道小哥哥又练了什么法术,“biu~的一下就出现在我的面前!”
  Me: “以前我用windows的时候,直接下载一个应用程序.exe文件,点击就能自动安装了,可是这个linux有点不一样呢,好头疼呀!”
  L哥哥: “哦,原来你是这个问题呀?你用windows用习惯了,它下载应用程序,傻瓜似安装就可以,但是对于linux,我们需要自己编译源程序安装,不过现在已经有了linux软件包管理了,所以也很简单,当你掌握了你会发现linux比windows还好用呢!”
  “什么是编译?软件包管理又是什么鬼?”
  “没事,我先给你说一说基础的东西,慢慢你就知道了”

软件包的组成成分


一般一个应用程序都有相应的四个组成成分

  • 二进制程序:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
  • :/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/lib64
  • 配置文件
  • 帮助文档
    一般我们拿到一个软件源程序包,将其解压打开,其目录下一般都会包含这四个组成成分,我们通过一些命令安装这些源码,系统会通过预编译-编译-汇编-链接库文件这些步骤将这个应用程序安装在我们的linux系统,应用程序会默认安装在linux文件系统下(我们可以指定安装的位置)。
编译安装源程序的步骤:
  1. 拿到源代码并解压 tar xf package_name.tar.{gz | bz2 | xz}
  2. 切换至源码目录中cd package_name
  3. 执行configure脚本 ./configure [--prefix=/usr/local/package_name][--sysconfdir=/etc/package_name]
  4. 编译make

  5. 安装make install
    但是,你有没有觉得编译安装源程序太麻烦了?是的,的确很麻烦。所以凡事一有麻烦的事情,总会有一些人站出来,所以我们又有了软件包管理器–rpm


rpm软件包管理

rpm包的命名格式:name-version-release.arch.rpm
如:bash-4.3.2-2.el6.x86_64.rpm

rpm包获取途径:

如:清华园http://mirror.tuna.tsinghua.edu.cn

安装

如: 安装清华园下对应自己linux系统版本下的zsh

1)获取源
wget https://mirror.tuna.tsinghua.edu.cn/centos/7.4.1708/os/x86_64/Packages/zsh-5.0.2-28.el7.x86_64.rpm
(2)安装
rpm -ivh /path/to/rpmpackage
卸载
rpm -e package_name [--nodeps忽略依赖]
查询
rpm -q package_name         某包是否安装
rpm -qa                     已经安装的包
rpm -qi package_name        某包详细信息
rpm -ql package_name        安装某包后生成的文件列表
rpm -qf /path/to/file       查询此文件属于哪一个包安装后生成的
rpm -qc package_name        安装后生成的配置列表
rpm -qd package_name        帮助信息
rpm -q --scripts package_name   相关的脚本
rpm -qpl /path/to/file      尚未安装的包的相关信息
升级
rpm -F      只是升级
rpm -U      升级/安装
校验
rpm -V package_name     文件是否被修改过
rpm -k /path/to/file    检验来源完整性
rpm数据库重建
/var/lib/rpm        数据库位置
rpm --initdb        初始化(如果已经存在不会执行)
rpm --rebuilddb     重建(会覆盖原有库)

哇哦!原来是这么下载的啊!从rpm包服务网站wget下来,然后用rpm包安装就行啦!可是!当我下载的包安装时提示我还依赖于其他的某些包,这个时候还得去找依赖的包下载,而且有时候依赖的包的版本又不符合,又整出一大堆麻烦事,还是有那么多命令,对于记忆力这么差的我,记不住怎么办……L哥哥一下就看出我的心事,“当然,我知道你在想什么,因为大部分人都是这么想的,所有,后来又有人站出来搞了一个rpm包的前端管理工具


yum : rpm包的前端管理工具

其实yum相当于一个共享rpm包的文件服务器,通俗的来说就是保存了很多rpm包的仓库网站,但是我们可以通过配置本地yum客户端直接连接到一个较近的能用的yum仓库。当用yum命令下载一个rpm包时,命令程序首先会访问本机的/etc/yum.repo.d/[a | b | c].repo的仓库配置文件,然后连接此仓库,然后将yum仓库的rpm包的信息和其有依赖关系的包的元数据信息先缓存到本地/var/cache/yum/…目录下,然后跟据缓存的信息检测本机已经安装了哪些依赖关系的包,没有安装的就提示你然后安装!很智能!有木有!

yum客户端
  • 配置文件
    [main] : 主配置段
    [repo] : 仓库配置段
        [base_name]
        name=String
        baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/7.4.1708/os/x86_64/      (此路径上存在repodata,repodata是标识yum仓库url路径的)
        enabled=1 {1 | 0}   是否启用(默认为启用)
        gpgcheck=1 {1 | 0}  检测来源合法
        gpgkey=公钥文件   RPM-GPG-KEY-CentOS-7  跟repodata在同一目录
        cost=1000 {1000|2000|3000}  优先级,1000最先
  • 缓存元数据
  • 分析元数据
  • 根据分析结果,执行具体操作
yum命令:
yum install package_name                    安装包
yum reinstall package_name                  重新安装某包
yum check-update package_name               检测升级
yum update package_name                     升级
yum erase package_name                      卸载-包和依赖的包                           
yum repolist                                显示可用仓库
yum clean all [all | packages 等等]           清理缓存
yum list all [all | installed | available]  列表 | 已安装 | 可以安装
yum info package_name                       包的详细信息
yum grouplist                               显示包组
yum grouping package_group_name             显示包组信息
yum groupinstall package_group_name         安装包组
yum groupremove package_group_name          删除包组
yum history                                 yum历史命令
创建yum源

例: 基于httpd建立一个openstack源

createrepo /var/www/html/openstack  createrepo命令在packages目录下
service http start                  启动httpd服务
netstat -tnl                        查看80端口
[epel]enabled=1                     如果有依赖包,到epel里去找
yum install package_name            测试使用创作的yum源

局域网内访问:本机ip/openstack

我靠!简直不要太爽,那我现在下载zsh就不用wget了,直接在/etc/yum.repo.d/tuna.repo配置好yum的清华园仓库,然后yum install zsh,哇塞,直接安装成功,太棒了!!!!!!


学习补充

补充1:基本上系统自带有yum仓库配置,可是有些yum仓库距离我们太远,下载太慢,我们可以自行配置,配置EPEL:wget下载epel.rpm包到自己本地,然后安装,这时候,你会发现在/etc/yum.repo.d/这个目录下多了两个文件,一个是epel.repo, 一个是testing.repo(testing是用来测试用的不用管),而这个epel.repo就是帮我们自动配置了yum源!


补充2:今天在用yum下载mosh显示包依赖有问题不能安装,原来是本地上mosh依赖包没有更新不支持mosh导致,果断更新系统yum仓库。
有两个选择:

#1.更新所有的包
 yum update 
#2.仅更新mosh依赖的包
 yum update package_name 

更新之后再安装mosh就没有再出现这个问题。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值