Словарь Эллочки-линуксойдочки

Алексей Федорчук

Первая версия этого словаря была обнародована более пяти лет назад и последний раз корректировалась в марте 2013. С тех пор утекло немало воды и памяти, и потому назрела необходимость в обновлении, каковое и предлагается вниманию читателей.

Во второй версии я отказался от алфавитно-словарной формы, а сгруппировал основные понятия в смысловые блоки, часто по антагонистическому принципу.

Вступление

Среди посетителей Блогосайта время от времени встречаются люди, ещё не очень знакомые с UNIX-подобными операционными системами и миром свободного программного обеспечения. Они на первых же страницах рискуют увидеть ряд незнакомых слов, в том числе и жаргонизмов, и местных идиоматических выражений. Дабы они не сочли это обсценной лексикой, и создан настоящий словарь.

При составлении настоящего словаря я руководствовался теми же принципами, что великие этнографы и лингвисты прошлого, составлявшие словарь людоедов племени мумбо-юмбо, Ильф и Петров — приводя словарь Эллочки-людоедочки, и Александр Привалов — объясняя братьям Стругацким значение научно-магических терминов. Предпочтение отдавалось методу создателей «Двенадцати стульев» — хотя в тридцать слов лексикона их героини мне вписаться так и не удалось.

Тем не менее, букв в этом словаре получилось не очень много. И потому он предлагается к прочтению всем начинающим применителями Linux’а и примкнувшим к ним товарищам. Читать его можно вне зависимости от пола, биологического и информационного возраста, а также операционно-системной ориентации.

ОСи, стандарты и свободы

Операционная система (ОС или, по народному, операционка) — система, отвечающая за взаимодействие между аппаратурой компьютера и всеми остальными программами.

POSIX — Portable Operating Systems Interface (интерфейс переносимых операционных систем), набор стандартов, которым должна соответствовать как операционная система, претендующая на звание кросс-платформенной, так и приложения для нее. Создан на базе опыта разработки UNIX-систем, и потому POSIX-системы, с некоторыми оговорками, обычно рассматриваются как их синоним. Однако в общем случае это не так: все UNIX’ы и UNIX-подобные системы POSIX-совместимы, но не все POSIX-совместимые системы UNIX-подобны. Примером чему служит Windows, начиная с NT 4. Поскольку все системы, не совместимые с POSIX, вымерли (последней была, кажется, Windows ME), антитезы этому понятию ныне не существует.

UNIX — родовое название семейства операционных систем, близко по смыслу к понятиям UNIX-подобных или POSIX-систем. Однако, в отличие от них, отхватывает только те операционки, разработчики которых приобрели право на соответствующую торговую марку, примером чему является OS X. Другие представители среди живых — AIX, Solaris, HP UX.

UNIX-подобные системы — собирательное название для операционных систем, родственных UNIX, и отвечающих критериям совместимости со стандартом POSIX. К ним относятся Linux и все BSD-системы, поскольку они (в отличие от Mac OS X) не прошли сертификации на высокое звание UNIX. Кроме того, все UNIX-подобные системы являются открытыми и свободными, все собственно UNIX’ы — проприетарны.

FSF (Free Software Foundation) — фонд поддержки движения за свободный софт.

GNU — проект создания свободной операционной системы, полностью воспроизводящей функциональность коммерческих Unix. Система эта (известная под названием Hurd) до сих пор не создана. Однако в рамках проекта было разработано множество системных утилит и приложений, вошедших в состав Linux и частично — BSD-систем, в частности, компилятор gcc.

Ядра и дистрибутивы

Ядро ОС — программный комплекс, непосредственно взаимодействующий с «железом»; некогда ядра разделялись на монолитные, модульно-монолитные и микроядерные. Ныне это потеряло смысл: ядра почти всех «действующих» ОС ныне — модульно-монолитные, та или иная часть функционала в них обеспечивается отдельными модулями (см. Модули). А примеров удачной реализации микроядерных ОС, за исключением специфической QNX, миру так и не было явлено. Расхожее мнение, что микроядерной является OS X, основано на недоразумении.

