Введение
При работе со сложным программным обеспечением в Linux, особенно с инструментами, клонированными из репозиториев, таких как GitHub, вы часто сталкиваетесь с ошибками "отсутствует зависимость" (missing dependency). Эти ошибки возникают, когда программное обеспечение требует установки других программ или библиотек, но они отсутствуют в вашей системе.
В этой лаборатории вы научитесь фундаментальному навыку устранения неполадок: как определять и устанавливать отсутствующие зависимости для скрипта. В качестве примера мы будем использовать Fluxion, популярный инструмент аудита безопасности. Вы запустите его установщик, увидите, какие пакеты отсутствуют, вручную установите их с помощью менеджера пакетов apt-get, и, наконец, успешно запустите приложение.
Запуск установочного скрипта 'fluxion.sh -i'
На этом этапе вы начнете с запуска установочного скрипта Fluxion. Большинство хорошо спроектированных скриптов включают установщик или проверку зависимостей, чтобы помочь пользователям настроить необходимую среду. Скрипт Fluxion использует флаг -i для запуска в режиме "установщика" (installer), который специально проверяет необходимые пакеты.
Сначала перейдите в каталог fluxion, который был предварительно клонирован для вас в каталоге ~/project.
cd ~/project/fluxion
Теперь выполните установочный скрипт. Поскольку это скрипт оболочки (shell script) в текущем каталоге, вам нужно будет предварять его ./.
./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 ] — это те, которые нам нужно исправить. Скрипт явно сообщает нам, что lighttpd, hostapd и mdk4 требуются, но не найдены в системе. Для этой лаборатории мы сосредоточимся на установке mdk4 в качестве примера процесса.
На этом этапе нет команд для выполнения. Цель — просто попрактиковаться в чтении и интерпретации диагностических сообщений.
Вручную установить отсутствующий пакет с помощью 'apt-get install'
Теперь, когда вы определили отсутствующий пакет, mdk4, вы будете использовать стандартный менеджер пакетов Debian/Ubuntu, apt-get, для его установки. Это распространенный инструмент командной строки для управления программным обеспечением.
Для установки пакета используется команда sudo apt-get install <имя-пакета>. Вам нужен 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 теперь автоматически обнаружит и установит другие отсутствующие необходимые пакеты (lighttpd и hostapd), поскольку мы запускаем его снова.
Убедитесь, что вы все еще находитесь в каталоге ~/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 и за его пределами.
