前言

目前收到了阿里云关于 “华北1(青岛)地域的ECS Linux系统安装源(yum/deb/apt等)暂停服务进行升级” 的通知,这对于服务器本身的运行并没有影响,但是如果我们需要安装环境或者升级环境,就会遇到无法升级的情况。

如果遇到这种情况,我们应该怎么办呢? 这里就教大家如何应对相关问题。 更换软件源可以直接到 教程 下的 更换软件源 学习。

介绍

RHEL、CentOS 的 yum 工具和 Debian、Ubuntu 的 APT 工具都是一个非常好的前端软件包管理器,它们可以帮助我们便捷的安装二进制软件无需编译,同时还可以自动安装该软件依赖的库或其他软件,还可以帮助操作系统保持最新状态。

这里就介绍一下 yum 和 apt 的用法。

教程

升级系统 & 更新软件

RHEL、CentoS

RHELCentOS 通过如下命令就可以自动更新操作系统以及通过软件源安装的全部软件:

yum update

会同时更新软件的缓存,获取软件版本信息,然后再通过比较当前系统的软件版本,如果软件源的更新,那么就进行更新。

注意安装完成后, 你下载用于安装的包仍然保留在系统中,要释放空间,需要使用如下命令:

yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers
yum clean 或 yum clean all #清除缓存目录下的软件包及旧的headers

Debian、Ubuntu

DebianUbuntu 通过如下命令就可以自动更新操作系统以及通过软件源安装的全部软件:

apt update && apt upgrade

apt update 是更新软件源缓存,apt upgrade 是更新软件,判断原理也是比较软件源和本地软件的版本并进行升级。

Debian 和 Ubuntu 还有 apt-get dist-upgradedo-release-upgrade 命令可用,但是会升级整个系统到最新版本,例如 Debian 8.10 会升级到 Debian 9.4,这可能会导致云计算没有识别你的 Linux 内核而无法进入系统,同时系统镜像功能也会失效。

注意安装完成后,你下载用于安装的包仍然在你的 /var 目录下,要释放空间,记得用 apt-get clean 和 apt-get autoclean 将它们删除或移到别的地方。

更换软件源

这里就是重点来了,如何解决本次的软件源暂时无法使用的问题呢? 那就是提前换一个可以使用的软件源。

这里需要用到代码编辑器和SFTP软件,如果没有安装,建议参考:【云计算的1024种玩法】ECS和轻量应用服务器的远程控制入门

RHEL、CentoS

修改 /etc/yum.repos.d/ 目录下的文件,例如:CentOS-Base.repoepel.repo 等,这里以修改 CentOS 7 本身的软件源文件 CentOS-Base.repo 为例:

CentOS-Base.repo 修改为 CentOS-Base.repo.old

然后创建一个新的 CentOS-Base.repo 文件,写入清华源的内容:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

然后运行 yum makecache 更新软件源缓存即可。

等问题修复,将该文件删除并将 CentOS-Base.repo.old 重新命名回来并更新缓存即可。

其他 CentOS 版本可以参考:https://mirror.tuna.tsinghua.edu.cn/help/centos/

Debian、Ubuntu

修改 /etc/apt/sources.list 文件,重命名为 /etc/apt/sources.list.old

然后重新创建 /etc/apt/sources.list 文件,内容为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/OS/ CODE-proposed main restricted universe multiverse

: 其中,OS 代表 debian 或者 ubuntuCODE 代表发型代号,例如 Ubuntu 18.04artfulDebian 9stretch

展示一下 Ubuntu 16.04 的清华源替换方式:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

等问题修复,将该文件删除并将 /etc/apt/sources.list.old 重新命名回来并更新缓存即可。

使用阿里云提供的默认软件源的话,走的是 ECS 的内网速度更加的快而且走的公网也更加安全可靠。

添加第三方软件源

由于安全和维护的考量,当操作系统版本冻结后,这个发型的版本的操作系统下所有的软件版本号就会冻结,不再进行功能性升级只进行安全更新。就比如说 Debian 9 默认的 MariaDB 是 10.0,CentOS 7 默认的 MariaDB 是 5.5 ,那如果我们想用 10.2 的特性就不行了。

这时候通过添加第三方软件源就可以解决了,这里已添加 MariaDB 官方提供的软件源为例:

RHEL、CentOS

创建 /etc/yum.repos.d/nginx.repo 文件,内容如下,以 CentOS 7 为例:

# MariaDB 10.2 CentOS repository list - created 2018-01-09 08:16 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyuncs.com/mariadb/yum/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

更多版本请参考:

https://downloads.mariadb.org/mariadb/repositories/#mirror=neusoft

更新缓存:

yum makecache

安装 MariaDB:

yum install MariaDB-server MariaDB-client

Debian、Ubuntu

这里以 Debian 9 为例

一、 安装一下 software-properties-commondirmngr

apt-get install software-properties-common dirmngr

Ubuntu 不需要安装 dirmngr,直接 apt-get install software-properties-common 就行

二、 导入 Key 以校验软件的真实性:

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8

三、 加入软件源:

add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirrors.aliyuncs.com/mariadb/repo/10.2/debian stretch main'

Ubuntu 将 10.2/debian 改成 ubuntu 就行

四、 更新软件源缓存并安装 MariaDB

apt update & apt install mariadb-server

更多版本请参考:

https://downloads.mariadb.org/mariadb/repositories/#mirror=neusoft