Модули ядра — отдельные программы, динамически связываемые с ядром ОС, каждая из которых отвечает за поддержку определённого узла компьютера. Модули, разрабатываемые производителями оборудования (например, видеокарт), часто называют драйверами.

Linux (образовано от имени Linus и X — родового компонента названий большинства UNIX-систем) — этот термин имеет минимум три значения. Первое, практически общепризнанное, — название ядра операционной системы, разработанного Линусом Торвальдсом. Второе применяется по отношению к одноименному ядру и комплексу средств, обеспечивающих его базовую функциональность (Base Linux, Core Linux, часто также GNU/Linux). Третье — в сочетании с именем собственным применяется для названия определенной разновидности (дистрибутива) этой ОС, например, Arch Linux или Linux Mint.

BSD (Berkeley Software Distributions) — родовое именование нескольких родственных ОС из семейства UNIX-подобных. Представители: FreeBSD, NetBSD, OpenBSD, DragonFlyBSD. В отличие от дистрибутивов Linux, это именно самостоятельные операционки, каждая со своим ядром. В качестве дистрибутивов в BSD-мире могут рассматриваться такие дериваты FreeBSD, как PC-BSD и GhostBSD.

Системы инициализации (стили инциализации, менеджеры загрузки) — программные комплексы, управляющие загрузкой машины «от включения питания до появления приглашения к авторизации». Исторически противостояли: BSD-стиль в одноимённых системах и некоторых дистрибутивах Linux, и стиль System V (sysv) во всех остальных UNIX’ах и большинстве Linux’ов. В относительно недавние годы к ним присоединились upstart и systemd (не считая нескольких, распространения не получивших). Рассуждать об их достоинствах и недостатках бесполезно: дистрибутивы, использовавшие BSD-стиль, почтивымерли или от него отказались, от upstart ушла даже породившая его Ubuntu. Стиля SysV придерживаются дистрибутивы традиционной ориентации (Slackware, PCLinuxOS), прочие дружными колоннами маршируют к светлому systemd’ову будущему.

Дистрибутив (distribution, distro, адекватным русским сокращением было бы слово дистрадистра) — способ комплектации операционной системы дополнительными пакетами. Применяется преимущественно к разновидностям ОС Linux, реже — к BSD-системам. Дистрибутивы Linux, как правило, имеют имя собственное (название) и собственные репозитории пакетов. Кроме того, они могут отличаться программами установки, средствами управления пакетами, конфигурационными файлами и средствами их настройки, хотя ныне эти различия всё больше нивелируются. Примерами являются: Mint, Debian GNU/Linux, Ubuntu, openSUSE, Fedora (из «первой пятёрки» рейтинга сайта DistroWatch по порядку).
Дистрибутивы BSD-систем представлены только для FreeBSD и отличаются целями создания (специализированнные системы и системы общего назначения), наборами пакетов и программами инсталляции.

Ubuntu — один из самых распространённых и, безусловно, самый известный вне круга линуксоидов дистрибутив Linux. С одной стороны, он иногда противпоставляется всем остальным дистрибутивам. С другой же — для многих начинающих применителей этой ОС Ubuntu и Linux выступают как близнецы-братья. И потому очень важно вовремя осознать, что, во-первых, Ubuntu — это не весь Linux, а Linux — это не только Ubuntu. А во-вторых, Ubuntu — это всё-таки Linux, и не воспринимать буквально фразы типа: «В Ubuntu это делается так». Потому что скорее всего «это» делается точно так же, как и во всех остальных дистрибутивах.

Родительский дистрибутив — применительно к Linux’у система, происхождение которой затерялось в веках. До наших дней таковых дожило три — Slackware, Debian, Red Hat в лице RHEL и Fedora. Все остальные являются их производными той или иной формы (см. далее). С другой стороны, производные дистрибутивы могут выступать родительскими по отношению к своим потомкам, и так далее.

Клон — разновидность производных дистрибутивов. Поскольку клон (в биологии) — организм, генертически идентичного исходному, применительно к дистрибутивам клонами называют системы, полностью воспроизводящие функциональность системы исходной и основанные на той же кодовой базе (но не пакетной). Ныне чистыми клонами можно назвать, пожалуй, только CentOS и Scientific Linux, клонирующие функционал RHEL.

