Сборник статей Handbook inside ! : Linux не для идиотов inside ! : Версия 1 от 15. 07. 2007 2007



Pdf просмотр
страница49/50
Дата14.11.2016
Размер5.65 Mb.
Просмотров7980
Скачиваний0
ТипСборник статей
1   ...   42   43   44   45   46   47   48   49   50
Пример 3: маскарад пакетов. Маскарадом называют преобразование IP-адресов проходящих пакетов так, чтобы они выглядели как отправленные с системы- маршрутизатора, а не с какого-либо узла “за” маршрутизатором. Достигается это путем изменения IP-адреса (и, возможно, номера порта) в “транзитных” пакетах.
Собственно преобразование задается путем указания действий SNAT – замена адреса отправителя, DNAT – замена адреса получателя, или MASQUERADE – функционально аналогично SNAT, но без указания конкретного IP-адреса (IP- адресом для замены назначается IP-адрес интерфейса через который уходит пакет, со всеми отсюда вытекающими – например, если интерфейс меняет IP-адрес или просто деактивируется все «маскированные» через него соединения сбрасываются).
Предположим, что наш “внешний” интерфейс имеет адрес 193.267.14.6, а внутренняя сеть имеет адрес 192.168.0.0/24. Тогда для того, чтобы дать всем компьютерам нашей сети доступ по протоколу TCP “наружу”, мы должны подать примерно следующую команду:
# iptables -A POSTROUTING -t nat -j SNAT -o ppp0 \
> --to-source 193.267.14.6 -p tcp \
> --source 192.168.0.0/24 \
> --destination ! 192.168.0.0/24
Если у нас внешний адрес динамический, а не статический (мы работаем по dialup – соединению), то мы можем использовать динамический маскарад без привязки к внешнему адресу – ну или с использованием динамической привязки, кому как больше нравится:
# iptables -A POSTROUTING -t nat -j MASQUERADE -o ppp0 \
> --source 192.168.0.0/24 \
> --destination ! 192.168.0.0/24
Действие SNAT более эффективно, MASQUERADE проще в использовании, но обладает рядом существенных недостатков (не вдаваясь в подробности, просто заметим, что на системе с несколькими интерфейсами и сложной таблицей маршрутизации проблемы почти наверняка будут). Особое внимание нужно обратить на указание -o ppp0, то есть действие применяется ТОЛЬКО для пакетов, отправляемых через интерфейс ppp0. Еще вы можете увидеть, что мы указываем это правило только один раз, и обратного к нему правила не строим - об этом позаботится функция connection tracking (отслеживание состояния соединений), и обратная замена адресов в отправляемых в ответ на наши запросы пакетах будет произведена системой автоматически.
Пример 4: “проброс” пакетов во внутреннюю сеть. Обычно это используется, если мы хотим перебросить пакеты, пришедшие на адрес маршрутизатора, на какую-либо из машин внутренней сети (например, так можно предоставить доступ ко
748
внутреннему WWW-серверу). Достигается это использованием действия DNAT
(destination NAT). В нашем случае мы перебрасываем все TCP-пакеты, пришедшие на интерфейс маршрутизатора ppp0 на порт 80, на порт 85 компьютера с адресом
192.168.0.6:
# iptables -A PREROUTING -t nat -j DNAT -i ppp0 \
> --to-destination 192.168.0.6:85 -p tcp --destination-ports 80
Конечно, приведенными примерами возможности iptables не исчерпываются, скорее даже наоборот – это лишь малая часть того, что умеет эта подсистема.
Приведенные же примеры демонстрируют наиболее простые случаи, позволяющие составить некоторое представление об iptables и возможностях этой технологии.
В системах, основанных на RedHat Linux и его вариациях, есть специальный стартовый сценарий загрузки, также называемый iptables. Расположен он как правило в каталоге
/etc/rc.d/init.d/. Этот сценарий при загрузке системы инсталлирует правила, созданные администратором, и его можно использовать для сохранения конфигурации iptables. В процессе конфигурации системный администратор задает конфигурацию подсистемы iptables, используя утилиту /sbin/iptables, а после окончания настройки дает команду
/etc/rc.d/init.d/iptables save, после чего текущая конфигурация сохраняется в файл
/etc/sysconfig/iptables. Существует также множество “фронтендов” для настройки iptables, которые могут использоваться начинающими пользователями и не слишком опытными администраторами, но “ручной” способ настройки все-таки предпочтительней, поскольку позволяет очень точно настроить подсистему iptables.
Управление пользователями, NSS и PAM
Linux – система многопользовательская. По умолчанию, большинство дистрибутивов используют «классический» набор файлов в которых хранится информация о пользователях и группах: /etc/passwd, /etc/group, /etc/shadow, /etc/gshadow. Во многих ситуациях этого вполне достаточно, но иногда возникает необходимость в интеграции Linux в более или менее чужеродное, либо просто распределенное окружение, и именно в этот момент к нам на помощь приходят такая интересная подсистема, как NSS – Name Service Switch. Основная задача NSS – создать модульное окружение для управления пользователями. Реализовано это посредством загружаемых библиотек. Основные вызовы NSS реализованы в библиотеке libc, а libc в свою очередь загружает и вызывает бакэнды NSS:
При инициализации программы, так или иначе связанной с NSS, загружаются основная библиотека libc.so, которая считывает конфигурацию из файла /etc/nsswitch.conf, после чего также загружаются те библиотеки NSS, которые указаны в этом файле.
Впоследствии при работе программы, если программе требуется работать с именованными сущностями, соответствующие вызовы функций glibc будут обращаться к функциям NSS и использовать в те источники данных, которые указаны в nsswitch.conf.
В частности, через NSS можно разрешать (определять) имена и идентификаторы протоколов, номера портов служб (сервисов), имена и идентификаторы пользователей и групп, IP-адреса и имена компьютеров и некоторые другие данные.
749
Программа
Функции NSS (libc.so)
Бакэнд files
(libnss_files.so)
Бакэнд DNS
(libnss_dns.so)
Бакэнд LDAP
(libnss_ldap.so)
/etc/passwd
Сервер DNS
Сервер LDAP

