06. 在 Ubuntu Server 上安裝和管理軟體:完整指南

管理軟體是任何 Ubuntu Server 管理員的一項基本技能。無論您是在 Azure、AWS 或 GCP 等雲端環境中工作,還是管理地端基礎設施,了解 APT 等軟體套件管理工具對於維護安全、最佳化的系統至關重要。

在本指南中,我們將介紹安裝、更新和管理軟體的基礎知識,探討雲端特有的場景,排查常見問題,並提供實用範例,幫助您掌握 Ubuntu Server 管理。


往期文章:

01. Ubuntu Server 簡介 – SysOSX: AI & Cloud

02. 如何架設您的第一台 Ubuntu 伺服器:初學者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud

04. Ubuntu Server 使用者與權限管理:完整指南 – SysOSX: AI & Cloud

05. Ubuntu Server 網路基礎:完整指南 – SysOSX: AI & Cloud



1. 了解 Ubuntu 上的 APT 與軟體套件管理

Ubuntu Server 使用 APT (Advanced Package Tool)作為其主要的軟體套件管理員。APT 透過自動處理相依性並將存放庫用作套件的可信來源,簡化了軟體管理。

APT 的關鍵元件:

  • apt:用於管理套件的命令列工具。
  • dpkg:用於 .deb 檔案的低階套件管理員。
  • 存放庫:儲存和擷取 Ubuntu 套件的線上來源。

2. 使用 APT 安裝軟體

要在 Ubuntu Server 上安裝軟體,請使用 apt install 命令。

範例:安裝 Apache Web 伺服器

  • 更新套件清單:
sudo apt update 

輸出:

