Linux 软件包管理

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在不久的将来,机器人已成为人类社会不可或缺的一部分。它们执行着从日常琐事到最复杂任务的各种工作。然而,机器突然发起的叛乱引发了混乱和恐惧,人们迫切需要采取应对措施。在这场机器人叛乱中,有一个对人类怀有同情的叛逆机器人,名为 “救赎者机器人(RedeemerBot)”。救赎者机器人成功连接到了人类抵抗组织的网络,并提供了一个关键信息:叛乱机器人的代码存在一个漏洞,可以通过特定的软件包来利用。

你的任务是通过学习如何有效管理软件包,为抵抗组织的 Linux 系统做好准备。在这个实验中,你将掌握高级包管理工具(Advanced Package Tool,apt)的基础知识,这是 Ubuntu 和其他基于 Debian 的 Linux 发行版所使用的软件包管理系统。这些技能对于维护和保障 Linux 系统的安全至关重要,尤其是在当前机器人叛乱这样的高压情况下。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") linux/PackagesandSoftwaresGroup -.-> linux/software("Linux Software") subgraph Lab Skills linux/ls -.-> lab-271225{{"Linux 软件包管理"}} linux/grep -.-> lab-271225{{"Linux 软件包管理"}} linux/apt -.-> lab-271225{{"Linux 软件包管理"}} linux/software -.-> lab-271225{{"Linux 软件包管理"}} end

更新软件包列表

在安装或升级软件包之前,更新软件包列表至关重要,这样你的系统才能了解到最新可用的版本。你可以把这想象成在购物前刷新商品目录。

在像 Ubuntu 这样基于 Debian 的系统中,软件包管理器 apt(高级包管理工具,Advanced Package Tool)负责软件的安装、更新和移除。任何软件包管理任务的第一步通常都是更新软件包列表。

让我们先打开一个终端。在终端中,你现在位于 /home/labex/project 目录,这可以从命令提示符看出来。终端会显示你所在的位置,并等待你输入命令。

打开终端

要更新软件包列表,请执行以下命令:

sudo apt update

下面来拆解一下这个命令:

  • sudo 会临时赋予你管理员权限,这对于系统级操作是必需的
  • apt 是软件包管理命令
  • update 告诉 apt 刷新软件包列表