Пример файла nsswitch.conf:
[viking@alpha etc]$ cat /etc/nsswitch.conf passwd: files ldap shadow: files ldap group: files ldap hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: nisplus publickey: nisplus automount: files nisplus aliases: files nisplus
[viking@alpha etc]$
В данном примере указано, что для определения имен пользователей и групп используются сначала текстовые файлы и затем LDAP, для определения имен компьютеров и IP-адресов используются сначала текстовые файлы и затем DNS, для определения алиасов и настроек автоматического монтирования каталогов используются сначала текстовые файлы и затем служба NIS+.
Библиотеки бакэндов системы NSS хранятся в файлах libnss_XXX.so, где XXX – это имя бакэнда. Например libnss_files.so – это бакэнд NSS использующий в качестве источника данных текстовые файлы, libnss_db.so – бакэнд использующий файлы
BerkleyDB, libnss_ldap.so – бакэнд позволяющий хранить данные в каталоге LDAP.
Как правило, каждый бакэнд имеет свои дополнительные конфигурационные файлы.
Как следствие, если у вас возникла необходимость использовать вашу Linux-систему в сетевом или чужеродном окружении и обеспечить ее интеграцию с ним, вы можете воспользоваться NSS и получить доступ к информации через соответствующий бакэнд – например, для интеграции в среду Solaris, вы можете воспользоваться бакэндом NIS/NIS+, для интеграции в ActiveDirectory – бакэндом LDAP.
При этом модульность NSS позволяет вам объединять различные источники данных
– например, использовать текстовые файлы и DNS для определения имен компьютеров, NIS для определения имен протоколов и сервисов, и текстовые файлы и LDAP для определения имен и идентификаторов пользователей и групп.
Подсистема PAM (Pluggable Authentification Modules) идейно очень схожа с NSS, но отличается от нее назначением. Основная задачам PAM – аутентификация пользователей (проверка паролей, прав доступ, ограничений и так далее). Как и
NSS, PAM состоит из набора основных библиотек и бакэндов, причем необходимые бакэнды, порядок их вызова и некоторые опциональные параметры определяются в конфигурационных файлах PAM, обычно они расположены в каталоге /etc/pam.d.
Главным отличием PAM от NSS (кроме естественно назначения) является то, что
PAM является не составной и неотъемлемой частью libc, а отдельным множеством библиотек.
Основная часть стандартных утилит UNIX для управления пользователями и группами и получения информации о них, в большинстве дистрибутивов Linux общего назначения, адаптирована и собрана с поддержкой NSS и PAM. К таким утилитам относятся passwd, chsh, chfn, id, who и другие. NSS также используется даже такими утилитами как ls, find, ps – то есть всеми теми программами, которые отображают имя пользователя. Соответственно, если программа запрашивает у пользователя пароль – скорее всего она использует и NSS, и PAM (например XDM или GDM). Большинство программ в чьи функции входит обработка почты также используют NSS. Соответственно, можно уверенно говорить что подсистемы NSS и
PAM и базовые знания об их предназначении на сегодняшний день являются
750
необходимыми для администратора Linux-систем.
X11 и все-все-все
Большинство нынешних дистрибутивов по умолчанию устанавливают для пользователя графическую среду X11 (X11 Windows System), под управлением которой и выполняются все графические приложения. Как «внутри» устроена X11?
Прежде всего, X11 – это распределенная модульная среда, состоящая из двух основных компонентов: X-сервера и X-клиента.
Клиент-серверная архитектура X11
X-сервер – это программа, которая организует работу с устройствами ввода/вывода, производит отрисовку видимых элементов, запущена у пользователя и предоставляет свои ресурсы (те же самые устройства ввода-вывода) для X- клиентов. X-сервер загружает драйверы устройств (например видеокарты, мыши или клавиатуры), он же управляет переключением раскладок клавиатуры и т.п. Кроме того, X-сервер частично берет на себя функции работы со шрифтами. Задача использования аппаратного ускорения для отрисовки также является прерогативой
X-сервера.
В современных дистрибутивах как правило используется открытый свободно распространяемый
X-сервер называющийся Xorg. Его конфигурационный файл называется xorg.conf и расположен в каталоге /etc/X11. В конфигурационном файле описываются все устройства ввода, которые будет использовать X-сервер, настройки клавиатуры, драйвер видеокарты и многое другое. Более подробную информацию можно получить из справочного руководства [man Xorg, man xorg.conf].
X-клиент – это собственно пользовательская программа – браузер, почтовый клиент, видеоплеер, клиент мгновенных сообщений, игры, графические редакторы и просмотрщики и т.д.
Когда пользователь запускает графическое приложение, оно соединяется с X- сервером по стандартному протоколу X11, получает от X-сервера события о перемещении мыши, нажатиях кнопок клавиатуры и соответственно на них реагирует. Когда необходимо провести отрисовку, X-клиент отправляет соответствующие инструкции X-серверу, и уже X-сервер производит непосредственную отрисовку используя драйвер видеокарты. Команды протокола
X11 могут передаваться как через разделяемую память или локальное соединение
(если X-клиент и X-сервер запущены на одном компьютере), так и по сети – при этом
X-клиент и X-сервер могут быть запущены на разных компьютерах.
X-сервер никаким образом не отвечает за внешний вид окна X-клиента – он отрисовывает все в точности так, как это указал клиент, более того – сам по себе X- сервер он не отрисовывает ни обрамлений окон, ни каких либо управляющих элементов, не обрабатывает никаких горячих клавиш – то есть он занимается только отрисовкой картинки присланной X-клиентом, а также чтением данных из устройств ввода и передачей соответствующих событий X-клиенту.
Обрамление окон, иконки рабочего стола, панели и кнопки – это все отрисовывается
X-клиентами. Рассмотрим пример окна некоторого приложения (в нашем случае файлового менеджера Nautilus из состава среды GNOME):
На этой картинке на самом деле показан результат работы двух X-клиентов: собственно файлового менеджера nautilus (именно он управляет отрисовкой меню, строки статуса, панелей, иконок и так далее). Второй X-клиент – менеджер окон
(window manager) под названием metacity нарисовал рамку окна и кнопки на этой рамке. При этом горячие клавиши для закрытия окна, сворачивания, перемещения и других операций с окном отрабатывает именно metacity, а горячие клавиши копирования файла, перехода по каталогам, навигации по меню, подсвечивание иконок и тому подобное отрабатывает уже сам nautilus.
751

