文章目录
项目场景:
因为业主购买了两套设备,具体的产品我就不提了哈。反正是大厂。
产品有点问题,需要解决两件事;
- 第一:操作系统由CentOS7.3升级到CentOS7.6。
- 第二:需要安装一个软件zip。
这里要说一下,该款产品买了两套,一套在A,一套在B;A的需要升级系统才能升级为https;B主要是缺少了zip这个软件,导致用户无法下载服务端文件。
说一下我的环境吧:两台虚拟化均无法连接互联网的,所以是需要进行离线升级。
CentOS7详细的步骤:
提示:这里描述项目中操作的详细步骤:
下载镜像
这里只要能下载到标准版(DVD标识的)或者完整版(EVERYTHING标识的)即可。
附一个CentOS7.6的下载地址,需要用迅雷下载,速度才快,不然一天都不知道能不能下载回来。
https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/
要下载国内的其实也可以,镜像地址:http://mirrors.sohu.com/
(希望会快点)
配置Linux本地yum源
挂在iso文件
mkdir /mnt/cdrom
mount ./CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom
备份系统repo文件
mv /etc/yum.repos.d/* .
mv是剪切,cp才是复制。看实际情况吧
编辑本地源repo文件
以下这段代码是网上的摘录的。我当时也没用这段代码。
cat << EOF > /etc/yum.repos.d/CentOS-Media.repo
[Media]
name=CentOS Media
baseurl=file:///mnt/cdrom
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
我使用的是直接vim编辑/etc/yum.repos.d/CentOS-Media.repo文件
ps:关于yum.repos.d这个目录
,其实网上并没有太多说明,我也懒得找相关资料了。建议是保证只有一个文件,就是xxx.repo文件(文件的具体名字貌似是随意的)。
第二种情况就是,该目录里面的确有很多相关的xxx.repo文件,里面也有相关的配置。但貌似只要自己本地源的配置是正确的,那还是不影响使用(当时生产环境里就有很多xxx.repo)。
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7,该配置务必不要填错,因为更新的时候是会验证这个key的。
为了说明详细,我再附上网上的一个该xxx.repo文件的配置说明。如下:
[root@localhost ~]# vim /etc/yum.repos.d/henry.repo
[henry_repo]
name = mylocalrepo
baseurl = file:///henry_repo/Packages/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
/*说明
第一行:[henry_repo] yum仓库名字,任意。
第二行:name 名字任意。
第三行:baseurl 配置路径,由于是本地yum所以是file://(在线形式http://和ftp://等),这个路径要对应你挂载的目录如mount ./CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom,就要填写baseurl=file:///mnt/cdrom。
第四行:gpgcheck 关闭rpm包的校验功能。个人环境建议关闭0,生产环境建议启用1。
第五行:如果gpgcheck开启了,那就要有这个key的位置配置。不然无法提取安装包。
说一下格式,xxx=aaa 和 xxx = aaa ,都一样的。
*/
如果key的配置错误,会有以下报错信息:
更新yum缓存
yum clean all
yum makecache
PS:这里要说一下,如果提示软件包错误会出现如下图错误。其实没关系调整配置文件后再重新执行上面两条命令即可。
更新系统
yum update
这里是全部软件都更新或者升级,还没找到直接更新内核的命令。
报错的处理
提示:yum update之后肯定会报错的:
例如:Error: Package: glibc-2.17-157.el7.i686 (installed)
Requires: glibc-common = 2.17-157.el7
Removing: glibc-common-2.17-157.el7.x86_64 (@anaconda)
glibc-common = 2.17-157.el7
Updated By: glibc-common-2.17-260.el7.x86_64 (local)
glibc-common = 2.17-260.el7
Error: libX11 conflicts with libxcb-1.7-1.el6.i686
Error: Package: mod_session-2.4.6-88.el7.centos.x86_64 (local)
Requires: httpd = 2.4.6-88.el7.centos
Installed: httpd-2.4.6-93.el7.centos.x86_64 (@local)
httpd = 2.4.6-93.el7.centos
Available: httpd-2.4.6-88.el7.centos.x86_64 (local)
httpd = 2.4.6-88.el7.centos
Error: gtk-update-icon-cache conflicts with gtk2-2.24.22-5.el7_0.1.i686
遇到以上类似的报错,一般是因为一些旧版本的包冲突错误,或者是旧版本的包不支持。
但是会有提示命令让你按照他的命令去填写然后就可以更新系统的了。
具体命令我也忘记了,在自己搭建的虚拟机中测试有这个问题,但是在生产环境上却不存在。
升级为Centos 7.9的话会存在GCC报错
具体报错原因我忘记截图了。但如果报错是说libGCC之类的,具体是说你系统装了两个gcc版本。
解决办法就是这个命令:yum update --skip-broken --setopt=protected_multilib=false
大概意思是忽略报错。
参考了文章:解决 yum时 Error: Protected multilib versions报错
解决方案
在实践过程中,我只遇到三个问题。
1、配置写错了key的路径。
2、的确有一些软件不兼容,怎么也无法更新系统,但按照系统报错的提示输入提示的命令能解决。
3、镜像源挂载后需要先执行清除缓存,重新建立缓存,才能正常更新系统或安装(更新)软件。
如果是配置网络镜像的话
参考如下配置:
[root@host-172-16-135-159 ~]# cat /etc/yum.repos.d/
bek/ CentOS7.3.repo epel.repo
[root@host-172-16-135-159 ~]# cat /etc/yum.repos.d/CentOS7.3.repo
[CentOS7.3]
name=CentOS7.3
baseurl=http://10.2.92.133/standard/centos/7.3/x86_64
enabled=1
gpgcheck=0
Debian9.4详细步骤
下载镜像并放到服务器里
这里已经下载好了debian-11.4.0-amd64-DVD-1.iso并上传到服务器/home目录里了。
挂载镜像
mkdir /mnt/cdrom
mount /home/debian-11.4.0-amd64-DVD-1.iso /mnt/cdrom
这个方法只是临时挂载,系统重启就会失效
更改更新源
apt-cdrom /mnt/cdrom add
如果上面不加参数的命令不行,那就加参数后再试试。
apt-cdrom -m -d /mnt/cdrom add
一般都可以的了。
更新列表
apt-get update