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”

发表评论