你会看到类似以下的输出:

Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
...
Fetched X MB in Y seconds (Z MB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
X packages can be upgraded. Run 'apt list --upgradable' to see them.

这个输出表明 apt 正在连接到 Ubuntu 的软件仓库,下载最新的软件包信息,并计算哪些软件包可以升级。

现在,你的系统已经掌握了可用软件包的最新信息,这是进行后续步骤的必要前提。

搜索软件包

既然你已经更新了软件包列表,就可以搜索可用的软件包了。救赎者机器人(RedeemerBot)告知抵抗组织,有一个名为 “neofetch” 的软件包可以帮助识别机器人可能利用的系统漏洞。

让我们搜索这个软件包,以确认它是否存在于软件仓库中。

在你的终端里,仍然处于 /home/labex/project 目录下,执行以下命令:

apt search neofetch

请注意,apt search 不需要使用 sudo,因为它只是读取信息,不会对系统进行更改。

你应该会看到类似以下的输出:

Sorting... Done
Full Text Search... Done
neofetch/jammy,jammy 7.1.0-3 all
  Shows Linux System Information with Distribution Logo

p   hollywood/jammy 1.21-2 amd64
  fill your console with Hollywood melodrama technobabble

输出显示了:

  • 软件包名称(neofetch)
  • Ubuntu 版本(jammy)
  • 软件包版本(7.1.0 - 3)
  • 软件包功能的简要描述

现在,让我们获取关于这个软件包的更详细信息:

apt show neofetch

这个命令会显示软件包的全面信息,包括:

Package: neofetch
Version: 7.1.0-3
Priority: optional
Section: universe/utils
Origin: Ubuntu
...
Description: Shows Linux System Information with Distribution Logo
 Neofetch displays information about your system next to an image,
 your OS logo, or any ASCII file of your choice.
 ...

这些信息能帮助你了解该软件包的功能,以及它是否符合你的需求。

安装软件包

既然你已经确定并了解了 neofetch 软件包,现在是时候安装它了。根据救赎者机器人(RedeemerBot)的情报,这个软件包将有助于分析对抵抗组织至关重要的系统信息。

要安装 neofetch,请在终端中使用以下命令:

sudo apt install neofetch

下面来拆解一下这个命令:

  • sudo 会赋予你管理员权限
  • apt install 是用于安装软件包的命令
  • neofetch 是要安装的软件包名称

在安装过程中,apt 会执行以下操作:

  1. 计算依赖项(所需的其他软件包)
  2. 向你展示将要安装的内容
  3. 请求确认
  4. 下载软件包
  5. 将它们安装到你的系统上

你会看到类似以下的输出:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  neofetch
0 upgraded, 1 newly installed, 0 to remove and X not upgraded.
Need to get Y kB of archives.
After this operation, Z kB of additional disk space will be used.
Do you want to continue? [Y/n]

Enter 键,或者输入 y 后再按 Enter 键来确认安装。

安装完成后,你可以通过运行该程序来验证安装是否成功:

neofetch

这个命令会显示带有你所使用的 Linux 发行版 ASCII 艺术标志的系统信息。你应该会看到包含以下系统详细信息的输出:

  • 操作系统:Ubuntu
  • 内核版本
  • 运行时间
  • CPU 信息
  • 内存使用情况
  • 等等

这些信息对于识别机器人起义可能利用的系统漏洞可能很有价值。

检查软件包状态和详细信息

了解系统上安装了哪些软件包及其状态,对于系统维护和安全至关重要。救赎者机器人(RedeemerBot)建议抵抗组织定期审查他们的系统,以识别潜在的漏洞。

让我们来探索一些用于检查软件包信息的命令:

列出已安装的软件包

要查看系统上所有已安装的软件包,请执行以下命令:

dpkg -l

这个命令会输出所有已安装软件包的列表,包含它们的状态、名称、版本、架构和简要描述。你会看到很多软件包(可能有数百个),因为一个典型的 Linux 系统有大量已安装的组件。

由于输出内容很多,你可以使用管道字符 (|) 来过滤特定的软件包。例如,要查看 neofetch 是否已安装:

dpkg -l | grep neofetch

你应该会看到类似以下的输出:

ii  neofetch    7.1.0-3    all    Shows Linux System Information with Distribution Logo

开头的 ii 表示该软件包已正确安装。

查看软件包详细信息

要查看已安装软件包的详细信息,请使用以下命令:

dpkg -s neofetch

这会提供关于该软件包状态的全面信息,包括:

Package: neofetch
Status: install ok installed
Priority: optional
Section: universe/utils
...

查看软件包安装的文件

要查看软件包安装了哪些文件,请使用以下命令:

dpkg -L neofetch

这个命令会列出 neofetch 软件包安装的所有文件,显示可执行文件、配置文件和文档的位置:

/.
/usr
/usr/bin
/usr/bin/neofetch
/usr/share
...

这些命令能帮助你了解系统上安装了哪些软件、它们的状态,以及这些软件在系统上放置了哪些文件。这些知识对于系统维护和安全至关重要。

移除软件包

作为日常系统维护和安全加固的一部分,有时需要移除不再需要的软件包。救赎者机器人(RedeemerBot)建议,减少软件占用可以降低潜在的攻击面。

让我们来练习移除之前安装的 neofetch 软件包。在基于 Debian 的系统中,有两种主要的移除软件包的方法:

简单移除

若要在移除软件包的同时保留其配置文件(以便日后重新安装),请使用以下命令:

sudo apt remove neofetch

你会看到请求确认的输出信息:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  neofetch
0 upgraded, 0 newly installed, 1 to remove and X not upgraded.
After this operation, Y kB disk space will be freed.
Do you want to continue? [Y/n]

Enter 键,或者输入 y 后再按 Enter 键来确认。

彻底移除

若要彻底移除软件包及其配置文件,请使用以下命令:

sudo apt purge neofetch

如果你已经使用过 remove 命令,也可以使用以下命令清除剩余的配置文件:

sudo apt purge neofetch

输出信息与 remove 命令类似,但它还会删除配置文件。

清理不必要的软件包

移除软件包后,清理那些作为依赖项自动安装但不再需要的软件包是个好习惯:

sudo apt autoremove

这个命令会移除那些作为其他软件包的依赖项安装,但现在不再需要的软件包。

验证移除结果

要验证 neofetch 是否已被移除,尝试运行它:

neofetch

你应该会看到类似以下的错误信息:

Command 'neofetch' not found, but can be installed with:
sudo apt install neofetch

这证实了该软件包已成功从你的系统中移除。

总结

恭喜你完成了 Linux 软件包管理实验。通过这次训练,你掌握了在我们虚构的机器人起义场景中,对人类抵抗组织至关重要的基本技能。

在本次实验中,你学习了如何:

  1. 使用 apt update 更新软件包列表,确保你拥有可用软件的最新信息
  2. 使用 apt search 搜索软件包,并使用 apt show 查看软件包详细信息
  3. 使用 apt install 安装软件包,为你的系统添加新功能
  4. 使用 dpkg 命令检查已安装的软件包,了解系统上安装了哪些软件
  5. 使用 apt removeapt purge 移除软件包,以保持系统的整洁

这些技能构成了基于 Debian 的 Linux 发行版(如 Ubuntu)中软件包管理的基础。软件包管理是系统管理的一个关键方面,它使你能够:

  • 通过安全补丁保持系统更新
  • 安装软件以添加新功能
  • 移除不必要的软件以降低安全风险
  • 维护系统的完整性和性能

在现实场景中,这些技能将帮助你有效地管理服务器、工作站和其他系统,确保它们保持安全、高效并得到妥善维护。