Форк (fork) — это ответвление, по идеологическим или технологическим причинам, от генеральной линии развития родительского дистрибутива. Примеры форков особенно типичны для BSD-мира (OpenBSD — форк NetBSD, DragonFly BSD — форк FreeBSD). В мире Linux наиболее показательным примером форка является Altlinux, отвевившийся от родительской Mandrake из-за нескохждения в вопросах локализации и интерационализации. Первоначально как форк Debian зародилась и Ubuntu — исходно главной задачей этого дистрибутива была организация более короткого и планового релиз-цикла, при сохранении как общей кодовой базы, так и бинарной совместимости.

Ремиксы и респины — близкие по смыслу понятия: это системы, собранные на основе репозитория какого-либо дистрибутива, обычно под специальные задачи или для специфических окружений. Ремиксы могут включать собственные оригинальные компоненты, респины обходятся без этого. Яркий пример — Russian Fedora Remix, в которой оригинальная Fedora дополнена комопнентами, учитывающими российскую специфику.

Режимы и интерфейсы

Текстовый режим, именуемый также консольным (см. консоль — режим вывода на экран монитора фиксированного набора алфавитно-цифровых или специальных символов, в том числе элементов изображения (т.н. псевдографики). Его не следует путать с интерфейсом командной строки. Текстовый режим противопоставляется графическому режиму. Хотя настоящего текстового режима в Linux’е почти не встретишь — он эмулируется в графическом режиме через так называемый фреймбуфер. Поэтому именование его консольным будет, наверное, более точным.

Графический режим — описание вывода на монитор изображений (в том числе и шрифтов) как набора экранных точек (пикселей). Характеристики графического режима — разрешение (число пикселей по горизонтали и вертикали) и глубина цвета (количество бит, описывающих цвет, на пиксель). Противопоставляется текстовому режиму. Графический режим не следует путать с графическим интерфейсом (GUI).

Консоль, текстовый терминал — термины, дошедшие до нас как реликты эпохи, «когда машины были большими», когда консолью назывался терминал администратора системы. Ныне употребляются как синонимы, теоретически рассматриваясь как совокупность физических устройств ввода (клавиатуры) и вывода (экрана монитора). Однако на практике за этими терминами обычно стоят понятия виртуального терминала (виртуальной консоли) — способа разделения ресурсов машины, обеспечиваемого средствами ОС. Благодаря им пользователь располагает несколькими (в Linux — шестью, во FreeBSD — самостоятельными устройствами ввода/вывода. На каждом виртуальном терминале может быть запущено по отдельному сеансу, как текстовому, так и графическому (то есть Иксовому). Тем более важно не смешивать понятия эти с эмуляторами терминала (Иксовыми терминалами). Хотя в обиходе под словом «терминал» (без опеределений) обычно понимаются именно последние.

Эмулятор терминала, Иксовый терминал — программа, воспроизводящая в графической среде (см.Иксы) свойства текстового терминала. Служат, как правило, для запуска шелла и выполнения команд с интерфейсом командной строки. Программ эмуляции терминала существует превеликое множество (Xterm, RXVT, Gnome Terminal), одна из наиболее известных носит имя собственное Konsole, добавляя поводов для смешивания «тёплого с мягким» — то есть режимов и интерфейсов.

CLI (Command Line Interface) — интерфейс командной строки, основынный на задании прямых командных директив; тесно связан с понятием шелла. Противопоставляется GUI. Понятие CLI не следует смешивать с ни с консолью, ни с текстовым режимом.

Команда — имя исполняемого файла программы, вводимое в командной строке для исполнения (смайлики по вкусу). Большинство команд требуют аргументов — имён объектов, над которыми выполняется команда, и опций, определяющих её выполнение. На эту совокупность также обычно распространяется понятие «команда». Результат выполнения команды может быть перенаправлен в файл (в широком смысле слова) или передан по конвейеру для обработки другой командой. И такая последовательность тоже часто называется командой или командной конструкцией.

Шелл (shell, командная оболочка, командный интерпретатор) — программа, обеспечивающая ввод, исполнение и получение результата от других программ (команд).

GUI (Graphic User Interface) — графический интерфейс пользователя, обеспечивающий выполнение задач путём манипулирования объектами, а не прямыми командными директивами, как CLI, которому он противпосотавляется. Важно помнить, что графический режим и GUI — понятия далеко не тождественные, хотя практически и тесно связанные.

Иксы — жаргонное, но точное название оконной системы X (X Window System), на протяжении более 30 лет обеспечивающей работу графического режима в операционках UNIX-семейства. В свободных их представителях (то есть в Linux’е сотоварищи) применяется одна из реализаций Иксов — Xorg.
В настоящее время на смену старой Иксовой лошади пытаются идти железный конь Wayland, которым хотят осчастливить всех, и ослик Mir, над которым трудятся на благо дистрибутива Ubuntu.

X-сервер — основная часть Иксов, отвечающая за взаимодействие с «железом» компьютера — клавиатурой, мышью и видеосистемой.

«Морда» — англ. front-end, — обычно программа-надстройка над утилитой командной строки, маскирующая от пользователя прямую команду (или серию связанных команд — back-end), и выглядит как ее заменитель. В ней опции и параметры команд реализованы как элементы графического (иногда текстового) интерфейса.
Пример: программа Synaptic, служащая для управления пакетами во всех deb based системах и даже в некоторых дистрибутивах, использующих формат rpm, выступает в качестве графической «морды» для семейства утилит APT и их ответвления apt-rpm.

Пользователи и права

Аккаунт (пользовательский бюджет, учетная запись) — запись в базе данных пользователей, в которой определены его учетное имя (login) и пароль для идентификации при входе в систему, пользовательская командная оболочка (login shell — см. шелл) и каталог для пользовательских данных (т.н. домашний каталог). Один из аккаунтов носит имя root, что по русски обычно переводится как администратор или суперпользователь. Только он (или пользователь, наделённый его привилегиями) может выполнять общую настройку системы.

Пользователь — обладатель аккаунта. Ни в каком другом смысле в этом словаре (а, начиная с некоторого времени, и вообще в материалах Блогосайта) этот термин не употребляется.

Домашний каталог — место для хранения файлов, принадлежащих данному пользователю, обычно располагающийся в каталоге /home/username и носящий имя, совпадающее с логином именуемый /home/username (символически обозначается как ~/, а в просторечии именуется «хомяком»). Как правило, пользователь обладает всеми правами в отношении содержимого своего домашнего каталога.

Root (администратор, суперпользователь) — пользователь, имеющий права доступа ко всем каталогам и на изменение всех компонентов системы. В ряде современных дистрибутивов, начиная с Ubuntu, аккаунт root’а по умолчанию не активизирован, его роль выполняет один (хотя и не обязательно один) пользователь, обычно тот, чей аккаунт был создан при инсталляции системы.

Группа (пользователей) — служит для установки единых прав доступа к файлам или каталогам (не обязательно более широких, чем у не-членов группы) для группы пользовательских аккаунтов (хотя может включать и одного пользователя). Например, во многих дистрибутивах Linux и во всех BSD-системах получить права root могут только пользователи определенной группы (wheel).

Атрибуты файла — набор свойств файла, составляющих часть его метаданных и служащих для разграничения доступа пользователей к различным частям системы. Важнейшими для пользователя являются атрибуты принадлежности (хозяин файла, группа пользователей, к которой он принадлежит, прочие пользователи) и атрибуты доступа (право на чтение, право на исполнение и право на измнение файла). Атрибуты доступа определяются независимо для каждого атрибута принадлежности.
Пример: пользователь, создавший файл, как правило, является его хозяином, имеет право на его чтение, исполнение (если файл исполняемый) и изменение; права пользователей из его группы обычно ограничиваются чтением и, если возможно, исполнением; прочие пользователи также могут иметь право только на чтение/исполнение файла — а могут и не иметь никаких прав вообще.

Носители и файловые системы

Раздел (partition) — «область» на носителе информации (винчестере, SSD), предстающая перед пользователем как отдельное дисковое устройство. Разделы описываются в таблице разделов (схеме разметки), из каковых в настоящее время актуальны две: msdos (до четырёх первичных разделов, один из которых может быть расширенным, то есть выступать контейнером для разделов логических) и gpt, которая может содержать до 128 разделов.

Системы управления томами — методы объединения нескольких накопителей и их разделов таким образом, что они выглядят как один носитель информации.
Примеры: softRAID, LVM.

Файл — в общем случае однозначно идентифицируемая последовательность байтов. Применительно к UNIX-системам важно, что, помимо собственно данных, эта последовательность описывает также и служебную информацию о файле (метаданные), в том числе атрибуты файла. Столь же существенно, что в качестве файлов в UNIX-системах предстают не только пользовательские данные, исполняемые программы, каталоги, но также устройства и даже протекающие процессы и средства взаимодействия между ними: все это суть отдельные типы файлов.

Файловая система — один из самых многозначных терминов. Для начинающего применителя важно различать два значения:
1) метод физического размещения данных на носителе, примеры: ext2fs, ext4fs, ReiserFS — файловые системы Linux; ufs, ufs2 — файловые системы BSD;
2) логическая организация каталогов и файлов; в UNIX-системах имеет древовидную (иерархическую) форму, примеры: корневая файловая система, файловая система /home, /usr и так далее.