Графическая среда пользователя
Графической средой мы будем называть набор программ, для пользователя для выполнения им повседневных функций. Каждая из этих программ как правило является самостоятельным X-клиентом и может работать сама по себе, даже без своих «коллег по окружению», но будучи собранными вместе, они начинают предоставлять пользователю цельный и органичный интерфейс. Достигается это обычно следующим образом:
1) Все программы данного графического окружения используют одну и ту же библиотеку для отрисовки своих элементов управления
2) В графическое окружение включается какой-либо менеджер окон
3) Все программы для данного окружения разрабатываются с соблюдением определенных общих требований
4) В состав окружение включаются самостоятельные программы для выполнения базовых функций - текстовые и табличные процессоры, графический редактор, браузер, IM-клиент и другие
5) В состав окружения включаются служебные программы, предоставляющие пользователю возможность вызова других программ – например, приложение которое отрисовывает панель, на которой размещается кнопка для вызова меню со списком установленных программ и список окон
6) В состав окружения включают утилиты для настройки оборудования и дополнительных функций
В результате внешний вид окружения становится единообразным, а тот факт что оно состоит из множества небольших программ делает графическую среду гибкой в настройке и стабильной в работе. В то же время обширный набор программ для различных функций делает повзволяет графическому окружению удовлетворить большинство потребностей пользователя, а привычная вам картина GNOME или
KDE, которую вы видите на экране в процессе работы, является результатом совместной работы множества X-клиентов соответствующего окружения... Или нескольких окружений одновременно.
Наиболее распространенные графические среды в Linux – это GNOME и KDE. И та и другая среда имеют свою библиотеку для отрисовки элементов управления внутри окна (для GNOME это GTK, для KDE это Qt), включают в свой состав почтовый клиент, браузер, мультимедиа-проигрыватель, клиент мгновенных сообщений и графический редактор, файловый менеджер (он же по совместительству отрисовывает иконки на рабочем стол и отвечает за фон рабочего стола), программу которая отрисовывает боковые панели и набор маленьких программ-апплетов, которые встраиваются при необходимости в панели, игры, программы управления для настройки окружения и менеджер окон.
Некоторые X-клиенты не входят в состав какого-либо окружения – например, браузеры Firefox и Opera, медиапроигрыватель Mplayer, офисный пакет
OpenOffice.Org. Самое главное что следует запомнить – что графическое окружение, или графическая среда – это всего лишь набор программ, а не одна большая программа вида «все-в-одном», и вы можете, работая в основном в одном окружении, абсолютно спокойно использовать программы другого.
Внутри X11. Упрощенная схема
X11 – система многослойная, но внутренне логичная и понятная. Схематически ее можно изобразить следующим образом:
752

