排查 Fluxion 缺失的依赖项

Beginner
立即练习

引言

在 Linux 上处理复杂的软件时,特别是从 GitHub 等仓库克隆的工具,你经常会遇到“缺少依赖项”的错误。当软件需要安装其他程序或库,但你的系统上不存在时,就会出现这些错误。

在本实验中,你将学习一项基本的故障排除技能:如何识别和安装脚本所需的缺失依赖项。我们将以 Fluxion 为例,这是一个流行的安全审计工具。你将运行它的安装程序,观察哪些软件包缺失,使用 apt-get 包管理器手动安装它们,最后成功启动应用程序。

运行 'fluxion.sh -i' 安装脚本

在此步骤中,你将首先运行 Fluxion 安装脚本。大多数设计良好的脚本都包含一个安装程序或依赖项检查器,以帮助用户设置所需的运行环境。Fluxion 脚本使用 -i 标志以“安装程序”模式运行,该模式专门检查所需的软件包。

首先,导航到已为你预先克隆到 ~/project 目录中的 fluxion 目录。

cd ~/project/fluxion

现在,执行安装脚本。由于它是在当前目录下的一个 shell 脚本,你需要用 ./ 作为前缀来运行它。

./fluxion.sh -i

你将看到检查各种工具的输出。密切关注那些指示软件包缺失的行。

预期输出(可能略有不同):

 * Installer
[*] Checking for dependencies...
 [!] Some packages are not installed.
 [!] The following packages are required:
    -> lighttpd..................................[ Not installed ]
    -> hostapd...................................[ Not installed ]
    -> mdk4......................................[ Not installed ]
    -> aircrack-ng...............................[ OK ]
    -> xterm.....................................[ OK ]
    ...
 [!] The following packages are recommended:
    -> pyrit.....................................[ Not installed ]
    -> bully.....................................[ Not installed ]
 [?] Do you want to install the required packages? (Y/n)

在本实验中,请不要继续自动安装。按 n 然后按 Enter 退出脚本的安装程序提示。我们将在下一步手动安装这些软件包。

观察安装程序输出以查找缺失的软件包

在此步骤中,你的任务是仔细阅读上一个命令的输出。这是故障排除中最关键的部分:理解程序提供给你的信息。

正如你在 ./fluxion.sh -i 的输出中看到的,该脚本提供了其依赖项及其状态的清晰、彩色编码列表。

 [!] Some packages are not installed.
 [!] The following packages are required:
    -> lighttpd..................................[ Not installed ]
    -> hostapd...................................[ Not installed ]
    -> mdk4......................................[ Not installed ]

标记为 [ Not installed ] 的行是我们需要的修复项。脚本明确告诉我们 lighttpdhostapdmdk4 是必需的,但在系统中找不到。在本实验中,我们将重点安装 mdk4 作为该过程的示例。

此步骤没有需要运行的命令。目标只是练习阅读和解释诊断消息。

使用 'apt-get install' 手动安装缺失的软件包

既然你已经识别出缺失的软件包 mdk4,你将使用标准的 Debian/Ubuntu 包管理器 apt-get 来安装它。这是一个常用的管理软件的命令行工具。

要安装软件包,你使用 sudo apt-get install <package-name> 命令。你需要 sudo,因为安装软件会修改系统并需要管理员权限。我们还将添加 -y 标志,它会自动回答任何确认提示的“是”,从而使安装过程无需交互。

在你的终端中运行以下命令来安装 mdk4

sudo apt-get install -y mdk4

系统现在将获取并安装 mdk4 软件包及其自身的任何依赖项。

预期输出(已截断):

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  mdk4
0 upgraded, 1 newly installed, 0 to remove and XX not upgraded.
Need to get 63.4 kB of archives.
After this operation, 205 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 mdk4 amd64 4.2-1 [63.4 kB]
Fetched 63.4 kB in 1s (118 kB/s)
Selecting previously unselected package mdk4.
(Reading database ... 123456 files and directories currently installed.)
Preparing to unpack .../mdk4_4.2-1_amd64.deb ...
Unpacking mdk4 (4.2-1) ...
Setting up mdk4 (4.2-1) ...
Processing triggers for man-db (2.10.2-1) ...

你现在已经成功解决了一个缺失的依赖项。

重新运行安装程序以验证所有依赖项是否已满足

在此步骤中,你将重新运行安装程序脚本,以确认你的修复已成功。验证你的更改始终是一个好习惯。尽管我们只安装了 mdk4,但 Fluxion 安装程序现在将自动检测并安装其他缺失的必需软件包(lighttpdhostapd),因为我们再次运行了它。

确保你仍在 ~/project/fluxion 目录中。再次运行安装程序命令:

./fluxion.sh -i

这次,脚本将再次检查依赖项。它会发现 mdk4 现在已安装。它仍然会提示你安装剩余的缺失软件包。这次,按 Y 然后按 Enter,允许脚本自动安装其余部分。

预期输出:

 * Installer
[*] Checking for dependencies...
 [!] Some packages are not installed.
 [!] The following packages are required:
    -> lighttpd..................................[ Not installed ]
    -> hostapd...................................[ Not installed ]
    -> mdk4......................................[ OK ]
    ...
 [?] Do you want to install the required packages? (Y/n) Y
[*] Installing required packages...
... (apt-get installation output) ...
[*] All dependencies are installed.

安装完成后,脚本将确认所有依赖项都已满足。这证实了你的故障排除过程是成功的。

成功启动 Fluxion 主脚本

在所有依赖项都已正确安装后,你现在可以启动 Fluxion 主应用程序了。当你运行不带任何标志的脚本时,它将启动主程序而不是安装程序。

执行不带 -i 标志的脚本:

./fluxion.sh

如果所有依赖项都已正确解决,你将不再看到任何错误消息。取而代之的是,你将看到 Fluxion 的主语言选择菜单。

预期输出:

 ...
    ╔══════════════════════════════════════════════════════════════════════════════╗
    ║                    Choose your language. / Elige tu idioma.                  ║
    ╠══════════════════════════════════════════════════════════════════════════════╣
    ║   1. English  (en)          5. Português (pt)          9. Türkçe    (tr)     ║
    ║   2. Español  (es)          6. Français  (fr)         10. Ελληνικά  (gr)     ║
    ║   3. Italiano (it)          7. Deutsch   (de)         11. Polski    (pl)     ║
    ║   4. Русский  (ru)          8. Magyar    (hu)         12. Nederlands(nl)     ║
    ╚══════════════════════════════════════════════════════════════════════════════╝
 > Select an option:

看到此菜单确认你已成功排查并解决了所有缺失的依赖项问题。你现在可以通过按 Ctrl+C 来退出脚本。

总结

在此实验中,你练习了一项对任何 Linux 用户都至关重要且常见的技能:排查缺失的软件依赖项。

你成功地:

  • 执行了脚本的安装程序来检查所需的软件包。
  • 解析了输出以识别哪些依赖项缺失。
  • 使用 sudo apt-get install 命令手动安装了缺失的软件包。
  • 重新运行了安装程序以验证修复并安装剩余的依赖项。
  • 在解决所有问题后成功启动了主应用程序。

这个“阅读错误,识别问题,应用修复,然后验证”的过程是解决 Linux 及其他领域各种技术问题的基本工作流程。