第4节. 实现yum源仓库和使用yum管理软件以及dnf
定下来学某个东西的时候,就要摸清楚来龙去脉,这样比较对得起人这种动物它这个脑部、神经、心跳节奏的规律。否则不舒服的,我在试图理解底层心理学?显然这是不对的,感觉对了就好。
配置内网的YUM源
yum -y install httpd

安装httpd服务,通过光盘镜像安装就行(各种rpm包,和yum仓库-repodata元数据)
通过rpm -ql 查看安装的文件
systemctl start httpd



目录结构

所以就是/var/www/html/centos/7/os/x86_64



把centos7的安装光盘整个目录复制过去,也可以挂在光盘的。

再接一个CENTOS6的



把对应的光盘挂过去-工作中复制过去

临时挂用命令mount就行




centos6的也有了

yum源就OK了。
服务端就配置好了,下面开始配置CLIENT

只要不是repo后缀的就不会干扰repo源。




验证可以不写,写的话也很简单

这就是校验文件,赋值一下路径


搞定,当然上面的6也可以用$releasever替代他
测试下


这里注意下,6713个包的解释:我们就挂了一张盘,但是6K个包是两张盘的总量,可能就是第一张盘里有两张盘的包总量信息。然后一些偏门的包在第二张盘里,你是安装不了的。
以上就是基于HTTP协议的yum源
如果没有光驱-显然基本都没有,就用iso文件去挂

光盘可以挂,ISO文件也可以挂
然后web看到就成功了

但是前置条件别忘了:selinux和防火墙

还有客户端

其他补充

mirrorlist是把多个路径写到一个文件里
现在这个机器可以指两个源,准备添加一个网上的阿里源:
复制远端路径



把上面的txt路径一复制,贴到下面去就行了。

搞定了
不信可以看看centos默认的yum源写法,他也是用的mirrorlist的。


包组的管理用group

group分为环境组和普通组,环境组就是安装系统的时候让你选择的包--老王使用的事GNOME Destop,老刘使用的是Server with GUI,俺使用的是Minimal Install。
你选择某一种比如Serer with GUI就会对应地安装很多包。
开发包组里的包
"Development Tools"注意引号,否则当作两个包组了。


强制组、可选组

不是随着group包组安装的,是随系统安装的。
不同符号不同状态

groupinstall可以连起来写
工作中一般不用包组group,都是需要什么安装什么,group里的东西可能太多了。
yum 的脚本安装可以加上-q

--disablerepo和--enablerepo没有试验成功,不知道咋弄的,不过我倒是可以用sed 来开关。恩,也不常用。这么用的,临时的,所以是要配和install xx一起用的

创建自定义的仓库createrepo-其实就是为一堆rpm包生成元数据。
仓库虽然说要rpm包和元数据以及公钥,但实际上站在机器角度,仓库其实就只要一个repodata文件夹和里面的元数据。
自己研发的rpm包,或者网上找的单个rpm包,没有现成的仓库,或是就算你down的是常规的rpm包,但是仓库没down,也可以自己生成。这个题外话参考别人的博客https://www.jianshu.com/p/3b669bcebfb6

👆这样仓库的元数据就有了。


但是有个问题

httpd要开启443

仓库路径得找repodata的路径。

如图是在server下的,而其他的分别是集群、集群存储、server、虚拟化的repodata
多个repodata就是多个yum源。如果你不需要就配一个yum源就行了。

上图👆两个点①cat 重定向写法ctrl + d安全退出才行②baseurl的路径是repodate的pwd路径。


DNF

dnf比yum的优势据说就是速度快


推荐yum install *.rpm因为包可能不全,还需要依赖。

这样就可以用dnf了,

dnf的使用和yum一样
仓库配置也是一样yum的配置文件。

比较下dnf的性能







= = 效果不行啊,哈哈
time dnf reinstall httpd -y
time yum reinstall httpd -y
这个可以看到dnf快些,可能。
yum其实是python写的程序



yum底层就是依赖于rpm的
小软件编译举例



上图gcc hello.c 回车,会自动生成一个a.out。注意上图不是一个命令哦。
指定一个名称-o


将来要编译的软件必然不是一个c文件咯:
看看这个httpd的源码有多少个c


解开的文件里有284个c文件
gcc 能搞定吗?还有编译先后顺序的。所以就不是gcc这种方式了。
那是项目了,项目管理工具了,不同的语言编译工具不一样。JAVA用maven。C语言里make