Когда приложение отрисовывает что-либо, оно обращается к своей базовой библиотеке, она в свою очередь переадресовывает вызов (или уже цепочку вызовов) в библиотеку libX11, которая использую X11 Core Protocol передает команды на X- сервер. X-сервер интерпретирует команды и передает их на отрисовку драйверам устройств вывода. Воздействие же пользователя на устройства ввода считываются
X-сервером через драйвера устройств ввода, через X11 Core Protocol передаются X- клиенту, libX11 переводит команды протокола в события и передает события в тулкит, и уже тулкит передает события программе для того чтобы та на них отреагировала.
То как приложение выглядит – то есть внешний вид строк ввода, полос скроллинга, панелей и кнопок – за все это отвечает библиотека-тулкит. Два наиболее распространенных на сегодняшний день тулкита, Qt и GTK, примерно равны по возможностям – они обеспечивают переносимость приложений, поддержку «тем» внешнего вида, предоставляют программисту объектно-ориентированный интерфейс и некоторый набор служебных функций и возможностей.
Базовая библиотека X11 (libX11, или Xlib) позволяет программе абстрагироваться и не связываться с низкоуровневыми функциями протокола X11, и таким образом обеспечивает сетевую прозрачность X11, то есть позволяет программам работать как с локальным X-сервером, так и с находящимся на другом компьютере, причем делается это незаметно для программы.
Внутри X11. Растровые шрифты и их отображение
С момента разработки в среде X11 отображение шрифтов управлял X-сервер.
Приложение, когда ему необходимо вывести некоторый текст, просто инструктировало X-сервер «отобрази вот этот текст вот таким шрифтом в указанном месте». В ответ на это X-сервер выбирал из своей базы шрифтов наиболее подходящий, и использовал его для выполнения инструкций клиента, причем изначально эти шрифты были растровыми, то есть фактически содержали наборы заранее отрисованых глифов (символов).
Эта технология, называемая X Core Fonts, поддерживается в X11 и сейчас, поэтому в наборе пакетов любого дистрибутива всегда можно встретить наборы широко распространенных семейств растровых шрифтов – fixed, hevetica, times, courier. При этом каждый шрифт представляется множеством файлов, для различных сочетаний размера, ширины и начертания – например, если шрифт имеет десять вариантов размеров (от 8 до 18), две ширины (обычный и жирный) и два начертания
(стандартное и курсив), то он будет представляться 40 файлами – по одному файлу
753
Приложение
Тулкит (базовая билиотека: Qt, GTK, etc.)
Базовая библиотека X11 (libX11)
X-сервер
Драйверы устройств ввода
Драйверы устройств вывода
для каждого из сочетаний размера, начертания и ширины.
Поскольку количество файлов получается очень большим, чтобы не устанавливать все эти шрифты на все компьютеры где запущены X-серверы, в систему X11 был введен такой объект как сервер шрифтов (font server). Системный администратор может настроить и запустить один сервер шрифтов для всей локальной сети, и указать X-серверу при запуске использовать шрифты с соответствующего сервера, что позволяет поддерживать на всех серверах один и тот же набор шрифтов с минимальными усилиями и избежать ситуации когда шрифт есть на одном компьютере, но его нет на другом.
В большинстве дистрибутивов Linux сервер шрифтов включен в поставку X11 по умолчанию, и называется xfs. Его конфигурационный файл как правило находится в каталоге /etc/X11/fs. В конфигурационном файле сервера шрифтов перечисляются каталоги с растровыми шрифтами, а в конфигурационном файле X-сервера указано, что основным источником шрифтов является сервер шрифтов,запущеный на этом же компьютере.
Такая методика позволяла добиться достаточно качественного отображения шрифта в большинстве случаев, но в то же время такие она имеет определенные недостатки
– как известно, растровые шрифты очень плохо «вращаются» на угол не кратный 90 градусам, и плохо масштабируются, а с появлением устройств высокой четкости
(LCD-мониторов) возникла необходимость еще и отрисовывать шрифты в
«сглаженном» виде, с мягкими переходами цвета, чего растровые шрифты также предоставить не могли.
Наиболее распространенное приложение, использующее методику X Core Fonts – это графический эмулятор терминала xterm, который есть в составе всех дистрибутивов, или простейший менеджер графического входа в систему XDM.
Внутри X11. FreeType и XFT
Для устранения этого недостатка растровых шрифтов была разработана специальные библиотеки XFT и FreeType, которые обеспечивают отображение векторных шрифтов и реализацию таких возможностей как сглаживание шрифтов, их поворот на произвольный угол и хинтинг (подгонку символов шрифта друг к другу оптимальным для данного шрифта способом). Поскольку данная методика плохо согласовывалась с уже сложившейся шрифтовой архитектурой X11, отображение векторных шрифтов было возложено на X-клиента.
При этом схема отображения шрифта меняется: X-клиент не передает на X-сервер запрос на вывод текста указанным шрифтом, а самостоятельно отрисовывает необходимы глифы шрифта использую функции FreeType и XFT, и передает на X- сервер уже сформированную картинку, которую X-сервер и отображает. Вполне логично, что при использовании этой методики X-клиент должен иметь доступ к оригиналу векторного шрифта (обычно это файл) – поэтому современные дистрибутивы также содержат еще и наборы векторных шрифтов PostScript и
TrueType.
Новые версии тулкитов GTK и QT используют именно эту методику, но поскольку существуют еще и устаревшие тулкиты, такие как Motif или Xview (OpenLook) и значительное количество приложений на них основанных, да и с точки зрения необходимой полосы пропускания сети технология поддержки растровых шрифтов имеет явное преимущество пред XFT и FreeType, поддержка технологии растровых шрифтов по-прежнему входит в X11 и будет оставаться в ней еще долго.
Внутри X11. Расширения
Протокол X11 не является замершим в своем развитии, но его развития ведется не путем изменения самого протокола, а путем внесения в протокол расширений – то есть дополнительных опциональных наборов команд и инструкций. Например, для поддержки непрямоугольных окон было введено расширение XShape, для поддержки проигрывания видеороликов введено расширение XVideo, для поддержки
754

OpenGL было введено расширение GLX и так далее.
Внутри X11. Полезные утилиты
В штатную поставку X11 входит множество полезных программ, позволяющих получать служебную информацию об ваших настройках среды X11. Перечислим некоторые из них:
xterm – эмулятор терминала
xfontsel – интерактивный просмотр растровых шрифтов
xdpyinfo – вывод информации о ваших настройках среды X11 и задействованных расширениях
xwininfo – просмотр информации об указанном окне (положение, размер, класс окна и т.п.)
xwd – моментальный «снимок» окна
xwud – показ результатов работы xwd
xhost – управление контролем доступа X-клиентов к X-серверу
Внутри X11. Менеджер окон
Существует особая разновидность X-клиентов, называемых менеджерами окон. Их основная функция – обеспечивать управление другими окнами – перемещением, изменением размеров, сворачиванием и разворачиванием окон, отрисовкой обрамлений окон, управление передачей фокуса от окна к окну а также управление
Z-порядком размещения окон. Соответственно, в один момент времени для одного экрана может быть использован только один менеджер окон.
GNOME и KDE имеют свои собственные менеджеры окон – это metacity и kwin.
Менеджеры окон являются взаимозаменяемыми – то есть вы можете выбрать и использовать тот из них, который вам больше нравится или кажется более удобным.
Еще один распространенный (то есть наличествующий почти на всех UNIX- системах) менеджер окон – это twm. Крайне простой и примитивный, он тем не менее предоставляет пользователю базовые функции управления окнами и доступ к меню приложений.
Локализация
Широкое распространение UNIX-систем привело к необходимости введения системы локализации – поддержки предпочитаемых пользователем стандартов на запись даты и времени, формата чисел, языка сообщения программ, обозначений национальной валюты и так далее.
В Linux стандартом на методику локализации является спецификация i18n. Не вдаваясь в подробности, мы попытаемся получить некоторое представление о том как это выглядит для пользователя.
Как конечные пользователи, мы можем ознакомиться с текущими настройками своей локали используя команду locale:
$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=en_US
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
755