Системы размещения данных объединяют функции управления томами и файловых систем в первом значении.

Файловая иерархия — не общепринятый, но логичный с точки зрения русского языка синоним второго значения файловой системы.

Корневая файловая система, корень (/ — не путать с пользователем root) — исходная точка построения иерархии файловой системы.

Монтирование — процедура подключения («вживления») файловой системы, находящейся, например, на компакт-диске (или любом другом носителе), в иерархию файлов и каталогов корневой файловой системы.

Каталог — особый файл, единственное содержание которого — список имен других файлов (или вложенных каталогов). Используются также термины директория и папка. Однако ни в коем случае не следует понимать каталог как физический контейнер для других файлов. Это база данных, в которой хранятся сведения о файлах, содержащая их уникальные идентификаторы (обычно — просто числа-номера в порядке создания) и соответствующие им имена. Так что более точной метафорой будет библиотечный каталог, по аналогии с которым и возник русский перевод английского directory.

Символическая ссылка — файл специального типа, не содержащий никаких данных, кроме определния пути к другому файлу или каталогу.

Репозитории и пакеты

Репозиторий (repository) — централизованный и структурированный архив пакетов, содержащий метаинформацию об их взаимоотношениях (в том числе зависимостях. Реопзиторий собирается обычно собранных для какого-либо конкретного дистрибутива Linux. Наличие собственного репозитория — ныне чуть ли не единственная черта, отличающая настоящий дистрибутив от ремиксов, а также поделок «с нескучными обоями».

Пакет (package) — 1) программа или набор связанных программ, атом POSIX-системы, наименьшая часть, на которую ее можно разделить; в этом понимании пакет может быть добавлен в систему только целиком, и также целиком — удален; 2) скомпилированная (бинарная), то есть готовая к установке и использованию программа — в просторечии именуется бинарником и обычно противопоставляется исходникам.

