Назначение автоматизированной программы установки
Дистрибутив Gentooможно установить на компьютер только выполнив строго определенную последовательность действий описанных в руководстве пользователя GentooLinux. Выполнить такую установку сможет только специалист, у которого есть подготовка, знания компьютерной терминологии, знание оборудования компьютера и технологий, используемых в конкретном компьютере.
Обычно, собрать ядро дистрибутива с первого раза, что бы оно запустилось, довольно затруднительная задача. Это требует много времени и знаний у администратора системы.
Но установив дистрибутив GentooLinuxоколо пяти раз, среднестатистический администратор безошибочно и довольно быстро будет производить установку, при этом имея конкретную цель и представление того, что ему нужно получить в итоге.
В дипломной работе необходимо создать программу автоматизированной установки дистрибутива таким образом, что бы установку мог произвести и не очень подготовленный пользователь, возможно даже новичок в операционных системах семейства Linux. Для этого необходимо создать программу, которая будет проводить пользователя поэтапно по всем частям руководства пользователя GentooLinux. Необходимо на каждом этапе давать краткую информацию о происходящем на донном этапе и о том, какие возможности выбора есть у пользователя, кратко описать преимущества и недостатки при выборе чего либо.
Так же необходимо учесть возможность повторного выполнения того или иного этапа, в случае если пользователь изменит свое решение после того, как сделает какой-либо выбор. Совершенно логично, что такое не всегда будет возможно, в связи с обратимостью выполненных действий уже непосредственно самим дистрибутивом Gentoo.
Данная программа установки также будет полезна тем администраторам, которым необходимо установить Gentooна множество одинаковых систем, возможно для дальнейшего использования в качестве кластерной системы с помощью распределения выполняемых задач на множество вычислительных узлов. Тогда можно будет подготовить файл ответов, для произведения установки на все машины одновременно, и немного изменив программу установки для чтения ответов из файла, выполнить установку дистрибутива.
2.2. Выбор языка и среды программирования[a1]
При установке Gentooвсе, что необходимо для начала процесса установки это дистрибутив, который имеет консольbash.
bash (от англ. Bourneagainshell, каламбур «Bornagain» shell — «Возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourneshell. Одна из наиболее популярных современных разновидностей командной оболочки UNIX. Особенно популярна в среде Linux, где она часто используется в качестве предустановленной командной оболочки.
Bash это командный процессор, который, как правило, работает в режиме командной строки, что позволяет пользователю вводить команды вызывающие определенные действия. Bash также может читать команды из файла, который называется скриптом. Как и все Unix-оболочки, он поддерживает автодополнение регулярных выражений (в том числе и рекурентных), названий файлов и папок, подстановку вывода результата команд, переменные, контроль за порядком выполнения, и операторы ветвления и итерации.
Языки программирования могут быть реализованы как компилируемые и интерпретируемые[a2] .
Программа на компилируемом языке при помощи компилятора (особой программы) преобразуется (компилируется) в машинный код (набор инструкций) для данного типа процессора и далее собирается в исполнимый модуль, который может быть запущен на исполнение как отдельная программа. Другими словами, компилятор переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора.
Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора.
В связи с тем, что bashесть почти в любой Linuxсистеме, логичнее всего было бы использовать скриптовый язык bash, что бы писать программу установки, учитывая то, что она еще будет консольно-ориентированной, и это более правильно, так как заранее не известно, будет ли графическая оболочка в дистрибутиве, с которого будет устанавливаться Gentoo. Так же этот язык удобен тем, что его исходный файл с кодом можно открыть в любом текстовом редакторе, прочитать код и комментарии, и тем самым очень просто внести нужные изменения и изменить его под свои нужды.
Скрипты bashможно писать непосредственно в командном интерпретаторе использования одну из многочисленных программ для работы с текстом. В Linuxимеется множество таких программ. Так же есть текстовые редакторы более высокого уровня, которые за счет подключения дополнительных модулей и настроек превратить в целые среды разработки, в которых можно писать код, выполнять его и отлаживать. Т.е. выполнять весь цикл разработки приложения не выходя из одной программы. Такие среды обычно имеют подсветку синтаксиса и возможность автодополнения.
Одним из таких текстовых редакторов является Vim.
Vim (сокр. от ViImproved, произносится «вим») — свободный, режимный текстовый редактор, созданный на основе более старого vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, и созданным благодаря этому расширениям и надстройкам.
Пользовательский интерфейс Vim’а может работать в чистом текстовом (консольном) режиме.
Одна из главных особенностей редактора — применение двух основных, вручную переключаемых, режимов ввода: командного (после запуска редактор находится в нём) и текстового (режим непосредственного редактирования текста, аналогичный большинству «обычных» редакторов). Vim не интуитивен, так что эффективная работа с редактором требует предварительного обучения.
Для удобства пользователя при выполнении некоторых шагов установки можно будет использовать библиотеку ncurses. Ncurses («newcurses») — библиотека написанная на языке Си и предназначенная для управления вводом/выводом на терминал, в том числе — задавать экранные координаты (в знакоместах) и цвет выводимых символов.Ncursesпредоставляет программисту уровень абстракции, позволяющий не беспокоиться об аппаратных различиях терминалов и писать переносимый код[6].