LC_IDENTIFICATION="ru_RU.UTF-8"
На самом деле, программа locale в корректно настроенной системе просто выведет вам значение соответствующих переменных окружения. Каждая из этих переменных отвечает за свой собственный аспект локализации, перечислим наиболее важные:
LANG – локаль по умолчанию, ее значение для различных аспектов может быть перекрыто путем установки отдельных переменных в нужное вам значение
LC_CTYPE – отвечает за классификацию символов и различия в их регистре
LC_NUMERIC – отвечает за представление и форматирование чисел
LC_TIME – отвечает за формат даты
LC_COLLATE – определяет настройки сравнения строк и символов, влияет на сортировку
LC_MONETARY – отвечает за представление национальной валюты
LC_MESSAGES – определяет язык сообщений и интерфейса
В примере мы видим что локалью по умолчанию через переменную LANG выбрана локаль ru_RU.UTF-8 (русский язык, соответствие российским стандартам, кодировка символов UTF-8), а в качестве языка интерфейса назначен английский язык в варианте используемом в США. Фактически это означает что все программы будут иметь английский интерфейс, но показывать дату, валюту, десятичную точку и сортировать строки они должны так как это принято в России.
В отличие от мира Windows, где язык сообщений программы как правило жестко забит в ресурсах, а ресурсы включены в исполняемый файл, в UNIX и Linux сообщения как правило содержатся в отдельных файлах и программа загружает текстовые строки для сообщений интерфейса основываясь на значениях переменных LANG и LC_MESSAGES. Это дает возможность обеспечить работу пользователей из разных стран на привычных им языках, не прибегая к установке нескольких копий операционной системы или нескольких экземпляров программы, каждый для своего языка.
Системному администратору Linux достаточно обеспечить наличие файлов сообщений нужной локали для используемых пользователем программ, и правильно установить переменные окружения, после чего пользователь оказывается в привычной для него языковой обстановке и работать с привычными форматами даты, валюты, в привычных единицах измерения и т.д.
Более того – можно установить значение некоторых переменных окружения в нужные значения непосредственно перед запуском программы – и тогда эта программа примет будет использовать указанные настройки локали только для этого запуска, например:
[viking@alpha
]$
[viking@alpha
]$ LC_MESSAGES=ru_RU.UTF-8 ls -l something ls: невозможно получить доступ к something: Нет такого файла или каталога
[viking@alpha
]$
[viking@alpha
]$ LC_MESSAGES=en_US.UTF-8 ls -l something ls: cannot access something: No such file or directory
[viking@alpha
]$
[viking@alpha
]$ LC_MESSAGES=fr_CA.UTF-8 ls -l something
[viking@alpha
]$ ls: ne peut accéder something: Aucun fichier ou répertoire de ce type
[viking@alpha
]$
Таким образом, в Linux-системе возможно обеспечить одновременную работу пользоваетелей в разных языковых окружениях, изменяя только изменение значений переменных окружения. В системах RedHat/Fedora общесистемные настройки локали хранятся в файле /etc/sysconfig/i18n, а пользователь может самостоятельно перекрыть их путем записи соответствующих значений в файле

/.i18n
:
[viking@alpha
]$
756

[viking@alpha
]$ cat /etc/sysconfig/i18n
LANG="ru_RU.UTF-8"
SYSFONT="latarcyrheb-sun16"
[viking@alpha
]$ cat /homed/viking/.i18n
LC_MESSAGES="en_US"
[viking@alpha
]$
В данном примере системная локаль ru_RU.UTF-8, но пользователь viking предпочитает работать в англоязычном интерфейсе, что и записал в своем персональном файле настроек локали.
Примеры конфигурационных файлов
Автор: Евгений Батогов a.k.a JohnBat26 (e-mail: johnbat26@gmail.com)
Мой компьютер:
Ноутбук DELL Inspiron 9400:

Intel Core 2 Duo 2 Ghz.

RAM: 2 gb DDR2.

VIDEO: Nvidia Geforce 7900 GS 256 Mb DDR3

HDD: 120 Gb.

Max. Res. 1920X1200 pixels

FS: Only XFS !
Программное обеспечение:

Gentoo Linux.

Kernel: 2.6.22-r1

KDE 3.5.7

Amarok 1.4

OpenOffice 2.2.1