Библиотека, в обиходе либа (library, libs) — набор программ для выполнения ряда операций, одинаковых для многих других программ. Они избавляют от необходимости заново программировать повторяющиеся действия в каждом пакете. Например, практически каждая программа выполняет действия по открытию, закрытию и записи файлов, и поэтому соответствующие функции объединяются в библиотеку, из которой заимствуются при необходимости. Отсутсвие нужной библиотеки — наиболее частая причина невозможности установки какого-либо пакета.
Примеры: libc — главная системная библиотека функций для включения в программы на языке Си, на котором написана большая часть UNIX-подобных систем, их утилит и приложений; в Linux представлена её GNU-реализация — glibc.

Зависимость пакета — подразумевает, что для установки и (или) функционирования данной программы предварительно должен быть установлен иной пакет. Различают зависимости «жесткие», без удовлетворения которых данная программа не может быть установлена или не будет работать, и «мягкие», добавляющие ей дополнительные функции. Для разрешения зависимостей предназначены системы пакетного менеджмента.
Пример: файловый менеджер mc зависит от нескольких библиотек, без которых он не сможет работать («жесткие» зависимости); использование мыши в нем как указательного устройства, без чего он вполне может обойтись, обеспечивается пакетом gpm («мягкая» зависимость).

Пакетный менеджмент, система управления пакетами — программа или комплекс программ для централизованной установки, обновления и удаления бинарных пакетов, а также для разрешения их зависимостей.
Примеры:
APT — система управления пакетами дистрибутива Debian, позднее приспособленная также для работы с пакетами rpm.