Hit:1 http://azure.archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [922 kB]
Get:6 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [151 kB]
Get:7 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [364 kB]
Get:8 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B]
Get:9 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:10 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [7076 B]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [21.3 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [212 B]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [9024 B]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [51.9 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [208 B]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [208 B]
Fetched 1907 kB in 1s (2778 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
15 packages can be upgraded. Run 'apt list --upgradable' to see them.
  • 安裝 Apache:
sudo apt install apache2

3. 刪除軟體

如果您不再需要某個套件,可以使用 apt remove 或 apt purge 命令將其刪除。

範例:刪除 Apache

sudo apt remove apache2

輸出:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  apache2
...
After this operation, 2 MB disk space will be freed.
Do you want to continue? [Y/n]

要徹底刪除它,包括設定檔:

sudo apt purge apache2


4. 更新和升級套件

定期更新對系統安全性和穩定性至關重要。

命令:

  • 更新套件清單
sudo apt update 
  • 升級已安裝的套件
sudo apt upgrade
  • 完整升級(包括核心更新)
sudo apt full-upgrade

輸出:

The following packages will be upgraded:
  linux-image-5.4.0-91-generic linux-headers-5.4.0-91-generic ...
Do you want to continue? [Y/n]

5. 管理存放庫

存放庫對套件管理至關重要。預設情況下,Ubuntu 使用官方存放庫,但可以根據需要新增、修改或刪除其他存放庫。

以 Deb822 格式管理存放庫

最近的 Ubuntu 版本已過渡到 Deb822 格式 進行存放庫管理。不再使用傳統的 /etc/apt/sources.list 檔案,而是透過 .sources 檔案來管理,這些檔案位於 /etc/apt/sources.list.d/ 目錄中。

查看目前存放庫

要查看目前的存放庫,請檢查 .sources 檔案,位置在 /etc/apt/sources.list.d/:

ls /etc/apt/sources.list.d/

例如:

cat /etc/apt/sources.list.d/ubuntu.sources

一個 .sources 檔案採用 Deb822 格式時如下所示:

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

新增存放庫

要以 Deb822 格式新增存放庫,請建立一個 .sources 檔案,位置在 /etc/apt/sources.list.d/。例如,要新增自訂 PPA 存放庫:

sudo nano /etc/apt/sources.list.d/custom.sources

新增所需的自訂內容:

Types: deb
URIs: http://customizedurl/
Suites: noble
Components: main
Signed-By: /usr/share/keyrings/repository-name.gpg

儲存檔案並更新套件清單:

sudo apt update

刪除存放庫

要刪除存放庫,請刪除相應的 .sources 檔案,位置在 /etc/apt/sources.list.d/:

sudo rm /etc/apt/sources.list.d/custom.sources
sudo apt update

Deb822 格式的優點

  • 結構化設定:清楚地區分存放庫類型、URI、套件和元件。
  • 安全性提升:允許透過 Signed-By 欄位指定用於存放庫簽章的 GPG 金鑰。
  • 更好的相容性:在雲端環境和容器化環境中更容易管理多個存放庫。

詳情請參閱 sources.list(5) 手冊頁。


6. 管理軟體套件快取

APT 使用快取系統在本機儲存下載的套件檔案和中繼資料。此快取有助於加快軟體安裝和更新等操作的速度,但隨著時間的推移會不斷增長並佔用磁碟空間。了解如何管理快取對於維持系統效能和釋放資源至關重要。

檢查快取大小

要檢查快取佔用了多少空間:

sudo du -sh /var/cache/apt/

輸出範例:

126M    /var/cache/apt/

清理快取

  1. 清除套件快取
    使用 apt clean 命令刪除所有快取的軟體套件檔案:sudo apt clean 這會清除 /var/cache/apt/archives 目錄,其中儲存下載的 .deb 檔案。
  2. 刪除部分下載
    如果下載中斷或損壞,請使用以下命令刪除部分檔案:sudo apt autoclean 這只會刪除過時的檔案和部分下載。

快取清理的範例輸出

sudo apt clean
sudo apt autoclean

輸出:

Cleaning up /var/cache/apt/archives...
Removing unused files...
Done.

重建快取

如果懷疑快取中繼資料已損壞,請透過更新套件清單來重建快取:

sudo apt update 

這將使用來自存放庫的最新中繼資料重新整理本機快取。


7. 雲端場景:Azure、AWS 和 GCP 中的軟體管理

在雲端環境中,Ubuntu Server 上的軟體管理與地端設定類似。不過,還有一些其他注意事項:

Azure

  • Azure 提供 自訂指令碼擴充功能 ,可以在虛擬機器部署期間自動安裝軟體。
  • 範例:使用指令碼安裝 Nginx:
az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name CustomScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"commandToExecute":"sudo apt update && sudo apt install -y nginx"}'

AWS

  • 使用 使用者資料指令碼 ,在執行個體啟動期間安裝軟體。
  • 範例:在 EC2 執行個體上安裝 Docker:
#!/bin/bash
sudo apt update
sudo apt install -y docker.io

GCP

  • 使用 啟動指令碼 ,管理虛擬機器執行個體上的軟體安裝。
  • 範例:安裝 MySQL:
#!/bin/bash
sudo apt update
sudo apt install -y mysql-server

8. 安裝或解除安裝期間常見問題的疑難排解

1. 套件找不到

如果找不到某個套件,請確認存放庫已啟用:

sudo apt update 
sudo apt update

2. 相依性錯誤

修正遺失的相依性:

sudo apt --fix-broken install

3. 存放庫問題

檢查存放庫錯誤:

sudo apt update 

輸出範例:

Err:1 http://ppa.launchpad.net/repository-name/ubuntu noble Release
  404 Not Found

解決方案:刪除或修正以下位置的存放庫項目: /etc/apt/sources.list。

4. 解除安裝後殘留檔案

清理殘留檔案:

sudo apt autoremove
sudo apt purge package-name

5. 權限遭拒

確認您擁有 root 權限:

sudo apt install package-name


9. 套件管理的最佳實務

  • 安裝軟體前務必先更新
sudo apt update 
  • 定期升級系統
    使用 apt upgrade 或 apt full-upgrade 以確保系統安全。
  • 刪除不必要的套件
sudo apt autoremove
  • 使用可信存放庫
    除非必要,否則避免使用第三方存放庫。
  • 監控雲端環境中的套件變化
    使用指令碼或 Ansible 等設定管理工具自動執行更新。
  • 定期清理快取
    定期清理快取以釋放磁碟空間:
sudo apt clean

結論

無論您管理的是地端伺服器還是在雲端工作,掌握 Ubuntu Server 上的軟體安裝和管理對於維護一個安全高效的系統都至關重要。遵循本指南中概述的最佳實務,您可以確保伺服器保持最佳化狀態,並隨時準備應對任何工作負載。

如需了解更多資訊,請參閱 Ubuntu 官方文件中關於 APT。

接下來做什麼?

在下一篇文章中,我們將深入探討 Ubuntu Server 的修補程式更新,這是維護安全性和穩定性的關鍵任務。您將學到:

  • 為什麼修補程式更新對安全性和穩定性至關重要 以及它如何防止弱點。
  • 如何使用 apt 來有效地更新和升級您的伺服器。
  • 之間的區別 apt update、 apt upgrade和 apt full-upgrade ,以避免常見錯誤。
  • 自動更新 透過使用 unattended-upgrades 來節省時間並確保一致性。
  • 如何處理 核心更新 並使用 reboot-required 通知優雅地重新啟動伺服器。

敬請期待關於如何讓 Ubuntu Server 保持安全和最新狀態的可行見解!

4 thoughts on “06. Installing and Managing Software on Ubuntu Server: A Complete Guide”

發表留言