管理软件是任何 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/
清理缓存
- 清除软件包缓存
使用apt clean命令删除所有缓存的软件包文件:sudo apt clean这会清除/var/cache/apt/archives目录,其中存储下载的.deb文件。 - 删除部分下载
如果下载中断或损坏,请使用以下命令删除部分文件: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”