Исходники (source, в просторечии сырцы) — текст программы, написанной на языке программирования; для использования такая программа должна быть собрана (в это понятие входят, хотя и не обязательно, компиляция и линковка) и инсталлирована, то есть включена в дерево файловой иерархии.

Патчить (patch) — изменение исходного текста пакета с помощью готового файла различия версий (т.н. diff-файла). Обычно применяется для апдейта старой версии до более новой, позволяя обойтись без скачивания всего пакета, а только файла обновлений.

Тарбалл (tarball) — архив, то есть файл, содержащий в себе набор других файлов. информацию об их принадлежности к каталогам (см.), владельцах, правах доступа, времени создания и модификации. Почти всегда создается программой tar и обычно сжимается утилитами gzip, bzip2 или, в последнее время, xz.

rpm (RPM Package Manager) — 1) система управления пакетами во многих распространенных дистрибутивах Linux (Red Hat/Fedora Core, Mandrake/Mandriva, ASPLinux, Altinux, Suse); 2) формат бинарных (то есть готовых к установке) пакетов для использования с программой rpm.

srpm — разновидность rpm-пакета, содержит исходные тексты программы и набор правил для сборки из них бинарного пакета.

Разное

База данных — в рамках настоящего словаря достаточно представления о базе данных как о таблице, содержащей имена каких-либо объектов (каждое — в отдельной строке), и перечень их свойств, каждое из которых занимает свое поле. Разделителями полей могут выступать пробелы, символы табуляции, двоеточие, точка с запятой, и так далее. Множество конфигурационных файлов в UNIX-подобных системах представляют собой базы данных, хотя и очень простые.
Примеры:
/etc/passwd — база данных пользовательских аккаунтов;
/etc/fstab — база данных файловых систем, автоматически монтируемых при загрузке.

Рекурсия — в узком (програмистском) смысле — определение функции через саму себя. В обиходе широко употребляется как определение некоего понятия таким же образом.
Пример: GNU — GNU is Not Unix (что по русски можно было бы перевести без всякой рекурсии: GNU — это вам не хрен антилопий).

Локаль (locale) — совокупность параметров, зависящих от языкового окружения, страны, используемого набора символов, формата представления даты, времени, десятичной дроби, денежной единицы и т.д. Описывается таким образом: язык_КОД СТРАНЫ.НАБОР СИМВОЛОВ.
Примеры:
ru_RU.utf8 — локаль для русскоязычного окружения, страны России, набора символов UTF-8;
ru_RU.KOI8-R — то же, но для набора символов KOI8-R, некогда общепринятого в UNIX-системах на Руси;
fr_FR.ISO8859-1 — локаль для франкоязычного окружения, страны Франции, набора символов Latin-1 (Западная Европа);
fr_BE.ISO8859-1 — то же самое, но для страны Бельгии.
Вне зависимости от языка, в любой Linux-системе присутствуют локали C и POSIX с восьмибитными наборами символов, а также C.UTF-8 — с 16-битным набором. С точки зрения применителя, они практически одинаковы.

Благодарности

Первая версия Словаря была разработана при содействии коллективного творческого гения посетителей форумов Unixforum и POSIX.ru, а также некоторых других ресурсов. Пользуясь случаем, выражаю им всем свою искреннюю признательность.

Добавить комментарий