1. Мой make.conf
# These settings were set by the catalyst build script that automatically built this stage
# Please consult /etc/make.conf.example for a more detailed example
CFLAGS="-O3 -march=nocona -mtune=nocona -msse3 -mfpmath=sse -pipe -fomit-frame- pointer"
CHOST="x86_64-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"
USE="-* X a52 aac aalib acl acpi aim alsa amarok amuled apm arts asf async audiofile automount avi bash-completion bcmath berkdb bitmap-fonts
757
bluetooth bzip2 c++ cairo caps cardbus cdda cddb cdinstall cdparanoia cdr cdrom cdsound clamav clamd connectionstatus contactnotes cpio cpudetection cpulimit cracklib crypt cscope ctype cups curl curlwrappers dba dbus dell depth32 dhcp directfb divx divx4linux djvu dri dv dvb dvd dvdr dvdread dvi dxr3 effects emovix encode exif expat extensions fbcon fbsplash ffmpeg fftw firefox flac flash foomaticdb fortran ftp gd gdb gdbm gif gimp gimpprint ginac glitz gmail gphoto2 gpm graphviz gtk gtk2
hal hbci hddtemp history iconv icq ieee1394 imagemagick imap imlib inkjar interbase ipv6 irc jabber java javascript jbig jpeg jpeg2k kde kdecards kdeenablefinal kdehiddenvisibility kdepim kdexdeltas kdgraphics kernel_linux kipi lame lcmsjpeg ldap ldapsam lha libcaca libclamav libg++
libnotify libvisual libwww live lm_sensors logitech-mouse logrotate magic matroska memlimit mikmod mime mmx mng modplug mozbranding mozdevelop mp3
mp4 mp4live mpeg mpeg2 mplayer musepack musicbrains mysql ncurses nfs nls nokia6600 nomotif nptl nptlonly nsplugin ntfs nvidia obex octave office ofx ogg oggvorbis openexr opengl openssl overlays pam pcntl pcre pdf pdflib perl player pmount png posix povray pulseaudio python qt qt-static qt3 qt3support qt4 query-browser quicktime rar rc5 rdesktop readline real realmedia rss ruby samba sasl scaner scanner sdl sensord session sharedext sharedmem simplexml slang slp smp sms smtp sndfile soap sockets sound sounds spamassassin speex spell spexx sql sqlite3 sse sse2 ssl stats subversion svg symlink sysfs tcl tcltk tcpd theora threads tiff truetype udev unicode unzip usb utf8 vcd videos vim-pager vim-with-x visualization vncviewer vorbis widescreen wifi wireshark wmf wmp xforms xfs xine xinerama xml xml2 xorg xpm xprint xskatcards xsl xv xvid yahoo zip zlib"
ACCEPT_KEYWORDS="
amd64 x86 amd64 x86"
AUTOCLEAN="yes"
FEATURES="ccache candy"
CCACHE_DIR="/var/tmp/ccache/"
CCACHE_SIZE="4G"
CC="gcc"
CXX="g++"
#PORTDIR_OVERLAY="/usr/local/overlays/xeffects /usr/local/layman/xeffects- experimental"
GENTOO_MIRRORS="ftp://ftp.ussg.iu.edu/pub/linux/gentoo ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/
758
http://gentoo.chem.wisc.edu/gentoo/ ftp://gentoo.mirrors.pair.com/ http://gentoo.mirrors.tds.net/gentoo/ ftp://gentoo.mirrors.tds.net/gentoo/ http://gentoo.netnitco.net/ ftp://gentoo.netnitco.net/pub/mirrors/gentoo/source/ http://mirror.espri.arizona.edu/gentoo/
#http://mirrors.acm.cs.rpi.edu/gentoo/ ftp://ftp.ndlug.nd.edu/pub/gentoo/ http://open- systems.ufl.edu/mirrors/gentoo #http://gentoo.llarian.net/ ftp://gentoo.llarian.net/pub/gentoo
#http://gentoo.binarycompass.org #http://mirror.datapipe.net/gentoo ftp://mirror.datapipe.net/gentoo http://prometheus.cs.wmich.edu/gentoo
#http://modzer0.cs.uaf.edu/public/gentoo/ #http://mirror.usu.edu/mirrors/gentoo/ ftp://mirror.usu.edu/mirrors/gentoo/ #ftp://lug.mtu.edu/gentoo http://mirror.phy.olemiss.edu/mirror/gentoo http://mirror.mcs.anl.gov/pub/gentoo/
#ftp://mirror.mcs.anl.gov/pub/gentoo/ http://gentoo.mirrors.easynews.com/linux/gentoo/
#http://gentoo.cites.uiuc.edu/pub/gentoo/ ftp://gentoo.cites.uiuc.edu/pub/gentoo/
#ftp://ftp.wwc.edu/pub/mirrors/ftp.gentoo.org http://gentoo.localhost.net.ar/
#ftp://mirrors.localhost.net.ar/pub/mirrors/gentoo http://www.las.ic.unicamp.br/pub/gentoo/
#ftp://ftp.las.ic.unicamp.br/pub/gentoo/ http://gentoo.inode.at/ ftp://gentoo.inode.at/source/
#http://gd.tuwien.ac.at/opsys/linux/gentoo/ ftp://gd.tuwien.ac.at/opsys/linux/gentoo/
#http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ ftp://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ #http://mirror.bih.net.ba/gentoo/ ftp://mirror.bih.net.ba/gentoo/ #ftp://ftp.sh.cvut.cz/MIRRORS/gentoo/gentoo
#http://gentoo.supp.name/ http://mirror.uni-c.dk/pub/gentoo/ http://ftp.linux.ee/pub/gentoo/distfiles/ #ftp://ftp.linux.ee/pub/gentoo/distfiles/
#http://trumpetti.atm.tut.fi/gentoo/ ftp://trumpetti.atm.tut.fi/gentoo/
#http://ftp.public.fix.fi/gentoo/ ftp://ftp.public.fix.fi/gentoo http://gentoo.modulix.net/gentoo/
#http://ftp.club-internet.fr/pub/mirrors/gentoo ftp://gentoo.imj.fr/pub/gentoo/ #ftp://ftp.tu- clausthal.de/pub/linux/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo
#http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ "
#FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
INPUT_DEVICES="keyboard mouse synaptics evdev"
VIDEO_CARDS="nv nvidia vesa"
LINGUAS="ru"
PORTDIR="/usr/portage"
ALSA_CARDS="hda-intel"
2. Файл xorg.conf для NVIDIA Geforce
Section "Module"
Load "ddc" # ddc probing of monitor
Load "dbe" # Double buffer extension
SubSection "extmod"
Option "omit xfree86-dga" # don't initialize the DGA extension
759

EndSubSection
Load
"record"
Load
"xtrap"
Load "type1"
Load "freetype"
Load "synaptics"
Load "glx"
Load "wfb"
EndSection
Section "Files"
FontPath "/usr/share/fonts/cyrillic"
FontPath "/usr/share/fonts/corefonts"
FontPath "/usr/share/fonts/terminus"
FontPath "/usr/share/fonts/ttf-bitstream-vera"
FontPath "/usr/share/fonts/misc/"
FontPath "/usr/share/fonts/TTF/"
FontPath "/usr/share/fonts/OTF"
FontPath "/usr/share/fonts/Type1/"
FontPath "/usr/share/fonts/CID/"
FontPath "/usr/share/fonts/100dpi/"
FontPath "/usr/share/fonts/75dpi/"
FontPath "/usr/share/fonts/local/"
FontPath "/usr/share/fonts/freefont/"
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
Option "SuspendTime" "10"
Option "OffTime" "15"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "microsoftpro"
760

Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "grp:shift_toggle,grp_led:scroll"
Option "AutoRepeat" "500 30"
EndSection
Section "InputDevice"
Identifier "USBMouse"
Driver "mouse"
Option "Device" "/dev/input/mice
Option "Buttons" "7"
Option "CorePointer"
Option "Protocol" "auto"
Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "InputDevice"
Identifier "Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "HorizScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.15"
Option "EdgeMotionMinZ" "17"
Option "EdgeMotionMaxZ" "21"
Option "EdgeMotionMinSpeed" "30"
761

