【雲端計算的1024種玩法】玩轉四大主流作業系統的軟體包管理器

妙正灰發表於2018-01-09

前言

目前收到了阿里雲關於 “華北1(青島)地域的ECS Linux系統安裝源(yum/deb/apt等)暫停服務進行升級” 的通知,這對於伺服器本身的執行並沒有影響,但是如果我們需要安裝環境或者升級環境,就會遇到無法升級的情況。

如果遇到這種情況,我們應該怎麼辦呢? 這裡就教大家如何應對相關問題。 更換軟體源可以直接到 教程 下的 更換軟體源 學習。

介紹

RHEL、CentOS 的 yum 工具和 Debian、Ubuntu 的 APT 工具都是一個非常好的前端軟體包管理器,它們可以幫助我們便捷的安裝二進位制軟體無需編譯,同時還可以自動安裝該軟體依賴的庫或其他軟體,還可以幫助作業系統保持最新狀態。

這裡就介紹一下 yum 和 apt 的用法。

要求 & 收穫

需要使用到的產品:

(包括非阿里雲)伺服器/ECS/輕量應用伺服器

通過本文你將講學到:

RHEL、CentOS、Debian、Ubuntu 四大主流作業系統的軟體包管理器使用教程

教程

升級系統 & 更新軟體

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


相關文章