魏蓝

以梦为马

导航

yum的私有云和内核升级

1.1)我们已经能够把现有的互联网上的仓库为我们使用,我们配好以后,就可以用yum实现软件的安装、卸载等。但是,目前来讲,我们使用yum安装卸载以后,有一个缺陷,就是我们安装的数据包,现在都是在互联网上,一个企业内部如果有成百上千的机器,每次装软件,难不成真的跑到互联网上装软件,本身安装任何一个软件包都跑到网上去装,会占用比较大的网络带宽,而且动不动网络就不稳定,所以这个影响效率.

2)事实上,有些公司不让你联网,在局域网中,那怎么去安装包哪?难不成像我这样整张光盘吗?当然整张光盘是可以的,但是仿佛回到了原始社会。所以我们需要在局域网里自己搭建仓库,搭好仓库以后,我们企业内部的这些机器就可以从自己搭的仓库中来安装包,现在问题来了,你怎么在公司内部搭建一个自己私有的仓库服务器?

3)事实上,私有仓库服务器的搭建只需要把那些作为仓库必要的数据准备好,作为仓库来讲,至少提供两种资源:第一,安装包;第二,repodata源数据。事实上,如果我们想搭建一个比如光盘里面的仓库,那这个很简单,把光盘拷过来就行了,因为光盘里面就带嘛,把光盘文件拷到我们某一个服务器上,当然光拷到这儿还不行,我们还需要通过三种网络协议,把这个数据给共享出来。配httpd很简单,就两步:第一步;第二步,把服务启动,就完事了。

 

 

2.演示:利用httpd协议搭建企业内部私有仓库

1)将centOS光盘挂在centOS8上(加一个光驱)

 

 2)安装httpd包:

yum -y install httpd

3)启动前先需要初始化

1.关闭防火墙

[root@centos8 yum.repos.d]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2.关闭SELinux

[root@centos8 yum.repos.d]# vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

启动:

[root@centos8 yum.repos.d]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

4)创建文件夹

[root@centos8 yum.repos.d]# cd /var/www/html
[root@centos8 html]# ls
[root@centos8 html]# mkdir centos/{7,8} -pv
mkdir: created directory 'centos'
mkdir: created directory 'centos/7'
mkdir: created directory 'centos/8'
[root@centos8 html]# tree centos/
centos/
├── 7
└── 8

2 directories, 0 files

5)把光盘挂载:

[root@centos8 ~]# mount /dev/sr1 /var/www/html/centos/7
mount: /var/www/html/centos/7: WARNING: device write-protected, mounted read-only.

这个时候进到目录下看到的就是centos7的光盘

[root@centos8 ~]# ls /var/www/html/centos/7
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

6)打开IP到浏览器,确认能不能访问

 

 

 

 将路径复制下来回到7上,将自己的配置文件都注释掉。

 

 

[root@centos7 yum.repos.d]# yum repolist  
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id                                          repo name                                        status
base                                             CentOS                                           10,072
epel                                             epel                                             13,720
extras                                           extras                                              500
repolist: 24,292

 

 

3.搭建8的:

[root@centos8 ~]# mount /dev/sr0 /var/www/html/centos/8
mount: /var/www/html/centos/8: WARNING: device write-protected, mounted read-only.

 

 

 

4.但是这个中间实际上有一个潜在的问题,我们刚才搭的时候都是光盘的,是现成的,那事实上,我们有的时候可能手上只有rpm包,没有元数据,没有repodata怎么办?

实际上很简单,源数据是可以用命令创建的,比方说:

1)建立一个文件夹,这个文件夹来放仓库:

[root@centos8 /var/www/html/centos 765]#mkdir /data/testrepo

2)然后把仓库的包给它拷过去:

\cp /misc/cd/Packages/* /data/testrepo -v

3)现在我们已经把这些包拷过来了,但是里面没有源数据,怎么办,很简单,我们直接创建源数据:

createrepo .

如果没这个命令就安装一下:

yum -y install createrepo

 

 那么这个文件夹就可以当仓库里了。

 

 

5.还有epel源,怎么把互联网上的epel源的仓库拿过来在公司内部来搭建?我们可以把互联网上的epel源把它上万个包下载下来,在你的本机创建,怎么下载呢?

1)先把epel源先配好

 

 2)用yum repolist 确认一下是否有epel源:

 

 3)刚才我们已经提前把httpd服务器装好了,我们希望在/var/www/html,创建一个epel源的公司内部用的仓库,怎么用?执行这条命令:

dnf reposync --repoid=epel --download-metadata -p /var/www/html

这条命令就是从我们epel源的仓库下载,连接到它内部指定的路径,从互联网上把那些包,包括源数据下载下来,下哪呢?下载在-p 后的/var/www/html这个路径下,这就是我们刚才说的,网站存放网页的路径,然后下完以后,这时候你会发现,它会在这个目录下生成一个子目录叫epel,然后将来我们指定路径,这就是仓库路径.

解析下载过程:这个时候他就会连接互联网,利用我系统自带的epel源的配置,从上面去下载包。

4)此时,已经出现一个epel目录

 

 

 

 已经有源数据了,包括这包已经下载一部分了,这个仓库就可以用了。

5)打开浏览器,这个时候就可以配成centos8的epel源了,这就可以用了。

 

 总结:这就是公司内部搭建一个企业内部的epel源,实际上就是把它下载下来。

 

 

6.1)yum不仅可以实现这个一个包一个包安装,他的卸载的话有可能会存在一个问题:

比如:

yum -y install httpd

 你会发现因为依赖关系,它会装上9个包,其中8个有依赖关系。我卸载的时候会不会把8个依赖关系的包卸了呢?

yum remove httpd -y

 

 发现并不会,它只卸掉自己,就是它所依赖关系的那个包,它不卸。

逻辑是这样的:httpd安装的时候依赖这个包,它是建立在这8个包基础上的,那么你安装的时候必须把这8个包装上,那你卸的时候,你卸它,你把8个包也卸了,万一是不是还有别的软件依赖这8个包哪,所以它就不给你卸。

2)如果你卸不干净,这有个方法:

yum history

 

 

history:是看你的历史的

[root@centos7 ~]# yum history info 16

 

 

看第16个编号干了啥。

yum history undo 16

undo:取消,这个就是取消第十步,第十步多装了五个包,取消第十步,就是卸载五个包。

再用yum history查看

 

 发现第17步就是刚刚发生的。

3)当然说我这个卸错了,不应该卸:

yum history redo 16

 

 redo:就是重复操作。

或者

yum history undo 15

4)centos8卸的时候会把所有包都给你卸了,而centOS7只卸一个

 

 

7.1)利用yum还有一个功能:它可以实现包组的管理。

包组是把若干个包组合在一起,形成一些包的分类,这叫包组。平常用的不多,如果你装包组的话,包组里的所有包就都装上了,这样的话,无形中装的东西会比较多。

2)列出所有包组的名称:

yum group list

 

 3)安装包组:

yum group install "Minimal Install"

 

 注意:因为这个包组名称有空格,所以需要我们用双引号引起来,这时候,它才认为这是一个包的名称。

 

 

8.还有一个问题就是缓存:

1)yum在安装的时候,它实际上会自动地把源数据缓存下来。

查看源数据缓存在哪:

centos8:

ll /var/lib/dnf/

 

 centos7:

cat /etc/yum.conf

 

 2)怎么消除缓存:

yum clean all

注意:yum同一时间只能使用一个

并没有清干净,之所以留下来了清不了,是因为它是根据你的配置文件来清的,你配置文件改了,那它有些东西删不了了,如果删不了,没关系,你用rm命令删了它:

 

 再看看我们仓库有什么,

再/var/lib/yum中:

 

 缓存嘛,大不了下次用再给你缓存下来了

 

 

9.查看当前格式:

[root@centos8 /var/www/html 830]#runlevel
N 5

 

 

10.切换到图形模式:

init 5

 

 

11.1)关于yum:我们想知道某一个文件来自于那个包,rpm -qf可以查,但是这个命令有一个要求就是这个文件必须已经有了。那事实上,我们有的时候这个文件根本就没有,比如说:源码编译安装的时候,它有时候会报,说缺一个文件,那么你这个文件,就要装这个包才行,所以换句话说,你要通过没有装的这个文件知道它的名字,获取它的报是哪个包,把这个包装上才能解决问题,那么rpm就不行了,那怎么做,用:

yum provides

这个是很有意义的,这个命令可以通过获取一个没有装生成一个文件,然后获取它的所谓的包的名称。

2)例子:

 

 3)不过需要注意的是:有的时候,他不一定能真的查到,因为这里没写路径:

 

 发现不写路径查不出来,可是我们又不知道它的路径,怎么办?有一个方法:写通配符:

 

 

 

12.1)对于yum来讲,关键你要知道yum的配置文件挂载,包括怎么去建公司内部的yum仓库

2)总结一下,yum的要求掌握的子命令:

repolist、install、remove、info、list、clean all、provides

 

 

13.如何升级内核?(联网)

方法一:可以从内核官网下载,要求会编译安装

方法二:利用第三方的rpm包   网站:http://elrepo.org/tiki/HomePage

 

 装完发现在/etc/yum.repo.d/中多了一个elrepo.repo的文件

 

 

 

 加all显示禁用的仓库,发现里面里有一个kernel仓库被禁用了,所以要启用它:

vim elrepo.repo 

现在我们想装内核,我们也不知道内核叫啥,就写通配符:

yum list *kernel*

 

 我们看一看包括kernel名称的所有列表,ml是测试版,lt是长期技术支持版,就安装稳定的,我们装上:

yum install kernel-lt.x86_64

我们装上以后就意味着我们的内核是直接就升级成新版本了吗,并不是,它相当于我们有两个内核并存,你想用哪个就选哪个,所以在启动的时候就可以选了。

 

 

uname -r
看内核版本

2)卸载内核:

 

 若在使用中,是不让卸的

 

 我们换一个内核登录再卸载:

 

 

 

 

14.不联网升级内核:

拿一个能上网的机器,把这个包下载下来,当然一个一个下的话,当然我这个简单,就一个包,那实际上,你直接把这url路径找到直接把它点开就下载,但是问题是,它有可能依赖的包比较多,这时候,你要把依赖的包都给他下载,那这个怎么弄?有一个方法:

举个例子:

我先看一下nginx这个包

 

 这个nginx包再centos7上来自epel源,epel源就是互联网上的。如果我装的话,看它的依赖关系有几个:

 

 我们现在不装它,假设我们现在不能上网的机器想把nginx装上,那这时候,显而易见,用现在这种方法是不行的,,因为这是需要连外网的,那怎么办?刚才说了,先找一个能上网的机器,我们这儿有一个选项:

 --downloadonly --downloaddir=/xxx

这个选项可以把你的这软件给他下载到一个指定的路径下。

我把它下到/data下:

#yum install nginx --downloadonly --downloaddir=/data

注意:这只是下载不安装。

下完以后,把这个软件先传给哪个不能上网的机器,一装就行了。

进入/data看一下:

 

 最后直接在不能联网的机器上:

rpm -ivh /data/*.rpm

 

posted on 2022-02-08 23:52  魏蓝  阅读(149)  评论(0编辑  收藏  举报