Option "EdgeMotionMaxSpeed" "35"
Option "LeftRightScrolling" "1"
Option "UpDownScrolling" "1"
Option "EmulateMidButtonTime" "75"
Option "ZAxisMapping" "4 5"
Option "SHMConfig" "on"
EndSection
Section "Monitor"
Identifier "DellLFP"
HorizSync 28.0 - 96.0
VertRefresh 43.0 - 60.0
Option "DPMS"
EndSection
Section "Device"
# Some names might need to be changed hereafter:
Identifier "NVIDIA GeForce 7900GS"
Driver "nvidia"
VendorName "nVidia Corporation"
BoardName "GeForce 7900 GS"
BusID "PCI:1:0:0"
#Option "NoLogo" "1"
Option "UseDisplayDevice" "DFP"
### 2D ACCELLERATION
#Option "RenderAccel" "false" # hardware Render acceleration
#Option "BackinStore" "true" #[] prevent artifacts?
#Option "NoRenderExtension" "true"
## some options
Option "SWcursor" "false" #[]
Option "Render" "true"
Option "Composite" "true"
### 3D ACCELLERATION
Option "EnablePageFlip" "yes" #[] Improves performance
Option "AGPFastWrite" "yes" #[]
Option "AGPMode" "4" # Supports AGP 4x
762

# VideoRam 262144
# Insert Clocks lines here if appropriate
#Option "IgnoreDisplayDevices" "CRT, TV"
Option "TripleBuffer" "True"
Option "AddARGBGLXVisuals" "True"
EndSection
Section "Screen"
Identifier "Screen1"
Device "NVIDIA GeForce 7900GS"
Monitor "DellLFP"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 8
Modes "1920x1200" "1400x1050" "1280x1024" "1024x768" "800x600"
"640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
Modes "1920x1200" "1400x1050" "1280x1024" "1024x768" "800x600"
"640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1920x1200" "1400x1050" "1280x1024" "1024x768" "800x600"
"640x480"
EndSubSection
Option "AddARGBGLXVisuals" "true"
EndSection
Section "ServerLayout"
Identifier "Flat Panel Only"
Screen "Screen 1"
InputDevice "Touchpad" "AlwaysCore"
InputDevice "USBMouse" "CorePointer"
763

InputDevice "Keyboard1" "CoreKeyboard"
EndSection
Section "Extensions"
Option "Composite" "enable"
EndSection
3. Файл xorg.conf для ATI radeon:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Synaptics" "CorePointer"
InputDevice "Mouse" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
Option "OffTime" "3" # 3 indicates number of min until monitor-off
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail"
EndSection
Section "dri"
# Access to OpenGL ICD is allowed for all users:
# Mode 0666
# Access to OpenGL ICD is restricted to a specific user group:
Group 27 # video
Mode 0660
EndSection
Section "Files"
RgbPath "/usr/lib64/X11/rgb"
ModulePath "/usr/lib64/modules"
FontPath "/usr/share/fonts/misc/"
FontPath "/usr/share/fonts/TTF/"
FontPath "/usr/share/fonts/Type1/"
FontPath "/usr/share/fonts/CID/"
FontPath "/usr/share/fonts/75dpi/"
764

FontPath "/usr/share/fonts/100dpi/"
EndSection
Section "Module"
Load "glx"
# This loads the miscellaneous extensions module, and disables
# initialisation of the XFree86-DGA extension within that module.
SubSection "extmod"
Option "omit xfree86-dga" # don't initialise the DGA extension
EndSubSection
Load "dbe"
Load "dri"
Load "xtrap"
Load "record"
Load "freetype"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver
"kbd"
Option
"XkbModel" "aspire5020"
Option
"XkbLayout" "se"
#Option
"XkbVariant" "nodeadkeys"
EndSection
Section "InputDevice"
Identifier "Synaptics"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
765

Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
# # Option "Repeater" "/dev/ps2mouse"
EndSection
Section "InputDevice"
Identifier "Mouse"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "Protocol" "imps/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "LPL"
ModelName "0"
Option "DPMS"
EndSection
# === ATI device section ===
Section "Device"
Identifier "Card0"
Driver "fglrx"
VendorName "ATI Technologies Inc"
BoardName "ATI Mobility X600"
# ### generic DRI settings ###
# === disable PnP Monitor ===
#Option "NoDDC"
766

# === disable/enable XAA/DRI ===
Option "no_accel" "no"
Option "no_dri" "no"
# === misc DRI settings ===
Option "mtrr" "off" # disable DRI mtrr mapper, driver has its own code for mtrr
# ### FireGL DDX driver module specific settings ###
# === Screen Management ===
Option "DesktopSetup" "0x00000100"
Option "MonitorLayout" "NONE,LVDS"
Option "IgnoreEDID" "off"
Option "HSync2" "unspecified"
Option "VRefresh2" "unspecified"
Option "ScreenOverlap" "0"
# === TV-out Management ===
Option "NoTV" "yes"
Option "TVStandard" "NTSC-M"
Option "TVHSizeAdj" "0"
Option "TVVSizeAdj" "0"
Option "TVHPosAdj" "0"
Option "TVVPosAdj" "0"
Option "TVHStartAdj" "0"
Option "TVColorAdj" "0"
Option "GammaCorrectionI" "0x00000000"
Option "GammaCorrectionII" "0x00000000"
# === OpenGL specific profiles/settings ===
Option "Capabilities" "0x00000000"
# === Video Overlay for the Xv extension ===
Option "VideoOverlay" "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
# will be disabled automatically
Option "OpenGLOverlay" "off"
# === Center Mode (Laptops only) ===
Option "CenterMode" "off"
# === Pseudo Color Visuals (8-bit visuals) ===
Option "PseudoColorVisuals" "off"
# === QBS Management ===
767

Option "Stereo" "off"
Option "StereoSyncEnable" "1"
# === FSAA Management ===
Option "FSAAEnable" "no"
Option "FSAAScale" "1"
Option "FSAADisableGamma" "no"
Option "FSAACustomizeMSPos" "no"
Option "FSAAMSPosX0" "0.000000"
Option "FSAAMSPosY0" "0.000000"
Option "FSAAMSPosX1" "0.000000"
Option "FSAAMSPosY1" "0.000000"
Option "FSAAMSPosX2" "0.000000"
Option "FSAAMSPosY2" "0.000000"
Option "FSAAMSPosX3" "0.000000"
Option "FSAAMSPosY3" "0.000000"
Option "FSAAMSPosX4" "0.000000"
Option "FSAAMSPosY4" "0.000000"
Option "FSAAMSPosX5" "0.000000"
Option "FSAAMSPosY5" "0.000000"
# === Misc Options ===
Option "UseFastTLS" "0"
Option "BlockSignalsOnLock" "on"
Option "UseInternalAGPGART" "no"
Option "ForceGenericCPU" "no"
Option "DynamicClocks"
"on" # Use ATI Powerplay features
BusID "PCI:1:0:0" # vendor=1002, device=3150
Screen 0
EndSection
#Section "Device"
### Available Driver options are:-
### Values: : integer, : float, : "True"/"False",
### : "String", : " Hz/kHz/MHz"
### [arg]: arg optional
#Option "NoAccel"
# []
#Option "SWcursor"
# []
#Option "Dac6Bit" # []
768

#Option "Dac8Bit" # []
#Option "BusType"
# []
#Option "CPPIOMode"
# []
#Option "CPusecTimeout" #
#Option "AGPMode"
#
#Option "AGPFastWrite"
# []
#Option "AGPSize"
#
#Option "GARTSize"
#
#Option "RingSize"
#
#Option "BufferSize"
#
#Option "EnableDepthMoves" # []
#Option "EnablePageFlip"
# []
#Option "NoBackBuffer"
# []
#Option "DRIReinit"
# []
#Option "PanelOff"
# []
#Option "DDCMode"
# []
#Option "MonitorLayout"
# []
#Option "IgnoreEDID"
# []
#Option "UseFBDev"
# []
#Option "VideoKey"
#
#Option "MergedFB"
# []
#Option "CRT2HSync"
# []
#Option "CRT2VRefresh"
# []
#Option "CRT2Position"
# []
#Option "MetaModes"
# []
#Option "MergedDPI"
# []
#Option "NoMergedXinerama" # []
#Option "MergedXineramaCRT2IsScreen0" # []
#Option "DisplayPriority"
# []
#Option "PanelSize"
# []
#Option "ForceMinDotClock" #
#Option "RenderAccel"
# []
#Option "SubPixelOrder"
# []
#Option "ShowCache"
# []
#Option "DynamicClocks"
# []
#Option "VGAAccess"
# []
#Option "LVDSProbePLL" # []
769

#Option "ReverseDDC"
# []
#Option "BIOSHotkeys"
# []
#
Identifier "Card0"
#
Driver "ati"
#
VendorName "ATI Technologies Inc"
#
BoardName "ATI Mobility X600"
#
BusID "PCI:1:0:0"
#EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 16
#
Modes "1280x800"
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
#
Modes "1280x800"
EndSubSection
EndSection
Важные команды Gentoo Linux
1. emerge --ask --verbose (или emerge -av) - просмотр USE-флагов перед
началом компиляции.
2. emerge имя_пакета – установка пакета.
3. emerge sync – обновление локального дерева портежей.
4. echo "category/some_package some_flags" >> /etc/portage/package.use --
прописывание USE-флагов в /etc/portage/package.use, для этого выполните
770

Полезные утилиты Gentoo Linux
1. Пакет gentoolkit (для установки наберите: emerge gentoolkit) содержит:
a) euse, которая существенно упрощает управление флагами USE.
Выполните euse -i flag для получения информации о флаге "flag". Так
же просмотрите man-страницу euse (не волнуйтесь. она короткая
:-)).
b) eclean. Она поможет удалить не нужные файлы. Эта утилита
может работать как с исходниками, так и с бинарными пакетами.
(просто вызовите её как eclean-dist или eclean-pkg
соответственно). Прочитайте страницу man для получения полного
списка опций.
2. Утилита genlop (для установки наберите: emerge genlop) позволяет
извлечь множество различной инфрмации из этого файла. Например genlop
-c покажет вам какой пакет собирается в данный момент и попытается
предсказать сколько времени осталось до конца сборки.м
3. Утилита ufed (для установки наберите: emerge ufed) позволяет
просматривать и устанавливать USE флаги в более дружественном
интерфейсе.
4. Скрипт update-world (ссылка:
http://www.gentoo.org/news/ru/gwn/20061204-
newsletter.xml

Пункт 3. Полезные советы / Простейший путь обновления своей
системы
) позволяет оставлять обновляющуюся систему не боясь, что
обновление прервется на каком-либо пакете. Данный скрипт просто
продолжит обновление со следующего пакета.
Ресурсы с документацией
1.
http://gentoo.ru


2.
http://gentoo.com


3.
http://ru.gentoo-wiki.com


4.
http://www.rugentoo.org


771

Ресурсы с программным обеспечением
1.
http://packages.gentoo.org


2.
http://gentoo

-portage.com


Каналы IRC (freenode.net)
1. #gentoo.
2. #gentoo-ru.
3. #rugentoo.
772


Каталог: pub -> docs books -> Linux -> Linux 2
pub -> Буланов С. В. Кудрявцева Е. Л. Развитие креативности билингвов: путь от интеркультурности к формированию «человека мира»
pub -> «октябрьский лицей»
pub -> Самообследование гоу сош «Школа надомного обучения» №196 по направлениям деятельности. Общие вопросы
pub -> Занятие для математического кружка. Задачи работы
pub -> Доклад муниципальное образовательное
pub -> Публичный доклад. 2013 год Общая характеристика образовательного учреждения. Место расположения
pub -> Публичный доклад муниципального общеобразовательного учреждения средней общеобразовательной школы №13


Поделитесь с Вашими друзьями:
1   ...   42   43   44   45   46   47   48   49   50


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал