You are on page 1of 121

LXF DVD

LXF90
SUSE 10.2 » Apache » VMware » SugarCRM
внутри!
Knoppix 5.1.1
ПЛЮС: Fedora 6 LIVE,
NetBSD, FreeBSD, OpenBSD!

LXF Март 2007


№ 3 (90)
Главное в мире Linux Читайте новости и...
читайте LinuxFormat
Март 2007 № 3 (90) см. с. 6

Устранение неполадок
Ваши проблемы с Linux
решены!

SUSE 10.2

Hardw
SugarCRM

are
» Советы » Оборудование » Установка
» Искусство поиска неисправностей с. 26

Клиенты BitTorrent
e

ar
tw
Который torrent?

Sof
In

sta
ll
OpenID
BitTorrent занимает 50% пропускной способности
Всемирной сети – мы расскажем, какой клиент

VMware Workstation 6?
следует использовать с.18

РАССМОТРИМ И ОЦЕНИМ:
SUSE 10.2, ASPLinux 11.2, SoftMaker Office,
wxWidgets 2.8, VMware 6, Kerio Mail Server 6.3
Apache

Аутентификация
Дэмьен Конвей

сделанная людьми
и для людей
OpenID изменит вашу жизнь к лучшему c. 46

ork
Knoppix 5.1

Netw
System

Это, пожалуй, станет убойной


возможностью Perl 6…
Дэмьен Конвей интервью c.34
Приветствие

Главное в мире Linux

К Вашим услугам...
Тема этого номера – устранение неполадок, и мы
решили спросить у Команды LXF: Какой лучший
совет можно дать пользователю Linux?

Пол Хадсон Грэм Моррисон Майк Сондерс


Закрыть программу, Избавьтесь от вне- Хочешь из X Window
съевшую все циклы шних раздражите- System уйти?
CPU можно с помо- лей – разведитесь, Ctrl+Alt+Backspace –
щью ground pound. отправьте подальше и ты на верном
Но только, если детей и заложите пути!
вы – Марио. дверь кирпичом.

Сделаем это вместе!


Номер журнала, который вы держите в руках, посвящен
Эфрейн Эрнандес- Ребекка Смолли Эндрью Грегори
Мендоса Заведите побольше Зачесав челку, вплетя устранению различных неполадок и решению разнообразных
Просто позвоните знакомств в Сети, в волосы нарцисс, проблем – от установки нужного драйвера видеокарты до
Грэму Моррисону ибо ни один из спою грустную песню
01225442244 – и он ваших друзей не о том, что меня все подключения к беспроводной сети. Будем надеяться, что эти советы
с радостью поможет будет понимать, о ненавидят... А потом
вам. А может, и нет. чем вы говорите. спрошу Майка. помогут вам в вашей повседневной работе с Linux, но давайте
остановимся на секундочку и подумаем: а откуда идут все эти
проблемы?
Основополагающий принцип Open Source гласит: больше глаз –
меньше ошибок. Казалось бы, за 15 лет существования Linux можно
было отладить систему до блеска, но этого не произошло – почему?
Марк Бейн Нейл Ботвик Герой мюзикла «В джазе только девушки» говорит: «Nobody is
Первое место в моем Любую проблему
Топ-10 лучших сове- можно решить пра- perfect», и FOSS – не исключение из этого правила. Закрытые драйвера
тов по Linux занима- вильным примене-
ет top. Она расска- нием команды man,
видеокарт нельзя включить в свободные дистрибутивы, а значит,
жет, что происходит Google и большого общения с «неофициальными» репозиториями пока не избежать.
с вашей системой. молотка.
Но кое-что вы все же можете сделать – сообщить об обнаруженных
проблемах разработчикам. Если вы потратили два часа, разбираясь
с какой-то неисправностью – поделитесь этим знанием, заполнив
за десять минут форму отчета об ошибке в Bugzilla. Открытое ПО
предполагает участие, а ошибок становится меньше тогда, когда
Энди Ченнел Ричард Драммонд множество глаз не только смотрят, но и видят, не так ли?
Выйдите замуж за Отправляйтесь в LXF
хакера. Моя жена явно зоопарк и смотрите
выбрала меня за уме- на пингвинов, пока
ние работать в Linux – на вас не снизойдет
только не говорите ей, озарение – или не
что я ламер. заболит голова. Валентин Синицын Главный редактор info@linuxformat.ru

Миссия журнала Как с нами связаться


• Пропаганда свободного ПО в России Письма для публикации: letters@linuxformat.ru
• Продвижение решений с открытым кодом в бизнес- Подписка и предыдущие номера: subscribe@linuxformat.ru
сообществе Техническая поддержка: answers@linuxformat.ru
Проблемы с дисками: disks@linuxformat.ru
• Поддержка российского Open Source сообщества
Общие вопросы: info@linuxformat.ru
• Организация трибуны для разработчиков свободного ПО Web-сайт: www.linuxformat.ru
• Обратная связь между разработчиками и потребителями ПО Адрес редакции: Россия, Санкт-Петербург, ул. Гончарная, 23, офис 54.
Телефон редакции: (812) 717-00-37. Дополнительная информация на стр.120

Март 2007 Linux Format 1


Март 2007 № 3 (90)

Содержание
Весь номер – прямо как на ладони: приятного чтения!

Учебники LXF DVD90 Майк вам покажет ........................ 110


RPM
Легкая установка пакетов.............................. 54
Побаиваетесь устанавливать и удалять ПО?
Knoppix 5.1.1
Узнайте, как это можно сделать, не прибегая к Самый популярный Live-дистрибу-
командной строке! тив – теперь с трехмерным рабочим
столом. Не смогли настроить
Compiz? Решение перед вами!

Fedora 6 Live
Возьмите community-дистрибутив от
Red Hat с собой – теперь у него тоже
есть Live-версия! Идеален для
демонстрации возможностей Linux
друзьям и коллегам.

NetBSD и OpenBSD
Autopackage: прост и понятен. Надоел Linux? Откройте для себя
SugarCRM новый мир свободных ОС с OpenBSD
Установим! ....................................................... 58 4.0 и NetBSD 3.1
Подумываете обзавестись или обновить CRM-
систему? В новой серии учебников вы найдете OpenOffice.org 2.1
все, что вам нужно Готовьтесь к празднику: новый OOo
Mono стал еще быстрее и лучше работает
Подключаем библиотеки ................................ 62 с форматами Microsoft!
Fedora Core 6 в форме живого дистрибутива. Попробуйте, не
C# и Mono позволяют написать поисковую
систему меньше чем за час! Не верите? устанавливая!
Читайте этот учебник!
Grub
Разберитесь с загрузчиком ........................... 66
Что за штука... LXFHotPicks
OpenID?
Скучный черно-белый экран, который вы
видите при старте системы, можно сделать
повеселее – и безопаснее, если хватит духу
Лучшие новинки открытого
взяться за Grub! ПО на планете..................................104
GTK+
Знакомство Glade 2 ........................................ 70
Визуальное проектирование интерфейсов в
духе классического Gnome
Unix API
Консольные приложения................................ 74 Авторизация
Думаете, что все возможности терминала
ограничиваются функцией printf()? А вот и нет! без лишних
JavaEE
усилий
Java Server Pages ........................................... 78 c. 46
Попробуем отделить мух – от котлет, зерна – от
плевел, логику – от дизайна.
PostgreSQL Так какой, говорите, ионный радиус у водорода?
Настраиваем сервер ....................................... 82
В конфигурационных файлах можно найти
множество опций – на какие из них следует
обратить внимание в первую очередь? LXF INTERVIEW
LaTeX
Классы документов ........................................ 88
В LaTeX можно создавать книги, статьи,
письма, презентации, слайды... и все благодаря «Ну что вы, у нас
классам. Аспиранты – узнайте, как быстро полное согласие
оформить диссертацию!
всегда и во всем.»
Blender
Текстурирование и анимация ........................ 92
Статичные модели Blender можно оживить и Оптимистичный
раскрасить – но для этого, как и в реальном Дэмьен Конвей c. 48 Вся мощь Apache! c. 38
мире, придется понять законы физики
Обучите свой web-сервер новым трюкам

2 Linux Format Март 2007


Содержание

LXF DVD
Подпишись внутри!
на Linux Format См. страницу 110
и сэкономь!
Спецрепортаж Обзоры
OpenSUSE 10.2 ..........................08
Если SUSE 10.1 заставил вас призадуматься о
том, во что играет Novell – взгляните на SUSE

Проблемы Linux 10.2: новое K-меню, интеграция Gnome и KDE


плюс надежность.

решены!
Узнайте, почему случаются неполадки и как с ними бороться на c. 26
OpenSUSE 10.2 доказывает, что
приложения GNOME прекрасно
чувствуют себя и в KDE.
А также... SoftMaker Office 2006 ..............10
Компактный офисный пакет, предлагающий
Перо вам в шляпу! ...............с. 38 производительность за деньги. Мы сравнили
его электронную таблицу с OOo Calc.
Модули Apache, которые стоит попробовать
VMWare Workstation 6 .............12
Виртуализация – это круто и некоторым из

Лингва эзотерика.................с. 42 нас всегда недостаточно предоставляемых


возможностей. Удовлетворят ли их аппетиты
64-битность и возможность работы «в фоне»?
По-настоящему странные языки программирования
wxWidgets 2.8 ...........................13
Сообщество wxWidgets, как обычно,
Тяжелая артиллерия............с. 48 потрудилось на славу. Что нового в не
слишком известном, но стоящем GUI-
Рабочие станции по обработке цифрового звука инструментарии?

ASPLinux 11.2............................14
Отечественные разработчики не часто балуют
нас регулярными релизами – но ASPLinux 11.2
заслуживает самого пристального внимания.

Постоянные рубрики Kerio Mail Server 6.3 .................16


Коммерческий почтовый сервер типа «все в
одном»: сумеет ли он потеснить разрозненные
Новости ......................................................... 04 открытые альтернативы?
DistroWatch ................................................... 24
Ладислав Боднар изучает изменения в стане разработчиков
Fedora. Посмотрим, на что будет похожа седьмая версия... Сравнение:
BitTorrent clients
Интервью LXF ............................................... 34
Еще больше энтузиазма по поводу Perl 6: узнайте, что BitTorrent............................19
заставляет двигаться Дэмьена Конвея.
Deluge ................................19
Что за штука ................................................ 46 Azureus...............................20
Новый способ аутентификации пользователей: OpenID.
BitTornado ..........................21
Ответы .......................................................... 97
От разрешения экрана до настройки VNC-сервера – мы KTorrent..............................21
постараемся рассказать обо всем. TorrentFlux .........................22
Через месяц .....................................................................................
Что ждет вас в апреле
120 Transmission ......................22

Март 2007 Linux Format 3


Новости

Новости
ГЛАВНЫЕ НОВОСТИ: LinuxBIOS Меняем ODF на OOXML Linspire переходит на Ubuntu
Free Software по доверенности Власть и бизнес России заинтересованы в свободном ПО

LinuxBIOS – тернистый
путь к полной свободе
В
большинстве случаев любой компью- чески слабых стран, а также использование бюджетных компьютерах проекта OLPC пока-
тер, работающий под управлением LinuxBIOS в индийских интернет-терминалах, зывает, что использование свободного вари-
свободной операционной системы, турецких цифровых телевизорах и многих анта сулит значительную выгоду: при исполь-
обладает как минимум одним проприетарным других специализированных устройствах, в зовании свободного аналога BIOS значительно
программным компонентом – BIOS. Впрочем, общей сложности насчитывающих около 10 снижается энергопотребление ноутбуков, а
и для этого ПО есть свободная замена – миллионов единиц, на пути в обычные ком- также ускоряется работа. По словам Рональда,
уже несколько лет ведется разработка пьютеры данный проект сталкивается с мас- возврат компьютера с LinuxBIOS из состояния
LinuxBIOS, способного полноценно заменить сой проблем. Вкратце сегодняшнюю ситуацию «сна» происходит практически мгновенно.
закрытый код и даже обеспечить лучшие с разработкой LinuxBIOS обрисовал автор дан- Также автор проекта высказал мнение по
показатели. Но, к сожалению, несмотря на ного ПО – Рональд Миннич [Ronald G. Minnich] поводу продвигаемого многими вендорами
явные успехи, к числу которых можно отнести в интервью организаторам намеченной на Extensible Firmware Interface (EFI). По его сло-
выбор данного ПО для амбициозного проекта конец февраля FOSDEM (Free and Open source вам, основная функция данной разработки –
OLPC, разрабатывающего сверхдешевые ноут- Software Developers’ European Meeting). стоять на страже интересов производителей
буки для детей из развивающихся и экономи- В частности, Рональд сказал, что такие аппаратных компонентов, помогая сохранять
компании, как SiS, VIA, Ali и Intel, поначалу в секрете архитектуру и микропрограммную
активно поддержали его идею, но в послед- «начинку» чипсетов. По сути, EFI можно оце-
ние годы практически перестали оказывать нить, как попытку создания своеобразного
поддержку проекту. В то же время компании «BIOS DRM», что может основательно поме-
AMD, MSI, Linux Labs, iRobot и Linux Networx шать развитию открытых аналогов. Впрочем,
(являющаяся, кстати, ключевым партнером Рональд не теряет оптимизма и считает, что
проекта), наоборот, активизировались и про- LinuxBIOS сможет занять достойное место в
должают оказывать неоценимую помощь в мире программного обеспечения.
создании и отладке свободной реализации
BIOS. Подобная неравномерность отрицатель-
но сказывается на разработке, которая по Пока верстался номер
всем параметрам вполне может полноценно Компания GIGABYTE анонсировала выпуск
заменить проприетарный вариант. При этом материн-ской платы M57SLI-S4 с LinuxBIOS
основной камень преткновения – нежелание на борту. Ориентированная на процессоры
коммерческих компаний приоткрывать завесу AMD (сокет AM2) плата базируется на чипсете
тайны над аппаратными «секретами» своих NVIDIA nForce 570 SLI, поддерживает до 16 ГБ
устройств и отсутствие свободных драйверов. памяти DDR-2 и имеет встроенный гигабитный
Между тем, опыт применения LinuxBIOS на Ethernet-контроллер.

4 Linux Format Март 2007


Новости

Linspire, основанный на Ubuntu,


основанном на Debian
В
полне вероятно, что 2007 год станет числе и коммерческого. Незадолго до этого рационных систем, основанных на GNU/Linux,
наиболее щедрым на различного рода компания Linspire опубликовала код CNR под по его мнению, является достаточно веской
объединения и альянсы, что в буду- свободной лицензией, и ожидаемый к весне причиной, чтобы немного поступиться прин-
щем принесет немало интересных результа- Ubuntu-7.04 станет первым дистрибутивом, ципами. Кстати, сам Реймонд недавно вошел
тов. Впрочем, ближайший сюрприз уже не в который войдет данное решение. Одним из в состав правления Linspire.
за горами: компания Linspire, занимающа- первых результатов соглашения стал отказ
яся разработкой одноименного коммерчес- авторов Ubuntu от автоматической установки
кого дистрибутива и его свободного аналога в дистрибутив несвободных видеодрайверов.
Freespire, заключила соглашение со спонсо- Что, впрочем, не доставит проблем пользова-
ром проекта Ubuntu, компанией Canonical Ltd. телям: благодаря CNR они легко смогут уста-
По этому договору следующие версии Linspire новить необходимое ПО, которое будет при-
будут основаны не на Debian, а на Ubuntu. сутствовать на установочных дисках.
Таким образом, Linspire планирует получить Многие известные деятели Open Source
в свое распоряжение более свежие версии (включая Яна Мердока [Ian Murdock], основа-
программ, традиционно присутствующих в теля Debian) высказали явное одобрение по
Ubuntu, в отличие от консервативного Debian, поводу такого поворота событий. По обще-
который, в свою очередь, является базовым му мнению, подобные виды сотрудничества
дистрибутивом для Ubuntu. Одновременно принесут пользу как разработчикам дистри-
разработчики Linspire ожидают повышение бутивов, так и всему сообществу в целом. На
интереса пользователей к своим програм- самом деле, в соглашении Linspire и Canonical
мным продуктам благодаря хорошему рейтин- есть один не очень приятный момент: в резуль-
гу Ubuntu и более терпимому отношению его тате реализации договоренностей довольно
разработчиков к использованию коммерчес- большой объем закрытого ПО в виде пропри-
кого программного обеспечения. етарных кодеков или видеодрайверов «про-
Естественно, разработчики и пользователи сочится» в Linux-системы, традиционно ста-
дистрибутива, продвигаемого вторым в мире рающиеся не связываться с несвободными
космотуристом Марком Шаттлвортом [Mark продуктами. Но один из сооснователей OSI
Shuttleworth], также не останутся в накладе (Open Source Initiative) Эрик С. Реймонд [Eric S.
и получат от Linspire интегрированный пакет Raymond] считает, что во имя популяризации
CNR (Click and Run), упрощающий установку и Linux можно пойти и на такой рискованный
обновление программного обеспечения, в том шаг: увеличение рыночного присутствия опе-

Власть и бизнес России


заинтересованы в свободном ПО
9
февраля 2007 года состоялся круглый тельно отнестись к свободным разработкам, на базе Инфокоммуникационного Союза
стол, организованный представителя- особенно в плане возможной замены уже координационного центра, в задачи которо-
ми Инфокоммуникационного Союза используемых проприетарных программных го войдет разработка государственной про-
при поддержке Мининформсвязи России и продуктов. граммы поддержки свободного ПО в России.
Росинформтехнологии, темой которого стало Между тем, в России продвижение сво- Представители власти, присутствующие на
обсуждение проблем разработки и использо- бодного ПО связано с определенными труд- встрече, одобрили инициативу бизнесменов и
вания свободного программного обеспечения ностями, главными из которых участники гарантировали обеспечить содействие ново-
в Российской Федерации. Участники встречи встречи назвали отсутствие скоординирован- му проекту на уровне государственных власт-
отметили, что роль свободного ПО в мире ности, разрозненность материально-техни- ных структур.
растет каждый год, а это говорит о наличии ческой базы и отсутствие высококвалифи-
определенных преимуществ у Free Software цированных специалистов, способных обес-
по отношению к проприетарным продуктам. печить полноценное использование возмож-
В этом ракурсе российским компаниям, раз- ностей свободного ПО в бизнесе и государ-
рабатывающим программное обеспечение, а ственном секторе. В связи с этим на встре-
также потребителям ПО следует более внима- че было озвучено предложение о создании

Март 2007 Linux Format 5


Новости

Взаимовыгодный Free Software по


обмен форматами доверенности
Е
вропейское отделение Free Software Foundation (FSFE)
приступило к реализации нового проекта, в рамках кото-
рого создатели свободного программного обеспечения
получают возможность делегировать авторские права на свои
разработки любой организации или опекуну в соответствии с
Доверительным Лицензионным Соглашением – Fiduciary Licence
Agreement (FLA). Основное предназначение данного документа –-
защита свободного ПО от возможных попыток нарушить автор-
ские права на программный продукт в случаях, когда настоящий
автор уже не существует, недоступен или не имеется возмож-
ности его установить. Таким образом FSFE надеется, что авторы
программных продуктов смогут снять с себя массу проблем, свя-
официальном сайте проекта. В дальнейшем, занных с решением возможных вопросов юридического характе-
силами этих же разработчиков, планируется ра и будут тратить все силы на совершенствование собственных
добавить поддержку ODF в другие офисные разработок. При этом подобная «Доверенность» никоим образом

Н
ашумевшее соглашение между ком- приложения – электронные таблицы Microsoft не мешает лицензии GPL и не лишает создателей продукта автор-
паниями Microsoft и Novell начинает Excel и программу для создания презентаций ских прав. Также планируется, что FLA позволит избежать случа-
приносить первые плоды. Вопреки PowerPoint. Завершить данную работу плани- ев, когда коммерческие компании скупают свободные проекты,
ожиданиям скептиков, их можно отнести, ско- руется к концу текущего года. выпуская их затем по закрытой лицензии.
рее, к положительным результатам, позволя- В свою очередь, компания Novell в дека- При всей полезности данного начинания, представители основ-
ющим еще больше облегчить жизнь пользо- бре прошлого года внесла соответствующие ного фонда FSF в лице Эбена Моглена [Eben Moglen] высказывают
вателей, работающих с документами, созда- коррективы в собственную редакцию пакета мнение, что FLA не сможет стать стопроцентной защитой свобод-
ваемыми в пакетах офисных приложений MS офисных приложений OpenOffice.org, добавив ного ПО. Особенно это касается случаев, когда разговор идет о
Office и OpenOffice.org. В частности, в начале возможность работы с документами формата различиях в законодательстве определенных стран. В частности,
февраля спонсируемый компанией Microsoft OOXML. Таким образом, вопрос несоответ- в США, где передача авторского права является обычным делом,
проект по созданию конвертора докумен- ствия форматов двух популярных офисных FLA будет эффективно работать. К примеру, дочерние проекты
тов представил первый релиз своего дети- пакетов можно считать практически закры- GNU Project наподобие GCC делегируют права своей вышестоящей
ща. Модуль позволяет работать с текстовыми тым, а всех пользователей поздравить с тем, организации, при этом нет законов, способных воспрепятствовать
файлами MS Word в двух форматах по выбо- что в работе с документами, создаваемыми в данному юридическому действию. Но в таких странах, как Франция
ру – или в Office Open XML (OOXML), являю- двух различных текстовых процессорах, стало и Германия помимо авторского права существует и такое юриди-
щимся форматом по умолчанию в MS Office, одной проблемой меньше. Примечательно, ческое понятие, как «моральное право», которое согласно законо-
или в OpenDocument (ODF), недавно приня- что в дело «примирения» двух конкурирую- дательству данных держав не может быть отчуждено или передано
том в качестве международного стандарта. щих форматов документов внесли свою леп- другому лицу. В этом случае, считает Моглен, FLA может оказаться
Разработчики гарантируют совместимость ту и производители менее распространенных недействительной. В связи с этим Моглен опасается одной вещи – что
конвертора практически со всеми популяр- пакетов офисных приложений. В частности, FSFE начнет продвигать FLA, как единственно возможное решение,
ными версиями офисных пакетов редмонд- компания Corel сообщила, что следующие хотя на самом деле оно таковым не является и требует индивиду-
ского гиганта, включая новейший MS Office версии пакета WordPerfect Office будут обла- ального рассмотрения в каждом конкретном случае.
2007. Модуль распространяется под откры- дать полноценной поддержкой как ODF, так http://www.fsfeurope.org/projects/fla/. LXF
той лицензией BSD и доступен к загрузке на и OOXML.

Новости короткой строкой

Компания Sun Microsystems планирует перевести свои про- В интернете открыт новый ресурс MobileLinuxInfo.com, пред-
екты Java и Solaris на лицензию GPLv3 и создать операцион- назначенный для пользователей, разработчиков мобильных
ную систему GNU на ядре Solaris. телефонов и программного обеспечения на базе Linux.
Компания Trolltech в сотрудничестве с VirtualLogix на Министр образования Пермского края Николай Карпушин
Конгрессе 3GSM в Барселоне представили однопроцессор- заявил, что для снижения вероятности нарушения действу-
ный телефон, управляемый операционной системой Linux в танде- ющего законодательства в учебных заведениях будет сведено к
ме с системой виртуализации в режиме реального времени. минимуму использование коммерческого ПО, а в первую очередь
Red Hat подписала соглашение с Вооруженными Силами будет рассматриваться возможность использования свободных
Швеции, согласно которому военные заменят серверные сис- программных продуктов с открытым исходным кодом.
темы Windows на аналогичные программные продукты от Red Hat. Идя навстречу пожеланиям читателей, редакция журнала
Очередная версия браузера Netscape 9 будет выпущена одно- Linux Format опубликовала на web-сайте архив номеров за
временно для трех платформ – Windows, Linux и Mac OSX. 2006 год в формате PDF.

6 Linux Format Март 2007


3D modelling tool Reviews

Обзоры
Новинки программного и аппаратного обеспечения в описании наших экспертов

Алексей Федорчук
Свою первую
(и последнюю)
программу написал Сегодня мы рассматриваем...
еще на Алголе.
08 OpenSUSE 10.2 OpenSUSE 10.2 c. 22
Едва расписавшись с Microsoft, SUSE выпустила
Debian или Kebian? новый дистрибутив. Стал ли он на 0.1 лучше, чем
10.1, или же Novell все эти месяцы занималась чем-
то другим? .... 8/10

Н
а протяжении последнего време-
ни в тематической печати наибо-
10 SoftMaker Office 2006
Нас вряд ли назвать можно гениями литературы, но
лее часто фигурировали Red Hat
мы удостоили Softmaker Office самых теплых слов.
и Debian со своими клонами. И как-то в
И вы их сейчас читаете! .... 7/10
тени остался третий кит Linux-дистрибуции,
Slackware. Хотя исторически его следовало
бы назвать первым. 12 VMWare Workstation 6.0
Тем не менее, и он не стоит на месте, С конвейера лидера в области виртуализационных
Beagle! F-Spot! Tomboy! И, конечно, Yast!
не смотря на всем известные осложняющие технологий сошла новая модель – Workstation 6:
Нет, не может быть, чтобы все было совсем уж
обстоятельства. И, что немаловажно, интен- наши первые впечатления. .... 8/10
гладко...
сивно развиваются его прямые потомки, в
том числе и весьма юного возраста. 13 wxWidgets 2.8
В их числе следует назвать в первую Многие считают, что выбор GUI-инструментария wxWidgets c. 29
голову ZenWalk (http://www.zenwalk.ru) - дист- сводится к выбору между GTK и Qt. wxWidgets
рибутив, избравший своим тотемом дельфи- демонстрирует, что «третий не лишний». .... 9/10
на. И развивающийся со стремительностью,
присущей этому морзверю: в конце февраля 14 ASPLinux 11.2
вышла его очередная версия (4.4 – напомню, Отечественный настольный дистрибутив – глазами
что предыдущие чередовались с интервалом простого пользователя. Не SUSE единым... .... 8/10
менее чем в полгода).
Чем интересен этот дистрибутив? Если 16 Kerio Mail Server 6.3
Ubuntu во всех его проявлениях можно счи- Есть ли жизнь без Sendmail и Postfix? Посмотрите
тать одним из способов легкой, для начи- на этот почтовый сервер-комбайн .... 6/10
нающего пользователя, установки Debian,
то ZenWalk играет ту же роль в отноше-
нии Slackware. Скачал образ диска размером
Создание продвинутых пользовательских
интерфейсов при минимуме кодирования.
несколько более 400 МБ, пользователь в счи-
танные минуты получает компактную, но пол-
ностью готовую к употреблению систему – с
чрезвычайно элегантно оформленным XFce НАШ ВЕРДИКТ: пояснение
в качестве рабочего, набором утилит, вполне
достаточным для счастья, легкими офисными Все попавшие в обзор продукты «Top Stuff». Номинантами стано-
пакетами и инструментами web-редактирова- оцениваются по одиннадцати- вятся лучшие из лучших – прос- Вердикт
ния, не вполне полной, но достаточной для бальной шкале (10 – то высокой оцен-
начала поддержкой русского языка. высшая оценка, 0 – низ- ки здесь недоста- Google Earth
шая). Как правило, мы точно. Разработчик: Google
А дальше для наращивания мощи перед оцениваем функциональ- Рассматривая Сайт: http://earth.google.com
ним два пути. Первый – наименьшего сопро- Цена: Бесплатно по закрытой лицензии
ность, производитель- свободное ПО, мы
ность, простоту исполь- обычно указываем Функциональность 10/10
тивления, то есть использование встроен-
Производительность 9/10
ной системы пакетного менеджмента, netpkg, зования и цену, а для предпочтитель- Простота использования 9/10
бесплатных программ ный дистрибутив. Документация 9/10
не более сложной в обращении, чем apt
учитывается документа- Иногда это озна-
или pacman. Второй же – традиционное для ция. Кроме того, мы всег- чает компиляцию Если весь мир – сцена, то Google
Slackware и его потомков конструирование да выставляем общую оценку, из исходных текстов, но, если Earth – театр. Простая в использовании,
захватывающая и ободряюще практичная
собственной системы. демонстрирующую наше отно- разработчики рекомендуют программа.
alv@posix.ru шение к продукту. Autopackage, мы следуем этому
Выдающиеся решения могут
получить престижную награду
совету. Рейтинг 9/10

Февраль 2007 Linux Format 7


Обзоры Дистрибутив Linux

OpenSUSE 10.2
Последнее время Novell находится в гуще всевозможных событий – Нейл Ботвик
оценивает, а событие ли ее новый дистрибутив?

Н
едавно SUSE перенесла несколь-
Вкратце… ко ударов. Проблемы с OpenSUSE
10.1, особенно в области пакетного
Linux- менеджмента и обновления… Сделка Novell
дистрибутив, с Microsoft, вызвавшие штурм Замка Novell
спонсируемый разъяренными толпами воинов Свободного
(и в основном
ПО (см. раздел новостей LXF86)… Проблемы
разрабатываемый)
Novell, 10.1 удивили: такое обнаруживают еще на ста-
рассчитанный как на дии .0, а к .1 уже исправляют. Встает вопрос:
домашних, так и на смогли ли Novell и Сообщество SUSE испра-
бизнес- вить положение в OpenSUSE 10.2?
пользователей. См.
При инсталляции предлагается несколь-
также: Fedora Core 6,
Mandriva 2007 или ко рабочих столов – KDE, Gnome и «Другие»
Ubuntu 6.10. (Others) – но выбрать можно лишь один.
Для пользователя-одиночки это нормально,
но если у вашей лучшей половины вкус не
совсем такой, как ваш, придется потом добав-
лять рабочий стол через Yast. Безопасность
надежная, с брандмауэром Yast (установлен по
умолчанию), традиционным iptables и защитой
от вредных приложений AppArmor. Меню Gnome на SUSE может показать и часть приложений, и все сразу – выбор за вами!
В инсталляторе есть возможность уда-
ления IPv6 – некоторые распространенные время установки. Разница в том, что система ду и функциональность: к пяти дискам можно
модемы/роутеры не умеют с ним обращаться, SUSE загружает лишь заплатки, а не пакеты добавить шестой, с несвободным ПО (Adobe
а удаление может улучшить существующие целиком, что существенно снижает трафик, Reader, Java и Opera). Имеется и соответст-
подключения и даже восстановить разрушен- особенно для крупных пакетов. вующее онлайн-хранилище для обновлений,
ные. Аналогично другим дистрибутивам, SUSE Как поступают теперь многие Linux-дист- напоминающее репозиторий Ubuntu Restricted.
предлагает загрузить обновления программ во рибутивы, SUSE четко разграничивает свобо- Только хранятся там в основном приложения,
а не драйверы. OpenSUSE доступен и в виде
DVD ISO, но учтите, что туда помещено все ПО,
включая несвободное.
Рабочий стол KDE в SUSE 10.2
Время вбрасывания
SUSE заменил К-меню в KDE новым, «ори-
GTK на KDE ентированным на эффективность» меню
Аккуратная работа с темами приводит под названием Kickoff (Вбрасывание). Меню
к тому, что GTK-приложения (здесь, обманчиво простое: по-прежнему доступ-
GnuCash) чувствуют себя в KDE как но все, но ваши любимые приложения еще
дома.
доступнее. Список избранного настолько удо-
бен, что мы с него не слезали. В Kickoff встро-
ен Kerry, KDE-оболочка поискового движка
Встроенный поиск Beagle, делающая поиск вездесущим (в панели
Kerry, KDE-оболочка для Beagle, инструментов Konqueror тоже есть поисковый
поискового движка от Novell. модуль Kerry, специально для нас, разгильдя-
ев). Приложения Gnome на SUSE хорошо впи-
сываются в KDE – GTK-программы, помещен-
ные в KDE, выглядят как KDE-программы, и
нет этих жутких визуальных искажений, полу-
Kickoff чающихся при попытке запуска приложений
К новому меню SUSE для KDE от разных сред. Но KDE-приложения в Gnome
(доступно и старое) нужно по-прежнему выглядят ужасно.
Yast ZENworks
привыкнуть, но это несомненный Кое-кого расстроит удаление из ядра под-
Независимо от вашего отношения Новый инсталлятор, отвлекаю-
прогресс.
к идее конфигурировать все на свете щий ваше внимание от Yast. держки smbfs. Эта файловая система исполь-
одной программой, Yast упрощает Не разумнее ли предоставить зуется для монтирования общих с Windows
основную работу по настройке. управление ПО единственному ресурсов. Сама по себе возможность не исчез-
менеджеру?
ла, так как в ядре имеется CIFS, усовершенст-

8 Linux Format Март 2007


Дистрибутив Linux Обзоры

Novell, MS и OpenOffice.org
В OpenSUSE 10.2 Novell включила «существенно улучшенную» версию OpenOffice.org.
Некоторые улучшения выглядят полезными, например, интеграция с Evolution и Kontact,
но одно из них вызвало бурю дебатов. Спорная функция – «улучшенная совместимость
с файлами Microsoft Office», включающая поддержку макросов Visual Basic для Excel в Calc.
Неудивительно, что в нее вцепились участники бойкота Novell. Мы протестировали работу
макросов VB с помощью двух разных таблиц, и ничего не сработало. То ли Novell втихую
убрала поддержку макросов, то ли эта поддержка не так хороша, как было заявлено.

шат отсутствием обратной связи. Часто невоз- вых редакторов – пожалуйста. В целом набор
можно понять, зависло приложение или просто ПО свежий: ядро 2.6.18, KDE 3.5.5, Gnome 2.16,
загружает особо крупный пакет. Firefox 2.0 и Gimp 2.2.13. Разработчики не успе-
SUSE 10.2 не хочет воспроизводить DVD. Не только коммерческие, ли включить новейшую версию OpenOffice.org
обычные тоже. Графические причуды 2.1, зато есть 2.0.4. Удивительно, что в 10.2 нет
Владельцев видеокарты Nvidia ждет разоча- собственных разработок Novell – Mono 1.1.8
вованная замена. SUSE объясняет ликвидацию рование: для нее предусмотрены лишь сво- и Beagle 0.2.12 на диске есть, но ведь 1.2.1
SMB тем, что он больше не поддерживается, бодные драйверы, а значит, не будет 3D- и 0.2.13 вышли на добрую неделю раньше
но это лишь теория, поскольку с этом самом ускорения. SUSE не включает проприетарные сборки пакетов для диска. Пауза между выхо-
комплекте 10.2 есть приложения, предназна- драйверы Nvidia (даже в «несвободный» CD) дом проекта и сборкой дистрибутива вполне
ченные для работы с инструментами smbfs по лицензионным причинам, но их неслож- естественна, но продукты-то разрабатывались
и рассчитанные на то, что соответст-вую- но добавить через тот же Yast или ZENworks. в одной фирме!
щий модуль имеется. Похоже, задумано было На SUSE 10.2 можно установить Xgl, хотя это Несмотря на некоторые нестыковки в
неплохо, но до конца дело не довели. Впрочем, будет посложнее, чем, скажем, с Mandriva управлении пакетами, SUSE 10.2 значительно
с главной файловой системой все хорошо – 2007. Нужно использовать редактор /etc/ лучше 10.1. В прошлый раз Novell споткну-
это по-прежнему ext3 [раньше по умолчанию sysconfig в Yast, чтобы сменить X-сервер с лась, но выправилась и произвела професси-
предлагался reiserfs, – прим. ред.]. X.org на Xgl и установить Compiz. Правда, ональный, удобный в использовании (правда,
настройка делается раз и навсегда, и в Gnome слегка сыроватый) продукт. LXF
Обновления все отлично работает. К несчастью, в KDE
Система обновлений SUSE работает через доступны лишь немногие функции – никаких
Грэм
менеджер пакетов ZENworks, и это странно: считает… пульсирующих окон – но это скорее вопрос к
существуют две независимые системы управ- Compiz, чем к SUSE.
ления пакетами. Один из вариантов – тради- «Когда-то мне Воспроизведение DVD на SUSE традици-
ционный, через секцию управления пакетами нравился онно хромает. Согласны, защищенные диски
Yast, а другой – новый, с помощью ZENworks. OpenSUSE. Но проигрывать нельзя, и libdvdcss осталась за
Оба распоряжаются одними и теми же RPM и теперь в нем бортом. Но SUSE не в силах воспроизвести
отсутствует
базой данных, и можно переключаться между даже обычные DVD, созданные Dvdauthor.
главное, чего я
ними. Оба имеют свой список инсталляционных Необходима замена сломанного пакета xine-
ожидаю от
ресурсов, но они не синхронизированы – если дистрибутива lib, что означает добавку еще одного репозита-
ресурс добавлен в ZENworks, то при работе с Linux: рия к послеустановочной настройке Yast. MP3
Yast операцию придется повторить. Раздражает преданность воспроизводит RealPlayer – по крайней мере
постоянный запуск синхронизации с ZENworks, Linux- при инсталляции с «несвободного» диска или
сколько его ни отключай: это тормозит добав- сообществу». DVD – и здесь все в порядке.
ление пакетов. Обе системы обновления гре- Проблемы с мультимедиа вызваны ско-
рее щекотливой юридической ситуацией,
чем виной разработчиков. Не стоит обви-
нять Novell в чрезмерной осторожности, к Вердикт
OpenSUSE или SLED? тому же на месте, как обычно, Jem Report с
подробными указаниями по добыче недоста- OpenSUSE 10.2
Сегодня SUSE существует в двух ипостасях – OpenSUSE 10.2 и SUSE ющих фрагментов, на www.softwareinreview. Разработчик: Novell
Linux Enterprise Desktop (SLED) 10.0 – какую же выбрать? На первый Сайт: http://en.opensuse.org
com/cms/content/view/60.
взгляд, Open SUSE лучше: она новее, и набор ПО более свеж. Но вы Цена: Бесплатно, в основном под GPL
Если исключить вышеупомянутые мульти-
можете предпочесть уже опробованную, надежную вещь. Этим два Функциональность 8/10
SUSE и различаются. У OpenSUSE 10.1 были крупные проблемы, медиа-элементы, SUSE содержит поразитель-
Производительность 7/10
особенно по части управления пакетами, а SLED ультра-надежен. но широкий спектр ПО. Прошли те времена, Простота использования 9/10
Честно говоря, вы всегда рискуете, пробуя новейшую версию чего- когда в крупных дистрибутивах можно было Документация 7/10
нибудь, уже потому, что немногие этим чем-нибудь пользовались. установить пару рабочих столов и дюжину
SLED предназначен для бизнес-потребителей, для которых программ для каждой мелочи; выбор на DVD Разработчики SUSE оставили позади
стабильность превыше новизны, особенно в тех случаях, когда 10.1 и произвели солидный
по-прежнему широк, но стандартная инстал-
система устанавливается на несколько сотен компьютеров. Для профессиональный дистрибутив,
ляция проста и понятна. определенно заслуживающий
индивидуального пользователя это вопрос личного выбора – как Продуманный перечень программ и новые инсталляции.
всегда на Linux.
меню SUSE помогают быстро подобрать ПО
для работы, но если вы желаете, чтоб из тра-
диционного К-меню вываливалось 17 тексто-
Рейтинг 8/10
Март 2007 Linux Format 9
Обзоры Офисный пакет

SoftMaker Office на DVD


Демо-версия 30 дней

Конкурент OpenOffice.org – да еще и платный? SoftMaker решил, что это реально; осталось
убедить Энди Ченнела…

П
ечать осталась в прошлом веке;
Вкратце… теперь у нас есть txt, eml и SMS. Но
в бизнесе люди все еще цепляют-
Сцепка текстового ся за бумажную копию, как за последнего
процессора и базы пушистого котенка в зоомагазине. Для этих
данных для х86 типов офисный комплект – центр вселенной,
Linux-дистрибутивов
и выбор его необычайно важен. Пользователи
и FreeBSD.
Попробуйте также: Windows сгрудились вокруг MS Office, боль-
OpenOffice. org, шинство линуксоидов счастливо с OpenOffice.
KOffice или AbiWord org; а вот SoftMaker (г. Нюрнберг) вспахи-
совместно с вает собственную ниву, производя комби-
Gnumeric.
нацию TextMaker и PlanMaker для Windows,
Linux, Pocket PC и Windows CE (поддержки
Mac нет).
Пакет состоит из двух частей: текстового
процессора и редактора электронных таблиц.
Модуль создания презентаций отсутствует,
и это минус SoftMaker 2006 еще до «здрас-
те». Да, можно создать документ в TextMaker,
а затем перевести его в формат HTML или
PDF, но для профессиональных презентато-
ров этого мало. Нет и редактора иллюст-
раций, чем может похвалиться OOo, хотя в TextMaker имеет многоязыковую поддержку и удобные стили абзацев.

пакет должен реально превосходить аналоги, трументов плюс полезнейшие дополнения в


«Нестандартные иначе кто ж его купит – а без презентаций и виде буквиц, стилей символов и оформления
виджеты делают его иллюстраций его преимущества нужно еще
поискать. Поищем!
абзацев, шаблонов страниц и свободных гра-
ниц текстовых областей и рисунков.
приятнее ООо на вид.» Умиляет функция «живого» обтекания
Легкий на ногу [wrap], позволяющая запросто перемещать
TextMaker имеются неплохие инструменты для Сначала об инсталляции. Там, где пожиратель границы текстовой области мышью, как в
иллюстрирования. памяти OOo словно шлепает по цифровому Adobe InDesign. Кроме базовых текстовых
Скудость комплекта неуместна еще и пото- болоту, SoftMaker Office, умещаясь в скром- функций, TextMaker работает с DOC-совмес-
му, что, в отличие от других офисных пакетов ные 32 МБ, проносится со скоростью велоси- тимыми комментариями и колонтитулами и
Linux, SoftMaker 2006 стоит отнюдь не гроши. педиста. На нашем Intel Core 2 Duo TextMaker имеет зачаточные инструменты редактирова-
Будучи на несколько сотен фунтов дешевле открылся и был готов к работе в 4 секун- ния растровой графики.
MS Office, он в то же время почти на $70 доро- ды – сравните с томительными 23 секундами В комплекте нет базы данных, поэтому
же OOo, ThinkFree или KOffice. За такую сумму OOo Writer – а PlanMaker развернулся за 5 (20 полезно, что TextMaker предусмотрел соот-
у OOo Calc). ветствующий апплет для работы с почтой,
Сам бинарник весит 23 МБ (OOo – 100 МБ файлами форматов DBF, CSV или собствен-
Свойства навскидку с гаком), плюс 12 МБ интернациональных ного формата. Гибкость не совсем та, что у
словарей. Комплект включает два статичес- отдельного приложения, но для повседневной
ких двоичных файла, и как только они загру- работы нормально.
жены, запуск сводится к распаковке архива Чего здесь действительно не хватает, так
и щелчку на одном из значков. То есть офис это вертикальной линейки в окне редактиро-
будет работать на любом Linux-дистрибутиве. вания, то есть нельзя перемещать вертикаль-
Недостаток – нет тесной интеграции с вашим ную направляющую, в отличие от горизон-
рабочим столом: файловые ассоциации и тальных: их надо добавлять через диалог. Не
пункты меню нужно добавлять вручную. Для смертельно, но нудно, и, главное, непонятно,
одиночного пользователя не проблема, но для почему такого нет.
группы компьютеров уже затруднительно. TextMaker – надежный, современный и
Электронные таблицы Форматирование удобный текстовый процессор. Органы
XLS, SDC, DBF… PlanMaker под- TextArt – ответ пакета на вордов-
держивает широкий спектр фор- ский WordArt по стилям и рас-
Работа с текстом управления у него нестандартные настоль-
матов – и поддерживает надеж- цветке текста. Работа та же, Большинство пользователей, вероятно, най- ко, чтобы порадовать глаз, но не настолько,
но. а цена меньше. дет в TextMaker все, что им надо. Этот текс- чтобы не понять, скажем, значение значка
товый процессор имеет обычный набор инс- «Полужирный» (“Bold”). Внешность приятнее,

10 Linux Format Март 2007


Офисный пакет Обзоры

чем у OOo Writer, но достигается это ценой ниже). Мы заметили единственную проблему: вариант весьма заманчивым. Его способность
отсутствия интеграции с вашим рабочим случайные искажения встроенных рисунков во уверенно импортировать и экспортировать
столом и сглаженных шрифтов на панелях время навигации между таблицами. документы из разных версий комплекта неза-
инструментов и в меню. Поддержка DOC (то Нам понравилась работа PlanMaker – инту- висимо от первоисточника может стать допол-
есть импорт и экспорт) превосходна, вдоба- итивно понятная и аккуратная. Поддержка нительным бонусом для тех, кто решился
вок TextMaker умеет читать и записывать фай- макросов Excel надежна и стабильна, что для перейти с Windows на Linux.
лы и старых (SWX), и новых (ODT) форматов
Пол многих будет важнейшим качеством. Как мы Но если таблицы для вас не единственная
OOo, в дополнение к обязательным RTF и про-
считает… ни старались, программа ни разу не толь- и окончательная цель, то градус рекомендаций
стому тексту. Вывод на печать также хорош. «Безупречная ко не зависла, но даже ощутимо не сбавила существенно снижается. Текстовый процес-
Приложение вполне стабильно, но когда мы совместимость скорости обработки самых сложных таблиц. сор сравним с Writer, вот и прикиньте, сто-
все-таки умудрились его «завалить», програм- с Excel По сравнению с Calc, она не только быст- ит ли переплачивать ради ускорения работы
ма исчезла без всякого предупреждения. обязательна для рее запускается, но и быстрее переключается (перед покупкой можно попробовать демо-
многих между разными таблицами и быстрее обнов- версию). Но отсутствие модуля для презента-
потенциальных
Как там с Excel… мигрантов
ляет ячейки. ций – это серьезно, и мы не можем рекомен-
PlanMaker – табличная часть SoftMaker, пред- Для тех, кто сжился со своим Excel или довать SoftMaker 2006 от всей души. Если OOo
на Linux, и
назначенная для работы с более-менее слож- SoftMaker Office накопил крупный архив, этот пакет может необходим вам из-за приложения Impress, то
ными вычислениями. Как и текстовый напар- здесь стать наилучшим вариантом обретения под и остальных его частей для жизни хватит.
ник, имеет солидный набор функций и зна- превосходит Linux некоего Единого Офиса или даже самого Тем не менее, стабильность, быстрота, без-
комый пользовательский интерфейс – без OOo». Excel. Каждую переменную и макрос не про- упречная поддержка Excel и встроенная база
побрякушек – включающий многотабличную тестируешь, но все предложенные документы данных делают комплект весьма привлека-
вкладочную организацию, крупную, друже- PlanMaker обработал превосходно. тельным. Если бы встал выбор между покуп-
ственную панель формул и разнообразные Если вы подумываете о миграции, учтите, кой этого дуэта и борьбой с KOffice, мы бы уже
функции форматирования ячеек. Панели что эта парочка – не клоны продукции MS: мы принялись копить денежки. LXF
инструментов разумно организованы и не бы расценили их как нечто среднее между OOo
переполнены параметрами, поэтому рабочее и визуальным излишеством MS Office 2003.
пространство не столь перегружено, как в Фоновые градиенты не отвлекают от работы,
OOo Calc. Основной расчет – на повседневные но достаточно четко разграничивают панели
нужды среднего пользователя. А если ваш инструментов, а самое замечательное, что это
уровень выше (или ниже!) среднего, панели не ухудшает производительности программ.
инструментов легко настроить через меню Чтобы упростить изучение, пакет предусмат-
«Preferences» (Параметры). Редактор формул ривает подробное, хорошо написанное 500-
PlanMaker содержит широкий (хотя и похуже, страничное руководство в электронном виде.
чем у Calc) набор параметров и удобное управ- Бумажный учебник – это здорово, но поиск по
ление операторами, делающие построение ключевым словам гораздо легче выполнять
вычислений наглядным. среди бит, чем среди квадратных сантиметров,
Разработчики проявили недюжинные спо- да и лес стоит поберечь.
собности в сфере работы с файлами Excel.
Программа смогла открыть все, что было За и против
предложено (100 документов, вынутых из Итак, рядом с бесплатным OpenOffice.org –
Сети в случайном порядке) почти без запинки, найдется ли место комплекту ценой около
и в этой области она значительно превосхо- $70? Пользователи с опытом работы в Excel,
дит Calc (см. врезку «PlanMaker против Calc» особенно любители макросов, найдут этот

PlanMaker против Calc


PlanMaker (слева) и OpenOffice.org Calc (справа) попыта- которых исчезновение самого графика и невозможность
лись смоделировать расчета вывоза алмазов, представ- проследить за равенствами в разгар работы.
ленную австралийским правительством. Таблица содер-
жит большое количество данных и макросов VBA для
Это наглядно показывает разрыв между двумя
приложениями, PlanMaker действительно воспроизводит
Вердикт
представления результатов вычислений в числовой и таблицы более уверенно, чем Calc.
графической форме. Calc допустил кучу ошибок, среди SoftMaker Office 2006
Разработчик: SoftMaker Software
Сайт: www.softmaker.com
Цена: $69.95 (или €69.95 с НДС)
Функциональность 7/10
Производительность 9/10
Простота использования 6/10
Документация 9/10

На фоне бесплатных приложений


выглядит неплохо. Для выживания,
необходимо обзавестись модулем
презентаций.

Рейтинг 7/10
Март 2007 Linux Format 11
Обзоры Виртуальная машина

VMware Workstation
Впечатлениями о VMware Workstation 6 готов поделиться Нейл Ботвик – у него
редко бывает меньше дюжины дистрибутивов одновременно.

Э
то все Майк Сондерс. Что ни месяц, он
Вкратце… заливает как минимум один полный
дистрибутив на LXFDVD – извольте
Флагман пробовать! Охнуть не успеешь, как винчестер
виртуализации переполняется, а загрузочное меню упира-
VMware для ется в пол. А с виртуальной машиной можно
настольных машин: опробовать дистрибутив без мультизагрузки:
новые функции и
больше в окне запускается компьютер с собственной
поддерживаемых памятью (и постоянной, и оперативной) и
дистрибутивов. сетевыми подключениями.
См. также: Qemu и Областей применения виртуальных машин
VMware Server.
(ВМ) немало: хостинговые компании экономят
деньги на физических компьютерах, разработ-
чики безопасно тестируют ПО, образователь-
ные учреждения предоставляют студентам
стандартное окружение. Известнейший произ-
водитель ВМ – VMware Inc – только что сняла
покрывало с VMware Workstation 6. Хотя на
вид новая версия неотличима от предыдущих,
да и работает с ВМ, созданными до нее, изме-
нений по сравнению с Workstation 5.5 немало.
Одно из них состоит в том, что обновление
больше не будет односторонним процессом: Снимки состояния позволяют вернуть ВМ в любое прошлое.
можете создавать ВМ на Workstation 6, затем
запускать их на старых версиях. оборудовании, на пробной версии, поскольку Если вам просто захотелось взглянуть на
Теперь виртуальные машины могут тру- полная стоит денег. последний дистрибутив Майка, тут хватит и
диться в автоматическом режиме после оста- альтернативы вроде VMware Server или Qemu.
новки основной программы Workstation. ВМ Улыбочку, пожалуйста! Но если виртуальные машины нужны вам в
работает в фоне, с удаленным доступом как с Важная для ВМ функция – способность делать профессиональной деятельности или сфере
локального хоста, так и с другого компьютера. снимки состояния системы. В Workstation сни- разработки ПО, возросшая мощь Workstation
Это существенное добавление, особенно при мок может быть сделан по нажатию кнопки, может оказаться неоценимой, а новые функ-
разработке ПО без графического интерфейса но можно настроить ее так, чтобы состояние ции шестой версии – автоматические ВМ,
(сетевое ПО или программы командной стро- ВМ фиксировалось при каждом выключе- интеграция с Eclipse, поддержка 64-битных
ки) на гостевой ОС. Прежний лимит 4 ГБ ОЗУ нии, или чтоб снимок загружался при каждом хостов – делают обновление весьма привлека-
на все одновременно работающие ВМ полно- запуске. Это идеально для обучающих систем тельным. Мы бы приобрели ее хотя бы из-за
стью снят, а для каждой отдельной – повышен или машин общественного пользования. способности работать без графики. LXF
до 8 ГБ. Возможность разрабатывать код в хост-
системе и тут же испытывать его в виртуаль-
Теперь и Vista ной – это здорово, но раньше приходилось
Кроме того, VMware увеличила количество под- всякий раз компилировать программу, а затем
держиваемых систем – например, Windows- посылать ее на ВМ. В Workstation 6 появился Вердикт
версия теперь работает под Vista. Ряды под- модуль Eclipse, с помощью которого код инс-
держиваемых Linux-дистрибутивов пополнили таллируется на ВМ прямо из среды разработ- VMware Workstation 6 beta
OpenSUSE 10.2, Mandriva 2007 и Ubuntu 6.10. ки. Эту функцию можно сделать доступной по Разработчик: VMware Inc
Этот список имеет значение лишь для получе- умолчанию во время установки. Сайт: www.vmware.com
ния поддержки от VMware, так как Workstation О производительности судить рано, так как Цена: Требует уточнения (VMware
работает на большинстве дистрибутивов – мы мы рассматривали бета-версию с включенной Workstation 5.5 стоит от $189).
пользуемся ей на Gentoo (который не поддер- отладочной информацией, а это ощутимо сни- Функциональность 9/10
живается) начиная с 3-й версии. жает скорость; но она была сравнима с 5.5, а Производительность 7/10
Более существенно включение 64-битной VMware утверждает, что производительность Простота использования 8/10
версии. Прежние были исключительно 32-бит- по сравнению с прежней версией не измени- Цена 7/10
ными и очень ломкими на 64-битных хостах. лась. Гостевые ОС, как правило, работают со Крутые обновления. Заслуживает
Имейте в виду, что хотя работа 32-битной гос- скоростью в пределах нескольких процентов серьезного внимания – ведь вам нужна
тевой системы на 64-битном хосте возможна, от «родной», хотя скорость дискового досту- мощь?
для запуска «64 на 64» необходим как мини- па существенно снижается при использова-
мум Athlon 64 типа D. Лучше сперва убедиться
в том, что Workstation 6 работает на вашем
нии в качестве виртуального жесткого диска
файла-образа.
Рейтинг 8/10
12 Linux Format Март 2007
GUI-инструментарий Обзоры

wxWidgets 2.8
Темная лошадка среди GUI-инструментариев, теперь еще и с визуальным конструктором
на DVD

интерфейсов. Пол Хадсон спихивает с экрана Qt с GTK и запускает Python…

Ч
ас языка программирования Ruby про-
Вкратце… бил лишь с появлением среды разра-
ботки Rails. В случае с wxWidgets все
Межплатформен- наоборот: эта библиотека обрела популярность
ный GUI-инстумен- лишь после создания wxPython. Пока KDE/Qt и
тарий на C++, с Gnome/GTK пожинали лавры, wxWidgets поти-
привязками к хоньку росли над собой, внедряя улучшение
Python and Perl.
См. также: Qt и, за улучшением.
конечно, GTK. Как и Qt, wxWidgets – межплатформенный
инструментарий для создания графических
пользовательских интерфейсов, написанный
на C++. Опять же, как и Qt, wxWidgets имеет
массу дополнительных функций вроде под-
держки потоков, доступа к базам данных и т.п.
Но, в отличие от Qt, ядро wxWidgets – оно отве-
чает за рендеринг всего GUI – целиком пола-
гается на ОС, воспроизводящую интерфейс,
а значит, приложения wxWidgets будут почти
неотличимы от «родных» [Qt и GTK+ эмулиру-
ют внешний вид и поведение интерфейсных
элементов целевой платформы, делая это
более или менее удачно, – прим. ред.]. Еще
важнее то, что у wxWidgets более либеральная В wxAUI передвигаемый фрейм становится полупрозрачным, предварительно указывая
лицензия, чем у Qt – модифицированная LGPL, место предстоящего размещения.
позволяющая создавать с помощью инстру-
ментария приложения с закрытым исходным созданную wxIFM, wxDockIt и wxFrameLayout, нальности при минимальных усилиях про-
кодом, тогда как версия GPL для Qt требует пытающимися сделать одно и то же. Цель граммиста. Пользуетесь ли вы оригинальным
непременного раскрытия кодов. wxAUI – предоставить полную поддержку вариантом C++ или привязкой к одному из
передвижения и размещения фреймов и пане- других языков высокого уровня – вы согла-

«Максимум функций при лей инструментов в пределах интерфейсов


wxWidgets, а кроме того – упростить сохра-
ситесь, что эта версия определенно стоила
ожидания, и несомненно обогатит ваши GUI
минимальных усилиях нение и загрузку «перспектив» (сохраненных
раскладок).
новыми функциями. Избавиться бы только от
поганого чувства, что она смахивает на MFC от
программиста.» Microsoft… LXF
Новаторский wxAUI
Все это немаловажно, но для нас главное – Разработка сложных GUI с использованием
энтузиазм, с которым сообщество wxWidgets фреймов традиционно была нелегкой задачей,
поддерживает программу, и с версией 2.8 этот поэтому wxAUI можно справедливо считать
энтузиазм не ослабел. Среди новинок – полно- открытием. Но это не революция: Qt представ-
стью переработанный элемент rich text с API в лял (хоть и не такой крутой) QDockWidget еще
стиле стека, напоминающим HTML; инструмент в Qt 4.0, поэтому первенство не за wxWidgets. Вердикт
выбора цвета (color picker), выводящий выбран- К тому же панелям инструментов wxAUI пока
ный цвет на кнопку; и элемент «гипертекст», что нужна доводка: например, предстоит
WXWidgets 2.8
Разработчик: WXTeam
открывающий браузер пользователя при щел- научить их рисовать «стрелочки», когда вся
Сайт: www.wxwidgets.org
чке по гиперссылке. Такое мог бы запрограм- панель не умещается в окне.
Цена: Бесплатно под модифицированной
мировать для себя каждый, а wxWidgets взял Еще одна область, в которой WxWidgets LGPL
да и ликвидировал лишнюю мороку. еще только пробует силы – поддержка пись-
Функциональность 7/10
Эти функции дополняются десятками дру- ма справа налево. Поддержку арабского в
Производительность 9/10
гих мощных инструментов, например, неиз- wxWidgets для Windows намеревались доба-
Простота использования 10/10
менно популярным менеджером «мышиных» вить в рамках проекта Google Summer Of Документация 10/10
жестов, что позволяет wxWidgets прочно удер- Code, но попытка провалилась. Разработчики
живать второе место по простоте использо- wxWidgets подобрали обломки, и в новой вер- С wxWidgets крутым программистом
вания среди GUI API после Gambas. Все нов- сии впервые появилась поддержка арабского может стать каждый.
шества 2.8 работают надежно, но гвоздь про- письма для пользователей GTK.
граммы – несомненно, wxAUI, что означает WX Несмотря на сложности интернационали-
Advanced User Interface (Продвинутый интер- зации, wxWidgets продолжает славную тра- Рейтинг 9/10
фейс). Он призван устранить неразбериху, дицию: предоставлять максимум функцио-

Март 2007 Linux Format 13


Обзоры Дистрибутив Linux

ASPLinux 11.2
Готов ли отечественный Linux к развертыванию на отечественных ПК? Роберт Басыров пытается
взглянуть на последнюю версию ASPLinux глазами простого пользователя.

«В
се начиналось с черной кошки».
Вкратце… Красивая фраза, но суть отража-
ет не полностью. Конечно, дис-
Отечественный трибутив Black Cat Linux послужил основой
настольный
для создания линейки ASPLinux, но нельзя
дистрибутив на
базе Fedora Core. говорить, что этот популярный в России дис-
См. также: ALT трибутив начался с приходом в компанию
Linux и ASPLinux Леонида Кантера и Александра
непосредственно Каневского. До этого объединения был выпу-
Fedora.
щен ASPLinux Release Candidate 3, разра-
батывался собственный менеджер загрузки
ASPLoader. Тем не менее, первые массовые
дистрибутивы ASPLinux «подхватили» нуме-
рацию версий Black Cat Linux, а это говорит
о значении упомянутых программистов в сов-
местном продукте.

Начиналось все
относительно недавно
На тот период, когда возникла идея создания
ASPLinux (а это 2000 год), самым качествен-
ным с точки зрения сборки пакетов и удоб-
ства в работе считался Red Hat 6.2. Однако,
его инсталлятор требовал от пользователя Вездесущий Clearlook добрался и до ASPLinux.
определенных знаний и опыта. Примерно в
то же время вышел дистрибутив Corel Linux, техническая поддержка. При этом основным ит по-другому. Постоянное сотрудничество
который был основан на ограниченном набо- параметром оценки своих продуктов компания инженеров ASPLinux с ведущими производи-
ре пакетов Debian (только рабочая станция), считает стабильность. Все новомодные «наво- телями компьютеров позволяет новой версии
но имел очень красивый и простой в исполь- роты» хороши, но если из-за них потеряется дистрибутива определять и корректно настра-
зовании установщик, доступный даже для хотя бы часть пользовательских данных, вряд ивать при инсталляции самое популярное на
начинающих пользователей. Поэтому внутри ли это кого-то обрадует. сегодняшний день оборудование: контролле-
компании SWSoft («прародителя» ASPLinux) О популярности дистрибутива можно час- ры SATA, видеокарты ATI и NVIDIA (причем с
возникла идея создания дистрибутива, кото- тично судить по форуму сообщества ASPLinux, фирменными драйверами), звуковые карты.
рый сочетал бы в себе функциональность и в котором с нетерпением обсуждались сро- Нельзя сказать, что у пользователей дис-
качество сборки Red Hat с простотой и удоб- ки выхода новой версии – 11.2. Что касает- трибутивов ASPLinux 11.2 не бывает проблем
ством Corel Linux. Исходные тексты установ- ся сравнений с другими дистрибутивами, то по аппаратной части. Были они и у нас, но все
щика Corel были доступны по лицензии GPL, сложно сказать, какая из разработок лидирует это не выходило за рамки типовых проблем
поэтому он был частично использован при в России, так как не существует общеприня- Linux. Что поделаешь, если Canon не пишет
создании инсталлятора ASPLinux. Сначала той и открытой статистики. (Да и возможна драйвера для своих принтеров под Linux?
выпускались только универсальные дистри- ли она для свободного ПО, где с одного диска
бутивы (которые можно было использовать можно установить систему на десятки и сотни Кросс-платформенные
и на рабочем столе, и на сервере) но, начи- компьютеров?) Единственное, что можно ска- приложения
ная с версии 7.3, в ASPLinux была выделена зать точно – то, что ASPLinux явно лидирует Несмотря на заметное противостояние закры-
серверная ветвь, так и названная – ASPLinux по коробочным продажам через сеть компа- того и открытого ПО, все большее развитие
Server. нии 1С. получают кроссплатформенные приложения.
Этой же линии (углубление различий меж- Для обеспечения работы таких приложений в
ду настольной и серверной версиями) компа- Обнаружено новое новом дистрибутиве предусмотрена интегра-
ния придерживается сейчас и намерена при- устройство? ция с Mono, открытой реализацией Microsoft
держиваться в будущем. В настольных верси- Поддержка нового оборудования – одна из .NET. В состав ASPLinux 11.2 входит несколь-
ях будет осуществляться поддержка самого постоянных проблем для разработчиков ко приложений, написанных с использовани-
современного оборудования и использоваться любых дистрибутивов. Если драйвера для ем Mono:
последние версии рабочих сред, а в серверную Windows создатели видео- и звуковых карт и персональная поисковая система Beagle;
будут включаться стабильные и проверенные прочего компьютерного «железа» разрабаты- фотоальбом F-Spot;
компоненты, обеспечиваться расширенная вают сами, то в Linux, как известно, все обсто- менеджер заметок Tomboy.

14 Linux Format Март 2007


Дистрибутив Linux Обзоры

Персональная поисковая система Beagle етарные драйвера входят в состав дистри- IP-телефония и
интегрирована в графическую среду Gnome и бутива, так что у вас не должно возникнуть видеоконференции
позволяет найти введенную фразу в докумен- проблем, если конечно, ваше оборудование Голосовое общение через Интернет приобре-
тах OpenOffice.org, сообщениях электронной достаточно современное. тает все большую популярность. Приложение
почты (базы Evolution), диалогах IM-клиента Появление трехмерного рабочего сто- Ekiga, входящее в ASPLinux 11.2 и ранее
Gaim, кэше браузера Firefox. ла – не единственное обновление дизайна известное как GnomeMeeting, теперь поддер-
ASPLinux, как и его родитель, Fedora Core, в ASPLinux 11.2. Основной темой оформле- живает не только протокол H.323 (Microsoft
тяготеет к Gnome. Любителям KDE приходится ния теперь является Clearlook. В сочетании NetMeeting и другие приложения на платфор-
устанавливать свои «красивости» вручную. У с «новым лицом» экрана входа в систему и ме Windows), но и SIP, который использует-
нас не получилось с ходу инсталлировать эту новыми обоями рабочего стола интерфейс ся в Google Talk и программной АТС Asterisk.
рабочую среду даже с использованием штат- стал более приятным для глаз. Ekiga также может поддерживать сервис
ных средств: менеджер пакетов не нашел биб- Но и трехмерность рабочего стола, и сме- STUN, решающий проблемы с NAT-маршрути-
лиотеку libpostproc. Пришлось искать, скачи- на основной темы – это внешние, видимые заторами. Если говорить простым языком, то
вать и ставить пакет вручную. Дело хозяйское, изменения. Для пользователя гораздо важнее с помощью Ekiga можно звонить и принимать
но с таким подходом о массовости использо- будет другое – повышение производительнос- звонки, не имея публичного IP-адреса и не
вания ASPLinux говорить не приходится. ти. Несколько важных составляющих рабочего настраивая переадресацию портов на шлюзе.
Есть еще один не совсем понятный момент окружения GNOME, как то: отрисовка текста,
в работе с пакетами – штатная утилита Yum не выделение памяти, некоторые отдельные при- И напоследок
позволяет автоматически использовать уста- ложения, теперь работают значительно быст- Есть еще несколько мелких улучшений, кото-
новочный DVD для поиска и инсталляции рее. В результате уменьшается время загрузки рые, возможно, и не так значительны, но
пакетов. Выбор профиля Local не обеспечи- рабочей среды, программы в целом быстрее интересны. В Evolution была реализована под-
вает обращения к диску, для этого необходи- реагируют на ваши действия, а это значитель- держка общих календарей с помощью прото-
мо редактировать конфигурационные файлы но повышает комфортность работы. кола CalDAV. Этот протокол поддерживается
вручную. различными серверами совместной работы,
Однако надо заметить один положитель- Для владельцев ноутбуков включая свободно доступный сервер Hula.
ный момент. Yum Extender, при использовании В ASPLinux 11.2 была добавлена пара опций, Кроме этого, ASPLinux 11.2 может создавать и
его с терминала, поддерживает докачку. После которые облегчат жизнь владельцам ноут- использовать логические тома LVM. Установка
обрыва связи Yum сам подхватывает загрузку буков. Прежде всего, это NetworkManager, операционной системы на массив логических
недогруженных файлов. Для «счастливых» который избавляет пользователей от необ- томов LVM позволяет гибко управлять дис-
обладателей модемов это бесценное свойство. ходимости вручную переключаться на новую ковым пространством и при необходимости
Жаль, что при использовании графического сеть при перемещении из одного помещения в расширять объем дискового пространства «на
интерфейса такого не происходит. другое. NetworkManager может автоматически лету».
переключится с проводной сети на беспровод-
3D desktop ную и обратно. Резюме
В наше время невозможно обойти в обзоре Функция управления питанием для ноут- ASPLinux – удобный и надежный дистрибутив.
дистрибутива тему трехмерного рабочего сто- буков – одна из самых важных. Новый пакет Те, кто уже работал с ним, вряд ли сменят свой
ла, точно так же, как трудно представить себе gnome-power-manager позволяет настраи- ASP на что-то другое. Для новичка этот дис-
современный дистрибутив без этой функции. вать реакцию операционной системы на такие трибутив станет точно таким же полигоном,
В ASPLinux 11.2 включен Xgl от компании события, как критический разряд батареи, как и любой другой. Но надо отметить один
Novell, как самая стабильная, по мнению раз- закрытие крышки и другие. Пользователь момент: ASPLinux – отечественная разработ-
работчиков, реализация [Fedora Core исполь- может настроить для каждого из этих событий ка. Он глубже других дистрибутивов русифи-
зует AIGLX, разработанный Red Hat, – прим. свое действие: переход как в спящий режим цирован и документирован, а это далеко не
ред.]. Необходимые для работы Xgl пропри- (suspend), так и ждущий (hibernate). малый плюс для тех, кто только вступает в
мир Linux. LXF

Вердикт
ASPLinux 11.2
Разработчик: ASPLinux
Сайт: www.asplinux.ru
Цена: 775 р. (версия Standard)

Функциональность 8/10
Производительность 8/10
Простота использования 7/10
Документация 8/10

Неплохой выбор для русскоязычных


пользователей, особенно не имеющих опыта
работы в Linux.
Менеджер
фотографий F-Spot –
хороший пример
Рейтинг 8/10
использования Mono.

Март 2007 Linux Format 15


Обзоры Почтовый сервер

Kerio Mail Server 6.3


Вдоволь наигравшийся с макросами m4 Андрей Тусеев рассматривает альтернативу Sendmail,
которую можно настроить одной мышью.

П
ользователи Linux вряд ли могут
Вкратце… жаловаться на недостаток почтовых
серверов. Для идейных противников
Коммерческий старого доброго Sendmail есть Postfix, qmail
почтовый сервер
для Linux
и множество других альтернатив; обеспечение
с функцией web- доступа к почтовому ящику можно поручить
доступа. как крохам вроде popa3d, так и тяжеловесам:
См. также: Axigen. Cyrus и прочим. Для желающих иметь доступ
к письмам даже из интернет-кафе, затерянно-
го где-то в предгорьях Анд, есть SquirrelMail.
Богатый ассортимент – это прекрасно, но есть
и обратная сторона медали – администратору,
отвечающему за почтовый шлюз, необходи-
мо изучить (а в дальнейшем – поддерживать)
несколько различных продуктов, каждый из
которых обладает собственными правилами
(и тонкостями) настройки.
Решения вроде Kerio Mail Server (KMS) стре-
мятся устранить этот недостаток. Пришедшие
из мира Windows, они являются комбайном
типа «все в одном» и стремятся предоста- Круговые диаграммы порадуют «пиджаков», но ничего не скажут «технарям».
вить понятный и единообразный графичес-
кий интерфейс, упрощающий сопровождение.
Мы решили оценить плюсы и минусы этого что вам следует позаботиться об этом заранее. на этапе первичной настройки. После этого
подхода, установив Kerio Mail Server 6.3.1 на На следующем шаге создается учетная запись откроется окно, представляющее все возмож-
систему под управлением CentOS 4.4, двоично администратора почтового сервера, затем – ности сервера в виде древовидного списка.
совместимую с RHEL. указывается каталог для хранения почтовых Итак, что же предлагает нам Kerio?
сообщений, и – вуаля! Ваш сервер практичес- Во-первых, стандартный набор служб:
Первое знакомство ки готов к работе – осталось только запустить SMTP, POP3, IMAP, LDAP, HTTP со все-
Продукт распространяется в виде RPM-пакета его командой /etc/init.d/keriomailserver start. В ми безопасными разновидностями.
и поддерживает практически все распростра- целом, процесс первичной настройки серве- «Самоподписанный» (self-signed) сертификат
ненные серверные системы (можно отметить ра в Linux повторяет таковой в Windows, что можно сгенерировать при помощи мастера.
разве что отсутствие модного нынче Ubuntu весьма порадует мигрантов с этой ОС. Во-вторых, виртуальные домены (способ по-
6.06 LTS): Red Hat Enterprise Linux 3/4, Fedora разному трактовать учетные записи в зависи-
Core 4/5, SUSE Linux 10.0/10.1. Огорчает толь- Гюльчатай, открой личико! мости от того, к какому домену они принад-
ко отсутствие документации – в дистрибутиве Управление работающим сервером осущест- лежат) с поддержкой служб каталогов Active
ее нет совсем, а информация на сайте посвя- вляется посредством графической консоли, Directory, Apple Open Directory и авторизацией
щена, в первую очередь, версии для Windows запускаемой командой kerioadmin. Если раз- через PAM/Kerberos, так что в этой облас-
(впрочем, принципиальных отличий не так уж работчики Kerio Mail Server задавались целью ти Kerio Mail Server вряд ли уступает своим
и много). После установки пакета вам будет выдержать ее в духе традиционного для Unix закрытым конкурентам. Более того, KMS поз-
предложено прочитать краткую справку, оста- графического инструментария (Motif, конеч- воляет настроить разные методы авториза-
новить сервисы Sendmail/Postfix и запустить но... А вы что подумали?), то им это впол- ции для различных доменов: например, один
утилиту cfgwizrd для первичной настройки не удалось. Несмотря на то, что kerioadmin домен авторизуется в одной службе каталогов,
сервера. Cfgwizard использует текстовый окон- использует Qt, элементы интерфейса выгля- другой домен авторизуется непосредственно
ный интерфейс, что слегка удивляет – от ком- дят архаичными и плохо согласуются с со- через PAM, и т.д. Помимо этого, предлагает-
мерческого продукта обычно ждешь приятных временным рабочим столом. Продукт под- ся контент-фильтр, включающий антивирус
графических мастеров. Тем не менее, со своей держивает 12 языков, включая русский, но (интегрированный – от McAfee или внешний –
задачей мастер cfgwizard справляется без про- опцию для их смены найти не так-то просто, AVG, NOD32, Sophos, Symantec и, конечно же,
блем. Вас попросят указать имя первичного особенно человеку, не владеющему англий- СlamAV. Выбор за вами, только имейте в виду,
почтового домена и его почтового хоста, кото- ским (впрочем, cреди администраторов их что в случае использования внешнего антиви-
рое, естественно, должно указывать на маши- становится все меньше и меньше). руса об обновлении баз придется заботить-
ну с запущенным Kerio Mail Server. Настройка Для входа в систему необходимо исполь- ся самостоятельно), контроль вложений (в
DNS-зон в обязанности мастера не входит, так зовать имя пользователя и пароль, указанные списке потенциально опасных расширений по

16 Linux Format Март 2007


Почтовый сервер Обзоры

умолчанию почему-то не активировано *.EXE)


и антиспам. О последнем компоненте ска-
жем чуть более подробно. Встроенный спам-
фильтр KMS поддерживает систему рейтингов
в стиле SpamAssassin, «черные» списки (как
RBL, так и пользовательские; имеется воз-
можность добавлять баллы в рейтинг вместо
отказа в получении письма), «белый» список
(по IP), технологии Caller ID и SPF, а также
несколько примитивную систему пользова-
тельских правил. Серые списки в явном виде
отсутствуют – их заменяет механизм подав-
ления спамерской активности, внедряющий
дополнительные циклы ожидания в обще-
нии MTU/MTA. Судя по всему, спам-фильтр
построен на базе SpamAssassin, что, на наш
взгляд, вполне соответствует философии
продуктов класса Kerio Mail Server: «предо-
ставлять стандартные решения, но в удобной Kerio Web Access –
форме». Тонкая настройка параметров филь- подозрительно
трации не предусмотрена, но с помощью име- напоминает OWA,
ющихся средств можно вполне надежно защи- но поддерживает
Mozilla.
титься от нежелательной корреспонденции.
Kerio Mail Server может не только высту-
пать в роли MTA, принимая всю почту, адре- рис.), казалось бы, должна помочь, но не ние. Kerio Mail Server ориентирован на ком-
сованную вашему домену, но и просто пери- тут-то было: она всего лишь дополняет отчет пании с гетерогенными сетями/серверами и
одически загружать сообщения из другого еще более бесполезным данными, такими, средним (или даже небольшим) IT-бюджетом.
почтового ящика, поддерживаемого, напри- как суммарный размер почтовых сообщений, Он также должен понравиться мигрантам с
мер, вашим провайдером. Скачанные письма прошедших через сервер. Не хватает настро- Windows, особенно тем, кто уже использовал
можно сортировать на основе заголовков. ек детализации журналов, потому как на одну продукты Kerio на этой платформе. LXF
Поддерживаются протоколы POP3 и ETRN – сессию с сервером в журнале отведена только
последний используется не так уж часто, но одна строка со множеством параметров, по
лишняя функция, очевидно, не помешает. которой очень сложно отследить, что именно
Отдельного упоминания заслуживают еще пытался сделать клиент.
две функции – архивация писем (Archiving)
и резервирование (Backup). KMS позволяет Выходим в Сеть
хранить всю корреспонденцию в структуриро- Конечно, универсал, на роль которого пре-
ванных архивах, так что всегда можно найти и тендует Kerio Mail Server, не может обходить-
«поднять» старое/забытое/удаленное письмо. ся без web-почты. Клиент Kerio Web Access
Это будет полезно в организациях, в которых являет собой слабую попытку сымитиро-
учет переписки имеет принципиальное значе- вать Outlook Web Access, предоставляемый
ние (а где не имеет?). Microsoft Exchange, но его внешний вид гораз-
Резервирование также реализовано прос- до более приятен, чем у SquirrelMail в настрой-
то. По сути, достаточно указать каталог, в ке по умолчанию. KWA, так же как и OWA, не
котором следует сохранять резервные копии любит Opera, но к счастью, поддерживает
(конечно, крайне желательно, чтобы он физи- Mozilla. Порадовало также наличие календаря,
чески находился на отдельном компьютере как группового, так и персонального.
или хотя бы диске), а набор предустановлен- Для поддержки web-почты не нужно кон-
ных правил резервирования позаботится обо фигурировать Apache: web-сервер встроен в
всем остальном. Поддерживаются как полные, продукт, и его можно настроить на исполь-
Вердикт
так и дифференциальные резервные копии. зование любого порта или группы портов.
Kerio Mail Server 6.3
Пожалуй, единственная область Kerio Mail Kerio Web Access написан на PHP (KMS содер-
Server, выпадающая из сформулированного жит свой собственный интерпретатор версии Разработчик: Kerio Technologies Inc.
выше принципа «как у всех, но удобнее» – это 4.3.11). Исходный код, за исключением моду- Сайт: www.kerio.com/ru
Цена: от €400 (лицензия на 10
ведение статистики и файлов журналов. И лей расширения, доступен в человеко-чита- пользователей)
то, и другое откровенно слабо и практически емой форме, что, вероятно, позволит (при
не поддается настройке. Вероятно, сводная необходимости) доработать KWA под нужды Функциональность 6/10
картина происходящего на сервере понра- организации. Производительность 6/10
Простота использования 8/10
вилась бы Большому Боссу, но она не несет
Цена 6/10
достаточной информации для администрато- Заключение
ра, желающего произвести сколько-нибудь Следует признать, что функциональность дан- Должен понравиться новичкам и
серьезный анализ. Журналы событий пред- ного продукта (при сравнительно небольшой мигрантом, но вы вряд ли захотите заменить
ставлены в большом количестве, но содер- цене) впечатляет. Конечно, в нем нет ничего им уже настроенный Sendmail или Postfix.
жащаяся в них информация сама по себе не такого, что не смог бы настроить знающий
может быть использована для оценки про- администратор на базе стандартных средств, Рейтинг 6/10
исходящего. Кнопка To Advanced Mode (см. но зато и не надо тратить время на их изуче-

Март 2007 Linux Format 17


Сравнение Клиенты BitTorrent

Сравнение Каждый месяц мы анализируем для вас


тысячи программ – а вы можете
отдохнуть! на DVD

Клиенты BitTorrent
Во избежание узких мест при скачивании нового дистрибутива, Морис Келли интересуется
клиентами BitTorrent последнего урожая.

Про наш тест...


Хороший клиент BitTorrent должен предостав-
лять пользователю возможность одновремен-
но поддерживать множественные загрузки,
так что мы тестировали функции контроля за
множеством загрузок и назначения приорите-
тов конкретным торрент-файлам. Важна так-
же способность приостанавливать и переза-
пускать закачки, или даже возобновлять закач-
ку, первоначально начатую другим клиентом.
Дополнительно мы проверяли клиенты на спо-
собность создавать торрент-файлы, чтобы
пользователи могли рассылать собственные
большие файлы.
Тестовая среда для этого Сравнения
включала несколько систем. Первая – ком-
пьютер с Ubuntu 6.10 (Edgy), запущенным
на Pentium M 750 с 1 ГБ ОЗУ, мы использо-
вали ее главным образом для тестирования
графических клиентов. Вторая – система
Debian Sarge, работающая на Celeron 2.66
Paul Blachford

ГГц с 512 МБ ОЗУ, используемая для тести-


рования клиентов, работающих из команд-
ной строки или через web-интерфейс.

Н
равится оно вам или нет, но рас- дни в виде обновленной инкарнации, но «сидер» (seeder), и все последующие клиенты
Наш пространение файлов с помощью соседствует со множеством других клиентов. будут взаимодействовать с этим хостом для
выбор пиринговых (peer-to-peer) сетей ста- В этом Сравнении мы взглянем на «моло- получения частей «торрента». Когда первона-
Azureus с. 20 ло неотъемлемой частью современного ком- дую поросль» приложений, чтобы посмот- чальная раздача (seeding) завершится, ответ-
BitTornado с. 21 пьютерного мира. Со времен вспышки Napster реть, как они поживают не просто как клиен- ственность за распространение разделяется
BitTorrent с. 19 в 2000 г. число протоколов передачи файлов ты, но как полноценные менеджеры закачек среди тех, кто уже скачал части «торрента».
Deluge с. 19 росло как на дрожжах. Организации, подоб- BitTorrent. Благодаря таким свойствам BitTorrent был
KTorrent с. 21 ные RIAA (Американская ассоциация индустрии принят рядом Linux-дистрибутивов, желаю-
TorrentFlux с. 22 звукозаписи) и MPAA (Американская кинема- И как это работает? щих разгрузить свои FTP-серверы.
Transmission с. 22 тографическая ассоциация), делали все воз- Чтобы распространять чтыо-то через BitTorrent, За прошедшее с момента создания вре-
можное, чтобы остановить прогресс; в итоге, создается торрент-файл, содержащий инфор- мя данная технология не стояла на месте, и
выжили только сильнейшие протоколы. Один мацию о «трекере» и о файлах, включенных в наши дни предоставляются такие функции,
из них – BitTorrent, разработанный в 2001 г. в этот «торрент». Торрент-файл затем публи- как бестрекерные «торренты», позволяющие
Брэмом Коэном [Bram Cohen]: он оказался куется и загружается конечными пользовате- еще больше децентрализовать распростране-
особенно полезен для распространения боль- лями. Когда кто-нибудь открывает торрент- ние. Клиенты, которые используют распре-
ших файлов. файл в клиенте, то устанавливает соединение деленную хэш-таблицу (DHT, distributed hash
Первоначальный «основной» клиент с трекером, то есть приложением, которое table), способны взаимодействовать непо-
BitTorrent, ориентированный на командную предоставляет файл наряду с информацией средственно друг с другом для получения
строку, был написан на Python и делал свою о других клиентах, у которых можно получить информации о файле, а не полагаться на еди-
работу очень хорошо. Он доступен и в наши содержимое «торрента». Первый клиент – это ную точку отказа.

18 Linux Format Март 2007


Клиенты BitTorrent Сравнение

BitTorrent
«Официальный» не значит «лучший»…

Д
овольно велики шансы, что устанав- флаг «Download First» тем, которые вы хотите
ливая BitTorrent-пакет(ы) из вашего получить раньше других. Если нижняя панель
дистрибутива, вы получите офици- открыта, в ней отображается аккуратная ста-
альный клиент BitTorrent – также известный тистика и график скорости для всего прило-
как «основной» (mainline) клиент. Это про- жения, а отдельные «торренты» имеют подоб-
дукт развития первоначального клиентского ный график в собственных данных.
ПО, написанного Брэмом Коэном; на дан- Конкурентное преимущество официально-
ном этапе – версия 5.0.3. Выдержанный в го клиента – в том, что его разработали изоб-
духе философии Unix, пакет содержит ряд ретатели протокола, и он должен бы быть луч-
отдельных инструментов: прежде всего это шим и наиболее эффективным загрузчиком.
BitTorrent для закачки и Maketorrent для созда- Но мы не выявили этого в данном Сравнении.
ния торрент-файлов. Прямо не верится, что разработчики основного Панель поиска отправляет вас на сайт BitTorrent, но хорошо ли это –
вопрос спорный.
Есть консольные средства и для загрузок, клиента упустили случай сделать его «универ-
и для создания торрент-файлов; выделенные самом» BitTorrent. ПО явно относится к «серед-
инструменты Launchmany позволяют консоль- някам», web-сайт и поисковая машина – тоже.
ным инструментам оперировать множеством Он может быть полезен для изолированных
Вердикт
«торрентов» за раз. Включено также трекер- загрузок, но для людей, желающих получить
BitTorrent
ное ПО. полноценный менеджер закачек, эта програм-
Версия: 5.0.3
Графический интерфейс модернизиро- ма не подходит.
Сайт: www.bittorrent.com
ван и оперирует множеством «торрентов» в
одном окне, а также поддерживает панель Цена: бесплатно по лицензии BitTorrent
Open Source License
поиска, предоставляющую доступ к поиско-
вой машине на сайте www.bittorrent.com – увы,
«Сделан изобретателями Довольно средний клиент, который
растратил потенциал, заложенный в роли
его содержимое не впечатляет, да и маши-
на слабовата. «Торрентам» можно назначать
протокола, и поэтому официального клиента.

приоритеты: просмотрев файлы, установить должен бы быть лучшим.» Рейтинг 5/10

Deluge
Новичок в классе.

Н
амерение Deluge [Потоп] – принес- ную фунциональность. Среди расширений –
ти клиент BitTorrent на основе GTK монитор загрузки процессора, отслеживание
на рабочие столы, например, Gnome сетевой активности и, для борьбы с силами
и Xfce. У него обычные проблемы молодо- зла, расширение Anti-RIAA AI. Разработчикам,
го проекта: недостаток функций и недоста- однако, следует помнить, что на расширения
ток документации. Да и для освоения это нельзя переваливать основную функциональ-
не самый простой клиент. Мы тестировали ность: мы заметили, что один из ключевых
При семичасовом ожидании, график использования ширины канала
версию 0.4; должны отметить, что в гряду- разработчиков намекает на форуме Deluge,
слегка скрашивает жизнь.
щей 0.5 обещают переписать ряд основных что поддержка UPnP – неплохой кандидат в
компонентов. расширения. А вот мы предпочли бы видеть
Основное окно предоставляет панель ин- ее в основном пакете.
струментов, поле, содержащее список актив- Даже подпертый расширениями, Deluge
ных «торрентов», и еще одно поле, с допол- выглядит скудным. Это довольно милый кли-
нительной информацией по выделенному в ент – он хорошо смотрится и хорошо интег-
данный момент «торренту». Deluge не позво- рируется в окружение рабочего стола. Но от Вердикт
ляет устанавливать ограничения на скорость клиента, основанного на сторонней библи-
загрузки на каждый «торрент», но есть три отеке для поддержки протокола, мы ожида- Deluge
кнопки на панели инструментов для переме- ли лучшей функциональности по управлению Версия: 0.4
Сайт: www.deluge-torrent.org
щения «торрента» выше, ниже и на самое дно «торрентами». К сожалению, ему недостает
Цена: бесплатно по лицензии GPL
в системе базовых приоритетов. Для загрузки первоклассных функций, к тому же нет доку-
Проект не без потенциала, но пока еще
можно отметить определенные файлы, но ментации. Он удобен для разовых закачек, но
слишком юн, чтобы тягаться с большими
назначение приоритетов отдельным файлам отсутствие поддержки UPnP и слабая поддер- парнями.
не предусмотрено. жка приоритетов означают, что этот клиент не
Deluge – очередной клиент с системой пригоден для продвинутых пользователей.
расширений, предоставляющих дополнитель-
Рейтинг 5/10
Март 2007 Linux Format 19
Сравнение Клиенты BitTorrent

Azureus
Нашпигованный функциями клиент на базе Java.

В
первые появившись на SourceForge в ки или продолжения их раздачи с помощью
июне 2003 г., проект Azureus недав- Azureus. Аналогично другим клиентам, это
но достиг «главной» версии 2.5.0.0. приложение при следующем запуске возоб-
Благодаря языку Java, Azureus – подлинно новляет работу со всеми предыдущими «тор-
кросс-платформенное приложение, но, к рентами», а кроме того, предлагает собствен-
сожалению, для запуска нуждается в установ- ную функцию «Fast Resume». Хотя нормаль-
ке виртуальной машины Java (JVM, см. врезку ное возобновление работает только с завер-
«Клиенты на базе Java»). шенными фрагментами «торрента», Azureus
При запуске приложения нас встретил способен сохранять частично загруженные
«мастер»: он провел нас через некоторые фрагменты до следующего запуска, когда он
основные настройки и предоставил ряд ссы- перезапустится с середины фрагмента.
лок на сайты, полезные для начинающих в Поддержка закачек – дело важное, но
BitTorrent – вроде мелочь, но дружелюбное не менее важно изобилие дополнительных
отношение к пользователю – козырь приложе- функций. Создать новый торрент-файл пора-
ния. По завершении открылось основное окно, зительно легко: просто выберите файл или
состоящее из панели инструментов, пане- каталог для публикации и присвойте трекеру
ли загружаемых «торрентов» и панели для имя. Другая приятная функция – способность
составленных или раздаваемых «торрентов». страницами, дающими общую информацию и BitTorrent жадноват размещать трекер прямо в Azureus, что иде-
сведения о подключенных «коллегах» (peer) в до ресурсов, но его ально для распространения частных «торрен-
Как это выглядит виде красивого графического представления просто нельзя не тов» среди небольшой группы людей, не нуж-
По щелчку на кнопке «Open Torrent» откроет- их роя [swarm – набор компьютеров, участву- попробовать! дающихся в публичном трекере. Как и многие
ся подробный диалог, позволяющий добавить ющих в обмене данными, – прим. пер.], и под- другие клиенты, Azureus поддерживает децен-
торрент-файлы из списка источников, вклю- гружаются данные по отдельным фрагмен- трализованный BitTorrent с помощью разно-
чая файлы и URL. После выбора «торрен- там и файлам, составляющим ваш «торрент». видности DHT (распределенных хэш-таблицы),
та» отобразится список содержащихся в нем Возможно, при скачивании всего-навсего ISO- однако его тип DHT отличается от основно-
файлов, и вы сможете отметить для закачки образа дистрибутива Linux оно и лишнее, зато го клиента BitTorrent и годится только для
только некоторые из них. После добавления очень удобно при загрузке большой коллек- пользователей Azureus. Правда, таких поль-
и настройки «торрента» Azureus установит ции файлов. зователей полно, но трудно игнорировать тот
соединение и начнет закачку. Если ваш марш- На вкладке «Info» можно увидеть состоя- факт, что обособленный подход к DHT делает
рутизатор поддерживает UPnP (universal plug ние загрузки отдельных файлов или привес- Azureus чуть менее привлекательным.
and play), Azureus любезно настроит его, что- ти в порядок их приоритеты, чтобы самый Наконец, какое приложение в наши дни
бы позволить вам принимать входящие соеди- интересный трек приплыл первым. Эта стра- считается завершенным без способности к
нения. В процессе загрузки проницательно- ница показалась нам единственным местом, расширениям? Если расширять любимые при-
му пользователю предоставляется изобилие где можно восстановить файл, первоначально ложения – ваш конек, то Azureus сослужит
информации, доступной по двойному щелчку отмеченный как игнорируемый в «торренте». вам хорошую службу. Несколько расшире-
на строке «торрента» в панели загрузки. Конечно, это несложно сделать и таким обра- ний поставляются в стандартной инсталляции,
При этом появляется новая вкладка с под- зом, но группа «флажков» была бы, вероятно, но беглый просмотр страницы http://azureus.
проще и более интуитивна. Вкладка «Options» sourceforge.net/plugin_list.php обнаруживает
дает быстрый доступ к параметрам настрой- массу дополнительных, от внешнего вида до
Клиенты на ки, например, скорости выгрузки/скачивания методов удаленного доступа. Из наиболее
и ограничению соединений. Они мгновенно ярких – отправка сообщений о статусе по
базе Java вступают в силу, и кроме того, доступны в электронной почте и SMS; личности вроде нас
контекстном меню (по нажатию правой клави- хотят сразу же узнавать, что закачка дистри-
Поскольку приложения Java обычно компи- ши мыши) на главной панели «торрентов». бутива завершена, без лихорадочной ежеми-
лируются в байт-код, требуется, чтобы до нутной проверки статуса!
запуска приложения была развернута вир-
туальная машина. Она предоставляет неза-
Умные функции
Azureus интуитивно понятен в работе – в зави-
висимость от платформы, но ценой общей
симости от выбранного уровня использования
производительности. Вы можете выбрать
одну из нескольких виртуальных машин на грамотно подобрано число доступных опций
Вердикт
выбор, включая Hot Spot от Sun и пару настройки, чтобы приложение не выходило за
Azureus
GNU-альтернатив. рамки заданной сложности. Частично загру-
Версия: 2.5.0.0
К сожалению, нам не удалось запустить женные «торренты» из других клиентов легко Сайт: http://azureus.sourceforge.net
Azureus под GNU-интерпретатором Java импортируются для возобновления загруз- Цена: бесплатно по лицензий GPL
(GIJ). Для компиляции Azureus в родной
байт-код при помощи GNU-компилятора Здесь достаточно функций и опций, чтобы
Java (GCJ) было сделано многое, но на дан- «Поддержка закачек – удовлетворить любого, а с расширениями его
возможности действительно безграничны.
ном этапе советуем для верности устано-
вить последнюю JRE от Sun. это важно, но не менее Рейтинг 9/10
важны другие функции.»
20 Linux Format Март 2007
Клиенты BitTorrent Сравнение

BitTornado
Расширенная версия основного клиента.

П
ользователи более старых офици- бросу портов, но людям этот фокус удавался.
альных клиентов BitTorrent мгно- Одно из основных ограничений – невозмож-
венно разберутся, как работает ность управлять множеством «торрентов» в
BitTornado – это, по сути дела, параллельная одном графическом окне. Другие клиенты
ветвь первоначального клиента; на самом уже управляют множественными соединени-
деле, дистрибутивы на основе Debian, как ями, а в BitTornado приходится делать все
правило, ставят два набора ПО параллельно вручную, путаясь в толпе открытых на экране
и проецируют один набор для использования окон. Можно использовать один из консоль-
под общими именами программ. Как можно ных инструментов, разработанных для множе-
ожидать, BitTornado поставляется с набором ственных загрузок, но они довольно топорны BitTornado дает полезную информацию и множество опций, но пока
отдельных программ, которые решают задачи и не интерактивны. не развит как клиент.
типа скачивания конкретного «торрента» при Неплохо, что BitTornado требует мало
помощи графического интерфейса, консоли памяти и прост в работе, но этого мало, чтобы
или curses, а также запуска множественных оправдать его использование. Заслуженное
загрузок одной командной строкой. Есть еще признание он получает как основа для других
инструменты для создания торрент-файлов и BitTorrent-менеджеров, типа TorrentFlux, или
Вердикт
манипулирования ими, а заодно и трекером. как компонент пользовательских скриптов.
BitTornado
Впервые появившись, BitTornado заявил
Версия: 0.3.17
ряд улучшений по сравнению с официаль- Сайт: www.bittornado.com
ным клиентом, хотя справедливо будет отме- Цена: бесплатно по лицензии MIT
тить, что разработка официального клиента Полезный инструмент как основа для
с тех пор все наверстала. Среди разрекла-
мированных функций – поддержка UPnP и
«Пока невозможно управлять другого ПО, но не внушающий уважения
при непосредственном использовании.
назначение приоритетов отдельным файлам. множеством «торрентов» из Рейтинг 4/10
К сожалению, мы не сумели добиться работы
UPnP, и пришлось прибегнуть к ручному про- одного графического окна.»

KTorrent
Собственный торрент-клиент KDE.

В
озможно, вы не согласитесь с нами, но фильтрацию. Приятно, что они существуют, но
мы нашли, что приложения, ориенти- в наши дни данные функции почти обязатель-
рованные на KDE или Gnome, имеют ны для подобного приложения, и не должны
тенденцию быть бледными копиями авто- бы выступать как опциональное дополнение.
номных версий. К счастью, KTorrent, похоже, Подключены расширения или нет, но в
имеет большинство свойств, предлагаемых некоторых областях KTorrent явно слаб. Мы
лучшими клиентами, и поддерживает боль- не сумели найти способа точной настрой-
шую часть требуемых функций, хотя и не без ки приоритета определенного «торрента» по
посторонней помощи. сравнению с другими – здесь есть менеджер
Работает это приложение вполне предска- очередей, но зачем он, не ясно, поскольку Функции, необходимые любому BitTorrent-клиенту, упрятаны в
зуемо – списки скачиваемых и раздаваемых документации к нему не имеется. И хотя мож- Раздел настройки расширений.
«торрентов» появляются вверху, а пара вкла- но назначать приоритеты отдельным файлам,
док расположена внизу экрана. Вкладки выво- нету указаний, применимы ли они к множест-
дят данные о выбранном торренте, в списке венным «торрентам». В принципе, приложе- Вердикт
файлов помечаются выбранные для загруз- ние стоящее, и его включили в состав рабо-
ки. К сожалению, без расширения infowidget чего стола KDE не зря. Мы использовали по- KTorrent
доступна весьма скудная информация. следний стабильный релиз; возможно, версия Версия: 2.0.3
Сайт: http://ktorrent.org
И это ключевой момент касательно 2.1 включит больше функций.
Цена: бесплатно по лицензии GPL
KTorrent: будучи просто установлен в конфи-
Полезный и стабильный клиент, но
гурации по умолчанию, он функционально
побольше бы стандартных функций.
бедноват и требует активации ряда расшире-
ний через меню настройки. Со стандартной «Вынутый из коробки
инсталляцией идут расширения, предостав-
ляющие импорт торрент-файлов, UPnP и IP- KTorrent бедноват.»
Рейтинг 6/10
Март 2007 Linux Format 21
Сравнение Клиенты BitTorrent

TorrentFlux
Многопользовательский торрент-менеджер на базе
web-технологий.

Н
е каждый любитель скачивать «тор- создается пользователь-администратор, име-
ренты» заставляет полноценный гра- ющий право создавать последующих пользо-
фический клиент работать кругло- вателей. Каждый пользователь может затем
суточно. Позвольте представить TorrentFlux, добавлять свои собственные «торренты» для
обещающий web-интерфейс для закачек на загрузки и, как только «торрент» скачан, заби-
машине без постоянного контроля: он идеа- рать его из своей области. Это позволяет адми-
лен для домашних серверов, подключенных к нистратору отслеживать такие аспекты, как
широкополосному каналу, или для освоения занятость канала, и ограничивать число «тор-
лимита трафика на учетной записи хостинга. рентов» с помощью менеджера очереди, чтобы
Мы мигом привели это приложение в рабо- пользователи не заграбастали себе его весь. Для упрощения скачивания нескольких файлов за один раз,
чее состояние из архива, но помните о зависи- TorrentFlux – отличный маленький кли- TorrentFlux пакует их в архив – удобно!
мостях: понадобится Apache/PHP, MySQL и ент, хотя в некоторых отношениях пока несо-
как минимум Python 2.2, поскольку за сценой вершенен. Например, можно создавать «тор-
TorrentFlux скрывается BitTornado. BitTornado рент» только из файлов, уже расположенных
поддерживает UPnP, и нас малость удивило, в области закачки, так что создание новых
Вердикт
что в TorrentFlux это, похоже, не работает: «торрентов», безусловно, несколько затрудне- TorrentFlux
пришлось открывать порты на маршрутиза- но. Web-интерфейс имеет свои причуды – все Версия: 2.3 final
торе вручную. К сожалению, здесь выплыла выполняется не столь мгновенно, как в нор- Сайт: www.torrentflux.com
еще одна проблема: отсутствие документации. мальном клиенте. Цена: бесплатно по лицензии GPL
Опытные пользователи BitTorrent-клиентов Когда требуется удаленный доступ, это
разберутся с системой довольно быстро, но
новичкам, пожалуй, лучше сперва поупраж-
«Администратор верное дело.

няться со специализированным клиентом. отслеживает занятость Рейтинг 8/10


Необычная функция TorrentFlux – много-
пользовательский аспект. При первом входе канала.»

Transmission
Легковесный клиент для запуска ваших закачек.

T
ransmission – это кроссплатформенный одного «торрента» перед другим. Параметры
клиент, работающий на Mac OS X, BeOS настройки сводятся к ограничению скоростей
и Linux с помощью инструментария GTK. выгрузки и скачивания и указанию прослуши-
Сами же разработчики называют его легковес- ваемого порта. Используя это приложение, вы
ным, и это ясно с первого запуска: вы получа- не сможете управлять вашими «торрентами»
ете всего лишь панель инструментов и список должным образом.
«торрентов». Transmission весьма похож на Еще хуже то, что ряд приватных треке-
графический интерфейс официального кли- ров не допускают его к использованию своих
ента BitTorrent, только без информации внизу сервисов из-за «злоупотребления протоко-
о выделенном в данный момент «торренте». лом». Мы не эксперты в тонкостях специ-
Минималистический интерфейс, вероятно, фикаций BitTorrent, но Transmission, видимо, Этот рисунок воплощает почти всю функциональность,
обусловлен наследием приложений Mac OS X играет не по правилам, а разработчики не которую предоставляет Transmission. В самом деле!
– следует признать, что экранные снимки Mac- спешат это починить. К сожалению, похо-
версии смотрятся неплохо. Тем не менее, есть же, что Transmission зажился на свете прос-
разница между минималистическим интер- то из-за недостатка конкурентов на Mac OS
Вердикт
фейсом и минимальной функциональнос- X, а GTK-версия – лишь побочный продукт.
Transmission
тью, и в интерфейсе Transmission все наружу. Единственно за свои заслуги, в Linux он быст-
Версия: 0.6.1
Кнопки на панели инструментов используются ро оказался бы на свалке. Сайт: http://transmission.m0k.org
для открытия торрент-файлов, управления Цена: бесплатно по лицензии MIT
существующими «торрентами» и настройки Минималистический интерфейс пошел
приложения. Уровень управления закачка-
ми, мягко говоря, невысок. «Торрент» можно
«Уровень управления бы мощному клиенту, но здесь просто
мало функций.
только остановить или удалить – нет никакого закачками, мягко
способа просмотреть детальную информацию
говоря, невысок.»
Рейтинг 4/10
о содержимом файлов или задать приоритет

22 Linux Format Март 2007


Клиенты BitTorrent Сравнение

Клиенты BitTorrent

Вердикт
Azureus 9/10
М
ы дали довольно строгие оцен- приходится платить эту цену ради лучшей из
ки вполне приличным BitTorrent- программ. Он содержит гору функций, друже-
клиентам. Мы уже видели клиент любен к пользователю, и его базовая функци-
BitTorrent, встроенный в web-браузер Opera, ональность, и без того впечатляющая, умно-
так что справедливости ради нужно отметить, жается через интерфейс расширений.
что сам по себе протокол становится обычным Удивительно сильную оппозицию для
делом, поэтому мы не рассматривали стек Azureus составил TorrentFlux. Со точки зрения
протокола как таковой, а разбирались с тем, «голых» функций до Azureus ему далеко, но
что доступно вокруг протокола с точки зрения если вам нужен торрент-менеджер, доступный
удобства управления. И более всего нас забо- удаленно и способный запускаться в неграфи-
тило, насколько хорошо клиенты позволяют ческом окружении, лучше, чем TorrentFlux, вы
управлять множественными «торрентами». не найдете. Тот факт, что он предлагает много-
Люди используют BitTorrent все чаще и чаще, пользовательскую функциональность, также
и не только для загрузки дистрибутивов Linux. произвел впечатление, и мы отметили появле- Azureus показывает одну и ту же страницу настройки для
Речь уже не идет о «чистой» скорости или луч- ние учебников в интернете, рассказывающих, пользователей с различным уровнем подготовки – обратите внимание
на простоту верхней панели. LXF
шей реализации протокола... в фокусе оказы- как приспособить «машину с TorrentFlux» в
вается способность жонглировать текущими качестве выделенного сервера закачек.
закачками и скоростями, с целью выжать все Когда у вас в лидерах два таких заме- А насчет официального клиента BitTorrent –
из своего соединения. чательных приложения, трудно говорить об ну, надо постараться, чтобы занять столь вид-
И поэтому Azureus победил. Никакой дру- остальных претендентах. KTorrent и Deluge ную позицию, создав себе имя и .com-адрес,
гой клиент не предлагает столько гибкости в имеют похожее происхождение и выглядят и затем все это слить, выпустив средненький
столь мощном пакете. Хотя многие считают, очень многообещающе, но оба страдают от продукт; но его авторы умудрились сделать
что Azureus жаден до ресурсов, временами одной и той же проблемы: недостатка функ- это. Лучше бы они совершенствовали прото-
ций и документации. Чтобы быть справедли- кол и свой портал, а функциональность своего
выми к разработчикам Deluge, отметим, что клиента оставили на экспертов.
Обратная связь это довольно молодой проект, но, наверно, им
стоит попридержать новые релизы, пока не
Приведет ли открытие кода JVM от Sun к будет добавлено чуть больше функций.
улучшению производительности Azureus?
Нагонит ли документация когда-нибудь раз-
работку приложений? Преуспеет ли BBC в «Люди используют BitTorrent все
распространении старых шоу через
BitTorrent? Напишите свое мнение на чаще, и не только для загрузки
letters@linuxformat.ru.
дистрибутивов Linux.»
Таблица функций
Ограничение Поддaержка Импорт Уведомле- Встроенный Возобновле- Предпросмотр Частичные Приоритеты Использование Использование Создание
Клиент скорости UPnP торрентов
DHT[1]
ния трекер ние файлов загрузки [2] памяти [3] процессора [3] торрентов

Azureus

TorrentFlux

KTorrent

BitTorrent

BitTornado

Deluge

Transmission

[1] «Собственный» – это собственная реализация DHT в Azureus. «Основной» – реализованный в официальном клиенте. [2] Варианты: назначение приоритетов файлам, «торрентам» и отсутствие приоритетов вообще.
[3] Может предоставляться дополнительным плагином..

Март 2007 Linux Format 23


Distrowatch Ежемесячная сводка новостей
дистрибутивов Linux
ЛАДИСЛАВ БОДНАР
основатель, начальник,
редактор и сотрудник
DistroWatch.com.
Маневр Fedora
Fedora 7 ‘Core’ больше нет! Мало того: на встрече разработчиков
объявлено о смене направления проекта сообщества Red Hat.
Модная шляпка

В
естфорд, Массачусетс, конец 2006 г.

В
ы интересуетесь развитием Fedora? Небольшая группа влиятельных раз-
Если ваш ответ: «нет, у меня другой работчиков Fedora собирается, что-
дистрибутив, и разработки Red Hat бы обсудить будущее дистрибутива и планы
меня не волнуют», то вы лишаете себя удо- на следующий релиз. На первый взгляд –
вольствия: ведь Fedora – законодатель мод обычная встреча, чтобы обсудить, насколько
современных дистрибутивов Linux! продвинулся проект с октябрьского выхода
Позвольте привести несколько приме- Fedora Core 6. Но к концу встречи стало ясно,
ров. Помните времена, когда Red Hat ввела что это – отнюдь не ординарное рандеву, а
загрузчик Grub в Red Hat Linux 7.2? Лишь собрание, которому суждено иметь далеко
немногие дистрибутивы рискнули исполь- идущие последствия для всех пользовате-
зовать этот необкатанный альфа-релиз, лей Fedora.
но очень скоро большинство последовало Когда принятые решения обнародова-

M ir n Duffy
за Red Hat и отказалось от Lilo. Точно так ли, многие фанаты Fedora были потрясе-
же ext3 стала самой популярной файловой ны масштабом изменений, предстоящих
системой не потому, что была лучшей, а их любимому дистрибутиву. Разработчики Семерка будет даром Небес? ‘Fedora Borealis’ – лишь одна
потому, что Red Hat избрала ее единствен- хотят не просто сделать свой проект нова- из тем рабочего стола, созданных художниками Fedora.
ной поддерживаемой журнальной файло- торским и неординарным; они готовы по-
вой системой для своих продуктов. И таких учиться успеху у других популярных дистрибутивов, ная медлительность Yum (в особенности по сравнению с
историй множество. в особенности Ubuntu. В конце концов, Ubuntu стал apt-get от Debian) и отсутствие графического интерфей-
самым быстроразвивающимся настольным дистрибу- са пользователя. Пока непохоже, что Fedora 7 включит
Финансовый мускул тивом Linux и особенно преуспел в привлечении новых Synaptic-подобную утилиту, которая позволит пользова-
Лидирующая позиция Red Hat в иннова- пользователей – а Fedora по этой части отстает, несмот- телям легко добавлять в Yum сторонние репозитории, но
циях Linux не есть результат случайности. ря на то, что существует дольше. имеются четкие планы увеличить скорость инструмента
Как фирма, построившая успешный биз- Показатель серьезного отношения к конкуренции – управления пакетами на основе Python, отыскав и устра-
нес на Linux, она обладает и достаточной планируемое разветвление Fedora 7 на несколько дис- нив его «узкие места».
властью, и наличными, чтобы влиять на трибутивов целевого назначения (а-ля Ubuntu): Fedora В Fedora 7 также ожидаются увеличение скорости
разработку жизненно важных компонен- Desktop, Fedora Server и Fedora KDE. Вдобавок, нынеш- загрузки (с последующим анализом альтернатив для
тов Linux: именно она платит Алану Коксу нее различие между базовыми пакетами («core») и init), отлаженная поддержка «из коробки» всех под-
[Alan Cox] за работу над ядром Linux, она расширенными («extras») будет устранено, и всё ПО держиваемых беспроводных сетевых карт (включая
вкладывается в разработку glibc и GCC, шифрование) и шифрованные файло-
и она поддерживает LVM, Logical Volume
Manager. Поскольку все эти программы
«Фанаты Fedora были вые системы. Обещана также улучшенная
поддержка ноутбуков, особенно в сфере
выходят под лицензией GPL и использу-
ются в других дистрибутивах, идеи Red Hat
потрясены масштабом управления питанием; еще мы, должно
быть, увидим различные усовершенство-
затрагивают всех нас, независимо от того, изменений.» вания рабочего стола, например, пере-
каким дистрибутивом мы пользуемся. ключение между пользователями и новую
Ах, да, есть и еще одна причина сле- целиком сольётся в один огромный репозитарий, содер- версию RandR – расширения X.org, которое позволит
дить за развитием Fedora – это жутко инте- жащий более 3 600 RPM. Слияние потребует боль- динамически изменять размеры экрана и поворачивать
ресно. Многие дистрибутивы Linux выдви- шой работы, как сообщил в январе участникам спис- его, и прочие современные функции.
гают интересные идеи, но лишь у немногих ка рассылки разработчиков Fedora Билл Ноттингем Выход Fedora 7 намечен на 24 апреля 2007 г. [и уже
из них хватает финансовых ресурсов, что- [Bill Nottingham] из Red Hat. «Оставшиеся члены Core перенесен на 24 мая, – прим. ред.] Правда, учитывая
бы воплотить их в жизнь. Steering Committee поработают с Советом директоров масштаб изменений и исторически сложившуюся неспо-
ladislav.bodnar@futurenet.co.uk Fedora и FESCO (Extras Steering Committee), и выяснит, собность разработчиков Fedora соблюдать намеченные
как управляться с этим новый комбинированным репо- сроки выпуска, ждите задержки прибытия. Но похоже,
зиторием», написал он. что Fedora 7 оправдает ожидания.
Наиболее часто критикуемая область Fedora – это http://fedoraproject.org
инфраструктура управления пакетами: печально извест-

24 Linux Format Март 2007


Distrowatch

Турецкие сласти Ради жизни Linux


Pardus Linux 2007 Лощеный настольный дистри- SystemRescueCd 0.3 Восстановление диска и
бутив с наглядным управлением пакетами. данных в удобном и компактном дистрибутиве.

В S
ы по-прежнему в поиске идеаль- ystemRescueCd – одна из тех
ного дистрибутива для рабоче- жемчужин, без которых не обой-
го стола? Тогда не пропустите тись ни системному администра-
Pardus Linux 2007. Возможно, он и не тору, ни продвинутому пользователю.
принадлежит к фаворитам основных Невыразительное название («системный
ИТ-публикаций, и у него явно не хвата- спасатель») приводит на ум крутых хаке-
ет средств обвешать сайты Linux своей ров, набирающих в черном терминале
рекламой, но этот турецкий дистрибу- загадочные команды, но на самом деле
тив содержит достаточное количество SystemRescueCd – современная графи-
WindowMaker – быстрый, элегантный
инноваций и достаточно хорошо отшли- ческая утилита, пригодная для решения рабочий стол SystemRescueCd.
фован, чтобы стать одним из лучших Pardus интегрировал стартовое самых разных задач: от разбиения жест-
новых дистрибутивов Linux 2007 года. меню Kickoff от OpenSUSE. кого диска на разделы до исправления записи для файловой системы NTFS и
Проект начинался как ответвление ошибок файловой системы и полного антивирус ClamAV. Кроме того, на CD
Gentoo Linux, но вскоре разработчики ние, которое порадует многих пользо- клонирования жестких дисков. есть несколько текстовых редакторов и
отошли от родительского дистрибутива вателей Linux – центр настройки Tasma, Основной инструмент на CD – web-браузеров, а большинство низко-
и занялись разработкой собственных это утилита, пошедшая путём Yast от GParted, графическая утилита разби- уровневых дисковых утилит обновлены
решений. Одним из них было вклю- OpenSUSE или Mandriva Control Center ения на разделы, она поддерживает до последних версий. Помимо само-
чение в дистрибутив новой системы и предоставляющая легкий доступ ко большее количество файловых систем, го CD, проект, основанный в 2003г.
управления пакетами под названием многим опциям рабочего стола и моду- чем любой другой аналогичный инстру- Франсуа Дюпу [Francois Dupoux], под-
PiSi – решение на удивление хорошее, лям настройки KDE. мент из ныне существующих: диск мож- держивает сайт в стиле Wiki с превос-
предлагающее отличные инструмен- А ещё разработчики Pardus Linux но разбить на разделы аж с 13-ю раз- ходной документацией.
ты командной строки, полнофункцио- создали массу менее универсальных ными файловыми системами, а заодно SystemRescueCd отлично борется
нальный графический менеджер паке- утилит: например, Comar – менеджер поддерживается перемещение разделов с такой малоприятной проблемой, как
тов, утилиты уведомления об обнов- настройки, или Mudur – замена init. Но и изменение их размеров – и все это восстановление файлов, а эта про-
лениях и солидную инфраструктуру самое сильное впечатление, конечно, совмещено с удобством интуитивного блема периодически лягает больши-
для получения и обновления дополни- производят отличный менеджер паке- графического интерфейса. нство пользователей. Держите его под
тельных пакетов ПО из репозитариев с тов и быстрый и симпатичный рабо- Последний релиз SystemRescueCd рукой, чтобы встретить неприятность
хорошей поддержкой. чий стол. содержит немало новых полезных во всеоружии.
Еще одно настраиваемое приложе- www.pardus.org.tr/eng функций: например, поддержку чтения/ www.sysresccd.org

Опасные уровни активности! Хит-парад дистрибутивов


Один из способов определить популярность дистрибутива – проверка активности его онлайн-сооб- 10 самых посещаемых страниц на DistroWatch.com за четыре
щества, например, форумов. В приведенной ниже таблице мы приводим количество пользователей недели с 01/08/06 по 29/08/06 (среднее число визитов в день)
на форумах нескольких дистрибутивов. Как видите, удивительный рост популярности Ubuntu отражен
числом участников UbuntuForums.org, более чем вдвое превышающим число участников форума
ближайшего из дистрибутивов-конкурентов. Но, пожалуйста, не забудьте, что не у всех дистрибутивов Дистрибутив Количество визитов
есть онлайн-форумы: например, Debian предпочитает списки рассылки.
1
SUSE 2,220
Дистрибутив Число пользователей Форум
на форумах
2
Ubuntu 2,170
3
Fedora 1,261
Ubuntu 215,200 http://ubuntuforums.org 4
SimplyMepis 1,148
Gentoo 103,000 http://forums.gentoo.org 5
Debian GNU/Linux 975

Fedora 84,500 http://forums.fedoraforum.org


6
Sabayon Linux 954
7
PCLinuxOS 894
Mandriva 54,800 http://forum.mandrivaclub.com, http://mandrivausers.org
8
Mandriva 822
OpenSUSE 41,800 www.suseforums.net, http://forums.suselinuxsupport.de
9
Knoppix 766
Xandros 24,200 http://forums.xandros.com 10
Damn Small Linux 738
Kubuntu 14,000 http://kubuntuforums.net
DistroWatch.com отслеживает популярность дистрибутивов,
Freespire 10,100 http://forum.freespire.org основываясь на количестве посещений страницы,
посвященной данному дистрибутиву. Хотя эти цифры
Arch Linux 7,500 http://bbs.archlinux.org не отражают реального количества инсталляций, они все же
являются индикатором популярности дистрибутива
PC-BSD 5,700 http://forums.pcbsd.org в определенный период времени.
PCLinuxOS 4,800 www.pclinuxos.com/forum

Март 2007 Linux Format 25


Проблемы Linux решены

Проблемы
Linux
РЕШЕНЫ
Что, завязли? Руководство Грэма
Моррисона по типичным проблемам
в Linux должно стронуть вас с места. Paul Blachford

Н
ечего стыдиться, если вы застряли на простой с виду установка или администрирование. И из-за многовариантной природы
Где найти проблеме в Linux. Знайте: множество вопросов по Linux Linux и оборудования, на котором он работает, бывает трудно точно ука-
свои люди задают снова и снова – и не потому, что ленятся зать причину.
вопросы: искать ответы самостоятельно, а потому, что очень час- На последующих страницах – кроме подробных ответов по типовым
то на это нет времени или данное проявление проблемы не похоже проблемам – мы еще и попытаемся научить вас решать такие пробле-
Установка
с. 26 на обычное. Почему видеодрайверы так трудно устанавливать? Что мы. Ключ к решению – понимание взаимодействия ОС и оборудования,
случилось с моим интернет-соединением? Почему не устанавливается а также работы различных компонентов вашего дистрибутива Linux.
Оборудование
эта программа? Глубокое знание Linux само по себе награда, но оно также помогает
с. 28
Linux не является причиной проблем. В наши дни можно твердо разобраться с неприятными инцидентами.
Программное сказать, что с Linux проблем не больше, чем с любой другой операци- Мы должны предупредить вас, что – хотя это и очевидно – некото-
обеспечение
с. 30 онной системой, и подавляющее их большинство – это результат почти рые внесенные изменения могут иметь катастрофические последствия
бесконечных комбинаций оборудования, которые можно встретить на для вашей Linux-системы, если они сделаны неправильно. Поэтому
Сети
с. 32 типичных ПК. Обычный источник проблем – плохо поддерживаемое обо- обязательно обезопасьте все ваши данные: вдруг что-то пойдет напере-
рудование или то, что пользователь не знаком с ОС. Для большинства косяк. Нам всем случалось раскаиваться, что мы отложили резервное
Администри-
пользователей установка диска с последней версией Ubuntu в CD- или копирование на потом; итак, вашим первым заданием, еще до чтения,
рование
с. 32 DVD-привод окончится без неприятностей. Но некоторые общие пробле- будет создание резервной копии!
мы время от времени выплывают наружу – будь то «железо» или ПО,

Установка
Что делать, если все отказало еще до того, как дистрибутив оказался на вашем
жестком диске.
У некоторых невезучих Linux даже не устанавливается. Вы-то думали, Это означает удаление всех ненужных для инсталляции устройств.
что инсталляция – самый отлаженный аспект дистрибутивов Linux, Может помочь попытка использовать IDE-диск вместо более совре-
поскольку и разработчики, и пользователи должны пройти одни и те менного SATA-варианта, а также отключение ненужных карт расши-
же этапы; но это, к сожалению, неверно. рения и USB-периферии. Linux отлично адаптируется, и устройства
Последние релизы, как Fedora Core, так и Ubuntu, намучились легко будет добавить после завершения процесса первоначальной
с процедурами установки, и хотя большинство пользователей запус- установки.
кает Linux без сучка без задоринки, итогом этого процесса может стать Следует также убедиться, что вы используете последнюю версию
пустой экран и голый диск. Причины проблем весьма различны, но BIOS для вашей материнской платы (ее можно скачать с сайта изго-
большинство из них сводится к оборудованию. Ваши шансы на успех товителя вашей «материнки»). Номер версии BIOS мелькает на экране
сильно возрастут, если еще до инсталляции дистрибутива вы постара- при включении компьютера. Его также можно проверить в меню BIOS,
етесь сделать свою машину как можно более стандартной. нажав [F2] или [F12] во время загрузки.

26 Linux Format Март 2007


Проблемы Linux решены

Прощай, ACPI!
Если проблем избежать не удалось, сущест-
вует довольно большой шанс заставить вашу
систему работать, отключив ACPI. Это функ-
ция управления питанием, встроенная в каж-
дый современный BIOS/материнскую пла-
ту, но ее реализация далека от стандарта и
может вызывать проблемы. Если вы хотите
попробовать отключить ACPI, сделайте это
из меню загрузки до того, как что-нибудь
загрузится. Во-первых, большинство совре-
менных дистрибутивов Linux используют сис- Загрузчик Grub появляется при запуске Linux-дистрибутива. Можно отредактировать пункты меню и добавить более
тему загрузочного меню, именуемую Grub. совместимые с вашим «железом» опции: для входа в режим редактирования нажмите <Escape>, а затем <e>.
Установлен ли Grub, можно узнать по появ-
лению сообщения «Grub loading, please wait» после инициализации сколько может потребоваться для оптимизации дискового кэша или
BIOS. Если вы такого не увидите, ваш дистрибутив, вероятно, исполь- временного файла, и прихватывает ту память, которой другие операци-
зует старую альтернативу, именуемую Lilo – попробуйте более новый онные системы касаться не рискуют. Ошибки памяти могут возникать
дистрибутив. случайным образом и приводить к зависанию вашей машины, повреж-
Увидев сообщение «Grub», нажмите клавишу Escape. Откроется дению изображения на экране или возникновению различных случай-
меню опций для загрузки вашей системы. Нужно выделить опцию ных системных ошибок.
загрузки по умолчанию (обычно вверху списка) и нажать клавишу e. Вы можете выяснить, в памяти ли дело, запустив программу под
Далее, выделите строку, начинающуюся со слова «kernel», и снова названием Memtest86. Она существует уже довольно долго (она унас-
нажмите e. Это редактирование строки конфигурации ядра для меню ледована от ранней версии ядра Linux). Ее нужно загружать прямо с
Grub: нужно добавить «acpi=off», нажать Enter, а затем b для загрузки CD/DVD-ROM или дискеты (еще помните такие?); загрузившись, она
вашего модифицированного пункта. Если это решит вашу проблему, запустит исчерпывающую серию тес-
можете сделать данное изменение постоянным, добавив «acpi=off» в тов вашей памяти. Если ваша память
той же строке ядра в /boot/grub/menu.lst в вашей установленной Linux- переживет эту пытку, не выдав ника-
системе. Чтобы сохранить изменения на диске, вам нужно будет отре- ких ошибок, можете быть почти уве-
дактировать этот файл с правами администратора системы. рены, что проблем с нею нет. Если
Memtest что-нибудь обнаружит, при-
Ошибки памяти дется заменить неисправный модуль
Ошибку вызывать может также какой-либо аппаратный компонент. (купите, одолжите или стяните дру-
Linux предъявляет к оборудованию гораздо больше требований, чем гой). Стоит это примерно 2-3 тыс.
другие ОС, и поэтому первоначальная установка Linux может первой рублей за 1 ГБ-модуль, но вы обна-
выявить признаки сбоя. Обычно главный виновник – память, т.к. при ружите, что такая замена сделает
превосходном функционировании всего модуля сбои может давать более стабильными и другие ОС на
одна небольшая секция. Linux старается использовать столько памяти, этой машине. Если память выдюжила испытание огнем Memtest86,
значит, проблемы не здесь.

Шаг за шагом: Создаем home-раздел


Одной из наиболее полезных корректив при установке Linux-системы является создание Системные файлы храните в корневом разделе, а пользовательские данные – в home-разде-
отдельного дискового раздела для домашних каталогов. Не жалейте затраченного времени: ле. Во время обновления убедитесь, что инсталлятор переформатирует только корневой
это упростит и обновление дистрибутива, и создание резервных копий ваших данных. раздел, а home-раздел не трогает.

Ручное редактирование Выделение памяти Выбор места


В этом примере мы воспользовались Ubuntu, но Как минимум, не считая Windows-раздела, вам Наконец, укажите подходящую точку
в большинстве дистрибутивов процесс похожий. потребуются разделы ‘root’, ‘home’ и ‘swap’. монтирования (место в вашей файловой
Первый шаг – позаботиться о ручном изменении Последний может быть небольшим (два объема системе) для каждого раздела: / для корневого
таблицы разделов, не позволив инсталлятору ОЗУ), а размер остальных двух зависит от того, раздела, /home для домашних каталогов и swap
полностью управлять выделением дискового где вы собираетесь хранить свои данные. для оставшегося раздела.
пространства.

Март 2007 Linux Format 27


Проблемы Linux решены

Оборудование
Заставить оборудование работать – не обязательно сложная задача.
Заставить определенные «железки» работать в Linux пока что про-
блема. На это есть две принципиальных причины. Во-первых, воз- «Скорая помощь» по оборудованию
можных комбинаций оборудования бывает множество. Типичная
ситуация – когда материнская плата от одного изготовителя, видео- Введите lspci в окне терминала, чтобы увидеть список всех уст-
карта – от другого, а внешняя периферия, например, принтер, мышь ройств, подключенных к вашей системе. Как правило, вы увидите
и клавиатура – от толпы каких-то других сборщиков. И каждому больше информации, чем могли бы ожидать, потому что современные
подавай свой драйвер, а драйверы часто еще и взаимодействуют материнские платы зачастую объединяют несколько устройств в одно.
друг с другом. Понятно, что изготовитель не в силах протестиро- Если ваше оборудование здесь не появилось, возможно, оно плохо
вать все возможные комбинации драйверов. подсоединено.
Это сочетается со второй причиной: многие изготовители пока отка- Есть несколько способов растянуть ваш рабочий стол на два экра-
зываются открыть спецификации своего оборудования, чтобы разра- на. Стандартный метод – использование Xinerama и дублирование
ботчики могли писать драйверы. Linux уже может похвастать превос- различных секций в xorg.conf, но в случае с оборудованием от Nvidia
можно также воспользоваться инструментом от изготовителя и акти-
ходной поддержкой оборудования от Intel, IBM и AMD, но по-прежнему
вировать режим «TwinView».
очень важно убедиться в совместимости нового оборудования, прежде
чем выкладывать за него денежки. Следует также проверить наличие Если вы хотите использовать с Linux MP3-плейер, выбирайте такой,
который монтируется как внешний накопитель. Вы сможете скопиро-
открытого драйвера для вашего оборудования, поскольку сообщество
вать на него свои музыкальные файлы как на USB-диск и управлять
мало чем поможет, если драйвер закрыт. Чтобы разобраться в этих
своей коллекцией при помощи обычного файлового менеджера.
вещах, загляните на http://cdb.suse.de, www.mandriva.com/hardware или
При сборке собственных приложений и драйверов в Ubuntu нужно
www.phoronix.com/lch.
установить базовое окружение для сборки, введя в командной строке
следующее:
Проблемные видеокарты sudo apt-get install build-essential linux-headers-`uname -r`
Типовая «горячая тема» для оборудования в Linux – заставить рабо-
тать видеокарту с 3D-ускорителем. По умолчанию большинство Linux- Когда вы собираете собственный модуль драйвера или устанавли-
ваете проприетарный модуль от поставщика оборудования, вы сможе-
дистрибутивов устанавливают для оборудования открытый драйвер.
те гарантировать его подгрузку во время старта системы, добавив имя
Последняя версия Ubuntu может прервать эту тенденцию, включив
модуля в файл /etc/modules.
проприетарные драйверы, но покамест вы получаете видео-драйверы с
открытым кодом, обеспечивающие лишь минимальную поддержку 3D-
ускорения. Этого достаточно для обычного использования настольно-
го ПК, но если вы захотите поиграть в PlanetPenguin Racer или создать Перед запуском полученного файла нужно будет закрыть текущую сес-
сцену в Blender, ваша видеокарта не справится с нагрузкой. сию X Window. Некоторые дистрибутивы позволяют выйти в терминал,
Если вы собрались купить новую 3D-видеокарту, для серьезной про- закрыв X-сессию, но с другими вам придется закрывать сессию вруч-
изводительности годятся лишь два поставщика. Nvidia и ATI (ныне при- ную. Сделать это можно, введя как root либо killall gdm, либо killall kdm,
надлежащая AMD) предлагают к загрузке собственные закрытые драй- чтобы остановить процесс менеджера входа в систему.
вера для ваших карт, и каждый использует свою процедуру установки. Более надежный способ достичь того же – переключить уровень
Альтернатива для тех, кто не гонится за модной «трехмеркой» – карты исполнения (runlevel) с помощью команды init. Различные уровни
Intel; это оборудование не столь мощное, зато драйверы полностью исполнения настраиваются на запуск различных процессов. Например,
открыты. Если карта у вас уже есть, выясните, какой чипсет в ней исполь- уровень 1 (введите init 1) – обычно однопользовательская система в
зуется (для этого наберите в командной строке lspci). безопасном режиме, а уровень 5 (init 5) – ваш привычный, полноцен-
Независимо от вашего оборудования, нужно будет установить ный графический рабочий стол. На беду, здесь нет единого стандарта:
исходные коды ядра. Каждый драйвер должен быть скомпилирован различные дистрибутивы используют различные уровни исполнения. В
именно с той версией ядра, которую вы используете. Nvidia и ATI Fedora и OpenSUSE пользователь может закрыть X-сессию, набрав init
пытаются предоставлять прекомпилированные двоичные версии для 3, а пользователям Debian/Ubuntu остается для переключения в безо-
нескольких популярных ядер и дистрибутивов, но поскольку именно пасный режим только init 1.
ядро обычно первым заменяется при установке обновлений безопас-
ности, нет гарантии, что эти версии за ним поспевают. Пустой экран
Звук можно Исходный код ядра можно установить с помощью менеджера паке- Инсталлятор ATI или Nvidia попытается изменить настройки вашего
оживить, всего лишь тов вашего дистрибутива, выполнив поиск либо по ‘kernel-source’ (для экрана для согласования с новым устройством. После установки вам
загрузив настройки систем Mandriva и Fedora), либо по ‘linux-source’ (для систем Ubuntu/ нужно будет запустить gdm (или kdm для пользователей KDE) от имени
микшера и подвигав Debian). Менеджер пакетов выяснит, какая версия вам нужна, посколь- root, чтобы активировать менеджер входа в систему. Если вы получите
«бегунки». ку требуется ее идеальное соответствие вашему рабочему ядру, и вы пустой экран, нужно будет либо вручную отредактировать /etc/X11/xorg.
всегда можете проверить, какая версия ядра conf, либо запустить входящую в ваш дистрибутив утилиту настройки
у вас запущена, набрав в командной строке экрана. Учтите: xorg.conf не для малодушных. Это технический файл,
uname -a. Инструкции по установки драйвера включающий спецификации вашего оборудования, например, возмож-
Nvidia см. в нашем пошаговом руководстве, ности экрана, а также установки драйверов. Вот несколько вещей, кото-
справа. рые нужно проверить, если вы натолкнетесь на проблемы:
После установки исходных текстов ядра, 1 Убедитесь, что в секции Device конфигурационного файла подгру-
следующим шагом будет запуск для нового жается правильный драйвер. Здесь должно быть либо «Driver ‘nvidia’»,
драйвера процедуры инсталляции, предус- либо «Driver ‘fglrx’», в зависимости от вашего оборудования.
мотренной поставщиком, то есть скачива- 2 Разрешение экрана может выходить за пределы возможностей
ние двоичного пакета с сайта Nvidia или ATI. вашего монитора. В этом случае создайте безопасное разрешение,

28 Linux Format Март 2007


Проблемы Linux решены

оставив только 800х600 для всех элементов Display в секции Screen. рите sensors-detect и нажимайте [Enter]
3 Драйвер ядра может не загружаться. Наберите lsmod | grep “nvidia для каждого ответа по умолчанию. По
\| fglrx”. Если на выходе ничего не окажется, введите либо modprobe завершении, скрипт попросит вас ско-
nvidia, либо modprobe fglrx, для загрузки модуля драйвера. пировать и вставить секцию в файл
После установки нового драйвера ваша Linux-система сможет под- /etc/modules. Это обеспечит загрузку
держивать графику с 3D-ускорением. драйверов сенсоров при следующей
перезагрузке системы, и вы сможете
Следим за перегревом получить доступ к температурным дан-
Когда ваша система работает под нагрузкой, вполне естественно, что ным, запустив sensors из командной
ее компоненты перегреваются. Мощная видеокарта весьма способст- строки или через одну из графических
вует этой проблеме: без адекватного охлаждения могут начаться вся- оболочек, установленных одновремен-
кие странные вещи. Мы сказали «странные вещи», а не что-то более но с Lm-sensors.
определенное, поскольку невозможно предсказать, что именно может
случиться. На каком-то этапе возникают ошибки, обрушиваются при- От молчания к звучанию
ложения, повреждается изображение на экране, а то и система полно- Еще один источник головной боли –
стью зависает. А похоже это все на ошибки памяти. отсутствие звука. Без сомнения, совре-
Изменить
Отследить такие ошибки трудно, потому что за время перезагрузки менная звуковая подсистема в Linux
разрешение экрана
машины оборудование охлаждается, и система опять работает как сле- очень совершенна, но она также слишком сложна, и поиски первичной
можно не только
дует. Если вы заподозрили, что причиной проблем может быть пере- причины беззвучия – занятие неблагодарное. Прежде всего проверьте редактируя файл
грев, запустите инструмент слежения за температурами системы: это все таблицы. Если вы не меняли конфигурацию оборудования, очень Xorg.conf, но и через
хорошо даже в том случае, если проблем и нет. Вывод предупрежде- важно удержаться от попыток расковырять провода и динамики. Если панель настройки
ния, что ваша система «разгорячилась» – прекрасный способ пресечь раньше все работало, значит, настройки правильные. Возня с ними, Nvidia.
проблемы до того, как они возникли. пусть даже вы уверены, что здесь-то и причина проблемы, чревата
Многие современные машины выводят информацию о темпера- лишь новыми бедами.
туре в каталог /proc/acpi/thermal_zone/ в файловой системе. Если Проверьте программный микшер (особенно если вы недавно модер-
нет, попробуйте ввести modprobe thermal от имени root. Кроме того, низировали свою машину). Лучший способ это сделать – запустить
существуют инструменты для мониторинга температуры и предуп- какой-нибудь аудиофайл в настольном плейере и экспериментировать
реждения о проблемах. Есть лишь один реальный претендент на роль с уровнями различных каналов в вашем микшере. Если интерфейс
лучшего приложения мониторинга: пакет под названием Lm-sensors. командной строки в Alsamixer на ваш взгляд скудноват, можете устано-
Мониторинг – это приложение уровня ядра, и когда Lm-sensors будет вить и использовать инструмент под названием Alsamixergui.
установлен, его собственные драйверы смогут собирать все необхо- Каналы, на которые следует обратить внимание – Master, PCM и Aux,
димые данные. но проблема со звуком в Linux заключается в том, что функции этих
Установка обычно сводится к поиску ‘lm-sensor’ в менеджере паке- каналов не всегда очевидны. Например, обычная проблема – «бегунок»
тов вашего дистрибутива, кроме того, имеет смысл установить графи- IEC: чтобы звук начал воспроизводиться, иногда его нужно выставить на
ческую оболочку, например, не зависящий от рабочего стола Xsensors 25%, а иногда на 0%. Поиграйте с ним, пока что-нибудь не услышите.
(для KDE попробуйте Ksensors). Когда он будет установлен, запустите
сценарий настройки из командной строки с правами root. Просто набе-

Шаг за шагом: Устанавливаем драйверы Nvidia


Оборудование Nvidia – популярный выбор среди пользователей Linux, поскольку оно предо- ленный исходный код вашего Linux-ядра. Прежде чем приступить к установке драйвера,
ставляет лучшую 3D-производительность, которую только можно купить. Если вы любите откройте менеджер пакетов вашего дистрибутива и установите пакет исходных текстов. Есть
играть или вам нужно работать с ПО для 3D-моделирования, вопрос производительности шанс обойтись и без этого, если Nvidia уже предоставляет двоичный драйвер для вашего
является существенным. Необходимое условие для инсталляции драйверов Nvidia – установ- ядра. В противном случае просто следуйте этим шагам, войдя в систему как root.

Скачивание драйвера Запуск скрипта установки Проверка


Закройте X Window или загрузитесь в консоль. Введите sh, а затем – имя полученного файла. Модуль ядра будет собран и установлен. Для
Вы всегда сможете скачать последний драйвер Если инсталлятор возмущается, что вы не гарантированной его загрузки вы можете ввести
из консоли, используя web-браузер Lynx. закрыли X, удалите /tmp/.X11-unix и /tmp/.X11- modprobe nvidia. После этого остается либо
Введите lynx http://www.nvidia.com/object/unix.html, lock и попробуйте снова. Процесс установки перезагрузить машину, либо запустить
найдите ссылку для скачивания и нажмите <d>. выполняется автоматически; инсталлятор менеджер входа в систему – gdm или kdm.
изменит ваш файл Xorg.conf.

Март 2007 Linux Format 29


Проблемы Linux решены

Программное обеспечение
Тот факт, что ПО в Linux свободно, позволяет сделать многое. Но свободное ПО
зачастую идет без свободной поддержки...

ПО – сложная штука. Невозможно охватить все, поскольку Linux – одна


из самых распространенных и используемых ОС на планете. «Скорая помощь» по программам
И она бесконечно разнообразна. Каждый из нас так или
иначе сталкивается с программными проблемами. И все- Ближайший аналог инсталляционных файлов setup.exe в Linux – это
таки многие проблемы возникают чаще, чем должны бы. В Autopackage. Их довольно сложно делать, но если они доступны, то ПО
основном это связано с обычным для свободного и открытого устанавливается просто вихрем. Autopackage-файлы для последних
ПО недостатком документации – все меняется слишком быстро, релизов Gimp, Gaim и Inkskape находятся на http://autopackage.org.
чтобы технические писатели поспевали за разработкой. А если вы
Если вам нужно запускать системный скрипт во время загрузки,
разработчик-одиночка, документация обычно расположена слишком просто разместите ссылку на этот скрипт в каталоге /etc/rc.local. Как
низко в списке приоритетов. вариант, пользователь может добавить скрипт к своей Gnome-сессии
Хороший пример – композитный менеджер Compiz для сногсши- из меню System > Preferences > Sessions, или кинуть ссылку в ~/.kde/
бательных 3D-эффектов. Год назад он был на этапе формирования Autostart в случае KDE.
и вышел в январе 2006 года. Но за последние 12 месяцев программа
Настройки рабочего стола можно найти в директориях .gnome или
созрела, к ней появились расширения, и в доказательство реального .kde в вашем домашнем каталоге. Копирование всего содержимого
прогресса, проект распался на два (вторая ветвь известна как Beryl). этих каталогов в другую систему перенесет большинство ваших сис-
Однако, несмотря на весь этот «прогресс», от жаждущих трехмерного темных установок, при условии, что вы используете одинаковые вер-
куба чаще всего приходится слышать вопрос: а как заставить его рабо- сии рабочих столов [и не забудете сменить права доступа к файлам:
тать? А жаждут практически все. пользователь «user» в дистрибутиве A и дистрибутиве Б – разный
пользователь, – прим. ред.].
«Ломаем» Compiz Менеджер пакетов можно использовать как для установки, так и
Для тех, кто хочет получить последний Compiz/Beryl, жизнь недавно для удаления ПО. Если вы ощутили недостаток места на диске, вспом-
стала заметно проще, благодаря тому, что большинство современ- ните, что можно освободить немного места, удалив неиспользуемые
ных дистрибутивов использует сервер X.org с активированным AIGLX. приложения.
Использование AIGLX означает, что больше не нужно менять использу-
Вы можете конвертировать RPM в Deb и наоборот, используя удоб-
емый по умолчанию сервер X Window на Xgl. Первоначально для мно-
ную утилиту под названием Alien. Создаваемые ею пакеты в критичес-
гих пользователей это было основным камнем преткновения. Теперь ких для системы приложениях использовать не следует, но это может
остается лишь убедиться, что для вашей видеокарты есть драйверы, реально помочь, если никакие другие пакеты не доступны. См. http://
поддерживающие аппаратное ускорение (см. раздел «Оборудование»), kitenet.net/~joey/code/alien.html.
и один из пакетов – Compiz или Beryl – установлен с помощью менед-
жера пакетов вашего дистрибутива.
Если пакеты не предоставляются по умолчанию, потребуется доба-
вить сторонний репозиторий. Например, в последней версии Ubuntu дистрибутива к другому – они бегут с корабля, чтобы получить новей-
нужно добавить репозиторий Beryl (Ubuntu Beryl Repository, http://ubuntu. шую версию пакета, недоступную в настоящее время в их текущем
beryl-project.org) для загрузки пакетов ПО, прежде чем приступать к уста- дистрибутиве.
новке. Затем выполните Beryl-manager из командной строки – и текущая Несмотря на это, есть несколько способов получить последнюю вер-
оконная рамка превратится в трясущееся желе. сию желанного ПО. Например, Mozilla Firefox доступен в виде статически
собранного исполняемого файла – вы можете запустить эту программу
Идем в ногу со временем сразу же, как скачаете, без размышлений о зависимостях и сценариях
С «красотой» мы разобрались; следующий наиболее популярный воп- настройки. Вы также обнаружите, что готовые пакеты часто предоста-
рос – как устанавливать файлы из Интернета. Ответить на него слож- вляют сторонние разработчики (например, команда Beryl – свое компо-
Ubuntu позволяет но, поскольку здесь нет простого решения. В Linux нет эквивалента зитное ПО), и установка их разработок обычно сводится к добавлению
добавлять скачивания программы setup.exe и ее запуска, как делается в Microsoft нового сервера в вашем менеджере пакетов до того, как вы решите уста-
различные источники Windows. Менеджер пакетов дистрибутива ближе всего подходит к новить свежее ПО.
для вашего ПО через установке «в один клик», но он полностью зависит от дистрибутива,
приложение Software
Sources.
обеспечивающего пакеты для нужных вам приложений. Mandriva пыта- С исходным кодом на «ты»
ется отслеживать запросы публики и пре- Если вам так уж нужна наисвежайшая версия, временами нет другого
доставлять пакеты для наиболее востре- способа ее получить, кроме как скачать «голый» исходный код. Вид
бованных приложений, а Ubuntu и Debian его зависит от вкуса автора, но наиболее общий метод распростране-
включают тысячи прекомпилированных ния программ – упаковка исходного кода в файлы .tar.gz или .tar.bz2.
пакетов для установки. Собирая свое ПО, легко нарваться на неприятности, и вообще-то это
Но с появлением нового релиза вы следует рассматривать как крайность – но большинство приложений
застреваете. Каждому охота скачать и уста- можно собрать, следуя простой стандартной процедуре.
новить последнюю версию приложения, Первый шаг – убедиться, что на вашей машине установлено необ-
но если вам нужны официальные паке- ходимое для сборки окружение: не только инструменты компилятора
ты, то придется подождать следующего GNU, но и версии «для разработчика» всех библиотек, нужных вашей
официального релиза выбранного вами программе. Это зависимости в чистом виде, и вы можете определить
дистрибутива. Это одна из причин, поче- их, читая сопроводительную документацию. Поняв, какие пакеты вам
му так много людей мечутся от одного нужно установить, убедитесь, что вы устанавливаете ‘dev’-версию из

30 Linux Format Март 2007


Проблемы Linux решены

менеджера пакетов вашего дистрибутива – это те самые файлы «для


разработчика», которые нужны для сборки вашего приложения.
При установленных зависимостях большинство приложений тре-
буют запуска ./configure и make в созданном каталоге. Именно здесь
и встречаются проблемы, когда процесс сборки не может найти биб-
лиотеку или файл, от которых он может зависеть. Хитрость тут в том,
чтобы найти в выводе место возникновения первой ошибки и внима-
тельно прочитать текст, чтобы найти, какой файл пропущен.
Типичная ошибка может выглядеть как-то так: ‘libguile.h: No such
file or directory’. В данном случае не найден файл libguile.h. Как пра-
вило, вы сможете определить, какой пакет нужно установить, поис-
кав этот файл в менеджере пакетов вашего дистрибутива или даже
в Интернете. В случае с Debian/Ubuntu, хороший ресурс – www.debian.
org/distrib/packages. Чтобы найти необходимый для решения пробле-
мы пакет, вы можете ввести ‘libguile.h’ в поле «Search The Contents
Of Packages» на этой странице. В нашем примере нехватает паке-
та libguile-dev, его можно установить с помощью Synaptic. С другой
стороны, владельцы Mandriva могут поискать файлы, используя гра-
фический менеджер пакетов или набрав в командной строке urpmf
libguile-dev от имени root. Компиляция проблемного ПО – это воп-
рос внимательного просмотра сообщений об ошибках, пока не будут
выполнены все недокументированные требования.

Пестрота мультимедиа Новый инструмент


Что касается установки ПО, большинство пользователей, заполучив Vorbis, столь хорошо поддерживаются поставщиками дистрибутивов. пакетного
менеджмента
свой сияющий новизной Linux, первым делом желает либо послушать Несмотря на эти ограничения, обычно есть возможность заста-
в Mandriva – один
музыку в формате MP3, либо посмотреть в онлайне видео, закодиро- вить большинство файловых форматов прекрасно работать в Linux.
из простейших в
ванное с использованием проприетарного формата. Проблема заклю- Например, разработанная сообществом версия RealPlayer для Linux использовании, он
чается в том, что команды большинства дистрибутивов не хотят всту- включает лицензированное воспроизведение MP3 (см. www.real.com/ делает обработку
пать в конфликт с законом, включая технологии, которые могут чем-то linux). Но есть также возможность добавить поддержку различных зависимостей почти
нарушить права на интеллектуальную собственность. MP3 – хороший форматов при помощи пакетов и репозиториев сторонних производи- безболезненной.
пример, поскольку патент на его дизайн активно навязывается фран- телей. Активация Multiverse в Ubuntu позволит вам скачать пакет коде-
цузской технологической компанией Thomson Consumer Electronics. ков Win32, включающий поддержку всевозможных проприетарных
Многие команды выбирают безопасную тропинку, оставляя его за пре- форматов, а Penguin Liberation Front поддерживает также репозитории
делами своего дистрибутива, поэтому-то открытые форматы, типа Ogg для Mandriva.

Шаг за шагом: Добавление репозитория в Ubuntu


Один из наиболее частых вопросов, получаемых в Linux Format – как активировать сторонние каждом дистрибутиве свой, но поскольку Ubuntu – это хороший выбор для начинающих, то
или неподдерживаемые репозитории для вашего дистрибутива. Понятно, что процесс в вот вам инструкция.

Выбор источников Скачивание Поиск!


Запустите менеджер пакетов Synaptic, затем Когда бы вы ни сделали изменения в базе Каждый поиск приложения теперь будет
отметьте Settings > Repository. Откроется новое пакетов, Synaptic потребует обновить список охватывать новые источники пакетов,
приложение Select Sources, в котором вы доступных пакетов. Просто щелкните на Reload используете ли вы Synaptic или apt в командной
сможете активировать новые репозитории на в Synaptic, чтобы скачать новый список пакетов строке. Это самый безопасный способ добавить
вкладке Third Party или добавить собственный, с различных репозиториев. ПО, но сторонние пакеты могут оказаться
щелкнув на New. проблемными.

Март 2007 Linux Format 31


Проблемы Linux решены

Сеть и
администрирование
В наши дни грош цена тем, кто не подключен к Интернету.
В Linux вы недалеко уйдете без подключения к сети. Несмотря на
это, сейчас нет стандартного приложения для его настройки. В
каждом дистрибутиве свой подход к поддержке сети, и как пра-
вило, предлагается собственная панель конфигурации или скрипт
для настройки вашего соединения, а это вам не сильно поможет,
если что-то поломается.
Если ваша машина отказывается выходить в Интернет, можно по-
пробовать несколько вещей. Наиболее обычная помеха в плохо настро-
енной сети – ваш компьютер не может преобразовать имя сервера в
IP-адрес, необходимый для установления соединения. То есть если вы
наберете что-то типа ‘bbc.co.uk’ в своем браузере, сетевой уровень,
отвечающий за установление соединения, будет нуждаться в конвер-
тации его в номер, или IP-адрес. Например, bbc.co.uk на самом деле
соответствует IP-адресу 212.58.228.155.
Одно в другое конвертирует DNS, сервер доменных имен. Если
он не настроен, вы не сможете просматривать страницы, используя
доменные имена, но тем не менее сможете использовать IP-адреса.
Вот и первый ключ к решению проблемы – если доступ по IP-адресам
работает, а по доменному имени – нет, значит, проблема в настройке
DNS. Обычно это означает, что вы ввели неправильный адрес сервера.
Адрес DNS вашего провайдера размещается в файле /etc/resolv.conf, Использование инструмента типа Firestarter для настройки
брандмауэра сильно упрощает установку общего интернет-
и вам нужно проверить, что после слова ‘nameserver’ указан правиль-
соединения.
ный адрес.
центре управления. Но в других дистрибутивах, особенно в Ubuntu, вам
Общее соединение придется выполнять настройку вручную.
У многих из нас сейчас больше одного компьютера, которые без интер- Намного проще настроить обе машины, если сетевые соединения
нет-соединения полезны лишь наполовину. Вы можете использовать используют статические адреса, а не назначаемые автоматически – осо-
беспроводную сеть, но есть также возможность разделять соединение, бенно для машины, с которой вы хотите разделять соединение. Потому
используя Ethernet-кабель, если два компьютера достаточно близко что если вы хотите, чтобы машины использовали общее соединение,
друг от друга. Если у вас нет коммутатора между этими двумя компью- имея автоматически назначаемый IP-адрес, то придется учитывать
терами, важно, чтобы используемый вами кабель был «перекрестным» дополнительную сложность в лице DHCP-сервера. Общее интернет-
(crossover), а не стандартным. соединение складывается из двух элементов: маршрутизации пакетов
В некоторых дистрибутивах общее соединение создается откры- (forwarding) и трансляции сетевых адресов (NAT), оба они реализуются с
тием панели управления на машине, подсоединенной к Интернету, помощью Iptables [строго говоря, это не совсем верно. Часть ядра, отве-
и активацией соответствующей опции. Например, в Mandriva общее чающая за маршрутизацию, может работать и без Iptables, – прим. ред.].
соединение может быть активировано на страницу Network & Internet в Это сетевой инструмент, работающий на уровне ядра и отвечающий
за управление сетевыми пакетами – обычно
известный как брандмауэр. А установка бранд-
«Скорая помощь» по сетям и администрированию мауэра – самый простой способ настроить
общее интернет-соединение.
Firestarter – одна из наиболее популяр-
Существует множество беспроводных устройств, не под- от web-сервера до пользовательских учетных записей, и все
держиваемых в Linux. Но часто их можно заставить рабо- это через браузер на удаленной машине. ных утилит настройки брандмауэра для Linux.
тать, используя комбинацию Windows-драйвера и превос- При первом старте «мастер» быстрого запус-
Сетевые USB-устройства, от старых телефонных моде-
ходное Linux-приложение по имени Ndiswrapper. Он объеди- мов до новых ADSL, создают проблемы. Вы можете заста- ка проведет вас по настройкам брандмауэ-
няет эмуляцию Windows с магией Linux, чтобы вернуть вить их работать, но обычно это не стоит затраченных уси- ра и созданию общего интернет-соединения.
оборудование к жизни. лий. Гораздо проще купить дешевый ADSL-маршрутизатор Он берет на себя большую часть забот по
Брандмауэры зачастую понимаются неправильно, потому и использовать подключение по Ethernet-кабелю – и ника- настройке Iptables, а также предоставляет в
что пользователям Windows вдалбливают, что он должен кой специальной настройки не потребуется. реальном времени информацию о том, какой
быть у них установлен. Истина же в том, что если у вас нет Таблицу маршрутизации (слегка запутанную) можно именно процесс работает с Интернетом.
портов или сетевых сервисов, запущенных на вашей маши- просмотреть, набрав route от имени root. Если у вас больше
не, то нужды в брандмауэре никакой нет – вот почему одного сетевого устройства, убедитесь, что только один Потерянный пароль
Ubuntu не поставляется с преднастроенным брандмауэром. маршрут отмечен как используемый по умолчанию. Можете Пароли не особо важны, если ваш компьютер
Если вам нужно администрировать вашу систему удален- удалить любые дополнительные маршруты по умолчанию, стоит себе в углу, без подключения к интер-
но, попробуйте установить программу Webmin. Она позво- набрав route del default eth0, только замените ‘eth0’ на имя нету, и вы его единственный пользователь.
лит настраивать почти все аспекты работы вашей машины, соответствующего устройства.
Но как только вашу машину захочет исполь-
зовать кто-то еще или вы пожелаете войти в

32 Linux Format Март 2007


Проблемы Linux решены

Лучшие советы из Башен LXF


Говорит Майк гарантию, что этот диск будет загру- Говорит Ник
«Одна из наиболее частых жаться, несмотря на ошибку ядра. В «Google – превосходный
проблем, о которых я K3b вы также можете установить опцию инструмент для поиска
слышал – запись CD. Из- ‘padding’.» ответов: есть все шансы,
за ошибки в ядре Linux что кто-то уже сталкивал-
некоторые CD (особенно загрузочные Говорит Пол ся с подобной проблемой до вас. Но
диски дистрибутивов) записываются «Работать с Windows- чтобы не тратить уйму времени, раз-
под Linux неправильно, пока вы не пользователями не слиш- гребая не относящиеся к делу соот-
воспользуетесь особыми опциями. В ком легко, но чтобы раз- ветствия, будьте точны и заключайте
Даже если вы присматриваете за системой,
частности, эта проблема имеется с делять с ними файлы, искомые данные в двойные кавычки:
где больше одного пользователя, сейчас
дисками Fedora Core. особых усилий не требуется. “Error 17: Cannot find device” гораздо
гораздо проще использовать графический
Когда записывается CD с дистрибути- Простейший путь прочитать Windows- вероятнее поднимет вверх нужный
инструмент администрирования, а не консоль.
вом Linux, используйте опцию ‘padding’ папку – это использовать опцию Gnome результат с кавычками, чем без них.
в своей программе записи CD, при этом Connect To Server (ищите ее в меню Помимо этого, лучший способ утрясти
оставляется небольшое пустое про- Places). Когда появится окно, выберите свои проблемы – это понять, что же
странство на диске. Например, если вы Windows Share как тип сервиса, затем идет неправильно: dmesg, содержимое
используете инструмент командной заполните IP-адрес сервера и имя /var/log и форумы Linux Format долж-
строки CDRecord, вам нужно опреде- общей папки (обычно это просто ны стать вашими друзьями.»
лить опцию ‘-pad padsize=63s’, что даст название каталога), и готово!»

сеть, хороший пароль становится жизненно необходимым для безо- са загрузки можно будет изменить пользовательский пароль обычным
пасности вашей системы. Хороший пароль, однако, плох тем, что его образом.
сложно запомнить. Самый популярный пароль, вероятно, ‘password1’,
который как минимум учел желательность смешения букв и цифр. ...теперь отдыхайте!
Если вы еще помните свой пароль root, достаточно войти в систему Интернет полнится людьми, перенастраивающими свои дистрибутивы
как root и назначить пароль пользователя командой passwd username. Linux, и мы отметили в начале, что для некоторых это весьма привлека-
А вдруг пароль для учетной записи root вы тоже забыли? В случае тельно. Продравшись сквозь проблемы и сумев самостоятельно их уст-
Ubuntu, где и учетной записи root нету, забыть свой пользовательский ранить, вы испытаете чувство подлинного удовлетворения. Это обряд
пароль означает здорово влипнуть. посвящения для каждого пользователя Linux.
Тогда придется перезагрузить вашу систему либо в безопасный Мы надеемся, что вы насобирали достаточно информации, спо-
режим, либо в режим восстановления. Обычно это применяется для собной помочь вам при любых проблемах; мы, как минимум, дали вам
решения проблем с загрузкой, но также полезно и для получения хорошую отправную точку для поиска решения. Но мы будем рады,
доступа с правами root без пароля. Если вы пользователь Debian или если вы обратитесь к нам со своими сложностями. Можете также посе-
Ubuntu, при виде загрузочного меню Grub нажмите <Escape> и выбе- тить наши дружелюбные форумы (www.linuxforum.ru). Linux зиждется
рите загрузку ядра в режиме восстановления. По завершении процес- на чувстве взаимопомощи; именно так мы делаем мир лучше. LXF

Шаг за шагом: Использование менеджера настройки


Долгое время беспроводные сети причиняли в Linux настоящие мучения. К счастью, две и позволяют вам сканировать доступные сети, сохраняя профиль для тех, которые вы будете
утилиты берут на себя большую часть головной боли, связанной с этим процессом. использовать. Это значительное усовершенствование по сравнению с панелью управления
Менеджеры настройки сети Gnome и KDE – это нововведения, которые, по сути, идентичны. старых дистрибутивов. Для начала воспользуйтесь своим менеджером пакетов, чтобы уста-
Они выступают как интерфейс между вашим сетевым оборудованием и беспроводной сетью новить либо Gnome network-manager, либо KNetworkManager.

Подготовка Запуск Соединение


Вам может потребоваться отредактировать Установленный и запущенный менеджер Если вы выбираете незашифрованную сеть,
файл /etc/network/interfaces. Он содержит вашу настройки сети можно будет найти на панели интернет-соединение установится автоматически.
текущую фиксированную беспроводную рабочего стола. Щелкните по иконке, чтобы Если сеть требует ввода ключа, появится окно
конфигурацию, которую нужно будет открыть список доступных сетей, наряду запроса, чтобы вы ввели в него дополнительную
закомментировать, чтобы менеджер настройки с индикатором уровня сигнала и значком замка информацию. Если данные введены правильно,
сети смог использовать собственные установки. или щита, отмечающим зашифрованные сети. соединение будет установлено.

Март 2007 Linux Format 33


LXF Интервью Дэмьен Конвей

За кулисами
Perl 6
Perl – один из самых популярных сущест-
вующих языков программирования. Одна
из причин этой популярности – продук-
тивные отношения между создателем
языка Ларри Уоллом [Larry Wall] и его
главным сообщником Дэмьеном
Конвеем [Damian Conway].

В толпе разработчиков Дэмьена вы узнаете сразу. Это –


парень в серых брюках, черной футболке и с толпой вцепив-
Интервью шихся в него программистов Perl. Если Ларри Уолл – Янь, то
он – Инь, адвокат дьявола. Ларри и Дэмьен вместе трудились
в кузнице, где был выкован Клинок Perl и где его превра-
тили в Perl 6; от него зависит будущее всей компьютерной
братии. Грэм Моррисон получил задание встретиться с
Дэмьеном и уточнить, что происходит с Perl 6.

Linux Format: На что сейчас в основном уходит ваше время?


Дэмьен Конвей: Примерно 50% занято банальным зарабатыванием на жизнь.
То есть я готовлю занятия и презентации, а затем – путешествую по всему миру,
доставляя их в нужные места. Еще 20%, наверное, уходят на поиски работы: кон-
трактов и людей, которые хотят, чтобы я выполнил для них некое дело – то есть,
логистику, необходимую, чтобы все получилось.
А остальное время почти полностью посвящено разработке Perl 6. На данный
момент – это совместная работа с Ларри над финальными штрихами, чтобы убе-
диться в том, что все части осмысленны и хорошо работают вместе, и я помогаю
ему сложить оставшиеся элементы головоломки.
Довольно интересно, что эта завершающая стадия работы над Perl 6 немного
сложнее, чем стадия общей разработки, потому что теперь почти все уже на своих
местах, и большинством сделанного мы очень довольны, есть несколько мелочей,
которые должны быть не хуже всего прочего, а у нас меньше возможностей для их
разработки. Так что именно поиск нужного решения для этих последних штрихов
кажется мне таким интересным, это своего рода проба сил.

LXF: А преимущества у такого способа работы есть?


ДК: Это своего рода вызов, но да, я думаю, преимущества есть. И преимущество
состоит в том, что мы не связаны никакими условиями. Если бы мы работали в
какой-то фирме, у нее были бы свои цели, связанные с Perl 6, и нам, как сотруд-
Фото: Джейсон Каплан [Jacon Kaplan].
34 Linux Format Март 2007
Дэмьен Конвей LXF Интервью

О ТОМ, КОГДА ОСТАНОВИТЬСЯ


«Наступает такой момент,
когда можно сказать: Да,
теперь все срослось.»

Март 2007 Linux Format 35


LXF Интервью Дэмьен Конвей

никам фирмы, пришлось бы в первую очередь заботиться об этих целях. А мы ориентированному программированию есть что предложить, язык не может быть
работаем на сообщество, и можем сконцентрироваться на целях Perl 6, важных для полным, если в нем нет механизма, ортогонального к структуре классов, который
сообщества, и эти цели куда более многообразны, чем могли бы быть цели любой, позволял бы добавлять необходимые функции, но не принадлежал к иерархии. И
самой крупной фирмы. что здорово – мы смогли взять это и внедрить. Мы сказали: «Ладно, Perl нужна
Люди говорят: «Мы разрабатывали Perl 6 шесть лет. Почему же он еще не поя- поддержка аспектно-ориентированного программирования, поэтому встроим такой
вился?» А я думаю, что фактически, это преимущество – у нас было время разрабо- механизм прямо в ядро языка…»
тать то, что будет самым лучшим на следующие 20 лет. Конечно, с точки зрения PR
LXF: Так вот куда попадает Pugs?
это не слишком хорошо, но с точки зрения языка, который мы создаем (на самом
ДК: Не думаю. Я думаю, что сюда попадает компонент под названием PGE, это
деле, уже создали), это настолько хорошо, что лучше и сделать нельзя. Подумайте,
грамматический движок. И он действительно хорошо подходит, потому что мы раз-
какого калибра люди участвуют в проекте; сразу станет понятно, что все это – прос-
то здорово. работали грамматику Perl 6 таким образом, что вы получаете всю мощность синтак-
сического анализа самой лучшей породы, какую только можно найти. Раньше все
Есть фраза, которую я повторяю чаще всех остальных: «Вот как это в Perl 6». Я
грамматические конструкции, такие как Lex и Yacc на раннем этапе или более сов-
вижу, какое волнение написано на лицах людей, если они в течение получаса видят
ременные вещи, вроде Antlr – они всегда были отделены от языка. Они всегда были
то, что мы внесли в язык, честно, я вижу на их лицах вожделение: «Почему его еще
инструментом, который применялся в языке, или применялся для создания языка.
нет? Почему нельзя пойти домой и приняться за него прямо сейчас?» …По-моему,
Мы знали, что у Perl лучшие регулярные выражения на свете, но до следующего
самое прекрасное, что произошло за два года с нашей прошлой беседы [Интервью,
уровня он не поднимался: до грамматического уровня, на котором можно, исполь-
LXF62] – это что у нас был проект Pugs с Одри Танг [Audrey Tang], которая проло-
зуя все это, легко создать интерпретаторы языков. Вот мы и внесли это в язык.
жила нам дорогу, и сейчас вы можете пойти и сделать это [использовать Perl 6].
Такая вещь – рост нашего понимания того, что нужно для хорошей разработки
Когда я делаю презентацию, последний мой слайд – это всегда URL кода Pugs.
и развитие различных парадигм языковых функций (хотя большинство из них име-
Люди расходятся и загружают его, и где-то через полчаса они уже могут поиграть
ются в большинстве натуральных языков мира) – позволяет нам, на основании этой
с настоящим кодом Perl 6. Все это вызывает большой ажиотаж и энтузиазм. Да и
половины десятилетия, заявить: «Мы считаем, что это будет хорошо, и это будут
много огорчений тоже, потому что людям нравится этим заниматься, но ведь это не
готово для выпуска и не обладает той же скоростью, что Perl 5. важно и через 20 лет, поэтому Perl 6 мало того, что сможет просто выполнять все
эти вещи – он должен их поддерживать».
Но в общем и целом меня крайне радует достигнутое, и меня крайне радует, что
Наши мысли о разработке языка во многом получали информацию от это-
у нас было достаточно времени сделать работу хорошо. И во многом из-за того, что
на нас не давил корпоративный график работ. го. Язык должен быть легок для тестирования, для синтаксического анализа, для
рефакторинга. Да, тестировать программы нужно; но не просто проверять правиль-
LXF: Повлияло ли на процесс разработки за по- ность функционирования, а убеждаться, что тест
следние шесть лет появление PHP или Ruby? О СУПЕРФУНКЦИИ PERL 6 охватывает все возможности. Поэтому нужен
ДК: Я не совсем уверен, что эти два оказали язык, в котором было бы видно внутреннее
какое-то влияние именно в пределах указанного «Вы можете использовать представление всех ветвей в программе, а для
интервала. Конечно, Ruby сильно повлиял на Perl этого нужно, чтобы внутреннее представление
6; я бы ничего не стал убирать из того, что Мац объектно-ориентированное программы было в самой программе.
[Юкихиро Мацумото, Yukihiro Matsumoto, автор программирование так же
Ruby] сотворил с Ruby. Многое из того, что он LXF: Как вы узнаете, что пора ставить точку?
позаимствовал в Perl и запихнул в Ruby, снова
легко, как в Java и C++.» ДК: Какой чудесный, чудесный вопрос. [Долгая
вернулось в Perl. И я уверен, что если бы не было пауза] Знаете, меня никогда об этом не спра-
Ruby, Perl не смог бы стать настолько объектно-ориентированным, как Perl 6. шивали, а это ключевой вопрос. Как узнать, что всего уже достаточно, чтобы не
Если быть предельно честным, то большинство языков, появившихся в течение переборщить?
упомянутого периода, не особо отличались от ранее существовавших. Я думаю, Все эти годы мы придерживались принципа: никогда не включать функций,
что наше мышление изменилось из-за усиления некоторых парадигм и некого которые служили бы только для одной цели. Если нечто претендовало на вклю-
понимания, пришедшего к нам в процессе программирования – что работает, а чение в Perl, значит, должно было годиться для решения пары задач. Оно долж-
что не работает. По примеру на то и на другое: за этот период вроде как расцвело но было улучшать то, что уже было в языке, плюс обеспечивать дополнительную
аспектно-ориентированное программирование. Люди осознали, что хотя объектно- функциональность, то есть давать еще и чистую прибыль. Потому что нужно было
считаться с той самой проблемой, о которой вы сказали, а именно: «Уймись, не то
язык чересчур разбухнет».
Но по большому счету, вы правы: есть этот неиссякаемый фонтан новых техно-
логий в мире программирования, как в сфере теории, так и в сфере практических
технологий разработки. Так как же решить, что пора остановиться? Если честно, я
думаю, ответ такой: когда устанешь! Нет, я думаю, когда достаточно глубоко изу-
чил создание языков, то тебе совершенно ясен момент, когда можно сказать: «Да,
теперь все срослось, теперь это – одно непрерывное полотно». И когда это про-
исходит, надо остановиться. Потому что если зайти слишком далеко, то начнешь
включать в язык какие-то лишние штуки, которые там совершенно на данной ста-
дии не нужны.
Вот вам ответ: мы останавливаемся, когда появляется ощущение, что все срос-
лось и мы сделали все, что хотели сделать. Естественно, мы не касались новшеств,
появившихся месяца три назад, но зато мы сделали другое – по нашему мнению,
мы создали новую версию Perl настолько расширяемой, что новшества, которые
появляются сейчас, или появятся через два года, через пять лет, очень легко будут
интегрированы в Perl 6, так что, возможно, Perl 7 уже не понадобится.

LXF: А бывают разногласия между разработчиками, о том, что важно и когда надо
остановиться?
ДК: Ну что вы, у нас полное согласие всегда и во всём. [Смеется] Да нет, по-мое-
му, вполне здоровая ситуация, когда спорят на тему «как лучше это сделать?» или

36 Linux Format Март 2007


Дэмьен Конвей LXF Интервью

«подходит это сюда или нет?». Если вы посмотрите на списки рассылки, у нас там
очень много талантливых людей, они проверяют наши решения и рассматривают их За Дэмьеном охотятся ради
под разным углом, так вот, если на эти списки взглянуть, вы увидите массу разно- его презентаций: на фото – его
выступление Da Vinci Codebase
гласий по теме, как правильно работать.
на OSCon 2006.
Так что, я думаю, разногласия – это очень ценная вещь. А в конечном итоге нам
помогает тот факт, что Perl – это то, что о нем говорит Ларри.

LXF: Это здорово.


ДК: Ну, должен быть кто-то, в кого все упирается, иначе никуда не придешь. И
почему в качестве такого человека хорошо иметь Ларри – Ларри начисто лишен эго,
применительно к данной разработке. Он хочет слышать достойные идеи от других,
и я видел, как он целиком соглашался с предложениями людей, которые вообще
впервые оказались в списке [рассылки]. Ему не важно, кто выдвинул идею, ему
важно только, насколько эта идея разумна.

LXF: Вы считаете, что после Perl 6, разработка Perl станет в большей степени ори-
ентирована на сообщество?
ДК: Думаю, это весьма вероятно. Именно это мы наблюдаем в Perl 5. В конце кон-
цов, основная разработка Perl 5 сейчас ведется людьми из Perl 5 porters. И хотя
Лари по-прежнему обладает правом полного вето, он крайне редко им пользуется.
И он обычно оказывает всяческую поддержку, если они хотят что-то сделать, пото-
му что Perl 5 porters отлично знают код. твие из всего, о чем мы говорили. Поэтому, конечно, меня это очень радует, но я об
этом даже не думаю, потому что в Perl 6 это вообще-то фундаментально.
LXF: А какие части Perl 6 вы любите больше всего?
ДК: С предвзятой точки зрения, один из моих любимых разделов – это функция LXF: Как вы думаете, с какими проблемами столкнется сообщество Open Source в
объединений (junctions). Потому что я часто думаю о том, что объединения – мой следующие пять лет?
единственный вклад в компьютерные науки. Объединения – это такая разновид- ДК: [Долгая пауза] Думаю, проблема для сообщества Open Source в следующую
ность принципа квантовой суперпозиции в Perl половинку десятилетия – как конкурировать,
6: например, бывают величины, равные 5, 6, 7 ОБ ОТКРЫТОМ КОДЕ: не становясь конкурентами. Мы должны сохра-
и 8 одновременно. Это необыкновенно удобно, нить веру в то, что философская основа нашего
потому что если у вас есть длинный список вся- «Проблемой будет – существования, того, чем мы занимаемся, дейст-
ких вещей, вы можете свести их в одну величину, вительно правильна, правильна настолько, что
а затем достаточно одного теста для проверки на как конкурировать, мы сумеем выжить, продолжая делать то, что
равенство любой из них.
Например, у вас есть список неприемлемых
не становясь делаем. Нам придется решать, как стать мейн-
стримом и при это не угодить ни в одну из лову-
паролей, и вы можете создать одну скалярную конкурентами.» шек мейнстрима – и не поддаться существующей
величину, которая равна любому из них. Затем практике. Меня не удивляют фирмы, которые
вы можете сказать: «Дайте мне ваш пароль, и если он равен этой одной скалярной закрывают код, вместо того, чтоб открыться настолько, насколько возможно; по-
величине, значит, он равен и любому [из неприемлемых паролей]». Дело в том, что моему, у них просто сдают нервы. Думаю, вполне понятно, что множество начина-
благодаря такой структуре можно – по крайней мере, теоретически – параллели- ний уже продемонстрировало: с философией Open Source, оставляя код открытым,
зовать этот тест. Тут известно, что вам надо просто проверить равенство с любой вполне возможно жить, да ещё и получать прибыль.
величиной, а они совершенно независимы, и если это не так – применительно к Сейчас Open Source становится мейнстримом, в огромной степени благодаря
любой из них – у вас есть возможность вернуться к исходной точке кратчайшим таким программам, как Firefox. Linux… наверное, не до такой степени, как Firefox,
путем. Это же столбовая дорога к параллелизации. Вы можете просто ввести в Perl: потому что Firefox – это интерфейс, через который обычный человек, не компьютер-
if $password eq any(@existing_passwords). И вы получаете возможность параллели- ный эксперт, ежедневно сталкивается с разными хитрыми штуками, и все больше
зовать это, причем написать это на практически обычном английском языке. людей этим занимается. Я хочу сказать, заметно, что доля Linux на рынке тоже рас-
Я горжусь, что эта идея принадлежит мне, и я был в восторге от того, как её при- тет, но, наверно, не такими темпами. Ведь в Firefox можно работать и под Windows,
няли и усовершенствовали другие члены команды, прежде чем ввести в язык. наверное, причина в этом. LXF
А что до пристрастий, я люблю всякие милые мелочи. Например, то, что теперь у
нас есть функция «print line» в Perl, потому что в 70% всех напечатанных выражений
приходится в конце ставить новую строку. Меня это просто бесило! А теперь есть
маленькая функция say – вы просто пишете say $whatever, а она сама вставляет
перевод строки. Штука тривиальная, такое можно ввести в любой язык, но немного
найдется языков, которые это сделали, да ещё столь изящно.

LXF: Вы довольны, что Perl 6 усилил объектную ориентированность?


ДК: Да, думаю, было бы неправильно не признать этого. В смысле практического Узнать
применения языка, факт наличия формализованной объектно-ориентированной больше!
структуры классов означает, что можно заниматься ОО-программированием; это
«Perl – это детище
легко делать в Java, C# и C++, а теперь не менее легко и в Perl, и так же понятно… Ларри, а я вроде
На самом деле, мы внесли в него такое, чего нет во всех этих языках. Я думаю, это его злобного
будет очень важным отличием. Видимо, я меньше думаю об этом, чем мог бы, пото- братца, стало быть,
му что почти не занимаюсь объектно-ориентированным программированием. Но я я и дядюшка...»
Подробности – на
знаю, что для тех, кто им занимается, это будет, вероятно, супер-функция в Perl 6.
www.linuxformat.
То, что теперь можно писать классы с должным образом объявленными компонен-
co.uk/mag/conway.
тами атрибутов и методами, наверное, окажет самое сильное позитивное воздейс-

Март 2007 Linux Format 37


на DVD
Apache 2.2.3
mod_cband 0.9.7.5

Перышки Помни
изменения те:
конфигура в файле
ц
не вступят ии Apache
в силу, пок

вам в шляпу
вы не пере а
запустите
сервер!

Решили научить свой сервер Apache новым трюкам? Узнайте у Пола Хадсона
про три его любимых модуля Apache для web-суперобслуживания.

П
риспособить Apache для обслуживания web-страниц может
каждый, а при известной сноровке можно установить и
использовать mod_php или mod_perl, но Apache способен
на большее. Стандартная установка Ubuntu Edgy (с под-
ключенными репозиториями Universe и Multiverse) дает перечень свы-
ше сорока модулей Apache 2, с которыми ваш сервер Apache натворит
такого, чего вы и представить не могли.
На этих четырех страницах мы расскажем вам про три наших люби-
мых модуля Apache и научим работать с каждым из них. О некоторых
из их функций вы, может, и слышали, но никогда не пробовали – а «Моя маман говаривала, что Synaptic
может, и вообще о них не знали – но запустите их в работу, и закачки похож на коробку шоколада» – модули
пойдут быстро как никогда! с какой начинкой вы предпочтете?

mod_userdir: Домашние страницы – народу!


Дистрибутивы, основанные на Debian, стандартно используют вирту- Пользователи теперь смогут создавать подкаталог public_html в
альный хостинг, он превосходен для настройки большого числа сайтов своем домашнем каталоге и получать к нему доступ по адресу www.
на коммерческой основе. А если вы просто хотите выделить своим дру- yoursite.com/~username. У кого не будет каталога public_html, тот не
зьям местечко на вашем сервере? Лучший способ сделать это – модуль будет представлен в Интернете – при попытке зайти на его страничку
mod_userdir, дающий каждому пользователю с учетной записью на возникнет ошибка 404.
вашем сервере возможность размещать свой собственный контент. Для определения полного пути, например, /var/www, можно исполь-
Откройте файл конфигурации /etc/Apache2/sites-available/default зовать директиву UserDir: в этом случае www.yoursite.com/~hudzilla
в текстовом редакторе (как суперпользователь) и добавьте такую будет искать страницы в /var/www/hudzilla. Но в принципе, лучше
строку: оставить ее в домашнем каталоге пользователя, так как это упрощает
UserDir public_html настройку прав доступа – пользователи смогут создавать и удалять

38 Linux Format Март 2007


Apache

свой собственный контент в public_html без вашего содействия. Вы в конфигурацию такую строку:
можете также использовать директиву UserDir, чтобы разрешать или UserDir disabled root
запрещать работу модуля mod_userdir пользователям индивидуально. Здесь можно указать столько пользователей, сколько хотите.
Например, сейчас каждый может публиковать пользовательские дан- Вариант – настроить «белый список» mod_userdir, запретив доступ
ные в личном web-пространстве, даже root – зайдите на www.yousite. всем и разрешив только тем, кому нужно:
com/~root, и поймете, что мы имеем в виду. UserDir disabled
Как правило, разумнее пресечь подобный доступ, так что добавьте UserDir enabled bill ted

mod_cband: квоты для виртуальных серверов


Некоторые модули Apache могут ограничивать использование канала
во времени; некоторые – ограничивать число запросов, обслуживаемое
доменом в секунду; а некоторые накладывают постоянное ограничение
Как установить модуль
на исходящий трафик вашего сервера. Второй из нашего трио модулей, Каждый из рассматриваемых здесь модулей доступен через Synaptic,
mod_cband, делает все это и даже больше – что сокращает время обу- если подключены репозитории Universe и Multiverse. Процесс актива-
чения, упрощает долгосрочное администрирование и снижает требова- ции установленных модулей полностью выполняется из командной
ния к ресурсам вашего сервера. строки: получите права root, перейдите в /etc/apache2 и выполните эту
Для тестирования модуля создайте текстовый файл побольше, этак команду:
ln -s mods-available/somemod.so mods-enabled/
на 16 МБ, набитый абракадаброй, в каталоге /var/www. Простейший
Создастся символьная ссылка на активируемый модуль, так что для
способ это сделать – ввести команду
его запрета просто удалите файл-ссылку из mods-enabled. Активировав
sudo dd if=/dev/urandom of=/var/www/myfile bs=16M count=1 все модули, какие вы хотели, выполните команду apache2ctl restart,
Прежде чем применять ограничения, скоренько проверим, чита- чтобы Apache перезапустился и изменения вступили в силу.
ется ли этот файл. Запустите wget http://localhost/myfile, и он должен Перезапускать Apache нужно при каждом изменении конфигурации
загрузиться в текущий каталог. Обратите внимание на скорость, кото- согласно этому описанию.
рой достигнет wget – наша составила 44,15 Мбит/сек, для локального
файла нормально.
Откройте /etc/Apache2/sites-available/default как root в любимом шатся неудачей, поскольку к тому времени будет скачано уже 48 МБ,
текстовом редакторе и взгляните на директиву DocumentRoot. Она что на 8 МБ превышает лимит для вашего сайта.
будет установлена в /var/www – нам того и надо, только добавим еще Тут в дело вступает директива CBandExceededURL: как только будет
две строки прямо под ней: достигнут предел трафика, любые запросы, поступающие в наш домен,
ServerName localhost автоматически перенаправятся на www.linuxformat.co.uk. Примечание:
CBandSpeed 1024 5 30 если вы попробуете это дома, то, мы уверены, осчастливите Майка,
Именно в строке CBandSpeed и происходит самое интересное: она администратора сайта Команды LXF, увеличив посещаемость его дети-
ограничивает наш сервер до 1024 Кбит/сек, при максимуме в 5 запро- ща! Хотя вы, видимо, захотите сослаться на какую-нибудь другую стра-
сов в секунду и 30 одновременно открытых соединений. Если вы теперь ницу, разъясняющую, что был превышен лимит трафика, и как можно
запустите wget (файл конфигурации не закрывайте – он скоро вам сно- докупить еще.
ва понадобится), то увидите изрядное снижение скорости, поскольку Наконец, директива CBandPeriod – это суммарное время между
mod_cband автоматически «душит» канал. сбросами счетчиков трафика. Мы указали 1M, то есть каждую минуту
счетчик использования трафика нашего локального сайта будет сбра-
Ограничение использования за период сываться на ноль, и пользователи смогут скачать следующие 40 МБ
Модуль mod_cband вполне способен распределять ограничение шири- контента. Да, mod_cband использует M и для мегабайтов, и для минут,
ны канала сайта во времени. Находясь в /var/www, запустите для нача- но это единственная реальная накладка. Для скоростей закачки можно
ла следующие две команды:
sudo mkdir scoreboard
sudo chown www-data scoreboard
mod_cband будет хранить информацию о суммарном трафике,
использованном каждым сайтом, в каталоге scoreboard, так что он дол-
жен быть доступен на запись пользователю, с правами которого рабо-
тает Apache (www-data). Вернувшись в файл конфигурации, добавьте
следующие четыре строки:
CBandLimit 40M
CBandScoreboard /var/www/scoreboard
CBandExceededURL http://www.linuxformat.co.uk
CBandPeriod 1M
Если вы точно следовали нашим инструкциям, то обнаружите,
что при запуске команды wget никакой разницы не наблюдается.
Фактически, вы можете запустить ее трижды и ничего не увидеть.
Что же изменилось? А магия-то начинается с четвертой попытки: вы
обнаружите, что wget не скачает файл myfile по новой, а перейдет на
www.linuxformat.co.uk. Наш файл имеет размер 16 МБ, а директива
CBandLimit настроена на запрет доступа после достижения предела
в 40 МБ. Так что первое скачивание работает, поскольку уже скачано
0 МБ, второе работает, поскольку скачано 16 МБ (размер первой закач-
ки), третье скачивание тоже работает, потому что скачано 32 МБ (сумма На странице статуса mod_cband дана детальная информация по всем квотам
двух первых закачек), а вот четвертая и последующая закачки завер- и ограничениям, но уж больно крошечным шрифтом!

Март 2007 Linux Format 39


Apache

также использовать K и G (если у вас действительно быстрый интернет- Отчеты о состоянии


канал!), а для периодов времени можно использовать S (секунды), H Можете проверять состояние mod_cband в любое время, используя
(часы), D (дни), и W (недели). особое место на вашем сайте. Допустим, вы хотите разрешить пользо-
Есть две альтернативы директиве CBandExceededURL. Одна – полно- вателям просматривать свои лимиты и узнавать, сколько уже выбрано.
стью удалить эту строку, тогда mod_cband будет выдавать сообщение Отредактируйте файл конфигурации таким образом:
об ошибке HTTP 503 «Сервис временно недоступен». А можно приме- <Location /bandwidth-status>
нить директиву CBandExceededSpeed, она переопределяет CBandSpeed SetHandler cband-status-me
в случае превышения лимита трафика. Например, вы хотите, чтобы </Location>
сайт поддерживал 1024 Кбит/сек, пока не будет достигнут порог в 5 Вы можете теперь зайти на http://localhost/bandwidth-status, да и
ГБ, а затем – лишь 128 Кбит/сек до конца месяца. Вот как это можно любой тоже может – советуем установить пароль на каталог, чтобы
сделать: сюда попадали только свои люди.
CBandSpeed 1024 5 30 Администраторам в масштабе сервера (то есть вам), наверно, захо-
CBandLimit 5G чется видеть глобальное использование трафика, а также информацию
CBandScoreboard /var/www/scoreboard о состоянии всех размещенных доменов. Для этого добавьте в свой
CBandExceededSpeed 128 5 30 файл конфигурации следующие строки для своего домена (но не для
CBandPeriod 4W ваших клиентов):
Одновременно использовать CBandExceededSpeed и <Location /bandwidth-status>
CBandExceededURL нет смысла, поскольку они взаимоисключающие: SetHandler cband-status
вы либо обслуживаете страницу с ограниченной скоростью, либо пере- </Location>
направляете запрос.

mod_rewrite: Перезапись URL динамически


Всякий мастер-класс Linux Format был бы неполон без разборки Иначе говоря, mod_rewrite делает то же, что и Location, только про-
регулярных выражений, и данный – не исключение. Модуль Apache зрачно для конечного пользователя. Единственная издержка использо-
mod_rewrite придуман для проверки на соответствие строк запросов вания mod_rewrite – процессорное время, потому что Apache проверяет
и их изменения на лету. Очень популярно использовать mod_rewrite каждый входящий запрос на соответствие имеющемуся списку правил
для сокращения длинных URL, чтобы их легче было запоминать и перезаписи, но это влияние довольно незначительно.
набирать. Например, если вы хотите, чтобы www.example.com/shortcut Итак, возвращаясь к примеру, где www.example.com/shortcut дол-
молча перенаправлялся на www.example.com/foo/bar/baz/wombat, вос- жен молча превратиться в www.example.com/foo/bar/baz/wombat – вот
пользуйтесь mod_rewrite. как это можно сделать с помощью mod_rewrite:
Тут вы, верно, подивитесь: а чем отличается mod_rewrite от RewriteEngine On
отсылки HTTP-заголовка Location для перенаправления браузера? RewiteRule shortcut/([A-Za-z0-9]*) /foo/bar/baz/wobmat/$1
Действительно, разница невелика: оба переключают один URL на дру- Правило mod_rewrite имеет пять важных моментов:
гой. Однако mod_rewrite в общем удобнее для пользователя, посколь- 1 Запрос на www.yoursite.com/shortcut покажет содержимое каталога
ку заголовок Location говорит браузеру прекратить загрузку текущей www.yoursite.com/foo/bar/baz/wombat.
страницы и вместо этого загрузить другой URL, а mod_rewrite ничего
клиенту не сообщает, просто молча переписывает URL, чтобы тот ука-
зывал на другое место – пользователь и не заметит, что произошло.
Почему mod_access есть зло?
Временно разрешать mod_access, работая с mod_rewrite, вполне нор-
мально, поскольку это значительно снижает суммарное время отладки
ваших регулярных выражений. Но закончив, сразу же запретите пере-
определение настроек, чтобы mod_access был капитально пресечен.
Дело это хорошее, потому что mod_access спроектирован для поиска
опций, которые следует установить в ваших каталогах, в файлах
.htaccess. На вид безвредно, но представьте: если ваш каталог /foo
требует пароль, как Apache догадается, что нужно спросить пароль,
когда пользователь полезет в /foo/bar/baz.php?
Ответ заключается в том, что Apache просматривает .htaccess-
файлы в запрошенном каталоге, а также во всех родительских катало-
гах, вплоть до корня вашей файловой системы. Так, в приведенном
выше примере Apache ищет (и читает, если найдет) следующие
файлы:
/var/www/foo/bar/.htaccess
/var/www/foo/.htaccess
/var/www/.htaccess
/var/.htaccess
/.htaccess
...на что уходит уйма времени. Отключите это и используйте ваш про-
цессор в полезных целях!
Работая с mod_rewrite, знайте, что «Internal Server Error» на языке Apache значит «напортачил
ты в регулярном выражении, балда!»

40 Linux Format Март 2007


Apache

2 Запрос на www.yoursite.com/shortcut/hello отобразит файл www.


yoursite.com/foo/bar/baz/wombat/hello.
3 Фрагмент $1 ссылается на группу регулярного выражения (часть,
заключенная в скобки) и использует ее в перезаписываемом URL.
4 Пользователь и не заподозрит, что просматривает /foo/bar/baz/
wombat, а не /shortcut – Apache все делает тишком.
5 Каталог /foo/bar/baz/wombat по-прежнему доступен напрямую.
Теперь вы видите, чем хороша прозрачность: все, что соответству-
ет URL www.yoursite.com/shortcut, будет автоматически перезаписа-
но. Немного изменив правило (предусмотрев символы /, ., = и &), вы
даже сможете перезаписывать целые URL, преобразуя www.yoursite.
com/shortcut/gubbins/foo.php?bar=baz в www.yoursite.com/foo/bar/baz/
wombat/gubbins/foo.php?bar=baz.

Перезапись – углубленно
Не будем заострять внимание, но ваши правила перезаписи вряд ли
заработают с первого раза. Обычно требуется не одна попытка, и вы,
скорее всего, добьетесь их правильности, лишь вволю наскрежетав-
шись зубами. Так что, добавляя новые правила, вы можете предпочесть
положиться (временно!) на файлы .htaccess: они временно изменяют
установки конфигурации Apache для конкретного каталога. Чтобы раз-
решить использование файлов .htaccess, загляните в конфигурацию Использование файлов .htaccess для свежесоставленных правил mod_rewrite позволит
Apache (ту, что мы уже используем), и для каталога /var/www измените не перезапускать Apache при каждом мелком изменении.
‘AllowOverride None’ на ‘AllowOverride All’. Перезапустите Apache, и фай-
лы .htaccess готовы к работе!
Пора попробовать что-нибудь поинтереснее. Да, укорочение длин- referrer с именем нашего сайта? Это вторая строка кода. Символы .*
ного URL – типовое применение mod_rewrite, но еще популярнее при- в конце означают «соответствует всему», так что будет совпадение с
ведение уродских URL к виду, простому для запоминания. Например, любым URL, размещенным на нашем сайте. Наконец, если обе строки
www.yoursite.com/index.php?Section=Bugs&User=Hudzilla – URL ужас- RewriteCond выполняются, срабатывает строка RewriteRule. Она отби-
ный, а www.yoursite.com/users/hudzilla/bugs и запомнить легче, и для рает JPEG- и PNG-файлы и перезаписывает их в – [F], так в mod_rewrite
глаза приятнее! mod_rewrite поможет горю, например, таким образом: сокращенно обозначено нечто невежливое вроде «запрещено – вали
RewriteRule ^users/([A-Za-z0-9_])+/bugs$ index. отсюда!».
php?Section=bugs&User=$1 Мы могли бы усовершенствовать второе rewrite-условие, добавив
Символы ^ и $ означают «начало строки запроса» и «конец стро- [NC] в конец этой строки, что велит Apache игнорировать регистр сим-
ки запроса» соответственно, они избавят Apache от обработки чего-то волов в запросе, рассматривая www.YOURSITE.com и www.yoursite.com
типа www.yoursite.com/users/hudzilla/bugs/monkeybutts. как один и тот же путь.
Если вы озверели от безуспешной борьбы с mod_rewrite, можете
либо расслабиться, глубоко вдохнуть и попробовать снова, либо пос-
«Опытные пользователи тупить как все: взреветь от ярости и пнуть свой компьютер через всю
комнату. Но что бы вы ни сделали, утешайтесь фактом, что проблемы
добавят себе мощности бывают даже у профи. Брайан Белендорф [Brian Behlendorf], основа-
тель Apache Software Foundation, как-то сказал: «mod_rewrite заме-
условиями mod_rewrite.» чателен тем, что дает вам всю настраиваемость и гибкость Sendmail.
Оборотная сторона медали – он дает вам всю настраиваемость и гиб-
Использование точных правил очень полезно, когда нужно прове- кость Sendmail.» Будьте упорны, и все получится!
рять соответствие множества различных вещей. Например, вам может Учтите: как только вы закончите с mod_rewrite, советуем изменить
потребоваться загружать страницу поиска пользователя, когда на www. ‘AllowOverride All’ обратно на ‘AllowOverride None’: mod_access (модуль,
yoursite.com/users зайдет посетитель, а значит, строка RewriteRule который работает с файлами .htaccess) – это гарантированное узкое
должна явно игнорировать все, что добавляет имя пользователя в место производительности. LXF
конец запроса. Можете написать столько строк RewriteRule, сколько
потребуется, но помните, что Apache прогоняет каждый запрос через
каждую из строк RewriteRule, и неаккуратные правила потребуют
довольно интенсивной работы процессора!
Опытные пользователи могут добавить себе через условия mod_
rewrite большей мощности. Например, если ваш сайт размещает мно-
Идем дальше
жество изображений, и вы не хотите, чтобы другие сайты высасывали Если вы проработали каждый из этих модулей, вот еще три рекомен-
ваш трафик, устанавливая ссылки непосредственно на ваш сервер, вы дации на пробу:
можете использовать что-нибудь наподобие mod_dnssd Публикует ваш сайт, используя протокол обнаружения
RewriteEngine on сети Apple Bonjour.
RewriteCond %{HTTP_REFERER} !^$ mod_musicindex Позволяет всему миру листать вашу музыкальную
коллекцию, а также и прослушивать ее.
RewriteCond %{HTTP_REFERER} !^http://www.yoursite.com/.*$
mod_mono Apache встречается с Mono... Разместите C# на своем
RewriteRule \.(jpg|png)$ - [F]
сервере и запускайте ASP.NET через Apache.
Здесь три важных строки. Первая проверяет, не равен ли referrer
Итак, какой модуль Apache ваш любимый? У вас есть трюк с mod_
значению ^$ – т.е. пустой строке. Учтите, что «referrer» пишется rewrite, который вам особо по душе? Напишите нам, а лучший мы
здесь с одной ‘r’ (HTTP_REFERER) из-за исторической опечатки. Если опубликуем! letters@linuxformat.ru.
первая проверка проходит, то выполняется вторая: не совпадает ли

Март 2007 Linux Format 41


Нестандартное программирование

Лингва на DVD
Интерпретаторы для
рассмотренных языков

эзотерика
По-вашему, C – это сложно? А у Perl нехороший синтаксис? Хватит ныть, вот сейчас
Майк Сондерс покажет вам, что такое действительно трудный язык…

О
днажды Свами Прабхупада [Swami Prabhupada], осно- Мы предполагаем, что вы владеете базовыми понятиями в этой
воположник движения Харе Кришна, прогуливаясь с области; но даже те, кто сроду кода не писал, сочтут некоторые кон-
послушниками около поля для гольфа, увидел игрока, цепции неплохой гимнастикой для ума. Вы вряд ли выберете эти язы-
замахнувшегося для очередного удара. «Поглядите на ки для создания крутого пакета офисных программ, зато, изучая их,
этого человека, – сказал Прабхупада, – всю свою жизнь он трудился, получаешь глубокое представление о строении языка программиро-
но это ничто по сравнению с усилиями, которые он прилагает сейчас, вания. Да и С после них кажется малиной…
чтобы забить шар в лунку».
Такова уж людская природа: вечно нам подавай преодоление Вьем петли из Spaghetti
каких-то препятствий, надо или не надо. Есть же превосходные язы- Начнем с несложного языка со вкусным именем Spaghetti. В нем
ки высокого уровня – C#, Ruby и Python, а разработчики все норовят каждая строка кода заканчивается оператором перехода GOTO, при-
исследовать что-то новое, и в результате появляются совсем уж при- чем переход на следующую строку запрещен. Иными словами, две
чудливые (но любопытные!) создания. соседние строки кода никогда не выполняются последовательно.
В предыдущих статьях рассказывалось о Tcl, Ruby, хоть и не Рациональный код и дурак напишет, а мы попрыгаем!
слишком часто применяемых, но достойных изучения хотя бы ради Почти все книги по программированию твердят, что оператор
расширения профессионального кругозора. А сегодня мы займем- GOTO лучше не использовать, обходясь циклами и вызовами функ-
ся по-настоящему экзотическими языками, настолько забавными ций. Код Spaghetti, наоборот, петляет как заяц, на радость тем, кому
и нетривиальными, что вы увидите ремесло программирования в циклы, функции и оператор return кажутся простецкими. Spaghetti –
совершенно новом свете. Необходимые программы находятся в раз- интерпретируемый язык. После запуска первые 256 байт выделенной
деле Magazine/Esoteric нашего DVD. программе оперативной памяти содержат числа от 1 до 255; есть еще

www.ellywalton-illustrations.com

42 Linux Format Март 2007


Нестандартное программирование

26 переменных от a до z, которые находятся в ячейках с 256 по 281.


Двойное слово в паре регистров a и b может использоваться как ука-
затель на некоторую ячейку памяти. Например, установив содержи-
мое обоих регистров равным 255 (FF в шестнадцатеричном виде), мы
укажем на ячейку памяти 65535. Сокращенно этот составной адрес
ячейки памяти обозначается *.
Займемся командами. Команда a? вводит символ и записывает
его в переменную a, а ?a выводит на экран значение переменной a.
Вместо a, естественно, можно использовать любую переменную из
диапазона a–z. Каждая строка кода начинается с ее номера, а закан-
чивается номером строки, куда нужно перейти (ни в коем случае не к
следующей!). Выполнение программы начинается с первой строки и
заканчивается при переходе на нулевую строку.
Оператор условия выглядит следующим образом: a~b:5. Если a
равно b, переходим на пятую строку программы, в противном слу-
чае – на строку, номер которой указан в конце данной строки. Номера
строк отделяются от собственно операторов квадратными скобками.
Так, 1[a~b:3]4 означает «если a равно b, перейти к строке 3, а если
нет, то к строке 4».
Пример простенькой программы:
2[x~13:0]3 TELL “Wowzers” NEXT Wiki про
1[x?]2 11 CALL counter - 1 counter экзотические языки
3[?x]1 В строке 10 оператором CALL переменной counter присваива- программирования
Кристально неясно, да? Повесим на уши Spaghetti: программа ется значение 10. Оператор COME FROM в следующей строке полу- доступна на сайте
Esolangs.org.
просто выводит на экран симво- чает управление из строки с
лы, вводимые пользователем, и номером 10 + SGN counter,
завершается при нажатии Enter. где ‘SGN counter’ – это знак
Выполнение начинается со стро- «Вам нипочем не понять переменной counter (счетчик),
ки 1, где с клавиатуры вводит-
ся символ, который сохраняется
логику программы, пока равный единице, если пере-
менная положительна. То есть
в переменной x. Затем велено
перейти к строке 2 (ну нельзя же
вы не дочитаете ее до пока счетчик больше нуля, из
строки 11 будет делаться пере-
написать ее следом – она нахо- самого конца.» ход к оператору COME FROM. В
дится над строкой 1). этой строке значение счетчика
Тут переменная x, содержа- уменьшается на единицу; когда
щая введенный символ, сравнивается с кодом клавиши Enter (13). оно станет равным нулю, переходов к оператору COME FROM больше
Если x равно 13, переходим к нулевой строке – это, как вы помните, не будет. Итого: в строке 10 устанавливается значение счетчика, затем
означает выход из программы. Если нет, переходим к строке 3 и выво- выводится на экран строка ‘Wowzers’, в строке 11 значение счетчика
дим символ на экран. После этого снова возвращаемся к строке 1. уменьшается на единицу, после чего переходим к оператору COME
Посмотрите на текст программы еще раз, и вы получите мало с FROM, строка вновь выводится на экран и т.д., до тех пор, пока значе-
чем сравнимое удовольствие своих серых клеточек. Парочка про- ние переменной counter больше нуля. Просто, не правда ли?
грамм на языке Spaghetti, и вы с легкостью читаете программы на
Basic, которые прежде напоминали средневековые манускрипты. Ну, Неформальный Befunge
это… если предварительно не рехнетесь. При всей своей странности, Come Here все-таки придерживается при-
вычного размещения операторов по отдельным строкам. Но взгляни-
«Ты туда не ходи, ты сюда ходи» те на исходный код любой программы – короткие и пустые строки и
Spaghetti требовал использования оператора GOTO, а Come Here, пробелы оставляют очень много места. А ведь размер текстового тер-
наш следующий язык программирования, применяет оператор COME минала 80x25 символов, почему бы не повысить его КПД?
FROM. Пусть в программе встретилось COME FROM 30; тогда интер- Пытаясь создать язык, сложный для компилирования, Крис
претатор после строки 30 выполнит код, следующий за COME FROM. Пресси [Chris Pressey] в 1993 г. придумал Befunge. Вместо построч-
Это означает, что вам нипочем не понять логику программы, пока вы ного кода, программа работает с двумерной сеткой и может пере-
не дочитаете ее до самого конца. ходить в любом из четырех направлений. Язык основан на кон-
Вот программа, которая в бесконечном цикле выводит на экран цепции стека.
слово ‘Developers’ – прямо виртуальный Стив Балмер (кстати, язык Напомним: стек – это блок памяти произвольного раз-
Come Here чувствителен к регистру символов): мера, учитывающий порядок записи в него. Как тубус
COME FROM 10 для теннисных мячей: доступен только верхний мячик,
10 TELL “ Разработчики” NEXT и вложить мячи можно тоже только сверху. Например,
Сначала выполняется строка 10, где командой TELL на экран выво- если поместить в стек числа 3, 7 и 15, прочитаем их мы
дится ‘Разработчики’. NEXT отмечает конец команды. Затем происхо- в обратном порядке: 15, 7 и 3 (последним вошел, первым
дит прыжок к оператору COME FROM 10 (раз только что была выпол- вышел – по-английски сокращенно LIFO). Стек – удобное средс-
нена строка с номером 10), после которого выполняется опять строка тво временного хранения данных, тем более в Befunge: перемен-
10, и так далее. Номер строки не обязателен: он играет роль метки. ных в этом языке нет.
Следующая программа десять раз подряд выводит на экран стро- Управление выполнением программы осуществляется с помо-
ку ‘Wowzers’. щью операторов ^ (вверх), v (вниз), < (налево) and > (направо). Если
10 CALL 10 counter в строке кода встречается число или символ, они помещаются в стек.
COME FROM 10 + SGN counter Команда «запятая» (,) производит чтение из стека. Доступны арифме-

Март 2007 Linux Format 43


Нестандартное программирование

движение вниз. Следующий оператор < вызывает движение влево, и


начинается работа.
Мы натыкаемся на строку Hello, и ее символы помещаются в стек
в обратном порядке (olleH). Серия команд “,” по очереди считает их
из стека и выведет на экран.
Затем мы движемся вниз (v) и направо (>), где помещаем в стек
числа 4 и 8, вычисляем их произведение с помощью оператора * и
выводим результат на экран. Результат, 32, это код символа пробела,
он-то и выведется. Затем мы движемся вниз и налево. На экран выво-
дится вторая строка World!.
Наконец, мы заносим в стек 2 и 5, вычисляем их произведение –
10 и выводим на экран символ с кодом 10 (переход на новую строку).
Тут интерпретатор натыкается на команду завершения работы – @.
В Befunge еще много интересного. Ввод значений с клавиатуры и
запись их в стек осуществляется с помощью операторов & и ~ соот-
ветственно для числовых и символьных величин. Можно поменять
местами два элемента на вершине стека оператором \ или пропустить
очередную команду оператором #. А самый захватывающий опера-
тор – ?, он осуществляет случайный выбор направления перехода (на
все четыре стороны), в котором продолжится выполнение програм-
мы. Это может пригодиться для рандомизации программы, зато уж
понять ее будет практически невозможно.

Malbolge: PHP от дьявола?


Код программы на тические операции +, -, / и * (сложение, вычитание, деление и умно- Дальше – больше. Язык Malbolge, получивший свое название от вось-
Malbolge для песни жение). Вот как выглядит программа Hello World на Befunge: мого круга ада [Malebolge] из «Божественной комедии» Данте, счита-
99 Банок Пива, > v ется самым сложным языком программирования за всю историю. Уж
созданный v , , , , , “ H e l l o “ < если вы его освоите, значит, вам по силам левитировать на три фута
компьютером.
>4 8 * , v над землей или манием руки вызывать грозу. Кстати, автор выдаст
Трепещите!
v , , , , , , “ Wo r l d ! “ < 100 фунтов тому, кто напишет на Malbolge клона доктора Элизы
>2 5 * , @ [Eliza] из Emacs (m-x-doctor).
С чего это мы расщедри-
Попробуем разобраться. лись? Судите сами. Первая про-
Выполнение программы всегда «Malbolge – самый грамма на языке Malbolge поя-
начинается с левого верхне-
го угла, там командой > задан
сложный язык вилась только через два года
после его создания – да и напи-
переход вправо. Интерпретатор
перемещается до появления сле-
программирования сал-то ее не человек, а компью-
тер. Malbolge настолько сложен,
дующей команды v и начинает из существующих.» что простые смертные справля-
ются в лучшем случае с выво-
дом строки текста. Даже программы, созданных компьютером, на
большее особо не замахиваются. И это плохо, скверно, не здорово.
Здесь смотреть нечего Интерпретатор языка Malbolge представляет собой тернарный
процессор. Если вы программировали на языке Assembler, то знако-
мы с двоичной (основание 2) и шестнадцатеричной (основание 16)
В статье про экзотические языки нельзя не
системами счисления. Троичная система счисления исключительно
упомянуть о Whitespace. Этот язык программи-
рования, команды которого состоят из пробе- неуклюжа, а Malbolge того и надо. Посчитайте: 0, 1, 2, 10, 11, 12, 20,
лов, символов табуляции и перевода строки, 21, 22, 100… Ужас.
не видимых на экране, по праву можно считать Но это еще цветочки. Пользователю доступны три регистра (ана-
самым чудаковатым. Открыв его программу в лог переменных) A, C и D. Регистр A – аккумулятор, он хранит резуль-
текстовом редакторе с подсветкой синтаксиса, таты выполнения операций; регистры C и D содержат адреса ячеек
вы увидите одни разноцветные пятна. памяти для кода и данных соответственно, причем после выполне-
Тем не менее это полноценный язык. ния очередной команды их содержимое увеличивается на единицу.
Например, команде вычитания соответствует Доступны 59049 ячеек памяти, каждая из которых может содержать
последовательность из символа табуляции,
десятиразрядное троичное число.
двух пробелов и еще одного символа табуля-
Восемь основных команд языка включают команды перехода,
ции. Как и в языке Befunge, широко использу- Программы на Whitespace видимы
ется стек. Вы можете создавать процедуры и троичного сдвига, ввода/вывода и завершения программы. Есть еще
только в редакторах с подсветкой
пользоваться метками. Учтена даже модуль- «шальная» команда, по двум операндам выбирающая значение из
синтаксиса.
ность, столь важная для крупных проектов! таблицы – так Malbolge заполняет неиспользованную память по дан-
Рассмотрим пример программы: ным использованной.
с высокой защищенностью: даже распечатав Когда интерпретатор начинает выполнение очередной команды,
текст программы, злоумышленник не увидит в к содержимому регистра C (скажем, 4) прибавляется смещение этой
Здесь мы складываем два числа и записы- ней уязвимостей. Кстати, распечатка сберегает команды в коде программы (например, 390). Затем из полученного
ваем результат в память. Разработчики уверя- окружающую среду, экономя на чернилах. Чем
числа вычитается 94 до тех пор, пока результат больше 94. Результат
ют, что язык очень популярен для приложений не язык для пост-структуралистов?
этой операции определяет код выполняемой команды. После выпол-
нения команды содержимое соответствующей ячейки памяти шиф-

44 Linux Format Март 2007


Нестандартное программирование

руется при помощи таблицы подстановки, и переход на эту ячейку


станет невозможен.
Вот и все, что мы можем открыть, а не то журнал вспыхнет у вас в
C: чего только не придумают
руках – о прочей черной магии узнаете через ссылки в нашей врезке Одна из бед языка C заключается в том, что
Ресурсы, ниже на этой странице. В заключение – программа, выводя- здесь не выработан стандартный стиль про-
щая на экран строку “Hello, world” на языке Malbolge: граммирования (в отличие, например, от
(=<`:9876Z4321UT.-Q+*)M’&%$H”!~}|Bzy?=|{z]KwZY44Eq0/{mlk** Python). На этом языке вполне можно писать
hKs_dG5[m_BA{?-Y;;Vb’rR5431M}/.zHGwEDCBA@98\6543W10/. читаемые программы, но уж слишком легко
R,+O< все запутать отступами, пробелами, именами
переменных, макросами и прочим. Если вам
Нигилизмы приходилось разбираться в чужом коде, вы
наверняка не раз проклинали все на свете,
Радуйтесь: даже в мире экзотических языков программирования
недоумевая: «Ну что он хотел этим сказать?».
бывают передышки на что-то менее безумное. Разработчики Nil при-
К счастью, теперь вам есть куда послать
менили свежий подход к программированию, поставив дизайн впе- нечитаемый код. Каждый год участники кон-
реди программных ухищрений. Много говорено, что языки высокого курса International Obfuscated C Code Contest
уровня типа C# избавляют от рутинных операций, позволяя сосредо- (IOCCC, Международный конкурс на самый
точиться на алгоритме, а Nil превращает этот процесс в настоящее запутанный код) выбирают лучшие образцы
искусство. кода из тех, которые работают совсем не так, Запустите эту программу – получится…
Nil дает существенное уменьшение размера получаемого объект- как должны на первый взгляд. Некоторые другая картинка.
ного кода, упрощение отладки программы и полную межплатформ- программисты создают настоящие произведе-
ния ASCII-искусства – даже в голову не придет, картинку. На сайте конкурса www.ioccc.org
ную переносимость. Это один из немногих языков, которые, пообе-
что это программа, которая корректно компи- таких программ много. Мы уверены, что даже
щав эти преимущества, в самом деле обеспечивают и их, и многое
лируется. настоящие гуру языка C не с ходу в них разбе-
другое! рутся. Зато как весело скомпилировать такой
Взгляните на рисунок. На вид это просто
Формат исходного кода языка может варьироваться. Рассмотрим портрет, а на самом деле – исходный код; пример и посмотреть, что будет...
фрагмент кода: запустите его, и он выведет на экран другую
for(b = 1; bytes < c_byte; b++) {
if(!(bh[b] = sb_getblk(s, ++cur_index)))
GOTO block_release;
bytes += msBlk->devblksize;
}
Здесь содержатся операторы цикла и сравнения. Как этот код
оптимизировать? Компилятор языка Nil расщепляет программу на
«атомы», удобные для синтаксического анализа. Каждый «атом»
транслируется отдельно; Nil практикует нигилистический подход,
согласно которому «атомарная» операция есть ни что иное как ничто,
т.е. nop, и выполняет соответствующие подстановки.
С позиций данной оптимизации, Nil сворачивает последователь-
ность команд nop в единственную команду nop, существенно умень-
шая время выполнения программы и размер используемой памяти.
Команда nop поддерживается подавляющим большинством процес-
соров, поскольку рекомендует им не делать ничего. Итак, код при-
веденного фрагмента кода на языке Nil будет выглядеть следующим
образом:
nop
нигилисты ведь утверждают, что все на свете бессмыссленно! Зачем
процессору париться с каким-нибудь преобразованием Фурье? Пусть
постынет, пока вы пьете чаек!

В заключение
Таковы подлинно экзотические языки программирования. Может,
они и не созданы для величия, но все равно волнуют умы. Забавно
попробовать Spaghetti, хотя бы для того, чтобы взять да и усложнить
простые вещи – это тренирует мозги; а после головоломного Malbolge
вы вернетесь к программированию на добром старом C с новым энту-
зиазмом, как скороход, сбросивший с ноги гирю. Ресурсы
Во врезке Ресурсы вы найдете ссылки на сайты с дополнительной
информацией. Испробуйте эти языки сами и обязательно расскажите http://kidsquid.com/files/spaghetti/spaghett.txt http://compsoc.dur.ac.uk/whitespace …
нам об этом! LXF Информация по Spaghetti. и Whitespace.

http://en.wikipedia.org/wiki/Befunge Домашняя www.ioccc.org Конкурс IOCCC.


страница Befunge.
http://esolangs.org/wiki/Main_Page Разыщите
http://tinyurl.com/y8ta2z Come Here. еще что-нибудь сами.

www.antwon.com/other/malbolge/malbolge.txt
Углубляемся в Malbolge…

Март 2007 Linux Format 45


Что за штука... OpenID

Что за
штука... OpenID?
Вы уже перестали понимать, кто вы такой? Все, что вам нужно – это URL,
утверждает Марко Фиоретти.
Что такое OpenID? идентификации для других. Конечно, благонадежность Это значит, что я не могу использовать свое
Если верить лозунгу с домашней страницы какого-то из самодельных провайдеров может вызы- собственное доменное имя как свой OpenID
OpenID (http://openid.net), это – лучшее изобретение вать вопросы, но зато никто не завязан на одну-един- URL, если я предварительно не настроил на нем
человечества со времен колеса: «открытая, свободная, ственную организацию. OpenID-сервер?
распределенная система поддержки цифровой лич- Конечно, можете! Между прочим, сделать вашу домаш-
ности, ориентированная на пользователей». И как работает OpenID? нюю страницу вашим OpenID URL – это гораздо круче и
Если вы хотите узнать все подробности, не профессиональнее и не требует большого труда! Для
И как понимать слова «цифровая личность»? вникая при этом в технический жаргон – прочитайте начала зарегистрируйтесь на каком-нибудь провайде-
Грубо говоря, это любой программный метод пошаговое описание (с красивыми картинками), опуб- ре OpenID. После чего добавьте в секцию <head> вашей
и набор цифровых данных, позволяющие системе ликованное на www.openidenabled.com/openid/openid- домашней страницы несколько строк (подробная инс-
выяснить (без какой-либо неопределенности и дыр protocol. Ну, а я попробую показать вам на пальцах. трукция находится по адресу www.openidenabled.com/
в безопасности), кем кто-то или что-то является на openid/use-your-own-url-as-an-openid) – и готово!
самом деле. Как мило. А я по-прежнему должен буду пом- Любой, кому потребуется идентифицировать вас по
нить все эти имена, пароли и вымышленные OpenID, найдет на вашей домашней странице указание,
Но я совершенно не хочу, чтобы кто-то выяс- девичьи фамилии бабушки? с каким сервером для этого нужно связаться.
нял, кто я такой! Интернет-свобода существует Нет. OpenID использует всегда один и тот же URL,
исключительно благодаря анонимности! обычный интернет-адрес, вне зависимости от того, на Пусть у меня уже есть нужный URL. Что мне с ним
делать, когда я хочу доказать, что я – это я?
Чтобы зайти на любой сайт с поддержкой OpenID, най-
“Чтобы интернет стал действительно полезным, дите нужную форму и укажите в ней свой URL. Сайт
использует его, чтобы связаться с вашим провайде-
ему необходима открытая, распределенная и ром OpenID, и автоматически перенаправит вас на
вездесущая система цифровой личности..” форму входа, расположенную на нем. После того, как
вы пройдете аутентификацию на сервере OpenID, ваш
провайдер сделает две вещи, причем опять же авто-
Ну, начнем с того, что действительная анонимность в каком сайте вы хотите заявить о себе. Ваш пароль и матичеcки. Во-первых, он передаст подтверждение
Интернете – это всего лишь иллюзия. Для того, чтобы любая другая идентификационная информация, кото- на тот сайт, с которого вы изначально делали запрос,
действительно замести все следы, нужно предпринять рой вы согласны поделиться, известна только выбран- что вы – это действительно вы, и с этого момента вас
много действий, часть из которых иногда противоречит ному вами серверу OpenID. надо рассматривать как полноценного зарегистриро-
договору с интернет-провайдером, а то и просто неза- ванного пользователя системы. Во-вторых, провайдер
конна. Но даже при этих условиях бывает множество Прекрасно, выходит, мне нужно установить и перенаправит вас на ту самую страницу, с которой вы
ситуаций, в которых вы сами хотите или должны дать обслуживать еще одно приложение, работать с начинали.
знать интернет-партнеру о том, кто вы такой. которым могут только хакеры.
Не обязательно... Вы, конечно, можете запустить свой Если мне по-прежнему придется вводить
Например? собственный сервер OpenID у себя дома, но можете вос- пароль, то в чем тогда смысл OpenID?
Например – интернет-банкинг. Для вас жиз- пользоваться и одним из сторонних провайдеров. Их Смысл в том, что теперь вам надо помнить всего
ненно важно, чтобы банк проверил, кто вы такой. Да и список есть на www.lifewiki.net/openid/OpenIDServers. один URL и всего один пароль, вне зависимости от
вам было бы полезно проверить, что вы в своем бан- того, сколько сайтов вы посещаете. В зависимости
ке, а не в одном из широко расплодившихся мошен- Ну что ж, до сих пор все звучит неплохо. Как от политики сайта, ваш провайдер может запросить у
нических сайтов. Существует множество ситуаций, в мне воспользоваться OpenID? вас разрешение на передачу каких-то дополнительных
которых возможность быстро идентифицировать всех Если вы просто хотите выступить в качестве потреби- персональных данных. Сейчас разрабатывается систе-
интернет-участников может сэкономить много усилий теля, то есть идентифицироваться при помощи OpenID ма, позволяющая делать то же самое автоматически,
и времени. на поддерживающих его сайтах (не интегрируя при еще проще и быстрее. И, конечно же, вас всегда спро-
Некоторые люди уже используют OpenID, чтобы дать этом его поддержку в свой собственный сайт), то все, сят, устраивает ли вас доверяемый корневой элемент
возможность друзьям читать их закрытые публикации в что вам нужно – это получить свой идентификатор. Их (trust root) web-сайта, который пытается идентифици-
LiveJournal, не проходя регистрацию на этом сайте. существует два типа – URL и XRI (eXtensible Resource ровать вас.
Identifiers, расширяемый идентификатор ресурса).
Гмм... Ну, пускай. Но кто контролирует OpenID? Самый быстрый и простой способ получить URL – это Ээ... Простите, доверяемый что?
Правительство? Злобные инопланетяне? Или регистрация на одном из общедоступных провайдеров Доверяемый корневой элемент (ДКЭ) – это
еще какой-нибудь Большой Брат? OpenID. При этом вы получите адрес, обычно в виде строка, похожая на обычный URL, которую сайты,
А вы помните «ориентировку на пользователя», кото- http://yourname.someOpenIdprovider.com, уже настро- поддерживающие OpenID, должны отправлять вмес-
рую я упоминал в самом начале? OpenID зиждется на енный на представление OpenID. те с каждым запросом на вашу идентификацию. ДКЭ
том, что каждый может идентифицировать себя само- позволяет добиться того, что ваш провайдер OpenID не
стоятельно, а также предоставить сервис цифровой будет автоматически подтверждать вашу личность для

46 Linux Format Март 2007


OpenID Что за штука...

всех сайтов на свете. Сначала (когда вы будете пере- временно с еще одним идентификатором, i-number, код. Если вы чувствуете, что в вас проснулся пропо-
направлены на сервер OpenID) он должен спросить который уже никогда не может быть выдан кому-то ведник OpenID, срочно идите на http://iwantmyopenid.
вас, согласны ли вы с тем, чтобы запрос на авториза- еще. В дальнейшей работе i-name выступает только org!
цию автоматически подтверждался для всех доменов в качестве синонима i-number. Такая схема позволя-
и поддоменов адреса, приведенного в качестве ДКЭ. ет, кроме всего прочего, запросить новый i-name для Что будет с OpenID дальше?
Конечно, если вы выполняете вход на сервер www. существующего i-number, когда старый становится Сейчас идет работа над OpenID Authentication
someonlineshop.com, а провайдер OpenID запрашивает недействительным (чаще всего такое происходит, ког- 2.0. Это обновление спецификации ключевой функ-
у вас согласие на вход в www.westealcreditcards.com, да меняется название бизнеса). ции OpenID – аутентификации пользователей. Еще
соглашаться – не самая лучшая идея. Никогда не под- одна новая спецификация, OpenID Attribute Exchange,
тверждайте ДКЭ, URL которых не совпадает с адресом Где я могу найти онлайновую документацию? дает пользователям возможность указывать, каким
посещаемого вами сайта! На официальном сайте OpenID и в списках образом провайдер должен делиться элементами лич-
рассылки, расположенных по адресу http://openid.net/ ной информации (телефоном, адресом) с третьими
Какова оборотная сторона медали OpenID? mailman/listinfo. В них рассматриваются вопросы безо- лицами.
Точно такая же, как и у любого доменного пасности, впечатления пользователей и так далее.
имени в Интернете, или, если хотите, у телефона или Как вы думаете, это будет работать, или это
домашнего адреса – к сожалению, никто не гаранти- А что если я захочу добавить поддержку OpenID просто еще один мыльный пузырь?
рует, что они останутся неизменными на протяжении в мое web-приложение? Посмотрите на список сайтов, которые уже поддер-
вашей жизни. И, точно так же, опрометчиво наде- Замечательно! Зайдите на www.lifewiki.net/openid/ живают OpenID, на www.myopenid.com/directory. В него
яться заполучить адрес, состоящий из вашего имени OpenIDLibraries и возьмите оттуда готовый код. Уже входят Technorati и Movable Type! Чтобы Интернет стал
и фамилии, особенно если вас зовут Иванов Иван существуют интерфейсы для использования его действительно полезным, ему необходима откры-
Иванович. из PHP, Perl, Python, Java и многих других языков тая, распределенная и вездесущая система поддер-
программирования. жки цифровой личности. Когда OpenID превратится
Неужели эта проблема неразрешима? в такую систему – это уже другой вопрос. Но если он
Ну почему же... Расширенные идентификаторы Не сомневаюсь, что им требуются будет интегрирован в такие продукты, как WordPress
ресурсов, которые я упоминал выше, решают пробле- разработчики... и Drupal, он может очень быстро стать стандартом de
мы постоянного адреса, так как они всегда состоят Так и есть. Если вы не против запачкать руки, заходи- facto перед тем, как эту нишу займет кто-нибудь дру-
из двух частей. Первая часть называется i-name – это те на www.openidenabled.com. Кроме того, вы можете гой, чем поможет нам избежать множества проблем в
просто строка, которую несложно запомнить и легко побороться на http://iwantmyopenid.org/bounty за приз, будущем. LXF
передать кому-то другому. Но когда кто-нибудь запра- предназначенный для тех, кто интегрирует OpenID в
шивает i-name в первый раз, он всегда выдается одно- приложения FOSS. Но разработчикам нужен не только

Март 2007 Linux Format 47


Музыкальный
Музыкальный Linux Linux Свободный
инструментарий для свободного творчества

Тяжелая
ЧАСТЬ 3 Петр Семилетов готовится рассказать вам о программах настолько высокого класса,
что их название сложно перевести на русский язык короче, чем «рабочая станция по цифровой
обработке звука».
бы негоже сравнивать чистый DAW вроде Audacity с Muse. Кроме
того, Rosegarden и Muse похожи между собой. Обе программы слы-
вут «нашим ответом Cubase» (это мы обсудим чуть позже), интерфейс
обеих так или иначе основан на Qt (в Rosegarden имеется привязка к
KDE). Итак, приступим.

Rosegarden
Web www.Rosegardenmusic.com

С
егодня мы подобрались к «тяжелой артиллерии» музыкаль-
ных программ – к той их нише, которая во всем мире кратко
называется DAW (Digital Audio Workstation), то есть рабочая
станция по обработке цифрового звука. В русском я не знаю подходя-
щего термина, и чтобы не писать все время «DAW», буду употреблять
словосочетание «рабочая станция».
Изначально DAW-ом называлась связка из программы, позволя-
ющей делать многоканальную запись, и дорогой звуковой карты под
эту программу (или наоборот – программы под карту). Примеры –
Protoсols, Nuendo. Сейчас функциональность типичной рабочей стан-
ции несколько шире – это не только запись и микширование звуковых
дорожек, но и встроенный MIDI-секвенсер с поддержкой виртуальных
инструментов. Есть «чистые» DAW-ы, а есть смешанные – со встроен-
ным MIDI-секвенсером. Рис. 1.
DAW – это сердце домашней/любительской студии. Сюда поступа-
ют все партии, здесь же они и микшируются. Рабочие станции – пожа- На сайте продукта можно найти сравнение с Cubase: ««the closest
луй, самые сложные музыкальные программы. Сложные как внутрен- native equivalent to Cubase® for Linux» – Sound on Sound». Некоторое
не, алгоритмически, так и для пользователя. Хотя все DAW’ы имеют сходство и впрямь есть – монтажный стол справа, свойства дорожек
ряд сходных составляющих, как то: монтажный стол, где располага- слева, и плавающее окно «Транспорт». Да, вот вам и первое отличие –
ются партии/сэмплы и отдельным окном плавает виртуальный мик- Rosegarden русифицирован, а официальных переводов Cubase на рус-
шер. Желательны также встроенный (хотя бы простейший) волновой ский, насколько я знаю, нет. Других отличий больше, нежели сходства,
редактор, отображение видео (для синхронизации звука с видеорядом) поэтому сравнивать с Cubase я (как завзятый реалист) перестаю.
и автоматизация – то есть запись и воспроизведение динамических Свежий (во время написания статьи – версии 1.5.0) Rosegarden без
изменений параметров эффектов. Пример – управление громкостью труда устанавливается из исходных текстов на современный «бытовой»
дорожки, чтобы она не находилась постоянно на одном уровне, а в дистрибутив вроде моего Mandriva 2007, то есть никаких запредельных
нужных местах становилась меньше или больше. зависимостей от библиотек не предполагается.
В этой статье мы посмотрим на две Linux-программы из разря- Для сборки используется модная нынче утилита Cmake. Однако,
да рабочих станций – Rosegarden и Muse. Есть и другие – Ardour (см. я советую установить более раннюю версию Rosegarden – например,
LXF89), Audacity, также хороша в работе с цифровым звуком Cinelerra 1.4.0 или любую после 1.5.0 (если в ней исправят импорт WAV/MP3/
(см. LXF85). Rosegarden и Muse относятся к числу того универсаль- OGG-файлов). В 1.5.0 такой импорт попросту сломан. Во всяком случае,
ного ПО, который сочетает в себе как функции «классических» DAW мне так и не удалось заставить его работать.
(т.е. без поддержки MIDI), так и MIDI-секвенсера. К слову сказать, в Для сборки Rosegarden, кроме заголовочных файлов KDE, требуется
Rosegarden упор сделан именно на MIDI и сопутствующие технологии много чего еще, в том числе – библиотека DSSI (http://dssi.sourceforge.
(виртуальные синтезаторы и т.д.). net). DSSI (произносится как «диззи») – это такое API программных
Rosegarden и Muse выбраны мною потому, что это программы синтезаторов, аналог VSTi из мира Windows. Если не ошибаюсь, DSSI
примерного одного класса ПО, и приблизительно одного уровня. Было придуман тем же разработчиками, которые создают Rosegarden.

Месяц назад Мы повстречались с сервером Jack и познакомились с барабанными машинами.

48 Linux Format Март 2007


Музыкальный Linux

артиллерия
Что дают DSSI-инструменты нам, пользователям? Возможность поставьте галочку на «Запускать JACK при загрузке Rosegarden».
расширить палитру своих инструментов. DSSI-инструмент – это модуль, Кроме того, на вкладке «Общее» можно настроить загрузку банка
плагин. Вы загружаете его в Rosegarden (или другую программу) Sound Font при запуске программы. Для этого используется внешняя
и используете его как инструмент, на который можно, грубо гово- утилита sfxload. Сам банк можете взять либо на приведенных выше
ря, направлять MIDI-дорожку, т.е. посылать на него MIDI-команды и сайтах, либо у себя на Windows-разделе, если таковой имеется и вы
данные. используете звуковую карту Creative. В этом случае у вас должны быть
такие банки: 8mbgmsfx.sf2, 4gmgsmt.sf2 и 2gmgsmt.sf2. В каждом из
них – набор патчей для инструментов по таблице General MIDI, то есть
все 128 инструментов. Эти банки отличаются размерами. Лучше всех
звучит, конечно же, восьмимегабайтный 8mbgmsfx.sf2.
При запуске Rosegarden может обнаружить, что ваш системный
таймер имеет слишком низкое разрешение для хорошей работы с
MIDI. Это разрешение зависит от параметров ядра (Processor Type and
Frequency > System Timer, рекомендую значение 1000 Hz) – по умол-
чанию там может стоять слишком маленькое (для потребностей про-
граммы) значение. В ядрах эдак с версии 2.6.9 значение уже достаточно
велико, чтобы удовлетворить Rosegarden.
Теперь посмотрим на рабочие качества Rosegarden по двум кате-
гориям – работа с MIDI и работа с цифровым звуком. Точно так же мы
пройдемся и по Muse.

Работа с MIDI
Упор в Rosegarden сделан именно на MIDI. Обработка цифрового зву-
Рис. 2. DSSI-синтезатор Xsynth. ка развита гораздо меньше, но об этом – чуть позже. Редактировать
MIDI-дорожки можно в четырех встроенных редакторах. Это «Редактор
На сайте DSSI, помимо общих сведений и самой API-библиотеки, событий» (предоставляющий самый низкоуровневый доступ к MIDI-
есть список DSSI-плагинов, покамест не очень большой. Но и там есть данным), «Редактор перкуссии», «Матричный редактор» (пианоролл)
из чего выбрать. Я рекомендую следующие: и нотный редактор.
Nekobee – очень приблизительное виртуальное воплощение знаме- Редактор перкуссий отличается от пианоролла разве что списком
нитого синтезатора TB-303. с названиями ударных инструментов, что облегчает ввод нот – сразу
Hexter – моделирует синтезатор Yamaha DX7. Есть 70 предустанов- видно, где какой инструмент. Напомню, что для ударных в MIDI отве-
ленных патчей. ден канал номер 10 – его и надо выставить в свойствах дорожки (здесь
XSynth – просто довольно навороченный синтезатор. номера каналов доступны в списке «Инструмент») (Рис. 3).
Fluid Synth – сэмплер, который умеет загружать звуковые бан- Кстати, об этих свойствах. Как и в Cubase, свойства дорожки
ки формата Sound Fonts. Скачать такие банки бесплатно можно расположены в главном окне слева от нее. Из любопытных свойство
с http://www.hitsquad.com/smm/win95/SOUND_FONTS/ и http://www. отмечу следующие. Можно включить транспозицию, квантование и Рис. 3.
personalcopy.com/sfonts.htm. задержку – как бы эффекты реального вре-
Несколько замечаний о запуске Rosegarden. Перед работой с ним мени. В выпадающем списке можно выбрать
надо запустить звуковой сервер JACK. Делается это примерно такой цвет, которым будут отображаться на дорожке
командой: данные MIDI-партии. В случае использования
jackd -d alsa DSSI-инструмента, в свойствах дорожки можно
Конечно, вы можете добавить опции на свой вкус, либо, если ваша вызвать редактор настроек для этого инстру-
звуковая карта работает через OSS, заменить «alsa» на «oss». Команду мента, а также «навесить» на инструмент до
запуска JACK можно также прописать в Настройках программы, на пяти LADSPA-эффектов.
странице «Секвенсер – Запуск», в поле «Команда для запуска JACK». И Пианоролл – матричный редактор. Почему-
то по умолчанию выключены элементы управ-
ления MIDI-контроллерами. Согласен, исполь-
Технологическая справка зуются они нечасто. Хотя в Sonar или Cubase
они постоянно видны, и сразу становится
Аппаратной способностью воспроизводить Sound Fonts обладает толь- ясно, что в наличии такая функция есть, а в
ко линейка звуковых карт от Creative, начиная с AWE32. В AWE32 и Rosegarden надо еще пойти в меню Вид (в
AWE64 звуковые банки загружались в оперативную память самой Матричном редакторе) и там включить нуж-
звуковой карты. В картах Live! и выше используется уже оперативная ное (Рис. 4).
память компьютера. Для Fluid Synth не имеет значения, какая у вас Управление контроллерами реализовано
звуковая карта. А звуковые банки формата Sound Fonts можно делать
довольно непривычно. Их нельзя рисовать
и самому.
карандашиком или стирать ластиком. Вместо

Март 2007 Linux Format 49


Музыкальный Linux

«воспроизведения». Это и сбивает с толку.


Записанный фрагмент появляется на дорожке, а кроме того, ста-
новится доступен из окна «Звуковые файлы проекта» (вроде инст-
румента Pool в Cubase VST). К сожалению, встроенного волнового
редактора в Rosegarden нет, хотя можно вызывать внешний (задается
в настройках).
Rosegarden 1.5.0 по какой-то причине перестал импортировать вне-
шние WAV-файлы, впрочем, та же участь постигла MP3 и OGG. Чем это
объясняется – мне неведомо, но в версии 1.4.0 (с теми же библиоте-
ками) всё работало.
На аудио-дорожку, как и на виртуальный синтезатор, можно наве-
сить до пяти LADSPA-плагинов. На этом, собственно, работа с аудио-
дорожками исчерпывается, хотя нет – есть еще «растягивание» звука,
time-stretching, которое осуществляется инструментом «Изменить раз-
мер» с зажатой клавишей Ctrl. Растягивание это опасно тем, что с каж-
дой выполненной операцией по растягиванию создается новый файл
Рис. 4. с измененными звуковыми данными. На мой взгляд, такая реализация
функции – не самая удачная.
этого нам предлагается работать с эдакими столбиками, которые име- К сожалению, нет для звуковых дорожек и таких привычных вещей,
нуются объектами. Добавляются они через контекстное меню, а уро- как огибающих (или кривых) громкости и панорамы. Вы можете
вень высоты каждого столбика задается мышью. настроить громкость и панораму лишь статично, через микшер или
Нотный редактор – именно он открывается в Rosegarden для в свойствах дорожки. Каких-либо признаков автоматизации (дина-
редактирования MIDI по умолчанию. Понятно, почему так происхо- мическое изменение параметров эффектов) тоже нет. В этом плане
дит – нотный редактор (особенно такой, как в Rosegarden) придает Rosegarden подобен классическому «железному» микшерному пульту.
программе вес. Я не знаток нотной грамоты, но в Rosegarden вполне
можно верстать нотные листы, причем с текстами. Вот бы еще скрес- MusE
тить Rosegarden и KGuitar (Linux-аналог Guitar Pro) и иметь возмож- Web www.Muse-sequencer.org
ность рисовать аппликатуры аккордов! Впрочем, у разработчиков К сожалению, установить новейшую версию (1.0 alpha release) этой
Rosegarden есть в планах некие дополнительные функции по гитарной программы мне не удалось – ей нужна Qt 4.2, а у меня была только Qt
части. Кстати, из Rosegarden можно экспортировать партитуру в фор- 4.1, поэтому рассказывать буду, опираясь на опыт общения с Muse
мат известной программы верстки нот – Lilypond (Рис. 5). 0.9pre2 – она требует старый добрый Qt 3.x.
Чем еще хорош нотный редактор, так это своим видом – ноты Что до новшеств в Muse 1.0, то могу их назвать – это поддержка
отображаются на фоне эдакой старой дешевой бумаги, на которой, модулей DSSI и VST, MIDI-плагины, графический редактор автоматиза-
должно быть, приятно писать чернильной ручкой. ции, и многое другое. Автоматизация есть и в предыдущих версиях, но
Что до «нотных» шрифтов, то три таких шрифта входят в дист- редактировать ее можно только передвижениями/вращением всяких
рибутив Rosegarden и устанавливаются вместе с программой авто- элементов управления.
матически. Отдельно эти шрифты устанавливать не нужно (хотя, при Для установки Muse 1.0, как и в Rosegarden, используется утилита
желании, можно). Cmake, а в версии 0.9pre2 – стандартные autotools.
В дистрибутив Muse входит несколько виртуальных синтезаторов
Работа с цифровым звуком (не DSSI): навороченный, со множеством пресетов DeicsOnze, драм-
Подразумевается работа с, грубо говоря, wav-файлами, а вернее – машина SimpleDrums (правда, без сэмплов – их надо загружать извне),
с дорожками, на которых располагаются сэмплы. Реализовано это симулятор органа Organ 1 и другие (Рис. 6).
довольно оригинальным образом. Чтобы записать звук со входа звуко- Для нормальной работы Muse требуется запущенный JACK-сервер.
вой карты на дорожку, надо включить на ней красную кнопочку (запись), Для карт Creative также можно подгрузить звуковой шрифт командой
затем пустить композицию на воспроизведение, и уже по ходу этого sfxload.
воспроизведения нажать на другую красную кнопку – на панели транс-
порта. В других программах, кнопку записи обычно надо нажимать до

Рис. 5. Вот так выглядит хороший нотный редактор. Рис. 6. Программный синтезатор DeicsOnze.

50 Linux Format Март 2007


Музыкальный Linux

Рис. 7. Главное окно MusE. Рис. 9.

Интерфейс Muse подобен Rosegarden, но с более очевидным укло- Появится новая дорожка, где в свойствах приема сигнала (кнопка
ном в старый Cubase (Рис. 7). iR, input routing) надо выбрать входные порты (например, alsa_pcm:
capture_1), а в выходном порту (кнопка oR) следует выбрать аудио-
Работа с MIDI дорожку, которая будет принимать сигнал.
Muse предлагает для этих целей редактор ударных и пианоролл. Есть также дорожки эффектов, аналоги «кубэйсовским» FX-
Некогда был нотный редактор, но потом его убрали. Пианоролл более дорожкам. В Muse они называются Aux. Это пустые дорожки, не несу-
привычный, «кубэйсоподобный», нежели у Rosegarden – это касается щие никаких данных. Вы можете навешивать на Aux-дорожки эффекты,
и внешнего вида, и способа управления MIDI-контроллерами. Но есть создавая таким образом как бы группы эффектов. Вы можете посы-
одна деталь – в Rosegarden, когда вы рисуете в пианоролле ноту, она лать сигнал на обработку в такую группу с обычной звуковой дорожки
звучит. Дзынь! А в Mose почему-то не звучит. Зато другая мелочь – уже либо виртуального синтезатора. Это бывает полезно, если вы хотите
в пользу Muse – ноты могут отображаться разными цветами в зависи- обработать одинаковым набором эффектов несколько дорожек.
мости от, допустим, громкости (Рис. 8). Muse позволяет открыть сэмпл в простеньком встроенном волно-
Каждый виртуальный синтезатор имеет отдельную дорожку. На вом редакторе (Рис. 9).
синтезатор можно навешивать до четырех LADSPA-эффектов, при- Функций в нем немного, все они касаются управления громкостью,
чем параметры эффектов полностью доступны для автоматизации. затуханием (fade in/out и т.п.). Можно открыть сэмпл и во внешнем
Автоматизация работает также в микшере. редакторе. Какой посоветовать? Был отличный редактор, ReZound, но
В Muse есть два типа MIDI-дорожек – MIDI и «Дорожка с удар- его разработка остановлена. Еще мне нравится mhWaveEdit.
ными». Отличие последней от первой в том, что рядом с названием
отображается другая пиктограмма, да еще двойной щелчок мыши Прочие функции
вызывает не пианоролл, а редактор ударных. Однако никто не мешает В Muse хорошо развит механизм перенаправления (routing) сигнала.
вам открыть в этом редакторе и обычную MIDI-дорожку. Особенность Можно создавать дорожки типа Out. Такие дорожки служат для выво-
«Дорожки с ударными» – по умолчанию там выставлен MIDI-канал да звука на реальный выходной порт (например, на выход звуковой
номер 1, но MIDI-устройство получает с этой дорожки данные на канал карты или в JACK-клиент – тот же Rosegarden). Для Out-дорожки мож-
10 (канал ударных). По мне, «Дорожка с ударными» лишняя, достаточ- но выбрать и входной порт, то есть одни дорожки можно посылать на
но обычных MIDI-дорожек. одни выходы, другие дорожки – на другие выходы. Что это дает на
практике? Если в компьютере установлено несколько звуковых карт
Работа с цифровым звуком или у звуковой карты есть несколько линейных выходов, то можно
Сначала скажу об импорте сэмплов. Буду краток – работает, хотя фор- посылать дорожки на разные карты/выходы. Это вообще из области
матов поддерживается всего два: WAV и некий загадочный Bin[Binary]. студийной звукорежиссуры.
Теперь о записи звука. Чтобы осуществить ее, надо вначале создать
дорожку типа Input (контекстное меню, пункт «Добавить вход»). Заключение
Сравнивая Rosegarden и Muse, нельзя сказать: вот эта программа луч-
ше, а эта – хуже. Отчетливо видны плюсы и минусы обеих программ,
а уровень развития тех или иных возможностей продукта определяет
конечного пользователя. Так, если для вас важна работа с нотным
станом, с версткой нотных листов, то Rosegarden будет, несомненно,
наилучшим выбором. Однако для звукорежиссеров важна автомати-
зация, которую обеспечивает Muse. Поэтому если вы не просто дела-
ете MIDI-аранжировку, а микшируете сложный проект, то Muse будет
более полезен.
Обращая взгляд в мир Windows, нельзя не признать, что программ с
такими возможностями и притом распространяемых свободно (я имею
в виду оба критерия одновременно), для Windows просто не сущест-
вует. Да, Cubase, Nuendo или Sonar, несомненно, мощнее, чем Muse и
Rosegarden. Но подумайте и о ценах на коммерческое музыкально-зву-
ковое ПО. Думаю, что Muse и Rosegarden более доступны большинству
пользователей, чем программа за восемьсот долларов. LXF
Рис. 8. Пианоролл в Muse.

Март 2007 Linux Format 51


3D modelling tool Reviews

Учебники
Наши эксперты помогут вам с любым приложением Linux
70 Классика Glade
Визуальное
программирование с GTK –
ЕВГЕНИЙ БАЛДИН
Начинал с Агатов. Когда- В этом выпуске... это просто! Андрей
Боровский научит вас
то даже знал, что такое создавать интерфейсы с помощью Glade 2.
Робик.
74 И снова о консоли
Впечатлены
Сначала привлечь, возможностями dircolors?
Узнайте, что еще умеет
а затем обучать старый добрый терминал –
читайте учебник Unix
«Вместе с влечением к Андрея Боровского!
новому и чужому это
приводит к установке, 78 Java Server Pages
Неоднократно слышали,
которую можно назвать 54 Как работать с RPM? что дизайн надо отделять
тягой к приключениям» Fedora, SUSE, Mandriva – все они 62 Уловка Beagle
от бизнес-логики, но не
используют RPM для установки и Пол Хадсон расскажет, как использовать
Конрад Лоренц. знаете, с чего начать?
обновления ПО. Если вы – новичок в простейшие техники программирования и
Обратная сторона зеркала Александр Бабаев
Linux, разберитесь с ним вместе с Энди мощь Mono сотоварищи, чтобы всего за
познакомит вас с
Ченнелом. час собрать собственную поисковую
подходящей технологией!
систему.

В
последнее время активизировались
обсуждения на тему, как импланти- 82 Настройка PostgreSQL
ровать Linux в школьную среду. Тюнинг сервера порой
может быть увлекательнее
На текущий момент подростки не знают тюнинга автомобиля –
что такое Linux и с чем его едят. Для осоз- надо только знать, что
нания этого факта достаточно посмотреть подкрутить. Евгений
на опрос проведённый на LOR (http://www. Балдин готов прийти вам на помощь!
linux.org.ru) «Сколько вам лет?» На LOR
88 Классы LaTeX
нет школьников, а ведь казалось бы, это Евгений Балдин
место просто создано для них. классифицирует
В школе в большинстве случаев нет 66 Настройте свой загрузчик различные классы
и не предвидится программ, нацеленных
58 Знакомство с SugarCRM документов LaTeX.
Запущенная CRM-система – неизменный Не стоит довольствоваться установками
Иллюстрации прилагаются!
на обучение в среде GNU/Linux. У этой атрибут успешно работающей компании. по умолчанию: Ник Вейч поможет выжать
проблемы множество корней и основная Марк Бейн начинает новую серию статей из Grub загрузку со своими заставками,
с повышенным уровнем безопасности 92 Живой мир Blender
из них та, что всем всё, как правило, «до о достойной открытой альтернативе – В раскраске нуждается не
SugarCRM. и кое-что еще...
фени». Поэтому, чтобы сдвинуть эту гору только консоль!
безразличия требуются титанические уси- Андрей Прахов покажет,
как вдохнуть жизнь в
лия или усилия многих, направленные при-
модели Blender, используя
мерно в одну сторону. текстуры и анимацию.
Прежде чем обучать, надо привлечь
на свою сторону. Начать можно с малого,
например, с красивых картинок. На теку- Совет месяца: Боевая раскраска
щий момент Linux Format достаточно пёс-
трый, чтобы привлечь подростка и понят- Мы все стремимся сделать нашу жизнь ярче, и тот факт, ‘=’ следуют два числа, обозначающие цвет текста и цвет
ный, чтобы не отпугнуть его. Это новая и что командная строка – родной интерфейс внутренностей фона. Если вас смущают сокращения вроде pi, выполни-
вашей Linux-системы – текстовая, не означает, что вам те dircolors --print-database. Вам объяснят, что pi – это
неизведанная территория, которая сулит
придется мириться с монохромным терминалом. Сегодня просто символ конвейера (pipe), 40 – черный фон, а 33
приключения. Принесите пачку уже номе-
мы покажем, как раскрасить его! – желтый цвет текста.
ров прочитанных в кабинет информатики Добавить цвет можно различными способами и один Если вы присмотритесь к выводу dircolors повнима-
и договоритесь, чтобы их могли брать все, из самых популярных – команда dircolors. Если вас сму- тельнее, то увидите, что он начинается с LS_COLORS= и
кто захочет. Отдайте уже просмотренные щает написание (Янки гоу хоум!), всегда можно создать заканчивается export LS_COLORS. Иными словами,
DVD или сделайте новые. Пока просто при- символьную ссылку вида: dircolors просто устанавливает переменную окружения
несите — это со временем, возможно, даст sudo ln -s /usr/bin/dircolors /usr/bin/dircolours LS_COLORS. Вы можете добавить ее вывод к своему
Вам сторонников и только тогда их можно Dircolors использует цветовыделение для различных файлу .bashrc, чтобы устанавливать расцветку автомати-
начинать обучать. типов файлов, так что вывод простой команды ls превра- чески при входе в систему. В общем, запустите dircolors
E.M.Baldin@inp.nsk.su щается в настоящую радугу. Однако, вызванная сама по и вы посмотрите на консоль совсем другими глазами.
себе, dircolors просто возвращает список типов файлов и Да, имейте в виду: если вы по-прежнему не видите
секретных кодов вроде pi=40;33: или *.ogg=01;35:. Первый никаких цветов, вам может помочь команда ls --
элемент каждой записи – тип файла, за ним, после знака color=auto.

Февраль 2007 Linux Format 53


Первые шаги Советы для тех, кто только
начинает знакомиться с Linux

RPM: Пакеты
Благодаря RPM, управление пакетами в Fedora Core, SUSE и Mandriva происходит удивительно
легко. Прогуляемся с Энди Ченнелом по процессу обновления и установки.
На прошлом уроке по APT я объяснял основные концепции управ-
ления пакетами; кто его не читал, может обратиться к врезке Глоссарий
(справа вверху).

Обновляем дистрибутив
Как и в статье про APT в LXF89, мы начнем с рассмотрения автома-
тических средств, поддерживающих ваше ПО в актуальном состоянии,
а потом займемся управлением пакетами через командную строку.
Хотя вторая часть может показаться причудой, и к тому же негуман-
ной для Первых шагов, это идеальный способ разобраться с RPM:
большая часть программ управления пакетами в составе дистрибу-
тивов на основе RPM – просто графические надстройки над коман-
дами. Зная эти команды, гораздо легче понять процесс установки
программ с помощью RPMDrake в Mandriva, Yast в SUSE или Package
Manager в Fedora.
Этот урок базируется на Mandriva Linux 2007, так как этот дистрибу-
тив популярен среди новичков Linux, но большую часть описанных здесь
процедур легко адаптировать и к двум другим RPM-дистрибутивам.
Итак, автоматические обновления. В Mandriva 2007 рабочим сто-
лом по умолчанию является KDE, иконка автоматических обновлений
расположена в правом нижнем углу экрана рядом с часами (неболь-
шой шарик). Щелчок левой кнопкой мыши открывает Менеджер
Обновлений. Для этого вам понадобится пароль суперпользовате-
ля – как и для большинства задач установки и удаления ПО. Mandriva

Б
ольшинство пользователей и разработчиков Linux согласятся, что запросит некоторые данные, включая имя пользователя, пароль и
определяющее свойство операционной системы – наличие выбо- адрес электронной почты (для подписки на сервис онлайн-обновле-
ра. Так, у нас есть два (даже больше) рабочих стола, два загрузчи- ний). Вы получите допуск, а заодно зарегистрируете описание вашей
ка и две доминирующих системы управления пакетами: APT и RPM.
А вот определяющая черта пользователей и разработчиков Linux –
Наш
пылкость, и если вы объявите, что «APT лучше всех», вас немедля ата-
эксперт
куют. Однако до недавнего времени спорить с этим было трудно. На
Энди Ченнел прошлом уроке мы убедились, что пришедшая из Debian Advanced
Энди делает свои
первые шаги в Linux
Package Tool (APT) великолепна, и раньше пользователи дистрибути-
уже шесть лет, вов на основе Red Hat Package Manager (RPM) могли только завидовать
а технологиями своим друзьям с APT, запросто ставящим новые приложения.
интересуется еще Подобная ситуация не могла длиться долго; так и вышло. Сегодня
со времен Dragon 32.
RPM предлагает множество функций, позволяющих ей на равных
состязаться с APT. На этом уроке я покажу, как дистрибутивы на основе
RPM могут автоматически искать обновления пакетов и как использо-
вать RPM для установки и удаления приложений. Вы сможете просмат-
ривать новые программы и мигом разрешать зависимости.
Что такое дистрибутив на основе RPM? RPM – это технология,
вступившая в жизнь как часть дистрибутива Red Hat Linux. Она также
нашла свое применение в других основанных на Red Hat дистрибути-
вах, включая Fedora Core, Mandriva и SUSE. То есть у трех самых попу-
лярных дистрибутивов Linux одинаковая система управления пакетами.
RPM-пакеты, впрочем, обычно свои для каждого дистрибутива и вер-
сии программы, поэтому будет неразумно установить Fedora RPM на
систему Mandriva, и не рекомендуется ставить SUSE 9.3 RPM на дис- RPM-пакеты доступны из многих источников. Проверьте, что берете
трибутив SUSE 10.2. пакеты именно для своего дистрибутива!

Месяц назад Управление пакетами в Ubuntu и других дистрибутивах на базе APT.

54 Linux Format March 2007


Первые шаги Учебник

установить легко
машины (процессор, видеокарта и так далее). Если вы не хотите сооб-
щать эту информацию, нажмите кнопку Cancel [Отмена], обновления Глоссарий
получать все равно будет можно.
Проделав это, после запуска апплета обновлений нажмите на Пакет Двоичный файл, содержащий прило- Обновление Новая версия программы. Сюда
кнопку Check Updates [Проверить Обновления], чтобы узнать, нет ли жение. Пакеты доступны в различных форма- могут входить новые функции, или решения
радикальных заплаток или обновлений для приложений. Подумайте тах, включая APT и RPM (поэтому я и говорю вопросов безопасности, или исправления оши-
также, нужно ли вообще обновлять дистрибутив, особенно если вы «RPM-пакет»). бок.
сидите на модеме и вам не улыбается платить огромный телефонный Менеджер пакетов Приложение, управляю- Двоичные файлы Программное обеспечение
счет за мелкую поправку к OpenOffice.org... Если хотите продолжить, щее установкой, обновлением и удалением в Linux часто поставляется как в виде исходных
нажмите Install Updates [Установить Обновления], и процесс обновле- пакетов. текстов, так и в двоичной форме. Двоичное
Зависимости Части программного обеспече- приложение уже готово к установке, а исход-
ния пойдет. Нижняя часть апплета обновления содержит много полез-
ния, которые требуются другим частям про- ные тексты необходимо компилировать.
ной информации, включая время последней проверки сервера, статус
граммного обеспечения, прежде чем послед- Репозиторий База данных по программам в
сети и оценку актуальности вашей системы. ние могут быть установлены. сети (или на дисках), к которой может обра-
По умолчанию этот процесс запустится автоматически при загруз- щаться ваш дистрибутив.
ке системы, но кое-кто (например, все те же пользователи модемов)
не захочет, чтобы его компьютер каждый раз подключался к сети.
Если вы один из них, то автоматический запуск легко отключить.
Щелкните правой кнопкой мыши на иконке автоматического обнов- Теперь мы именно там, откуда надо начинать установку. Вы замети-
ления в системном лотке и снимите галочку с опции Always Launch те, что любое имя файла RPM состоит из имени приложения (‘FreeMind’
On Startup [Всегда запускать при загрузке]. Можно также вручную в моем случае), номера версии (0.8.0), номера релиза (6) и расширения
проверить обновления, выбрав пункт Check Updates [Проверить .RPM. Может быть включено имя дистрибутива и/или версия, для кото-
Обновления]: это пригодится и пользователям с высокоскоростным рой предназначен пакет, а также архитектура, например, i386, PowerPC
доступом, если они никогда не выключают свой компьютер. или ARM. Приложения, не привязанные к определенной архитекту-
Вот так получают автоматические обновления под Mandriva. ре (как FreeMind в моем примере), содержат строку ‘noarch’ в имени
Пользователи Fedora могут установить автоматические обновления файла.
через командную строку. Откройте терминал, наберите su, нажми- Наконец, мы можем использовать простую RPM-команду, чтобы
те Enter, введите пароль root, затем наберите chkconfig yum on. установить наше приложение:
Процедура для SUSE почти та же, что и в Mandriva, отличается только rpm --install freemind-0.8.0-6.noarch.rpm
имя менеджера (Yast Online Update). или
rpm -i freemind-0.8.8-6.noarch.rpm
Простые команды Если вы хотите обновить существующее приложение на вашей сис-
Поразмяв таким образом мозги, посмотрим, как пользоваться RPM теме, а не установить новое, то i в команде надо заменить на U.
из командной строки. Нужно будет скачать двоичный RPM-пакет с
Интернета и работать от лица root. Для начала найдем подходящий Поддержка программного обеспечения
пакет; одно из лучших мест для поиска – http://rpmfind.net. Здесь есть К сожалению, попытавшись установить FreeMind на Mandriva Free 2007
поисковая машина, ограничивающая результат по дистрибутивам и (бесплатная версия), вы наверняка наткнетесь на массу неудовлетво-
архитектуре. Запустите свой поиск (я собираюсь найти программу ренных зависимостей.
FreeMind) и затем найдите в выдаче результатов нужную версию. Если вам с ними не справиться, попробуйте Urmpi. Это инструмент
Просмотр
Слева на экране находится ссылка на описание пакета, а справа – командной строки, обращающийся к репозиториям программ для раз-
файловой системы
ссылка на сам пакет для скачивания. Нажмите на нее, и файл скача- решения зависимостей при попытках установки приложений. Urmpi
Linux с помощью
ется на ваш рабочий стол. не имеет проблем с зависимостями, как RPM, поскольку сам ставит командной строки.
Теперь откройте терминал (помните, что он может называться необходимые пакеты, однако кто-то должен позаботиться о создании Наш скачанный
Console в Gnome или Konsole в KDE и прячется где-то в меню Система) пакета и поместить его в репозиторий. пакет выделен
и наберите su, чтобы получить привилегии root. Скорее всего придет- Чтобы установить приложение с помощью Urmpi, начните так: красным цветом.
ся сменить каталог, так как Firefox и другие web-браузеры скачивают urpmi имя_приложения
файлы на рабочий стол, а терминал почти всегда открывается в ката- Номер версии вам не требуется, так
логе /home/имя_пользователя. Каталог сменить легко: как программа установится с самой
cd Desktop последней версией.
cd как раз и значит ‘сменить каталог’, а Desktop – это рабочий стол, К Mandriva уже прилагается ряд
куда мы хотим перейти. Заметим заглавную букву D, так как Linux (в предустановленных Urmpi-репозитори-
отличие от Windows) чувствителен к регистру. Теперь вы можете про- ев: это CD или DVD, на которых пос-
смотреть содержимое каталога командой ls, или, если вы привыкли тавляется дистрибутив, а также любой
к DOS, dir. Используя ls, вы заметите, что файлы и каталоги отобра- источник обновлений, настроенный
жаются разными цветами, и в каталоге Desktop вы должны увидеть при начальной установке дистрибутива.
свежескачанный RPM-файл. На рисунке внизу показан мой RPM Но можно добавить и другие репози-
FreeMind, выделенный красным цветом. тории, если в предустановленных

March 2007 Linux Format 55


Учебник Первые шаги

Шаг за шагом: Автопакеты для установки

1 Познакомьтесь 2 Скачайте Autopackage


Autopackage – альтернативный способ работы с пакетами. Для начала, Загрузите Автопакет, например, Inkscape, с www.autopackage.org на
посетите www.autopackage.org, скачайте последнюю версию ваш рабочий стол. Далее, щелкните правой кнопкой мыши на файле и
Autopackage и найдите ссылки на программы, для которых имеется выберите Properties [Свойства].
Автопакет.

3 Сделайте его исполняемым 4 Очистите стол, затем установите


В диалоге Properties выберите вкладку Permissions [Права доступа] и Удалите старую версию вашего приложения, если оно установлено.
нажмите на Executable [Исполняемый] (в KDE) или Allow Executing File Теперь дважды щелкните на скачанном файле и следуйте подсказкам.
As Program [Позволить выполнять файл как программу] (в Gnome). Это Перед установкой самого приложения произойдет скачивание и уста-
позволит Linux запускать скачанный файл как приложение. Нажмите OK. новка всех требуемых пакетов.

5 Запустите новое приложение 6 Удаление Autopackage


Теперь приложение появится в нужном месте вашего меню, готовое к Чтобы удалить Autopackage, наберите package remove имя_приложе-
использованию. В следующий раз, когда вы скачаете Автопакет из ния в командной строке. Или используйте графические инструмент в
сети, вам автоматически предложат его установить. меню System [Система] > Manage 3rd Party Software [Управление сто-
ронними программами]. Просто установите радиокнопку рядом с име-
нем приложения.

56 Linux Format March 2007


Первые шаги Учебник

требуемого приложения нет – а для поиска нужного репозитория име- соответствующие приложения (вверху); если выбрать какое-то из них,
ется великолепный сайт. Чтобы найти и добавить новый репозиторий, внизу появится информация о нем. Можно, например, выбрать X11 >
зайдите на http://easyurmpi.zrb.orf, введите номер версии Mandriva, Compiz и узнать поподробнее о менеджере Compiz. Если вы установите
архитектуру и менеджер пакетов, и следуйте подсказкам. На послед- радиокнопку рядом с доступными Compiz пакетами, менеджер пакетов
нем этапе появится список команд, которые необходимо набрать (их выберет все пакеты, от которых он зависит.
можно скопировать и вставить) в командной строке от лица root. В
зависимости от количества добавленных источников и скорости ваше- Поздравляем, вы гуру...
го интернет-соединения эта процедура может занять от нескольких После нажатия кнопки Apply [Применить] пакеты будут скачаны и
минут до получаса. Например, добавление источника Penguin Liberation установлены с удаленных репозиториев или Mandriva DVD. Установив
Front (он предоставляет множество несвободных приложений, осо- приложение, нажмите кнопку Close [Закрыть] для возврата в окно
бенно полезных для проигрывания мультимедиа) на мой компьютер управления пакетами. Список установленных пакетов можно вызвать
потребовало скачать 50 МБ. Код, генерируемый EasyUrmpi, имеет сле- при помощи инструмента удаления, а заодно и ликвидировать ненуж-
дующий формат: ные пакеты. Скорая
urpmi.addmedia plf-free ftp://ftp.univ-orleans.fr/logiciel-libre/plf/ Со знанием RPM-команд, графические инструменты Mandriva помощь
mandriva/2007.0/free/release/binary/i586/ with hdlist.cz должны стать вам понятны: в общем, они дают простейший способ
Он содержит команду (urmpi.addmedia), сопровождаемую описани- установить или удалить программу. Доступные репозитории содержат Если вы должны
ем репозитория и указанием на расположение репозитория и списка большую часть программ, необходимых для повседневной работы, а использовать RPM-
пакетов (часть hdlist.gz). Поэтому, например, добавив все предлагае- если нет, то EasyUrmpi позволит их добавить, и вам не придется снова пакеты, получен-
ные не из вашего
мые EasyUrmpi источники, вы сможете набрать в консоли urmpi flash- перерывать всю сеть в поисках нужного приложения. А если придется, репозитория, то
player-plugin и установить плейер от Adobe в Firefox, не задумываясь о то сначала попробуйте установку с помощью Urmpi, а RPM употреб- убедитесь хотя бы,
XPI, tar.gz и прочих файлах. ляйте как последнее средство. Надеюсь, я показал вам, что командной что они подходят
В URPMi есть полезные команды, позволяющие выяснить, содер- строки бояться не надо, и что для некоторых задач (например, для к вашему дистри-
бутиву и версии, в
жится ли искомое приложение в ваших репозиториях. Это: urmpq добавления репозиториев в Urmpi) она быстрее, чем графические
противном случае
имя_приложения, она осуществляет простой поиск; urmpq -i произ- инструменты. Ваше путешествие по Linux продолжается... LXF поломка будет
ведет поиск и отобразит информацию о каждом найденном пакете; и обеспечена. Вы
urmpq --fuzzy, отображающая список приложений, напоминающих то, можете протести-
что вы ищете – например, поиск ‘Firefox’ выдаст все пакеты, в которых ровать, правильно
ли установится
упоминается данное слово. RPM, набрав rpm
Наконец, с помощью Urmpi можно обновить все приложения на --test -i.
вашей системе – как мы уже делали автоматически – до самых послед-
них версий. Команда для этого будет такой:
urpmi --auto-select
Если нужно удалить программное обеспечение с вашей системы,
сгодится старый добрый RPM. Не обязательно помнить все детали
(например, номер версии) удаляемого пакета. Команда rpm -e имя_при-
ложения позаботится обо всем.

Графическая красота
Я хотел показать вам, как пользоваться командной строкой, потому
что хоть дистрибутивы и могут иметь свои собственные графические
инструменты для управления программным обеспечением, все они
основаны на тех же командах RPM-системы. Поэтому, овладев RPM из
командной строки в Mandriva, вы сможете давать советы своим друзь-
ям с другими дистрибутивами, и выглядеть элитным Linux-хакером. А
сейчас рассмотрим альтернативу Urmpi и терминалу: скачаем пакеты с
помощью графического инструмента Mandriva.
Сначала выберем в стартовом меню System [Система] > Configuration
[Настройка] > Packaging [Пакеты] > Install, Remove And Update Software
[Установить, Удалить и Обновить Программы]. Появится новое окно
(точнее, часть Центра Управления Mandriva Control Center), содер-
жащее четыре опции. Если вы выберете четвертую – под названием
Select From Where Software Packages Are Downloaded When Updating
The System [Выбрать источники для скачивания пакетов при обнов-
лении системы] – то появится другой экран, содержащий все репо-
зитории, добавленные ранее с помощью Urmpi. Вы можете включить
или выключить их простым щелчком мыши. (Если вы не добавляли
дополнительные репозитории, сделайте это сейчас: при использовании
EasyUrmpi, как я показывал, вам будет выдан набор команд, которые
можно просто скопировать и вставить в консоль.)
Две самых интересных штуки на этом экране – кнопки установки и
удаления, расположенные вверху. Выберите первую. Ее окно содержит
три панели и панель поиска наверху (см. картинку ниже). Слева пред- Графический подход Mandriva к установке ПО. Видите, я выбрал три
ставлены категории приложений, например, Игры и Утилиты, а справа – пакета для установки. Готовы? Жмите Apply [Применить].

Через месяц Используйте права доступа, чтобы никто не лез в ваши данные.

March 2007 Linux Format 57


Новая
Учебник серия! CRM-систему
Осваиваем Устанавливаем и осваиваем
открытую CRM-систему

SugarCRM: Как
ЧАСТЬ 1: Вашему бизнесу не повредит автоматизация работы с заказчиками. Марк Бэйн
показывает, как приспособить для этих целей лучшее открытое ПО.
Разрулить весь бизнес
Значит, CRM спасет вас от подобных ситуаций? Не только! Возможности
CRM гораздо шире. Вот что вам предоставляется (опять цитирую
Уайтхеда):
автоматизация работы персонала;
мониторинг потенциальных возможностей;
мониторинг канала продаж;
определение групп сотрудников и территорий их деятельности;
анализ основных источников прибыли;
работа с каталогом продукции;
создание выписок для клиентов;
гибкая система формирования отчетов;
мониторинг оказываемой клиентам технической поддержки;
разработка план-графика выполняемых работ;
хранение контактной информации организации;
унификация взаимодействия с системой для различных
пользователей;
система контроля версий для документов.
Хорошо, а какая с этого корысть? Во-первых, уменьшатся ваши
издержки. Информация будет вводиться однократно, что исключает
разночтения внутри вашего предприятия. Во-вторых, ваши сотрудни-
ки всегда будут в курсе событий на предприятии, и почувствуют себя
полноправными их участниками, а не винтиками (это касается и персо-
нала, и руководителей). Заказчики также будут довольны, имея дело с
компетентными, хорошо осведомленными партнерами. Как следствие,

Д
обро пожаловать в новую серию! На первом уроке я покажу, возрастут продажи.
как установить отличную CRM с открытым исходным кодом. А Вы справедливо спросите: а кто я такой, чтобы об этом писать?
что такое CRM? Это Customer Relationship Management – сис- Основное мое занятие – реализация и адаптация Clarify CRM; если у
темы управления взаимодействием с клиентами. Поняли? Для тех, вас есть знакомые в фирме Vodafone, спросите их о проекте Cascade.
Наш кто не понял, Майкл Уайтхед-младший [Michael JR Whitehead] в книге Могут ли открытые CRM-системы достигать таких же результатов?
эксперт “Implementing SugarCRM” определяет эти системы так: Естественно, могут!
Марк Бэйн «CRM предназначены для хранения и обработки информации о ваших
Свою первую
программу Марк
клиентах – не только о продажах, но и о дальнейших взаимоотношениях Требования к серверу
написал еще для ZX и поддержке. Системы обязаны давать хотя бы минимум информации о У SugarCRM нет отдельного пользовательского интерфейса – все дела-
81. Он уже много лет компаниях, с которыми вы работаете и о том персонале, с которым вы
работает с Unix и
Oracle, а кроме того, в них сотрудничаете».
читает лекции и Между прочим, у вас почти наверняка все это есть. Мало того,
пишет. что вы храните свои контакты в адресных книгах Thunderbird, KMail
или (содрогаюсь) Microsoft Outlook, а счета в OpenOffice.org Calc или
Microsoft Excel – небось еще и создали аж базы данных Base или
Access, и записываете туда все свои сделки. Все как будто прекрасно.
Но дело в том, что все ваши коллеги проделывают те же операции со
своим почтовым клиентом, электронными таблицами или базой дан-
ных. Вроде ничего плохого, разве что данные многократно дублируют-
ся – и это бы не беда... пока не окажется, что данные не стыкуются.
Представим себе следующую ситуацию. Пусть в число ваших заказ-
чиков входит фирма Linux PCs Ltd. Вы записали ее почтовый адрес:
Penguin House, Southwaite CA4 0AK. Но Фред справа уверяет, что пра-
вильный адрес – Penguin House, Carlisle CA4 0AK, а у Мэри слева он зна-
чится как Penguin House, Southwaite, Carlisle. Кто же прав? Настоящий
адрес знает один Генри: фирма переехала, а он забыл всем про это SugarCRM управляется с номерами телефонов, номерами счетов и
сообщить. многим другим! Вам не по душе внешний вид? Его можно поменять.

58 Linux Format Март 2007


Осваиваем CRM-систему Учебник

на DVD
SugarCRM 4.5.0g

его установить
ется через web-браузер. Это обеспечивает незавимость системы от Если не сменить эту переменную вручную, SugarCRM скорее всего Скорая
платформы. Полагаю, вы предпочитаете Linux – так что радуйтесь: мы упрется в лимит памяти и оставит вас с пустым экраном. помощь
займемся платформой LAMP (Linux-Apache-MySQL-PHP). (Намек поня- MAX_EXECUTION_TIME в значение 90. Так мы предотвратим появле-
ли? Именно это и надо установить на вашем сервере…) ние таймаутов при импорте больших объемов данных. До начала установки
Начнем с сервера. Я установил SugarCRM под Debian на стареньком MAX_INPUT_TIME в значение 300, а POST_MAX_SIZE в значение SugarCRM задайте
компьютере Patriot, и мне этого хватает. Но для предприятий рекомен- 25M. И то, и другое поможет загружать без ошибок файлы большого вручную значение
дую следующие спецификации: размера. системной перемен-
ной MEMORY_LIMIT
До 10 пользователей: Увеличенное значение SESSION.MAXLIFETIME. В течение этого вре-
в файле php.ini
Жесткий диск IDE или SCSI емкостью 80–100 ГБ; мени SugarCRM ожидает ваших действий, а потом отключается (по равным 64 MБ.
1 ГБ оперативной памяти с ECC (обнаружение и исправление умолчанию 1440 сек = 24 мин). Лучше взять его побольше, например, Иначе программа
ошибок); 3600 секунд (1 час). Нет ничего хуже, чем намучиться, составляя длин- будет использо-
вать значение, по
Процессор Athlon, Pentium 4, Xeon или Opteron с тактовой частотой ное почтовое сообщение, и тут же убедиться: приложение успело отсо-
умолчанию равное
не менее 2 ГГц. единиться, и отправить почту нельзя. 8 MБ, и процесс
От 10 до 100 пользователей: Теперь все готово для установки SugarCRM. завершится аварий-
Жесткий диск SCSI емкостью 150 ГБ; но из-за нехватки
2–3 ГБ оперативной памяти с ECC; Позаботимся о сотрудниках памяти.
Процессор Xeon или Opteron с тактовой частотой не менее 2 ГГц. Итак, основная и самая трудная часть работы позади (а она показа-
Более 100 пользователей: лась вам трудной?). Теперь загрузим архив программы с сайта www.
Жесткий диск SCSI емкостью 300 ГБ; sugarcrm.com, распакуем его в локальный каталог и запустим скрипт
4–8 ГБ оперативной памяти с ECC; установки в браузере. Осталось только следовать инструкциям, появ-
Два процессора Xeon или Opteron с тактовой частотой не менее 2 ГГц. ляющимся на экране.
Все тот же Уайтхед, занимавшийся SugarCRM с 1999 г., также советует Рассмотрим эти этапы поподробнее. Начнем со структуры катало-
использовать: гов SugarCRM. После распаковки архива вы обнаружите новый каталог,
Сеть Ethernet со скоростью 1 Гб; с именем вроде SugarOS-Full-4.5.0g. Этот каталог нужно скопировать
Источник бесперебойного питания (UPS) – бесценная штука, особен- в корневую директорию web-сервера (где-то в htdocs). Для доступа к
но если учесть, как они сейчас дешевеют; SugarCRM из вашего браузера в адресной строке наберите ‘http://<имя_
SUSE Linux. Хотя лично я предпочитаю использовать на моих серве- web-сервера>/SugarOS-Full-4.5.0g’. Например, у меня путь был таким:
рах Debian (SUSE 10.1 у меня тоже стоит, на рабочей станции). ‘http://hector/SugarOS-Full-4.5.0g’ (имя моего сервера – Hector).
Однако это не самый удобный вариант URL. Сотрудники вашей
Подготовка фирмы не знают, что такое SugarCRM (им на это наплевать) – они
Linux, понятное дело, у вас есть; осталось добавить Apache 2, MySQL просто хотят максимально облегчить свою работу. Пусть имя каталога
и PHP. говорит само за себя.
Apache 2 устанавливается легко. В дистрибутиве Debian для этого Например, вы владелец издательства и решили выпускать новый
нужно выполнить следующую команду журнал – назовем его хотя бы Linux Format (правда, красиво?). Тогда
sudo apt-get install apache переименуем каталог в lxf. Пользователи будут набирать URL ‘http://
После установки убедитесь, что в конфигурационном файле web- hector/lxf’. Коротко и удобно, а действия SugarCRM никак не затраги-
сервера включена обработка PHP-скриптов. Впрочем, в Debian это вает. Каталог можно переименовать и попозже, но пользователей это
делается по умолчанию. в восторг уже не приведет. Лучше зайти в корневой каталог сервера и
Установка MySQL ничуть не сложнее: создать несколько символических ссылок на него, введя, допустим,
sudo apt-get install mysql-server ln -s lxf linuxformat
Все необходимые таблицы в базе данных SugarCRM позже создаст ln -s lxf magazine
сама, а сейчас вам нужно лишь установить пароль для пользователя Доступ к программе даст любой из адресов ‘http://hector/lxf’, ‘http://
root. Подключитесь к базе и выполните следующий SQL-запрос: hector/linuxformat’ или ‘http://hector/magazine’.
update user Мы почти готовы установить SugarCRM, осталось только опреде-
set password=password(‘ваш_пароль’) лить, кто по умолчанию будет владеть файлами SugarCRM: это сильно
where user = ‘root’; повлияет на остаток процесса. Выясните, кто владелец вашего web-
Пароль не забывайте: он потребуется при установке. сервера по умолчанию, и назначьте его же владельцем каталога lxf.
Угадайте-ка, трудно ли установить PHP? Вот именно, нетрудно: про- Например, в моем дистрибутиве Debian это ‘www-data’. Вообще-то я
цедура все та же, sudo APT-get install, только на сей раз надо приписать предусмотрел, что все файлы разрешают запись из группы, и добавил
php. Я уже упоминал, что файлы конфигурации Apache надо правиль- в группу себя, а сервер SugarCRM установил на моей рабочей станции:
но настроить на обработку PHP-скриптов, но в Debian уже все сдела- так я могу вносить все изменения прямо в файлы конфигурации.
но. Однако PHP все-таки придется настраивать. Поменяем системные
переменные PHP в файле php.ini, установив: Наконец-то установка
MEMORY_LIMIT в значение 64M. SugarCRM во время установки Вы, небось, уже открыли браузер и набрали URL вашего SugarCRM.
читает его неправильно и остается при значении по умолчанию: 8 МБ. При правильной настройке вашего сервера Apache на поддержку

Март 2007 Linux Format 59


Учебник Осваиваем CRM-систему

скриптов PHP вы видите стартовое окно программы установки; если не пользователя).


видите, значит, нужно отредактировать файлы конфигурации Apache и Populate DataBase With Demo Data Занести в БД данные демонстра-
перезапустить сервер. Пора жать кнопку “Start”. ционного примера. Хотите – заносите и потренируйтесь с ними, хотите
– нет. Лично мне это ни к чему.
Шаг 1 Privileged DataBase User Name Привилегированный пользователь
На первом этапе установки перед вами окошко с лицензией продукта. БД. Обычно это ‘root’, но если вы создали другого пользователя с необ-
Прочитав ее и установив соответствующую галочку, нажмите Next; вы ходимыми привилегиями, можете использовать и его. Учтите, он дол-
попадете на самый полезный экран во всем процессе. жен иметь право управлять базой данных и создавать пользователей и
таблицы (привилегии ‘dataBase’, ‘create user’ и ‘create tables’).
Шаг 2 Privileged DataBase User Password Пароль привилегированного
Второй шаг – системная проверка. При этом выводится список всех пользователя. Вот почему мы устанавливали пароль для ‘root’ при пер-
компонентов, от которых зависит SugarCRM, с указанием их статуса вом запуске MySQL (помимо заботы о безопасности, разумеется).
Скорая (существует в приемлемой версии; не существует, но без него мож- Все необходимые параметры указаны – нажимаем на кнопку
помощь
но обойтись; не существует, но обязателен). Вам придется установить Next. База данных будет создана позже, и если вы что-либо переду-
отсутствующие компоненты и обновить устаревшие. маете, можете вернуться к предыдущим шагам установки и внести
Придумайте ос- Обычно не хватает модулей интерпретатора PHP. Что делать даль- изменения.
мысленное назва- ше, зависит от дистрибутива. В Debian недостающие модули легко
ние для каталога,
в который уста-
установить через утилиту apt-get. Раздобыв все необходимые компо- Шаг 4
новлен SugarCRM. ненты, нажмите кнопку Re-Check для повторной проверки. Произведем базовую настройку программы. Она включает установку
Это существенно И помните, нельзя верить строке, извещающей о лимите оператив- URL-адреса для доступа к программе и задание пароля для админист-
облегчит работу ной памяти в PHP: даже если вы установили этот предел как 64 MБ, ратора admin. URL на данном этапе не особо важен, и потом его мож-
с системой вашим
вы прочтете: но будет поменять. Оставим тот, что по умолчанию. А вот пароль для
сотрудникам.
‘PHP Memory Limit >= 8M OK’. admin понадобится при настройке системы и добавлении пользовате-
лей, так что запомните его хорошенько.
Шаг 3 Автоматическое обновление программы (флаг Enable Sugar Updates)
Следующая задача – настройка базы данных MySQL. Фактически, может производить только администратор системы, и лучше этот флаг
настраивать ничего не придется – нужно лишь указать программе уста- не устанавливать: у всех остальных пользователей он вызовет сообще-
новки следующие параметры: ние об ошибке. Флаг Advanced Site Security (дополнительные опции
Host Name Имя хоста. По умолчанию ‘localhost’, и менять его безопасности) то ли включает, то ли выключает их – неясно; поэтому я
незачем. оставил его в состоянии Use Defaults (настройка по умолчанию).
DataBase Name Имя базы данных. По умолчанию ‘SugarCRM’. Лучше Как и раньше, нажатие кнопки Next не вносит необратимых измене-
заменить чем-то более осмысленным, тем более, что переименова- ний, и при желании вы сможете все переиграть.
ние позволит иметь на сервере больше одной системы SugarCRM. Не
забудьте установить флаг Create DataBase (Создать базу данных). Шаг 5
Username/Password For SugarCRM Имя пользователя и пароль для Предпоследний этап. Делать ничего не надо, только проверить на экра-
SugarCRM; они необходимы для выполнения запросов к базе данных не, все ли данные указаны верно. Это ваш последний шанс изменить
программы. По умолчанию ‘SugarCRM’, но опять же лучше заменить настройки. Готовы? Жмите кнопку Next.
его более подходящим. Не забудьте отметить флаг Create User (Создать

Увидав стартовое окно программы установки SugarCRM, считайте, что все почти готово.

Что читать Книга Майкла Уайтхеда издана в Packt Publishing.

60 Linux Format Март 2007


Осваиваем CRM-систему Учебник

Скорая
помощь

Переменная
среды SESSION.
MAXLIFETIME
определяет
максимальное
время бездействия
пользователя,
по истечении ко-
торого происходит
автоматический
выход из системы.
По умолчанию это
значение установ-
Шаг 2 – самый важный: нужно вовремя подметить все ошибки и лено в 24 минуты
исправить их. (1440 секунд).

Шаг 6
Сидите и наблюдайте за сборкой SugarCRM и созданием новой базы
данных. Здесь бывают только 2 варианта ошибки. Первый – вы не
установили пароль либо ввели его неправильно, и SugarCRM не может
создать вам базу данных. Второй – неправильно указан объем памя-
ти (см. раздел Подготовка). Придется повторить установку с самого
начала, предварительно изменив строку ‘installer_locked =>true’ на
‘installer_locked => false’ в файле config.php, расположенном в каталоге
программы.
Но вы-то следовали инструкциям, и я надеюсь, что никаких про-
блем у вас не возникло, а SugarCRM успешно установлен. В следую-
щем месяце мы займемся тонкой настройкой системы, включая вве-
дение привычной вашим пользователям терминологии. Информация
о SugarCRM и ее применении приведена на www.sugarcrm.com. Это не
обязательно касается свободной версии, но все равно любопытно, как
она используется в большом бизнесе. До следующего раза! LXF

Альтернативы SugarCRM
Существует большое количество платных программ forums. Если вы хотите установить такую систему у себя,
CRM. Среди них Microsoft CRM (www.microsoft.com/ бесплатная версия SugarCRM – лучший выбор.
smallbusiness/products/mbs/crm/detail.mspx), Netsuite Доступны и платные версии программы, в том числе
(www.netsuite.com) и ведущее ПО для управления кон- «арендуемые», т.е. пользователь платит за программу и
тактами, SalesLogix (www.saleslogix.com). за сервер. В платных версиях присутствуют дополни-
Почему же мы выбрали SugarCRM? Ответ прост: тельные модули (например, прогноз продаж Sales
открытый исходный код. На данный момент более мил- Forecasting). Версия Professional обойдется вам в $40 за
лиона пользователей по всему миру используют пользователя в месяц, а версия Enterprise, позволяющая
SugarCRM. Разработку ведет SugarCRM Inc вместе с работать с базой данных Oracle – в $75.
сообществом. Имеется большое количество расшире-
ний и дружелюбная поддержка на www.sugarcrm.com/ Сравнение возможностей различных версий
SugarCRM. www.sugarcrm.com/crm/products/

Через месяц Мы приспособим SugarCRM к нуждам ваших пользователей.

Март 2007 Linux Format 61


Mono-Maния Программирование на
современной платформе для начинающих

Mono: Связь с
Создать супер-поиск по файловой системе меньше чем за час? Наш штатный вождь обезьян
Пол Хадсон делает невозможное не только возможным, но и простым...
шими версии 1.0. Причина, по которой у них такие маленькие номера
версий (Beagle находится на стадии 0.2.14) – недостаточно стабильный
программный интерфейс (application programming interface, API). API –
это термин для обозначения имен функций, типов параметров и воз-
вращаемых значений для данной библиотеки. Стабильность API означа-
ет, что если функция DoFoo() в версии 1.0 принимает целый аргумент и
возвращает строку, то любая использующая ее программа будет рабо-
тать и с версией библиотеки 1.01, потому что функция не меняется.
Самое главное в API – это ‘I’-часть, собственно интерфейс (имя,
параметры, возвращаемое значение): если он фиксирован, то неважно,
как библиотека выполняет свою задачу, и пусть себе её версии меня-
ются как угодно.
Резюмирую:
Мы используем Mono, и Beagle тоже – значит, нам доступны пре-
имущества Beagle.
Beagle имеет API, предоставляющий в наше распоряжение его функ-
циональность, но он не стабилен и в будущем может измениться (в
прошлом он менялся довольно круто).
Чтобы использовать Beagle, достаточно знать имена его функций и
как к ним обратиться.
Вам это все еще кажется трудным? А так оно и есть. Но я ведь обе-
щал научить вас всем навыкам, необходимым, чтобы к концу нашей
серии уроков вы стали профессионалом, поэтому перейдем к делу...
Начнем с имени нашего приложения. Приложениям Gnome на осно-
ве Mono уже приелись имена с буквой G, и я решил выбрать что-нибудь

В
аша миссия, если вы за нее беретесь, состоит в написании кон- смешное и продвинутое. Предлагаю Poochy, это имя малоизвестного
сольной программы, которая индексирует файловую систему песьеголового персонажа игры Nintendo (даже Майк про него не слы-
пользователя в фоновом режиме, сканирует почту, RSS-ленты, хал!) – оно вполне подходит к собачьей теме, заданной Beagle [англ.
историю браузера и содержимое файлов, а затем позволяет произво- «гончий пес»].
Наш дить во всем этом молниеносный поиск. Уловили? ОК, увидимся через Итак, запустите MonoDevelop, выберите File > New Project, затем
эксперт час – удачи вам!
Пол Хадсон Да, мы собрались создать шедевр менее чем за 60 минут; по-ваше-
полагает, что Mono – му, без чуда не обойтись? Но прикиньте: какое небезызвестное Linux-
лучшая вещь со
приложение умеет осуществлять поиск по всем источникам данных?
времен мультфильма
Pinky and the Brain, и Думайте, думайте! Ясное дело, Beagle. А на какой платформе построен
сейчас поддерживает Beagle? Mono! А о чем этот учебник? О Mono! Итак, мы позаимствуем
два проекта на основе возможности у проекта Beagle – точнее, у его библиотек.
Mono на SourceForge. Что хорошо в .NET – это шанс встать на плечи гигантам, использо-
вав их библиотеки. Конечно, С тоже такое допускает – например, про-
грамма Ark RPG имеет библиотеку libarkrpg0c2a, позволяющую другим
программам на С вызывать ее функции, а не реализовывать их заново.
Но такой подход не лишен проблем: например, Gstreamer разделен на
несколько библиотек, и у каждой собственный номер версии. Рядовой
пример – libgstdataprotocol-0.10.so.0.8.1. C не воспринимает новые вер-
сии библиотек без обновления самой программы, поэтому номера вер-
сий так важны – приложению подавай непременно libgstdataprotocol-
0.10, а не 0.9 или 0.11.
Mono позволяет программистам просто потребовать «давай Beagle»
и получить любую доступную версию. Такой подход не всегда срабаты- Новые проекты Mono начинаются с пустого окна в стиле
вает, особенно с некоторыми новыми Linux-приложениями, не достиг- MonoDevelop – это скоро станет второй натурой...

Месяц назад Мы построили суперчиталку лент новостей RSS.

62 Linux Format Март 2007


Mono-Maния Учебник

на DVD

библиотеками
C# > Console Project, уберите галочку с Create Separate Solution
Mono 1.2.2.1
MonoDevelop 0.12
Код примеров ста
тьи

Subdirectory, затем введите имя ‘Poochy’ в поле Name и нажмите кноп-


ку New внизу. Вы получите старое доброе приложение Hello World – мы
его ‘программировали’ в начале серии уроков; удалите строчки Console.
WriteLine() и оставьте метод Main() пустым.

GTK и командная строка


Для этого проекта нам нужно использовать Beagle и – не удивляйтесь –
GTK, поэтому нажмите правой кнопкой мыши на References на панели
слева (сразу над Resources, AssemblyInfo.cs и Main.cs) и выберите Edit
References. В появившемся окне переключитесь на вкладку Packages,
где выберите Beagle (версия 0.0.0.0 – я предупреждал, что он далеко не
стабилен, не так ли?) и GTK-sharp (версия 2.10.0.0). Эти номера просто
сообщают, какие версии установлены в данный момент – если у кого-то
другая версия Beagle, Mono преспокойно обойдется той, что есть.
Тем самым мы запросили для использования библиотеки Beagle и
GTK#, но чтобы действительно их использовать, необходимо прописать
Как воспользоваться мощью GTK? Поставьте галочку рядом с
операторы using в начале исходного кода. По умолчанию, единственная
этим именем в References, затем запомните ее API.
строка using –
using System;
Библиотека System включает основные функции для написания он читает arg[0], который мы должны передать из командной строки. Скорая
консольного приложения, включая доступ к самой консоли для обес- Запустите следующую команду: помощь
печения ввода-вывода. Мы хотим включить в этот список Beagle и GTK, mono poochy.exe foo
так что добавим следующие две строки: Эта команда заставит Beagle искать в своем кэше аргумент ‘foo’, и Оператор +=
using Beagle; для выполнения запроса понадобится около секунды (замените foo на позволяет вам
using Gtk; что-нибудь заведомо присутствующее в вашем кэше Beagle). Но тут вы «подписывать»
В методе Main() необходимо вызвать Beagle и сказать ему, что искать. обнаружите, что ничего не выводится – ни файлов, ни чего-либо еще, методы на события,
а обратный ему
Это можно сделать через Query, специальный объект Beagle. Этот объ- содержащего ‘foo’. Чья это проблема – Beagle или наша? Beagle вне
-= отсоединяет
ект также умеет запускать наши собственные методы при наступлении подозрений, значит, проблема в нашем коде. Расследуем... методы.
определенных событий – например, найдя что-нибудь, отвечающее
поисковому запросу. Вот как все это выглядит в C# – поместите этот код Гонка на время
туда, где находился Console.WriteLine(): Наша программа не работает по двум причинам. Более заметная из
// Создаем новый запрос и добавляем два метода обработчика них – пуст метод OnHitsAdded(), вызываемый Beagle при нахождении
событий совпадения, в который Poochy должен вывести результат. Поэтому
Query q = new Query(); Mono безмолвствует, даже и получив что-то от Beagle. Проще всего
q.HitsAddedEvent += OnHitsAdded; заставить Poochy выводить URL каждого найденного Beagle объекта,
q.FinishedEvent += OnFinished; например, так:
// Сообщаем Beagle, что запрос содержится в первом параметре foreach(Hit hit in response.Hits)
командной строки {
q.AddText(args[0]); Console.WriteLine(“Hit: “ + hit.Uri);
// Начинаем поиск }
q.SendAsync(); Если вы запустите программу, то увидите, что она опять ничего не
В общем, несложно, но это еще не вся сказка: найдя файл, RSS- выдает, хотя Beagle должен бы найти то, что вы просили. Проблема
ленту или что там еще совпадет с нашим запросом, Beagle всегда в том, что наш поиск использует метод SendAsync(), то есть Beagle
вызывает метод OnHitsAdded(), а закончив поиск, вызовет метод выполняет поиск асинхронно. Мысленно прокрутите программу: ком-
OnFinished() – чтобы код скомпилировался, необходимо реализовать пьютер выполняет первую строчку, переходит ко второй, затем к тре-
оба этих метода. Для успешной компиляции достаточно вставить два тьей, и так далее до конца. Конечно, иногда программа перескакивает
пустых метода: с места на место, но смысл в том, что в один момент времени испол-
static void OnHitsAdded (HitsAddedResponse response) { } няется одна строка кода.
static void OnFinished(FinishedResponse response) { } У Beagle есть два способа поиска: синхронный и асинхронный.
Объекты HitsAddedResponse и FinishedResponse вообще-то Первый означает «выполняй поиск, а я буду ждать его окончания», а
дают массу полезной информации, но пока мы их проигнорируем. второй – «начинай поиск, а я продолжу выполнение программы; ког-
Продолжим: нажмем F8, чтоб скомпилировать первый релиз Poochy да закончишь, прерви меня». Они также известны как блокирующий и
(храбро назовем его 0.1), затем откроем окно терминала и перейдем в неблокирующий, потому что синхронный метод блокирует выполне-
/каталог/где/находится/poochy/bin/Debug. Пора протестировать нашу ние следующей строки, пока сам не завершит работу, в то время как
ищейку. асинхронный метод позволит вам выполнять код, а сам будет работать
Poochy необходимо запускать из командной строки, потому что параллельно.

Март 2007 Linux Format 63


Учебник Mono-Maния

Вам необходимо это знать, чтобы учесть такую возможность: вдруг Hit: file:///usr/share/gtk-doc/html/libuser/libuser-config.html
ваша программа завершится раньше, чем асинхронный метод успе- Hit: file:///usr/share/doc/nant-0.85/releasenotes.html
ет что-либо сделать? То есть завершится до того, как Beagle найдет Hit: file:///usr/share/gtk-doc/html/libgnome/libgnome-gnomeconfig.
какое-либо совпадение? Ответ состоит в том, что программа успешно html
отключится, и вызванный метод сгинет, не успев ничего напечатать. Hit: file:///usr/share/gtk-doc/html/gtk/gtk-question-index.html
Вот почему мы не получили никакого результата, и, значит, нам надо Hit: file:///usr/share/gtk-doc/html/gtk/gtk-Resource-Files.html
ждать, пока Beagle завершит поиск.
Вот здесь на сцену и выходит GTK. Когда вы используете про- Два шага вперед, один назад
граммы с графическим интерфейсом, приложение ждет, пока вы что- Кроме основного результата, мы также получили побочный: выхода
нибудь сделаете: выберете пункт меню или хотя бы наведете курсор из приложения не происходит. Когда Beagle вернет все возможные
Скорая
помощь мыши на кнопку. Фактически, любое действие посылает сигнал прило- результаты, Poochy будет по-прежнему чего-то ждать. Вы видели, что
жению, чтобы оно смогло отреагировать, то есть приложение просто основной цикл приложения – бесконечный, и коль скоро мы вызвали
ждет сигнала. Очевидно, такие приложения не отключаются, выполнив метод Application.Run(), то вошли в состояние вечного исполнения.
После вызова
Application.Quit() то или иное действие, иначе, например, в Abiword вам пришлось бы Пока программа не даст сбой, машина не перезагрузится или мы не
управление пе- непрерывно что-то печатать, чтобы редактор не закрылся. Вместо это- нажмем Ctrl+C, Poochy так и будет находиться в этом состоянии.
редается обратно го они используют так называемый главный цикл [сообщений], кото-
методу Main(), рый выглядит примерно так:
где продолжает-
ся выполнение
while (1) {
сразу после строки LookForSignals();
Application.Run(). ActOnSignals();
Метод Quit() }
просто велит GTK
Вы, конечно, сообразили, что это бесконечный цикл, но он практи-
завершить рабо-
ту – вы вольны чески не потребляет процессорное время и позволяет другим частям
продолжить де- приложения (графическому интерфейсу или, в нашем случае, Beagle)
лать, что захотите. работать на полную катушку. Нам того и надо, вот почему мы собира-
емся сесть на главный цикл GTK: пусть наша программа простаивает,
пока Beagle производит поиск и вывод результата. Чтобы это сделать,
добавим в конец метода Main() две строчки:
Gtk.Application.Init();
Gtk.Application.Run();
Этот код велит GTK запуститься и работать. Скомпилируйте про-
грамму, нажав F8, и запустите ее из командной строки. На этот раз вы
должны получить список результатов, похожих на следующие:
Hit: file:///home/paul/foo.xml Можете писать свой код в MonoDevelop, но раз надо передать
Hit: file:///usr/share/doc/tzdata-2006m/tz-link.html Poochy параметры, лучше запускать его из командной строки.

Часто задаваемые вопросы

Mono FAQ – часть I


Если тонкие моменты Mono вызывают у вас вопросы, то вот ответы на них...

Не понял. Зачем мы пометили шлось бы писать System.Encryption. += для добавления методов. Это также закрывающую фигурные скобки на
Reference, а потом еще и прописали Cryptography.SHA1CryptoServiceProvider известно как подписка. Используя +=, вы отдельных строках?
строку using? foo=new System.Encryption.Cryptography. можете ‘подписать’ несколько методов Нет – вовсе нет! Лично я люблю ставить
Добавление чего-то через Reference поз- SHA1CryptoServiceProvider() – согласи- на одно событие – Mono просто запустит { на той же строке, что и оператор, ей
воляет воспользоваться соответствую- тесь, довольно утомительно! Вместо их по одному последовательно в порядке предшествующий. Этот стиль известен
щим кодом; добавление чего-то с помо- этого можно поместить в начале using их добавления. как Единственно Верный Скобочный
щью строки using позволяет сэкономить System.Encryption.Cryptography;, затем S Стиль, потому что его приняли Брайан
набор кода при вызове методов. Для HA1CryptoServiceProvider foo=new SHA1 Зачем нужен файл AssemblyInfo.cs? Керниган и Деннис Ритчи, когда они
подключения Beagle необходимо доба- CryptoServiceProvider(). Помните, что Вы будете смеяться, но там и правда изобрели язык программирования С.
вить его как Reference – тогда станут MonoDevelop по умолчанию добавляет информация о вашей сборке! В терми- Однако MonoDevelop по умолчанию
доступны его объекты и методы, и мы System в Reference. нах .NET сборка может быть как разде- использует стиль BSD, когда каждая
можем немедля их использовать, но ляемым объектом (SO файл в Linux или скобка располагается на своей строке.
только под полным именем, включаю- Почему мы используем +=, чтобы DLL в Windows), так и исполняемым Выбирайте, что вам больше нравится,
щим ссылку на пространство имен. добавить метод к событию Beagle? Я файлом. Номер версии вашего исполня- главное – соблюдать единый стиль во
Строка using Beagle; сообщает .NET, что думал, что += для добавления значения емого файла, имя программиста и дру- всей программе!
когда мы пишем Query, подразумевается к переменной. гая информация находится в конечном
Beagle.Query. В нашем случае экономия Да, += используется для сложения пере- двоичном файле poochy, и все это вы
невелика; а вот, например, алгоритм менных, но почему бы не расширить эту устанавливаете в AssemblyInfo.cs.
SHA1 в .NET находится в пространстве метафору на события, происходящие во
System.Encryption.Cryptography, и при- время работы Beagle, и не использовать Надо ли располагать открывающую и

64 Linux Format Март 2007


Mono-Maния Учебник

{
Хитрые штучки Console.WriteLine(“Hit: “ + hit.Uri);
}
Если вы следовали первой части руководства этой серии, то у вас уже }
есть целый набор библиотек – Avahi, D-BUS, GTK#, ipod-sharp и другие. }
Теперь, узнав, как пользоваться Beagle, можете перенести полученные Это метод грубой силы: Beagle ищет все подряд, а мы фильтруем
знания на другие библиотеки и удивить себя собственной элитной ква- результаты перед выводом. Но Beagle можно научить искать и конк-
лификацией! Но имейте в виду: документация очень скудна. Beagle, ретный тип совпадений, с помощью метода AddHitType(): он позволит
при всей нехватке его документации, еще много лучше прочих. Я рас- описать то, что вы ищете, обычным текстом. Корректные параметры
смотрю некоторые библиотеки в следующих выпусках, а сейчас про-
включают Application, Calendar, Contact, Feeditem (для RSS), Image,
должайте читать...
IMLog, MailMessage и – вот оно! – File.
Вернувшись к методу Main(), найдите строку q.AddText(args[0]) и
добавьте перед ней строку:
q.AddHitType(“File”);
Может, вам того и надо – к примеру, вы хотите периодически про- Запустите программу, и увидите, что выводятся только файлы –
верять ресурс или дожидаться, пока данные поиска доберутся до вас никакой переписки из чатов, засоряющей результаты! LXF
через сокет. Но Poochy задуман как программа, выполняющая поиск
по требованию, а затем завершающаяся. Мы уже написали заглушку
метода OnHitsAdded, а теперь займемся методом OnFinished(), который
покамест пуст.
Когда Beagle вернет все результаты, он посмотрит, зарегистрирован Скорая
помощь
ли метод для свойства FinishedEvent. Мы уже делали это с нашим мето-
дом OnFinished(), который вызывается по окончании работы Beagle. А
сейчас нам нужно сообщить GTK, чтобы программа покинула основ- Строки «using»
ной цикл, тогда наше приложение сможет корректно завершиться. Это позволяют писать
меньше кода, но
довольно просто – вот как выглядит новый метод OnFinished(): иногда способст-
static void OnFinished(FinishedResponse response) вуют коллизиям.
{ Например, .NET со-
Application.Quit(); держит класс Timer
в System.Timers, а
}
SDL.NET содержит
Application.Quit() – это GTK-метод, который прерывает главный цикл, собственный
очищает все использованные GTK-ресурсы (в нашем случае их немно- класс Timer. Если
го, так как мы не работаем с графикой), затем передает управление вы объявите эти
нашему приложению сразу же после строки Application.Run() в методе пространства
с помощью выра-
Main(). Поэтому путь работы программы будет следующим: Main() > жений «using», то
SendAsync() > Application.Run() > основной цикл GTK > OnFinished() > Mono не поймет,
Application.Quit() > Main(). который Timer
Скомпилируйте, запустите и восхититесь собственным умом: ваша вы имели в виду,
когда писали Timer
программа делает все, что задумано, и потребовала всего десять строк
foo=new Timer();
значащего кода! Придется указать
Poochy выводит на экран все URL, RSS-ленты, документы OpenOffice. это явно: написать,
org, MP3, презентации PowerPoint, заметки Tomboy, исходный код, допустим, Timers.
JPEG файлы, приложения... (глубокий вдох)... email, видео, встречи, Timer.

zip-файлы и установленные пакеты на вашей системе, которые соот-


ветствуют запросу, передаваемому в AddText(). А если вас интересуют
только файлы, находящиеся на вашем диске, а не все что ни попадя?

Погодите... еще не все!


Два урока назад мы рассматривали метод EndsWith(), применимый к
строкам, который принимает строку в качестве аргумента и возвращает
true, если строка А оканчивается строкой B. Например:
string foo = “bar”;
bool baz = foo.EndsWith(“r”);
Когда этот код выполнится, переменная baz установится в true, так
как foo оканчивается на ‘R’. В .NET также есть метод StartsWith(), кото-
рый действует наоборот – возвращает true, если одна строка начинается
с другой. Выходит, мы можем заставить наш код выводить только фай-
лы, поменяв метод OnHitsAdded() на следующий:
static void OnHitsAdded (Beagle.HitsAddedResponse response)
{
foreach(Hit hit in response.Hits)
{ Готовый продукт: да, снова консольное приложение, но до чего ж
if (hit.Uri.StartsWith(“file”)) крутое – чего только оно ни умеет!

Через месяц Мы построим пользовательский интерфейс с помощью Stetic!

Март 2007 Linux Format 65


Hardcore
Учебник Linux
Hardcore Проверьте себя, участвуя
Linux
в сложных проектах для продвинутых
пользователей

Grub: Настройте
Один дистрибутив загрузить легко – но что если вам надо жонглировать дюжиной систем?
Ник Вейч грубо прикидывает…

одной системы, просто следует этим воспользоваться! Встрепенулись?


Значит, можно начать урок.
Grub управляется файлом настройки, обычно находящимся в /boot/
Grub/menu.lst. Когда Grub инициируется кодом начальной загрузки, он
ищет этот файл, считывает его и выполняет указанные в нем команды.
Преимущество такой системы в том, что после изменения конфигу-
рации вам не нужно пересоздавать никакие файлы – с Grub вы даже
можете менять процесс загрузки на лету!

Файл настройки
По умолчанию файл настройки Grub выглядит примерно так:
# grub.conf созданный anaconda
default=0
timeout=5
splashimage=(hd0,10)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18-1.2849.fc6)
root (hd0,10)
kernel /boot/vmlinuz-2.6.18-1.2849.fc6 ro
root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.18-1.2849.fc6.img
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,10)

Д
обро пожаловать на очередной урок по Linux. Сегодня я про- kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro
веду несколько упражнений с загрузкой системы: покажу вам, root=LABEL=/1 rhgb quiet
как настроить её и улучшить с помощью Grub. Но сначала initrd /boot/initrd-2.6.18-1.2798.fc6.img
проведем разминку. Как вы уже знаете, при загрузке в вашу любимую title Wintest
операционную систему компьютер проходит несколько этапов. Все их rootnoverify (hd0,5)
Наш понимать не обязательно, но в определенный момент времени проши- chainloader +1
эксперт тое ПО компьютера (BIOS) пытается загрузить ОС с диска (или другого В начале файла идет набор глобальных настроек, описывающих
Ник Вейч устройства), используя для этого MBR (главную загрузочную запись) загрузку по умолчанию, время до начала загрузки по умолчанию,
Ежедневно диска. Это небольшая область на диске, содержащая код, который най- экранную заставку, и опция, позволяющая спрятать меню, если не
пользуясь Linux дет и загрузит ядро вашей ОС. будет нажата какая-либо клавиша. Остальные настройки – индивиду-
больше семи лет,
Ник знает про эту Долгое время Linux обходился системой Lilo (Linux Loader), уста- альные записи меню, каждая из которых начинается с заголовка.
систему все. навливавший код начальной загрузки в MBR и создающий map-файл с
Иногда он указаниями на код, который надо загрузить. У Lilo много ограничений, Начинаем
даже может и не самое мелкое из них состоит в том, что этот файл нужно заново OK, теперь взглянем на стандартные шаги, необходимые для загрузки
припомнить, создавать всякий раз, когда вы хотите поменять инструкции загрузки. с помощью Grub. Первым делом познакомьтесь с командой root. Она
что именно.
Чтобы сделать загрузку более гибкой и внести новые возможности устанавливает корневое устройство, а также подключает его, чтобы
в этот процесс, был создан Grub, Grand Unified Boot manager (Большой добыть информацию о размере раздела и т.п. Вот как выглядит типич-
Унифицированный менеджер Загрузки); он так- ная запись:
же поддерживает загрузку нескольких систем. root (hd0,0)
На этом уроке! Позор, что почти никто не использует его возмож- Команда устанавливает корневым разделом первый раздел первого
ности! Среднестатистический дистрибутив Linux диска. Если как корневой вы хотите использовать не-Linux раздел, то
Коллекция экранов загрузки при установке создает загрузочную запись для используйте команду rootnoverify, которая не пытается сначала под-
Многозагрузочные системы
себя, а если у вас есть Windows, то везучим он ключить устройство. Вам необходимо это сделать, чтобы прицепить
Защита паролем
создаст запись и для него. Но может-то он гораз- загрузчик Windows, например, который наверняка располагается на
Аварийные загрузочные записи
до больше! А тем, кто хочет загружать более разделе NTFS.

Месяц назад Нейл Ботвик компилировал собственное ядро Linux. Класс!

66 Linux Format Март 2007


Hardcore Linux Учебник
на DVD
Grub 1.95

свой загрузчик
То, как Grub определяет диски, нередко вызывает путаницу (да
такую, что в грядущем Grub2 это решено переделать). Во-первых,
он, не в стиле Linux, использует номера дисков вместо букв, так что
согласно Grub hdb становится hd1. Вторая особенность состоит в том,
что вся нумерация начинается с нуля!
Для вящего замешательства, если в Linux, пытаясь указать файл на
втором разделе второго диска на системе, вы использовали hdb2, то
в Grub это будет (hd1,1). Ветеран вы или салага, но когда-нибудь здесь
непременно споткнетесь!
Определив корневое устройство, мы должны указать расположение
образа, который хотим запустить. Это делается с помощью команды
kernel. Она принимает имя файла (который представляет образ загру-
жаемого ядра). Grub автоматически может распознавать тип файла для
ядер Linux, а также большинства других Unix-систем.
Обычно вы видите примерно следующее:
kernel /boot/vmlinuz-2.6.18
Заметим, что здесь используется устройство, которое вы опреде-
лили как корневое. Так что, увидев эту строчку, Grub попытается загру-
зить файл (hd0,0)/boot/vmlinuz-2.6.18.
Если образ ядра почему-либо находится на другом устройстве,

«Ветеран вы или Для вызова командной строки жмите ‘c’ в меню (если оно не заблокировано! См. указания
салага, но когда-нибудь по безопасности). Команды Grub будут доступны в интерактивном режиме.

здесь да споткнетесь!»
rootnoverify (hd0,0) Скорая
то вам необходимо только приставить спереди нужный дескриптор chainloader+1 помощь
устройства. Все остальные аргументы команды kernel передаются ядру, title Windows B
так что если ваши действия как-то связаны с конкретным драйвером, hide (hd0,0) Если ваша
необходимые опции можно указать в конце этой строки. rootnoverify (hd0,1) сконструированная
chainloader+1 запись в меню не
Если ваше ядро использует образ RAM-диска для начальной загруз- title Windows C работает, можете
ее отредактировать
ки, то вам необходимо указать его здесь, вот так, например: map (hd0) (hd1) во время загрузки,
initrd /boot/initrd-2.6.18 map (hd1) (hd0) для этого просто
Вот и все, что нужно для стандартной записи в меню. Если бы вы rootnoverify (hd1,0) выберите нужную
набирали эти строки из командной строки Grub, то затем понадобилось chainloader+1 запись и нажмите
‘e’. Выбор записи
набрать команду boot, однако ее наличие в меню подразумевается. Команда hide полностью прячет раздел от операционной системы и
для редактирова-
Чтобы запустить систему Windows, необходимо вызвать загрузчик тем самым предотвращает возможные инциденты. ния производится
Windows. Команда chainloader просто загружает другой загрузчик с клавишами курсора.
указанного корневого раздела. Значение +1 означает, что дополни- Аварийное восстановление Измените запись и
тельный загрузчик сидит в первом блоке раздела (именно туда его Самое тяжкое преступление для рабочей системы – невозможность нажмите Enter. Если
все в порядке, на-
помещает Windows). перезагрузиться после сбоя. Меньше всего вам хотелось бы, чтобы жмите ‘b’, и запись
ядро системы впадало в панику из-за выхода из строя какого-то обо- загрузится (если
Двойной пакет Окон рудования – особенно если вы администрируете удаленный сервер за загрузка даст сбой,
Grub также позволяет установить несколько версий Windows. тысячи километров от вас. Grub здесь может прийти вам на помощь: у то вы вернетесь
к меню).
Стандартный загрузчик Windows 9x/DOS срабатывает, только если он него есть система восстановления после сбоев, позволяющая опреде-
находится на первом диске, что, очевидно, затрудняет установку более лить альтернативный порядок загрузки, если отказала основная после-
чем одной копии системы. Хуже того: если у вас на одном диске два довательность инструкций.
загрузочных раздела Windows, могут возникнуть проблемы. Заметим, что отказ может быть как проблемой Grub, так и пробле-
Пора уже сообразить, что Grub может помочь и в этой ситуации. мой системы – например, с настройкой Grub все в порядке, но ядро
Команда map позволяет переупорядочить разделы диска, и вы сможе- не может загрузиться, не находит файловую систему или что там еще
те установить две версии Windows, обманув загрузчик: он поверит, что надо. Понятно, что защиты от дурака нигде не бывает, случаются такие
грузится с первого диска. Вот как можно это сделать: обстоятельства, что процесс загрузки просто зависает, а не отказыва-
title Windows A ет, однако данный метод позволит предотвратить множество типичных
hide (hd0,1) проблем.

Март 2007 Linux Format 67


Учебник Hardcore Linux

Скорая Вот пример простой настройки аварийной загрузки: initrd /boot/initrd-2.6.18


помощь default saved savedefault
timeout 10 Строка default велит Grub искать сохраненное значение. Строка
fallback 1 2 fallback определяет порядок альтернативной загрузки (умолчание по
Чтобы войти в
командную строку, умолчанию 0), поэтому в данном примере сначала пробуется запись
нажмите ‘c’ в меню title Default system Failsafe, затем запись Alternative.
Grub. Большин- root (hd0,0) Grub ищет в своем каталоге файл default, содержащий значение
ство команд Grub
kernel /boot/vmlinuz-2.6.18 загрузки записи по умолчанию. Это значение можно изменить коман-
можно вводить
прямо в ней. Чтобы initrd /boot/initrd-2.6.18 дой Grub-set-default, входящей в состав Grub, но так как многие дистри-
вернуться в меню, savedefault fallback бутивы ее не включают, то можете сделать, например, так:
просто нажмите echo ‘1’ > /boot/grub/default
Escape. title Failsafe mode chmod 600 /boot/grub/default
root (hd0,0) Учтите, что после того, как диск произвел аварийную загрузку,
kernel /boot/vmlinuz-2.6.18 failsafe значение по умолчанию изменится на первую успешную загрузочную
initrd /boot/initrd-2.6.18 запись, поэтому вам необходимо обновить значение в файле ‘default’ и
savedefault fallback вернуть все на свои места.

title Alternative Ставим замок


root (hd0,3) Навидавшись чудес, совершаемых с помощью Grub, вы можете обес-
kernel /boot/vmlinuz-2.4.34 покоиться, нельзя ли все это использовать в нехороших целях. Что ж,
ваш компьютер никогда не находится в полной безопасности, если он,
конечно, не защищен физически, однако существуют меры по усиле-
нию сохранности системы.
Grub поддерживает защиту паролем как в виде обычного текста, так
и в виде md5-шифрованных паролей.
Я покажу, как это работает. Создайте зашифрованный пароль пря-
мо в Grub как в терминале (от имени root).
grub
grub> md5crypt
Password: ********
Encrypted:$1$IsFjn1$VROhkBS.BaraJ6brXjnc8.
Теперь добавьте следующий код в первый раздел вашего файла
настройки menu.lst:
# заголовок
# обычно создается
# вашим дистрибутивом
default =0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
password -md5 :$1$IsFjn1$VROhkBS.BaraJ6brXjnc8.
hiddenmenu
Система аварийной загрузки в действии: первый образ почему-то не загрузился, и Grub title Linux-one
немедленно переходит к следующей записи в списке. Сам! root(hd0,0)

Шаг за шагом: Настраиваем заставку

Новый пейзаж на экране Установите картинку Перезагрузитесь


Вам понадобится изображение размером Сохраните копию splash.xpm.gz из /boot/grub (по- Перезагрузитесь и наслаждайтесь новой застав-
640*480. Сохраните его как splash.xpm в формате требуются права root), а затем установите новую кой. Если у вас еще нет файла splash.xpm.gz, то,
XPM. Теперь откройте терминал и сожмите файл заставку с помощью возможно, ваш дистрибутив не включает версию
с помощью gzip: mv /boot/grub/splash.xpm.gz /boot/grub/splashbak. Grub, использующую заставки – тогда соберите
gzip splashscreen.xpm xpm.gz его сами из исходных текстов!
Создастся файл, оканчивающийся на ‘.gz’. mv splash.xpm.gz /boot/grub

68 Linux Format Март 2007


Hardcore Linux Учебник


и т.д. Далее, существует несколько способов использования паролей.
В показанном выше файле, пользователь сможет выбирать пункты
меню, но не запускать команды Grub через командную строку и не
редактировать существующие настройки. Если попытаетесь, то вас
попросят пароль – тех, кто его не знает, Grub пнет обратно в меню.
Это довольно простая мера защиты; а если вы хотите вообще
скрыть присутствие альтернативных записей загрузки? Что ж, команда
password может принимать еще один аргумент, указывающий на дру-
гое меню Grub.
password -md5 :$1$IsF… /grub/menu2.lst
Вы можете, конечно, назвать файл как угодно и даже хранить его
где угодно, лишь бы Grub мог до него добраться.
При загрузке Grub отобразит обычное меню, с теми же ограниче-
ниями. А вот если на экране выбора в меню вы нажмете ‘p’ и введете
правильный пароль, то он загрузит совершенно новый файл меню со
всеми спрятанными опциями.
И наконец, полезный способ использовать пароль – это применить
его к отдельному образу. Строка с паролем вставляется сразу после
заголовка title. Когда данная запись выбирается в меню, Grub потребу-
ет пароль – а не то откажется продолжить работу. Это полезно, если к
вашей системе имеет доступ несколько групп пользователей.
Проблемы с загрузкой? Указали не тот диск в настройке? Говорили вам: споткнетесь!
Создание загрузочного Grub CD Нажмите ‘e’ и исправьте загрузочную запись во время сессии.
Grub на загрузочном диске может очень пригодиться – например, что-
бы оживить систему, которая перестала работать, или для загрузки с копию). И хотя вы создаете Grub CD, это не значит, что на него нельзя
устройства, не распознаваемого BIOS (это непросто, так как придется поместить другие полезные вещи.
установить ядро, поддерживающее устройство в образе RAM-диска, и Для создания образа можно использовать команду makeiso. Нужно
использовать его для загрузки настоящего ядра). будет сообщить ей, где находится загрузочный образ. Затем, так как
Кроме загрузки с неподдерживаемого устройства, вы также можете данный образ Grub не использует систему эмуляции диска (где образ
использовать спасательный диск, чтобы переустановить первый этап диска эмулирует загрузочную дискету), на это также придется указать,
Grub в главной загрузочной записи на диске. да еще добавить несколько дополнительных параметров для макси-
Чтобы загрузиться с CD, Grub пользуется образом El Torito. El Torito – мальной совместимости с системами со старым BIOS. Сведя все вмес-
это имя стандартного протокола загрузки с CD (странное? См. врезку те, получаем, что ввести надо
Знаете ли вы?.. ниже), которому требуется особый код. mkisofs r -b grubcd/grub/stage2eltorito -no-emul-boot -boot-loadsize
Создайте каталог, где будет хранится образ, и реплицируйте струк- 4 -boot-info-table -o Grubcd.iso
туру каталога boot следующим образом: Данная команда создаст файл ISO, который будет грузиться (про-
mkdir -p grubcd/boot/grub верьте, что BIOS настроен на загрузку с CD!). Осталось использовать
Теперь необходимо скопировать нужный образ Grub. Ваш дист- CDRecord или инструмент вроде K3b для прожига образа на диск, и
рибутив обычно хранит их в /usr/share/Grub/i386-pc/, хотя имя по- все готово.
следнего каталога может варьироваться. Для Fedora, например, мы
использовали Завершение
cp /usr/share/grub/i386-redhat/stage2_eltorito grubcd/boot/grub/ Наш урок окончен, и настало время остыть. Если ваши Linux мускулы
Без конфигурационного файла, Grub просто загрузит командную еще не болят, то можете попытаться двигаться дальше. Grub хорош,
строку, позволив вам вводить команды загрузки напрямую. Однако вы но разве вы не думаете, что он может больше? Разве вас не достает,
можете при желании включить такой файл (например, списать его с как он обзывает диски и разделы? Многие уже на это натыкались. На
вашей основной системы Linux, чтобы использовать его как резервную самом деле их так много, что Grub2, который уже довольно долгое
время находится в разработке, исправит эти
недочеты.
Знаете ли вы?.. Grub2 вырос из старого исследователь-
ского проекта Pupa (Preliminary Universal
Имя El Torito (это раширение формата Programming Architecture), который был
ISO9660, позволяющее загружать компью- создан для исследования процесса обновле-
тер с DVD и CD дисков) по-испански значит ния. Некоторые новые возможности Grub2
«бычок». Механизма загрузки оно никак не включают расширяемую, модульную среду,
проясняет. Но так называется сеть рестора-
поддержку скриптов и ориентированность на
нов мексиканской кухни в США. Легенда
многие платформы.
Hajime Nakano

гласит, что стандарт загрузки обдумывался


как раз в одном из этих ресторанов в Хотя система следующего поколения еще
Калифорнии. в разработке, пользоваться ею уже можно.
Вы можете ознакомиться с ходом разработ-
Спецификацию загрузки спроектировали, ки Grub2 в wiki по адресу http://grub.enbug.
поев похожей пищи. org. LXF

Через месяц Мы вгрыземся в создание собственных .deb пакетов!

Март 2007 Linux Format 69


GTK+
Учебник Разработка переносимых приложений
GTK+
с графическим интерфейсом пользователя

Glade 2.x – визуальная


ЧАСТЬ 4 Красивый интерфейс можно запрограммировать, вдалбли-
вая бесконечные строчки кода, а можно – легким движением руки, в на DVD
которой зажата мышь. Андрей Боровский рассматривает второй Код примеров ста
тьи
способ.

К
аждый уважающий себя набор визуальных элементов распо- содержит меню и панель инструментов для управления проектом. В
лагает средством для того, чтобы бросить пару-тройку компо- рабочей части окна расположен список визуальных элементов верх-
нентов на заготовку окна приложения, настроить их свойства и него уровня.
получить остов будущей программы. У Qt есть Qt Designer, у wxWidgets
есть DialogBlocks, а у GTK+ есть Glade. Если ваш опыт программиро-
вания ограничивается такими средами, как Borland C++ Builder или
Microsoft Visual C#, приступая к программированию с помощью Glade,
вы должны понять одну важную вещь: Glade – это не IDE. В нем нет
ни интегрированного компилятора, ни интерактивного отладчика, ни
редактора кода с автоматическим завершением строки. Glade 2.x гене-
рирует минимальный код, который вам придется дописывать в вашем
любимом редакторе, а Glade 3.x вообще стремится возложить генера-
цию кода на другие инструменты. Несмотря на то, что в ближайшее
время старый Glade будет вытеснен третьей версией, знакомство с
этим инструментом разработки позволит нам взглянуть на структуру
сложных программ GTK+ глазами самих авторов набора компонентов.
Поэтому данная статья посвящена Glade 2.x, а в следующей статье мы
узнаем, чем Glade 3.x отличается от своего предшественника. Мы вос-
пользуемся Glade для создания простой программы ImageViewer. Ее Рис. 2 Главное окно Glade.
исходные тексты можно найти на диске, но я советую вам пройти вмес-
те со мной все шаги по созданию данного приложения. Окно «Палитра», которое, в том или ином виде, присутствует в
Каждый раз, когда мы создаем новый проект Glade, перед нами каждой среде визуальной разработки, предоставляет нам доступ
появляется диалоговое окно, в котором нам предлагается выбрать тип к пиктограммам визуальных элементов. Окно Палитра Glade 2.*
проекта – GTK+ или GNOME (Рис. 1). Нам нужен GTK+. (Рис. 3) содержит несколько вкладок. Список вкладок зависит от типа
проекта (GTK+ или GNOME). При работе с нашим проектом палитра
будет содержать три вкладки: GTK+ Основные, GTK+ Дополнительные
и Устаревшие.
Окно редактора свойств (Рис. 4) предназначено, естественно, для
редактирования свойств визуальных элементов. Это окно также содер-
жит несколько вкладок. Вкладка Эл. управления позволяет настраи-
вать специфические свойства визуального элемента. Вкладка Упаковка
позволяет настраивать параметры упаковки тех визуальных элементов,
Рис. 1 Окно выбора типа проекта. которые вложены в какой-либо контейнер. С помощью вкладки Общие
можно настраивать общие свойства визуальных элементов, а вклад-
В среде Glade в процессе работы может быть открыто несколь- ка Сигналы предназначена для связывания сигналов и их обработчи-
ко окон, постоянными из которых являются три: главное окно, окно ков. Наконец, безымянная вкладка, пиктограмма которой изображает
палитры и окно редактора свойств объектов. Главное окно (Рис. 2) инвалидное кресло, позволяет настраивать параметры доступности

Месяц назад Мы разбирались с сигналами и событиями GTK+.

70 Linux Format Март 2007


GTK+ Учебник

классика
(accessibility) визуальных элементов GNOME. Эту вкладку мы пока рас- мышью в окно приложения. Во многих редакторах форм этот процесс
сматривать не будем. называется перетаскиванием, поскольку компонент перетаскивается
мышью с палитры компонентов в окно формы, но в Glade все про-
исходит по-другому. Для того чтобы перенести компонент в форму,
нужно сначала щелкнуть мышью по этому компоненту в палитре, а
затем – по той области на форме, в которой этот компонент должен
быть размещен (вот почему мы используем термин «перенос» а не
«перетаскивание»). При переносе в форму вертикального контейне-
ра открывается диалоговое окно, в котором Glade просит нас указать
число строк в нем. Cоздайте контейнер с двумя строками. В резуль-
тате главное окно будет разделено на две горизонтальные области,
расположенные одна под другой (для вертикального расположения
дочерних элементов). В верхнюю область перенесите с палитры объ-
ект Панель инструментов. Панель инструментов также представляет
собой контейнер, так что при переносе панели в окно приложения мы
снова должны указать количество дочерних элементов (на этот раз –
кнопок панели). Панель инструментов нашего приложения должна
содержать две кнопки. Вы можете заметить, что после переноса панели
инструментов в окно формы, размеры верхней области вертикально-
го контейнера подстраиваются под размеры панели, а на самой пане-
ли появляются две незаполненные области для размещения кнопок
(Рис. 5). В эти области мы должны перенести два элемента Toolbar
Button – кнопки панели инструментов, которым соответствует объ-
ект GtkToolButton. В окне панели инструментов появляются заготовки
кнопок.

Что в имени тебе моем


Поскольку на этом этапе мы уже работаем с несколькими объекта-
Рис. 4 Окно редактора свойств. ми, нам следует познакомиться с понятием имени объекта. Каждому
объекту GTK+ может быть присвоено имя. Это имя хранится в одном
Щелкните по элементу Окно на вкладке GTK+ Основные палитры из полей объекта, и его не следует путать с именем переменной, (Рис. 3) Главное окно
компонентов. В результате в проект будет добавлен элемент верхне- которая содержит указатель на объект (имя объекта, хранящееся в палитры.
го уровня Окно (вы можете видеть его в списке элементов верхнего самом объекте, по праву можно назвать «именем собственным»).
уровня в главном окне проекта), а перед нами откроется пустое окно До тех пор, пока наши программы состояли из одного файла и все
со стандартным заголовком. Это окно станет главным окном создава- переменные, содержащие объекты, находились в одной области
емого нами приложения. Программа GTK+ может содержать несколь- видимости, имена объектов не имели для нас значения. Однако в
ко элементов верхнего уровня, и для каждого из них можно открыть
независимое окно.
Давайте настроим параметры главного окна программы. Для
того, чтобы открыть объект интерфейса верхнего уровня в редакторе
свойств, нужно выделить этот объект в главном окне Glade. Перейдя
в редакторе свойств на вкладку Эл. управления, мы можем указать
текст заголовка окна (свойство Заголовок). Установите также флажки
Ширина по умолчанию и Высота по умолчанию. В соответствующих
наборных счетчиках укажите значения 200 и 150. Таким образом вы
зададите начальные размеры окна.
Вы, конечно, помните, что любое приложение GTK+ с более-менее
сложным интерфейсом должно использовать контейнеры для управ-
ления визуальными элементами. Разработка интерфейса в Glade также
начинается с создания контейнера. Выберите на вкладке палитры GTK+
Основные элемент Вертикальный бокс. Этому элементу соответствует
вертикальный контейнер GtkVBox. Перенесите вертикальный контейнер Рис. 5 Главное окно Glade.

Март 2007 Linux Format 71


Учебник GTK+

сложных проектах, состоящих из нескольких файлов, имена объ- ботчиков сигналов для этого окна создавать не нужно, поскольку все
ектов GTK+ играют важную роль, поскольку именно они служат для необходимые обработчики создаются по умолчанию.
идентификации объектов. В редакторе свойств объектов на вкладке
Эл. управления присутствует свойство Имя, которое позволяет вам
получить доступ к имени объекта на этапе визуального программи-
рования. Две кнопки, которые вы добавили на панель инструментов,
имеют имена toolbutton1 и toolbutton2. Я предполагаю, что вы добав-
ляли кнопки в порядке слева направо, то есть первой слева является
кнопка toolbutton1.
Только что созданные кнопки выглядят совсем не так, как нам
хотелось бы. Для того, чтобы придать кнопкам требуемый вид, мы
должны отредактировать их свойства. Выберите в окне формы кноп-
ку toolbutton1 и перейдите в редактор свойств, на вкладку Эл. управ-
ления. Свойству Метка присвойте значение Открыть. Затем щелк-
ните по значку раскрывающегося списка в поле свойства Иконка,
в открывшемся списке выберите пиктограмму Открыть. Нам необ-
ходимо создать заготовку обработчика для сигнала кнопки clicked.
Перейдите на вкладку Сигналы редактора свойств и щелкните кнопку
с многоточием справа от строки ввода Сигнал. Перед вами раскры-
вается список сигналов, в котором следует выбрать сигнал clicked. В
строке Обработчик появляется имя обработчика сигнала (по умолча-
нию – on_toolbutton1_clicked). Щелкните кнопку Добавить. В резуль- Рис. 7 Окно с информацией о программе.
тате новая функция будет добавлена в список обработчиков сигналов
кнопки toolbutton1. Сохраним наш проект. Как уже отмечалось, Glade 2.* позволяет
Перейдем теперь к редактированию свойств кнопки toolbutton2. генерировать исходный код приложения. Для этого нужно щелкнуть
Свойству Метка второй кнопки присвоим значение О программе. В на кнопку Построить. Теперь мы можем скомпилировать нашу про-
списке значений свойства Иконка выберем значение Справка, затем грамму (точнее, ту ее часть, которую мы создали). Перейдем в дирек-
создадим заготовку обработчика сигнала clicked (назовем его on_ торию проекта и выполним файл autogen.sh. В результате будут созда-
toolbutton2_clicked), так же как и в предыдущем случае. ны сценарий configure и make-файл. Мы можем собрать программу с
В нижнюю область вертикального контейнера следует перенес- помощью команды make. Двоичный файл программы будет создан в
ти элемент палитры Изображение (объект GtkImage, имя объекта директории src. Если вы запустите программу на этом этапе (я реко-
по умолчанию – image1). Выделите объект image1 в окне формы. мендую первый раз запустить программу с консоли), то заметите две
Перейдите на вкладку Упаковка редактора свойств и присвойте неприятные вещи. Во-первых, окно с информацией о программе само
значение Да свойству Заполнение. Далее, выделите в окне формы собой появляется вместе с главным окном программы. Во вторых, пос-
палитру инструментов (объект toolbar1 типа GtkToolbar). Перейдите ле закрытия главного окна программы ее работа не завершается (это
на вкладку Упаковка редактора свойств и также присввойте значение заметно, если запустить программу из окна консоли). Для того, чтобы
Да свойству Заполнение (Рис. 6). исправить ситуацию с окном aboutdialog1, нам нужно отредактировать
файл src/main.c. Откройте этот файл в текстовом редакторе и удалите
из него строки
aboutdialog1 = create_aboutdialog1 ();
gtk_widget_show (aboutdialog1);
Как вы, конечно, поняли, файл main.c содержит главную функцию
программы. По умолчанию этот файл содержит код для создания и
отображения на экране всех визуальных элементов верхнего уровня.
Помимо файла main.c среда Glade создала еще несколько файлов
исходных текстов в директории src. Файлы interface.c и interface.h
содержат код, отвечающий за работу элементов управления, кото-
рые мы создали в режиме визуального программирования. Файлы
support.c/support.h включают некоторые вспомогательные функции.
Обработчики сигналов, которые мы создали в редакторе свойств Glade,
объявлены в файле callbacks.h, а определены – в файле callbacks.c
(вы можете изменить имена файлов исходных текстов, заданные по
Рис. 6 Форма приложения с кнопками и объектом GtkImage.
умолчанию, в окне настроек Glade). Только файлы main.c и callbacks.c
предназначены для ручного редактирования. Текст остальных файлов
Заголовок перезаписывается Glade в процессе генерации кода. Теперь вспомним
Мы должны еще добавить в проект окно с информацией о програм- первые уроки программирования GTK+. Для того, чтобы программа
ме. Это просто, поскольку необходимое окно входит в набор визу- завершалась вместе с закрытием главного окна, необходимо опреде-
альных компонентов GTK+ (Рис. 7). Вы найдете его на вкладке GTK+ лить обработчик сигнала destroy объекта окна. В главном окне Glade
Дополнительные палитры компонентов (элемент About Dialog, объект выделите главное окно приложения и перейдите на вкладку «Сигналы»
GtkAboutDialog). Окно с информацией о программе является элемен- редактора свойств. Выберите в списке сигналов сигнал destroy (его не
том верхнего уровня, поэтому после щелчка мышью в палитре ком- следует путать с доступным там же событием “destroy event”) и создай-
понентов объект aboutdialog1 появится в списке элементов верхнего те заготовку обработчика для этого сигнала точно так же, как вы созда-
уровня. Перейдя на вкладку Эл. управления редактора свойств, вы смо- вали заготовки обработчиков сигналов clicked. Сгенерируйте заново
жете настроить основные свойства этого диалогового окна (название исходный код, нажав кнопку «Построить». Откройте в текстовом редак-
программы, имя автора, информацию о правах и т.д.). Никаких обра- торе файл callbacks.c. Найдите заготовку обработчика on_window1_
destroy() и добавьте в него вызов функции gtk_main_quit():

72 Linux Format Март 2007


GTK+ Учебник

void on_window1_destroy (GtkObject * object, gpointer user_data) которой задано в константе GTK_STOCK_OPEN,
{ функция gtk_dialog_run() возвращает значе-
gtk_main_quit(); ние GTK_RESPONSE_ACCEPT. В случае выбора
} пользователем кнопки «Открыть» мы должны
Мы используем тот же метод завершения программы, что и во узнать имя выбранного файла, получить ука-
всех предыдущих примерах. Сохраните файл callbacks.c. Теперь може- затель на объект image1 и загрузить файл в
те перекомпилировать и запустить программу снова. Окно описания этот объект. Если вас удивляет, что я включил
программы уже не появляется, а закрытие главного окна программы получение указателя на объект image1 в спи-
приводит к ее завершению. После внесения изменений в свойства сок наших задач, то вспомните, что у вас нет
визуальных объектов вы должны каждый раз заново генерировать доступа к переменной, которая хранит этот
исходный код (и, конечно, сохранять все изменения, сделанные в указатель. Для того, чтобы получить указа-
исходных текстах вручную). Что произойдет, если вы сначала отре- тель на объект image1, мы должны воспользо-
дактируете код одного обработчика сигнала, а затем добавите новый ваться функцией поиска объектов в иерархии
обработчик в режиме визуального редактирования? Ничего страшного визуальных компонентов нашего приложе-
не случится. Glade добавит новый код в файл callbacks.c, и не тронет ния. Мы начинаем поиск объектов с того, что
изменения, сделанные вами (этим свойством обладают только файлы находим визуальный элемент верхнего уров-
callbacks.c и main.c). ня. Указатель на визуальный элемент верхне-
Завершающая часть работы над нашей программой связана с добав- го уровня мы получаем с помощью функции
лением кода в обработчики событий clicked двух кнопок. Сами функ- gtk_widget_get_toplevel(). В поисках нужно-
ции-обработчики on_toolbutton1_clicked() и on_toolbutton2_clicked() го объекта функция gtk_widget_get_toplevel()
уже определены в файле callback.c. Первая функция должна вызывать перебирает иерархию визуальных элементов,
диалоговое окно выбора файла и загружать выбранный пользователем начиная с того элемента, чей указатель передан ей в единственном Рис. 8
файл изображения в компонент image1: параметре. В качестве стартового значения для поиска мы передаем Работающая
void функции gtk_widget_get_toplevel() указатель на объект-кнопку, для программа
on_toolbutton1_clicked (GtkToolButton * toolbutton, gpointer user_data) которой вызван обработчик on_toolbutton1_clicked() (адрес этого объ- ImageView.
{ екта передается функции обработчику в параметре toolbutton, и это
GtkWidget * file_chooser_dialog; единственный адрес объекта нашего приложения, которым мы распо-
file_chooser_dialog = gtk_file_chooser_dialog_new(“Открыть”, NULL, лагаем в данный момент). Адрес объекта, представляющего элемент
GTK_FILE_CHOOSER_ACTION_OPEN, верхнего уровня (в нашем случае это объект window1 – главное окно
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, приложения) мы сохраняем в переменной toplevel. Далее мы получаем
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); указатель на объект image1 с помощью функции lookup_widget() (эта
if (gtk_dialog_run(GTK_DIALOG (file_chooser_dialog)) == GTK_ функция сгенерирована Glade для нашего проекта и объявлена в файле
RESPONSE_ACCEPT) support.h). Функция lookup_widget() позволяет найти визуальный объ-
{ ект по его имени. Документация гласит, что первым аргументом lookup_
GtkWidget * toplevel; widget() должен быть указатель на визуальный элемент верхнего уров-
GtkWidget * image; ня, либо указатель на любой другой элемент иерархии приложения.
char *filename; В качестве отправной точки поиска мы выбираем элемент верхнего
filename = gtk_file_chooser_get_filename(GTK_FILE_ уровня, во-первых, потому, что так красивее, и во-вторых, потому, что
CHOOSER(file_chooser_dialog)); у нас все равно уже есть указатель на объект главного окна. Вторым
toplevel = gtk_widget_get_toplevel(GTK_WIDGET(toolbutton)); аргументом lookup_widget() должно быть имя искомого визуального
image = lookup_widget(GTK_WIDGET(toplevel), “image1”); элемента. Указатель на объект image1 сохраняется нами в переменной
gtk_image_set_from_file(GTK_IMAGE(image), filename); image. Мы получаем имя выбранного пользователем файла с помо-
gtk_window_set_title(GTK_WINDOW(toplevel), filename); щью функции gtk_file_chooser_get_filename() и загружаем хранящееся
g_free (filename); в файле изображение в объект image1 с помощью функции gtk_image_
} set_from_file(). Остальной код обработчика должен быть вам понятен.
gtk_widget_destroy (file_chooser_dialog); Осталось заполнить обработчик сигнала clicked кнопки toolbutton2:
} void
Все необходимые заголовочные файлы включены в файл callbacks. on_toolbutton2_clicked(GtkToolButton *toolbutton, gpointer user_data)
c, так что мы можем о них не беспокоиться. Диалоговое окно выбора {
файла реализуется объектом GtkFileChooserDialog. Объект создает- GtkWidget * about_dialog;
ся функцией gtk_file_chooser_dialog_new(). В первом параметре этой about_dialog = create_aboutdialog1();
функции передается заголовок создаваемого окна. Второй параметр gtk_widget_show(about_dialog);
может содержать ссылку на родительский визуальный элемент. Третий }
параметр служит для передачи константы, которая указывает, для чего Получить указатель на объект aboutdialog1 очень просто. В файле
предназначено диалоговое окно – для открытия или для сохранения interface.h определена функция create_aboutdialog1(), которая создает
файла. Далее следует список параметров, состоящий из имен кнопок объект окна описания программы и возвращает указатель на него. Нам
и констант, которые должны идентифицировать эти кнопки. Список остается только вывести окно на экран с помощью gtk_widget_show().
может содержать описание одной или нескольких кнопок и должен Это те самые два вызова функций, которые нам пришлось удалить из
заканчиваться значением NULL. Функция gtk_dialog_run() делает диа- файла main.c, для того, чтобы окно описания программы не появлялось
логовое окно видимым и возвращает управление после того, как тогда, когда не надо. Теперь мы можем проверить, как работает наша
пользователь нажмет одну из кнопок. При этом функция возвращает программа (Рис. 8). LXF
значение, сопоставленное нажатой кнопке при вызове функции gtk_file_
chooser_dialog_new(). Если пользователь нажал кнопку «Открыть», имя

Через месяц Мы узнаем, что нового привносит Glade 3.x в процесс визуальной разработки.

Март 2007 Linux Format 73


Unix
Учебник API Настоящее программирование
Программирование для Unix для
Unix – без прикрас и библиотек-«оберток»

Консольный
ЧАСТЬ 10 Привыкли считать консольные приложения лишенными пользовательского интер-
фейса? Напрасно – старый добрый терминал способен на многое. На что именно – расскажет
Андрей Боровский.
Real computer scientists despise the idea of actual hardware.
Hardware has limitations, software doesn’t.
It’s a real shame that Turing machines are so poor at I/O.

Из программистского фольклора.

налами считается множество устройств, которые работают совершенно


по-разному. Неудивительно, что для управления всем этим многооб-
разием устройств потребовался сложный интерфейс. И хотя вы вряд
ли подключаетесь к своему компьютеру с помощью модема (у вас,
возможно и модема-то уже нет), а для вывода документа на печать вы,
скорее всего, используете фильтр PostScript, некоторые возможности
управления терминалом, появившиеся в незапамятные времена, могут
пригодиться и вашим программам.

Предотвращение перенаправления вывода


Вы, конечно, знаете, что в Unix вывод консольной программы, пред-
назначенный монитору, может быть перенаправлен в файл или в
поток ввода другой программы. Часто это бывает не только полезно,

К
аждому, кто приступает к изучению программирования для но даже необходимо. Теперь можете проверить свою сообразитель-
Unix, консольный ввод/вывод представляется простым делом. ность. Отодвиньте эту статью на десять секунд и подумайте, в каких
Для создания графических программ необходимо сначала случаях программа не должна допускать перенаправление своего
изучить язык программирования, а затем – один из интерфейсов про- вывода? Самый простой пример – интерактивная консольная програм-
граммирования графики. Для создания консольных программ доста- ма. Интерактивные программы выводят данные небольшими порци-
точно изучить язык программирования. Если вы не шли к изучению ями, после чего останавливаются в ожидании реакции пользователя.
программирования окольными путями, то ваши первые программы Примером такой программы может служить клиент SSH. Если пользо-
наверняка были консольными. Однако интерфейс консоли Unix обла- ватель пытается перенаправить вывод интерактивной программы, зна-
дает гораздо большим числом возможностей, чем кажется на первый чит, он, скорее всего, просто не понял, как работать с вашей програм-
взгляд. О некоторых дополнительных возможностях работы с консо- мой. Желательно предотвратить бессмысленное действие и сообщить
лью мы и поговорим сегодня. Богатство функций работы с консолью в пользователю об этом. Рассмотрим сначала простейший пример про-
Unix объясняется тем, что у Unix долгая история. Когда-то терминалы граммы, которая не позволяет перенаправить свой вывод на устрой-
были настоящими устройствами (в некоторых областях человеческой ство, не являющееся терминалом (текст этой программы вы найдете
деятельности такие устройства применяются и сейчас), подключен- на диске, в файле noredirect.c).
ными к компьютеру через последовательный порт. Часто терминал #include <stdio.h>
и компьютер были отделены друг от друга прослойкой в виде пары #include <stdlib.h>
модемов и телефонной линии. Последовательный порт и модем счи- #include <unistd.h>
тались неотъемлемой частью терминала, и интерфейс управления ими #include <string.h>
стал частью интерфейса управления терминалом. Кроме того, такие
устройства, как, например, принтеры, тоже считаются терминалами int main (int argc, char ** argv)
Unix. Если в графическом программировании принтер считается уст- {
ройством ввода/вывода данных, подобным графическому дисплею, char * errstr = “I will not redirect my output!\n”;
то вполне логично, что в консольном программировании принтер рас- if (!isatty(fileno(stdout))) {
сматривается как терминал. Таким образом, с точки зрения Unix терми- write(2, errstr, strlen(errstr));

Месяц назад Мы познакомились с демонами по Асприну.

74 Linux Format Март 2007


Программирование для Unix Учебник

ввод/вывод
на DVD
Код примеров ста
тьи

return EXIT_FAILURE; нала же программа будет считывать ответ пользователя. В то же время,


} строка, распечатанная с помощью printf(), может быть перенаправлена
printf (“Hello!\n”); на другое устройство, поскольку printf() использует поток вывода, пре-
return EXIT_SUCCESS; доставленный оболочкой (мы можем, в принципе, подменить поток,
} используемый printf() по умолчанию, но не будем этого делать).
Функция isatty(3) позволяет программе узнать, является ли пре-
доставленное ей устройство ввода/вывода терминалом. Аргументом Управление терминалом
isatty() должен быть дескриптор файла устройства, который мы полу- Управление терминалом осуществляется с помощью структуры termios,
чаем из переменной stdout, пользуясь функцией fileno(3). Функция которая содержит значения и флаги, влияющие на различные парамет-
isatty() возвращает единицу, если переданный ей дескриптор соот- ры терминала. Прежде чем изучать структуру termios и работающие с
ветствует терминалу, и 0 – в противном случае. Программа noredirect нею функции, необходимо сказать несколько слов о режимах работы
напечатает строку “Hello!”, только если у нее есть доступ к терминалу. терминала. Поведение терминала во многом определяется тем, в каком
Если же вы скомандуете режиме он находится – каноническом или неканоническом. Примером
noredirect > file программы, использующей терминал в каноническом режиме, может
на экране появится гневное сообщение, а файл file окажется пустым. служить оболочка bash. В каноническом режиме терминал передает
Впрочем, возможно, вы не всегда будете столь строгим по отношению программе символы, введенные пользователем, только после того, как
к пользователю. Вам может потребоваться частично запретить пере- пользователь нажмет клавишу Ввод. До тех пор, пока пользователь
направление для выделенных мест программы. В этом случае можно не нажал Ввод, он может редактировать вводимую строку, используя
воспользоваться трюком, который показан в программе noredirect2 клавиши BackSpace, Del, Tab и им подобные. Если терминал находит-
(noredirect2.c на диске). ся в неканоническом режиме, пользователю не требуется нажимать
#include <stdio.h> Ввод для того, чтобы программа получила напечатанные им симво-
#include <stdlib.h> лы. В неканоническом режиме программа может получать символы
#include <fcntl.h> сразу после ввода или с задержкой, по одному или по нескольку, в
#include <string.h> зависимости от настроек режима терминала. Поскольку в неканони-
ческом режиме все введенные символы сразу же передаются програм-
int main (int argc, char ** argv) ме, возможность редактировать строку у пользователя отсутствует.
{ Независимо от режима, в котором находится терминал, можно уста-
int fd_in, fd_out; новить некоторые базовые параметры, например, скорость передачи
char * nr_message = “Enter your name, please\n”; данных и функцию контроля ошибок (очень полезно при модемном
char buf[255]; соединении). Впрочем, некоторые из них, например отключение отоб-
fd_in = open(“/dev/tty”, O_RDONLY); ражения вводимых пользователем символов (echo), могут с пользой
fd_out = open(“/dev/tty”, O_WRONLY); применяться и в современных программах.
write(fd_out, nr_message, strlen(nr_message)); Структура termios позволяет управлять флагами и численными
read(fd_in, buf, 255); параметрами, которые можно разделить на пять групп: ввод, вывод,
printf(“Your name is %s\n”, buf); управление оборудованием, локальные параметры и специальные
return EXIT_SUCCESS; управляющие символы. Простейшая структура termios состоит из пяти
} полей, соответствующих перечисленным группам:
В этой программе мы напрямую обращаемся к устройству, которое struct termios {
соответствует управляющему терминалу ввода/вывода. Вы, конечно, // флаги управления вводом
помните, что устройства в Unix/Linux представлены файлами. Файл tcflag_t c_iflag;
/dev/tty предоставляет программе доступ к ее управляющему термина- // флаги управления выводом
лу. Иначе говоря, для каждой программы файл /dev/tty представляет tcflag_t c_oflag;
тот терминал, который является управляющим терминалом данной // флаги управления оборудованием
программы. Мы открываем устройство /dev/tty дважды – для чтения tcflag_t c_cflag;
и записи. Запись в файл /dev/tty соответствует выводу данных на // флаги управления локальными параметрами
экран терминала, а чтение – вводу данных с клавиатуры. Полученные tcflag_t c_lflag;
дескрипторы, fd_in и fd_out, мы будем использовать, соответственно, // Специальные управляющие символы
для ввода/вывода, который нельзя перенаправить. Вся магия перена- cc_t c_cc[NCCS]
правления ввода/вывода основана на том, что программы пользуются };
потоками ввода-вывода, которые предоставляет им оболочка. Если мы У структуры termios могут быть и другие поля, но нас они не интере-
в программе свяжем дескрипторы с конкретным устройством, коман- суют. Обычно работа со структурой termios происходит по следующе-
ды оболочки уже не смогут этого изменить. Таким образом, строка му сценарию (все необходимые функции и типы данных определены в
“Enter your name, please” всегда будет выводиться на терминал. С терми- файле termios.h): с помощью функции tcgetattr(3) мы получаем копию

Март 2007 Linux Format 75


Учебник Программирование для Unix

структуры, описывающую текущее состояние терминала, и делаем termios.c_cc[VMIN] или termios.c_cc[VTIME] присвоено нулевое значе-
еще одну копию. Затем мы модифицируем значения полей одной из ние, а другому – ненулевое, то условием возврата из функции чтения
копий termios так, чтобы изменить нужные нам параметры терминала, данных становится значение ненулевого параметра. Наконец, если оба
и передаем драйверу терминала новое значение termios с помощью параметра имеют нулевые значения, функция чтения данных всегда
функции tcsetattr(3). После того, как работа с терминалом в нестан- будет возвращать управление немедленно. Если к моменту вызова
дартном режиме закончена, мы восстанавливаем исходное состояние функции чтения данных в потоке ввода были символы, буфер функ-
терминала с помощью сохраненной копии исходной структуры termios ции будет заполнен ими, иначе функция чтения данных вернет пустой
и функции tcsetattr(). Первым аргументом функции tcgetattr() должен буфер.
быть дескриптор файла, соответствующего терминалу. Вторым аргу- Вернемся к функции tcsetattr(). Во втором параметре этой функции
ментом является указатель на структуру termios, в которой функция может быть передан один или несколько нижеследующих флагов (для
возвращает текущие настройки терминала. Первым параметром функ- комбинации флагов используется оператор |).
ции tcsetattr() также служит дескриптор файла терминала. Второй TCSANOW – изменения параметров терминала вступают в силу
параметр используется для передачи флагов, определяющих, когда немедленно.
изменения параметров терминала должны вступить в силу. Третьим TCSADRAIN – изменения параметров терминала вступают в силу пос-
параметром tcsetattr() является указатель на структуру termios, содер- ле того, как все данные, записанные ранее в файл устройства, будут
жащую новые параметры. переданы самому устройству. Это значение обычно используется, если
Ключевой момент во всем этом – модификация полей структуры новые значения полей termios изменяют параметры вывода данных.
termios. Первые четыре поля структуры содержат комбинации флагов, TCSAFLUSH – изменения параметров терминала вступают в силу
определяющих параметры терминала. Пятое поле представляет собой после того, как все данные, записанные ранее в файл устройства, будут
массив значений. Индексам этого массива соответствуют специальные переданы самому устройству. Все данные, которые в этот момент были
константы, с помощью которых мы можем понять значение элемен- введены с клавиатуры, но еще не прочитаны программой, при этом
тов массива. Рассмотрим сначала поля termios, содержащие флаги. теряются.
Полное описание флагов (а их довольно много) можно найти на стра- TCSASOFT – этот флаг заставляет функцию игнорировать значения
нице man, посвященной termios. Я перечислю здесь только некоторые полей c_cflag, c_ispeed и c_ospeed структуры termios. Поля c_ispeed и
флаги, которые устанавливаются в поле c_lflag, поскольку они пред- c_ospeed управляют скоростью передачи входящих и исходящих дан-
ставляются мне наиболее интересными. Флаг ECHO управляет отобра- ных. Поскольку мы не рассматриваем подключение терминала с помо-
жением вводимых символов на экране монитора. Если он установлен, щью модема, эти поля нас не интересуют.
символы отображаются, в противном случае – нет. Флаг ECHOE делает Настало время освежить теорию практикой. Рассмотрим два при-
то же, что флаг ECHO, но только для управляющих символов, стира- мера, в которых изменение свойств терминала может оказаться полез-
ющих другие символы или строки (например, BackSpace). Поскольку ным. Первый из них – это консольная программа, предназначенная
неканонический режим не поддерживает редактирование строки, в для ввода пароля. Как вы знаете, во время ввода пароля такие про-
этом режиме флаг ECHOE игнорируется. Если установлен ICANON, граммы не отображают никаких символов. Теперь вы также догадыва-
терминал находится в каноническом режиме, в противном случае – в етесь, как они это делают – им достаточно передать системе структуру
неканоническом. Флаг IEXTEN переводит терминал в режим расширен- termois со сброшенным флагом ECHO. Программа passwdmode (файл
ной обработки вводимых символов. От того, установлен ли флаг ISIG, passwdmode.c) демонстрирует эту технику:
зависит, будут ли специальные комбинации клавиш, такие как Ctrl-C и #include <stdio.h>
Ctrl-Z, инициировать соответствующие им сигналы. #include <stdlib.h>
Из констант, соответствующих индексам массива c_cc[], наиболь- #include <signal.h>
ший интерес представляют две – VMIN и VTIME. Чтобы объяснить #include <termios.h>
важность этих параметров, рассмотрим подробнее работу терминала
в неканоническом режиме. В каноническом режиме сигналом завер- #define BUF_SIZE 15
шения ввода данных является нажатие клавиши Ввод. Любая функция,
считывающая данные с терминала, вернет управление вызвавшей ее int main (int argc, char ** argv)
программе только после того, как пользователь нажмет эту клавишу. {
При работе терминала в неканоническом режиме дело обстоит слож- struct termios oldsettings, newsettings;
нее. В этом режиме нет сигнала, который бы оповещал систему о том, char password[BUF_SIZE+1];
что ввод данных окончен и функция чтения данных должны вернуть int len;
управление. Поведение функций, читающих данные в этом режи- sigset_t newsigset, oldsigset;
ме, зависит от параметров termios.c_cc[VMIN] и termios.c_cc[VTIME]. sigemptyset(&newsigset);
Параметр termios.c_cc[VMIN] указывает минимальное число введен- sigaddset(&newsigset, SIGINT);
ных символов, после которого функция, считывающая данные, может sigaddset(&newsigset, SIGTSTP);
вернуть управление программе. Параметр termios.c_cc[VTIME] ука- sigprocmask(SIG_BLOCK, &newsigset, &oldsigset);
зывает максимальное время ожидания ввода (после ввода первого tcgetattr(fileno(stdin), &oldsettings);
символа), по прошествии которого функция чтения данных возвра- newsettings = oldsettings;
щает управление, независимо от того, сколько символов было про- newsettings.c_lflag &= ~ECHO;
читано. Если обоим этим параметрам присвоены значения, большие tcsetattr(fileno(stdin), TCSAFLUSH, &newsettings);
нуля, функция чтения данных вернет управление после того, как будет printf(“Enter password and press [Enter]\n”);
выполнено требование одного из параметров. Если функция получит len = read(fileno(stdin), password, BUF_SIZE);
количество символов, заданное в параметре termios.c_cc[VMIN] до password[len] = 0;
истечения срока времени, заданного в параметре termios.c_cc[VTIME], tcsetattr(fileno(stdin), TCSANOW, &oldsettings);
она вернет управление и передаст программе соответствующее коли- sigprocmask(SIG_SETMASK, &oldsigset, NULL);
чество символов. Если заданный промежуток времени истечет до того, printf(“Your password is %s\n”, password);
как функция считает указанное ей количество символов, функция вер- return EXIT_SUCCESS;
нет управление и передаст программе те символы, которые она успела }
считать. При этом, как следует из сказанного выше, функция чтения В начале программы мы блокируем сигналы SIGINT и SIGTSTP
данных вернет как минимум один символ. Если одному из параметров (зачем это нужно, я объясню ниже). Затем с помощью функции

76 Linux Format Март 2007


Программирование для Unix Учебник

tcgetattr() мы заполняем переменную oldsettings типа struct termios {


текущими значениями параметров терминала. Далее мы копируем struct termios oldsettings, newsettings;
содержимое oldsettings в переменную newsettings. Строка tcgetattr(fileno(stdin), &oldsettings);
newsettings.c_lflag &= ~ECHO; newsettings = oldsettings;
cбрасывает флаг ECHO в структуре newsettings. Остальные парамет- newsettings.c_lflag &= ~(ECHO|ICANON|ISIG);
ры терминала остаются без изменений. Далее, с помощью функции newsettings.c_cc[VMIN] = 0;
tcsetattr() мы устанавливаем новые параметры. Теперь терминал не newsettings.c_cc[VTIME] = 0;
будет выводить на экран символы, вводимые пользователем, и мы tcsetattr(fileno(stdin), TCSANOW, &newsettings);
можем вызвать функцию, считывающую значение пароля. После этого while(getchar() != ‘q’) {
программа восстанавливает прежнее состояние терминала. После это- sleep(1);
го можно разблокировать заблокированные сигналы. Мы распечатыва- printf(“press [q] to quit\n”);
ем строку с введенным «паролем» (не вздумайте вводить в программе }
какой-нибудь настоящий пароль, иначе злоумышленник, прячущийся tcsetattr(fileno(stdin), TCSANOW, &oldsettings);
за вашей спиной, обязательно его увидит). Зачем мы блокировали сиг- return EXIT_SUCCESS;
налы во время ввода пароля? Представьте себе, что в то время, когда }
программа ожидает ввода пароля, пользователь передумал и захотел Мы получаем структуру с текущими параметрами терминала, и
завершить ее с помощью Ctrl-C. Если программа завершится в этот сохраняем ее, как и в предыдущем случае. Затем мы сбрасываем сразу
момент, состояние терминала не будет восстановлено, и символы, три флага: ECHO, ICANON и ISIG. Что дает сброс флага ECHO, вы уже
вводимые пользователем, по-прежнему не будут отображаться. Это не знаете. Мы не хотим, чтобы введенный пользователем символ коман-
смертельно, но неудобно. Вот почему программы, ожидающие ввода ды отображался на экране. Сброс флага ICANON переводит монитор в
пароля, временно блокируют некоторые сигналы. неканонический режим, а сброс флага ISIG приводит к тому, что ввод
Рассмотрим теперь другой случай. Представьте себе, что программа специальных символов Ctrl-C и Ctrl-Z не порождает сигналов. Это еще
выполняет некую длительную операцию, и вы хотите, чтобы у пользо- один способ защитить программу от некорректного завершения в тот
вателя была возможность прервать ее, не прибегая к таким средствам, момент, когда параметры терминала изменены. Затем мы устанав-
как сигналы. Для этого программа может периодически проверять, ливаем значения параметров newsettings.c_cc[VMIN] и newsettings.
не нажал ли пользователь клавишу выхода, например q. Однако если c_cc[VTIME]. Обоим параметрам присваивается значение 0. В результа-
терминал находится в каноническом режиме, пользователю придется те функция getchar() всегда будет возвращать управление немедленно.
нажать еще и «Ввод», чтобы программа могла считать символ, и это Далее программа переходит в бесконечный цикл, из которого ее может
не говоря о том, что в каноническом режиме функции чтения данных вывести только появление символа q в потоке ввода. По выходе из цик-
по умолчанию блокируют выполнение программы до появления дан- ла мы восстанавливаем параметры терминала и завершаем программу.
ных. Нам нужно, чтобы функция ввода, например, getchar(), проверяла Необходимо подчеркнуть разницу между блокированием сигналов в
наличие в потоке ввода символа q, причем без всякого дополнительно- программе psswdmode и сбросом флага ISIG в программе pressq. В
го символа ввода, но возвращала управление немедленно, независимо первом случае обработка сигналов откладывается. Если во время вво-
от того, есть символ в потоке ввода или нет. Все это очень просто сде- да пароля пользователь нажмет Ctrl-C, программа получит соответству-
лать, переведя терминал в неканонический режим, что демонстрирует ющий сигнал после того, как пользователь нажмет ввод (и после того,
программа pressq (файл pressq.c) как программа вернет терминал в нормальный режим). Если же вы
#include <stdio.h> сбрасываете флаг ISIG, специальные сочетания клавиш не будут ини-
#include <stdlib.h> циировать сигналы и программа вообще их не получит.
#include <termios.h> Тема консольного ввода/вывода неисчерпаема, но мы не собираем-
ся на ней долго задерживаться. В следующей статье, последней в этой
int main (int argc, char ** argv) серии, мы рассмотрим интерфейс terminfo и библиотеку ncurses. LXF

Через месяц Финальная серия: мы изучим ncurses и terminfo!

Март 2007 Linux Format 77


Java
Учебник Enterprise
Серверные Edition Учимся
приложения писать
на Java
клиент-серверные приложения на Java

Телефонная книга:
ЧАСТЬ 2 Встречают по одежке – и Большой Босс не был сильно впечатлен
созданной нами в прошлый раз адресной книгой. Александр Бабаев
исправляет замеченные недочеты.

В
прошлый раз мы создали простейшую электронную записную они компилируются при обновлении исходного текста и обрабатыва-
книжку. Она работает в браузере и показывает несколько про- ются как таковые.
стых страничек, на которых можно просмотреть список контак- JSF (Java Server Faces). В некотором роде эта технология объединя-
тов, добавить новый контакт, удалить его или отредактировать. А сей- ет подходы, которые используются при создании «обычных» и «сете-
час давайте попробуем сделать все это более правильно. вых» программ. Интерфейс (как дизайн интерфейса, так и его логика)
программы описывается специальным образом, а после этого пишутся
Почему было плохо? JSP-странички, в которых указывается «тут вставить таблицу с именем
Наш Действительно, почему? Работает, и хорошо. Достаточно быстро и не таким-то». JSF обрабатывает эти спецвставки и «рисует» функциональ-
эксперт слишком сложно. Но вдруг захочется поменять дизайн страничек? А ные элементы интерфейса (обрабатывая события от них и так далее),
захочется через десять минут работы. Или после того, как страничку позволяя дизайнеру сосредоточиться на остальном.
Александр посмотрит начальник. Google Web Toolkit. Не могу не остановиться на этом средстве. При
Бабаев Чтобы сделать это, можно изменить код проекта, потом переком- его использовании на выходе получается полноценное AJAX-приложе-
Разработчик
открытой мультиблог-
пилировать его, остановить сервер (А? Кто-то работал? Извините...), ние (что это такое – тема отдельной статьи, пример – Google Mail), а на
системы jDnevnik – установить новый код и повторно запустить сервер. Метод, мягко гово- входе – все тот же Java-код. Решение интересное, не лишенное своих
победитель конкурсов ря, неудобный. А можно изменить сам проект так, чтобы выполнение достоинств и недостатков.
IBM WAS CE Contest таких пожеланий не требовало столь сложных действий. Второй путь Мы же в рамках данной статьи рассмотрим «средненькое» решение –
2006 и конкурса
зовется рефакторингом и гораздо более корректен. Если разделить Java Server Pages. В основном – из-за его стандартности, хотя для дан-
проектов
для разработчиков дизайн и логику работы приложения (бизнес-логику), то в дальней- ного конкретного случая можно выбрать какой-нибудь шаблонный дви-
на Java – шем можно будет, например, разделить и работу по их поддержанию. жок, например, тот же Velocity (http://velocity.apache.org).
Java конкурс 2005. Хороший программист не всегда создает хорошие пользовательские
интерфейсы, поэтому данный аспект тоже важен. Общая схема работы приложения
Поняв, что нужно отделить логику от дизайна, давайте подумаем,
Как сделать хорошо? каким образом это можно сделать. Предлагаю остановиться на следу-
Ну, вкратце уже понятно. Нужно вынести в отдельные файлы ту часть, ющей схеме (Рис. 1):
которая меняется часто (в нашем случае, это интерфейс) и как-то под-
ключить эти файлы из нашей программы. Плюс, желательно сделать
это так, чтобы формат файлов «дизайна» был стандартным, чтобы
каждый раз не переучиваться.
Решений для данной проблемы существует множество. Рассмотрим
самые распространенные:
Шаблоны. Одна из самых распространенных библиотек работы с
шаблонами – Velocity. При использовании шаблонных движков мож-
но добавлять в текст специальные вставки, которые говорят: «Тут
вставить значение переменной Name». Иногда можно делать более Рис. 1. Схема работы сервлета при разделении логики и дизайна.
сложные операции (вставка подшаблонов, вычисления, условные
вставки). Сервлет выдает данные, абсолютно не заботясь о том, как они будут
JSP (Java Server Pages). По времени появления, пожалуй, первая отображаться. Но выдает он их не в «сыром» виде, а в полностью обра-
технология для отделения дизайна от бизнес-логики. Но я ее поставил ботанном, готовом для отображения на экране (например, если нужно
второй, так как она сложнее, чем просто шаблонная библиотека. JSP полное имя человека, а в данных – его ФИО по отдельности, то сервлет
позволяет внедрить код на (по задумке) любом языке программиро- должен преобразовать второе в первое перед передачей в JSP).
вания внутрь специальным образом созданной странички. Впрочем, Возникает вопрос: как же передаются данные от сервлета в JSP?
обычно используется Java. Теоретически, можно написать серверное Через уже известный нам объект request. К нему «прикручен» специ-
приложение, используя исключительно JSP. Этот подход похож на альный ассоциативный массив «String – Object», который называется
PHP, с тем отличием, что JSP-страницы – это полноценные сервлеты, атрибутами и который живет, пока жив запрос. К нему имеет доступ и

78 Linux Format Март 2007


Серверные приложения на Java Учебник

переход на JSP
на DVD
Tomcat 6.0
Код примеров ста
тьи

сервлет, и JSP-страница, поэтому его можно (и это правильно) исполь- Листинг 2. Новый метод handle
зовать для передачи данных. private void handle(HttpServletRequest aRequest, HttpServletResponse
aResponse)
Переходим на Tomcat throws ServletException, IOException {
Но сначала нужно переписать наш сервлет «по-взрослому». Встроенный aRequest.setCharacterEncoding(“utf-8”);
сервер – это замечательно для кустарных проектов, но обычно контей-
нер сервлетов уже стоит, и подключаться следует к нему. String target = aRequest.getRequestURI().substring(
Мы будем использовать Tomcat 5.5. Это классический, можно aRequest.getContextPath().length());
даже сказать, стандартный открытый сервлет-контейнер. Для уста-
новки Tomcat достаточно просто скачать его с http://tomcat.apache.org if (target.equals(“/”)) {
(или взять с нашего DVD), распаковать и запустить bin/startup.sh (или _drawer.outputPage(“index.jsp”, aRequest, aResponse);
соответсвующий .bat). Tomcat работает с файлами специального типа } else if (“/add”.equals(target)) {
Web Archive (WAR). Обнаружив такой файл в определенном каталоге, handleAdd(aRequest, aResponse);
Tomcat разворачивает его и запускает содержащееся в нем приложе- } else if (“/view”.equals(target)) {
ние. Чтобы перезапустить или обновить программу, достаточно просто handleView(aRequest, aResponse);
заменить один WAR-файл другим. } else if (“/edit”.equals(target)) {
Предыдущий код не готов для работы с Tomcat, поэтому его нужно handleEdit(aRequest, aResponse);
немного переписать. Вот что будет сделано: } else if (“/remove”.equals(target)) {
AddressBook потеряет методы start и main и превратится в простое handleRemove(aRequest, aResponse);
хранилище записей. }
AddressBookHandler превратится в AddressBookServlet, и в него будет }
добавлено примерно следующее (Листинг 1): Для того, чтобы Tomcat «понял», что ему положили сервлет, и знал,
как его обрабатывать, нужно написать специальный файл, который
Листинг 1. Новый AddressBook называется «дескриптор». Несмотря на то, что слово страшное, это
private AddressBook _addressBook = null; просто XML-документ с описанием сервлета. Если перевести с языка
написания дескрипторов на русский, то получится примерно следую-
public void init(ServletConfig aServletConfig) throws ServletException { щая информация:
super.init(aServletConfig); • Наш сервлет называется «ABServlet» и запускается классом
_addressBook = new AddressBook(); AddressBookServlet. Теоретически можно назвать сервлет так же, как и
} класс, но мы не будем так делать, чтобы было меньше путаницы.
• Для всех URL, которые начинаются с «/», нужно вызывать сервлет,
protected void doGet(HttpServletRequest aRequest, HttpServletResponse который называется ABServlet.
aResponse) А вот как он выглядит (Листинг 3):
throws ServletException, IOException
handle(aRequest, aResponse); Листинг 3. Дескриптор для сервлета
} <?xml version=”1.0” encoding=”UTF-8”?>
<web-app version=”2.4”
protected void doPost(HttpServletRequest aRequest, HttpServletResponse xmlns=”http://java.sun.com/xml/ns/j2ee”
aResponse) xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
throws ServletException, IOException xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee
handle(aRequest, aResponse); http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd” >
}
<servlet>
Сам метод handle тоже слегка преобразуется (Листинг 2): <display-name>AddressBook</display-name>

Март 2007 Linux Format 79


Учебник Серверные приложения на Java

<servlet-name>Servlet</servlet-name> из «старого» метода handle. А дальше, кроме странных вставок


<servlet-class>AddressBookServlet</servlet-class> <%…%>, идет обычный HTML-код. И это хорошо! Это понятно! Теперь
<load-on-startup>0</load-on-startup> разберемся с непонятным.
</servlet> В JSP можно вставлять «инородный» для HTML код, который спе-
циальным образом интерпретируется сервером и может быть исполь-
<servlet-mapping> зован для вставки различных данных. Есть несколько типов таких
<servlet-name>Servlet</servlet-name> вставок.
<url-pattern>/</url-pattern> <%@…%> – обозначает специальную вставку, которая определяет
</servlet-mapping> параметры страницы, в нашем случае – ContentType. Можно задавать,
</web-app> например, язык, на котором написана страница. Он же используется
Дескриптор будет называться web.xml и храниться в специальном для секций import (см. view.jsp ниже).
каталоге. Где именно – обсудим, когда будем собирать сервлет в WAR. <%=…%> – это простой вывод переменной. Действие вставки <%=что-
Сделайте указанные изменения самостоятельно или возьмите гото- нибудь%> аналогично вызову request.getWriter().write(что-нибудь).
вый код с DVD. Все в порядке? Тогда движемся дальше. <%…%> – самый общий вариант вставки, внутри может быть любой
код. В нашем случае, на Java.
Новый метод index.jsp – простой файл, посмотрим на нечто более сложное.
Если присмотреться более внимательно к коду нового handle, можно Например, view.jsp (Листинг 6).
заметить, что там появился вызов метода outputPage. Раньше его, в
отличие от разных handle… не было. Это метод, который выбирает Листинг 6. view.jsp
JSP-файл и передает ему управление для вывода страничек. Выглядит <%@ page contentType=”text/html; charset=UTF-8” %>
метод следующим образом (Листинг 4): <%@ page import=”java.util.*” %>
<html>
Листинг 4. Метод outputPage <head><title>Адресная книга</title></head>
public void outputPage(String aJSPName, HttpServletRequest aRequest,
HttpServletResponse aResponse) throws IOException, ServletException <body><h1>Адресная книга, список контактов</h1>
{ <a href=”<%=request.getContextPath()%>”>На главную</a><br/>
RequestDispatcher dispatcher = aRequest.getRequestDispatcher(“/jsps/”
+ aJSPName); <span style=”color: green;”><%=request.getAttribute(“message”)%></
dispatcher.forward(aRequest, aResponse); span>
}
В этом методе мы берем нужный JSP-файл и говорим сервлет- <table border=”1”>
контейнеру: «Обработай, пожалуйста». Остальное берет на себя кон- <tr><td width=”100”>Имя</td><td width=”100”>Номер</td><td
тейнер. Он ищет JSP-файл, загружает его, компилирует (если это width=”100”>Комментарий</td><td> - </td></tr>
нужно), выполняет получившийся сервлет, а результат записывает в <% Map numbers = (Map) request.getAttribute(“numbers”);
aResponse. Map comments = (Map) request.getAttribute(“comments”);

JSP-страницы for (Object entry : numbers.entrySet()) {


Для начала создадим каталог, в котором будем собирать наше интер- String name = (String) ((Map.Entry) entry).getKey();
нет-приложение. Назвать можно как угодно, например, WebApp (Web String number = (String) numbers.get(name);
Application). В нем создадим специальный каталог WEB-INF, где дол- String comment = (String) comments.get(name); %>
жен находиться дескриптор web.xml, и каталог jsps, в котором будут <tr>
храниться JSP-странички. <td class=”name”><%=name%></td>
Создадим три JSP-файла: для индексной странички, для редак- <td class=”number”><%=number%></td>
тирования (или добавления) записей и для просмотра, и назовем их, <td class=”comment”><%=comment%></td>
соответственно, index.jsp, edit.jsp, view.jsp. Не забудьте – их нужно <td class=”name”>
сохранить в в WebApp/jsps. <a href=”<%=request.getContextPath()%>/remove?number=<%=number%
Сам JSP достаточно прост. Рассмотрим index.jsp (Листинг 5): >”>Удалить</a>
<a href=”<%=request.getContextPath()%>/edit?number=<%=number%>”>
Листинг 5. index.jsp Редактировать</a>
<%@ page contentType=”text/html; charset=UTF-8” %> </td>
<html> </tr>
<head> <% } %>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”/> </table>
<title>Адресная книга</title> </body>
</head> </html>
Как можно заметить, здесь есть и импорт (о чем я говорил чуть
<body><h1>Адресная книга</h1> выше), и вставка Java-кода. Данный файл отлично показывает, как,
<a href=”<%=request.getContextPath()%>/add”>Добавить запись</ например (не самый лучший способ, конечно), сделать вывод в
a><br/> цикле.
<a href=”<%=request.getContextPath()%>/view”>
Просмотреть записи</a><br/> А как это обрабатывается-то?
</body> Естественно, и методы handle… после такого изменения стали други-
</html> ми. Весь вывод HTML-кода исчез, осталась подготовка данных, и вызов
Первая строчка добавляет поле «Content-type» к HTTP-заголовку метода outputPage. Вот, например, метод handleEdit(…) (Листинг 7):
ответа. Это прямой аналог строки
aRequest.setContentType(“text/html; charset=utf-8”)

80 Linux Format Март 2007


Серверные приложения на Java Учебник

Листинг 7. Метод handleEdit, обработка редактирования Переходим к созданию манифеста. Он должен называться
записи MANIFEST.MF и располагаться в каталоге META-INF. К счастью, за этим
if (aRequest.getParameter(“number”) == null) { следит сам jar, поэтому нам достаточно просто сохранить где-то файл
_addressBook.removeContactByNumber(aRequest. и указать его jar’у как манифест. В нашем случае он предельно прост
getParameter(“number”)); и не содержит интересной информации, но в принципе здесь могут
aRequest.setAttribute(“message”, “Не определено, что располагаться всякие настройки для запуска вашего приложения. Вот
редактировать”); его текст (Листинг 8):
handleView(aRequest, aResponse);
} else if (aRequest.getParameter(“edited”) != null) { Листинг 8. Манифест для war-файла
_addressBook.editContact(aRequest.getParameter(“edited”), Manifest-Version: 1.0
aRequest.getParameter(“name”), Created-By: Hands of programmer
aRequest.getParameter(“number”), Теперь соберем все в war (Web Archive). Манифест для приведен-
aRequest.getParameter(“comment”)); ной ниже команды должен быть назван MANIFEST.MF и располагаться
aRequest.setAttribute(“message”, “Контакт \”” + рядом с каталогом build. Результирующий архив называется address.
aRequest.getParameter(“name”) + “\” отредактирован”); war и располагается там же, рядом с манифестом.
handleView(aRequest, aResponse); jar -cfm ../address.war ../MANIFEST.MF *
} else { А сейчас наступает самый волшебный момент! Возьмите address.
Contact contact = _addressBook.getContactByNumber(aRequest. war и положите его в каталог webapps Tomcat’а. Подождите несколько
getParameter(“number”)); секунд. Увидев новое приложение, Tomcat развернет его (появляется
aRequest.setAttribute(“action”, “edit”); каталог с именем вашего war’а) и подключит к системе. После этого
aRequest.setAttribute(“edit.name”, contact.getName()); можно просто зайти в браузер и набрать:
aRequest.setAttribute(“edit.number”, contact.getNumber()); http://localhost:8080/address/
aRequest.setAttribute(“edit.comment”, contact.getComment()); Вуаля, получите ваше приложение.
outputPage(“edit.jsp”, aRequest, aResponse);
} И что теперь?
Остальные методы меняются аналогично – их полный код можно А теперь можно менять JSP-файлы «на лету» в распакованном катало-
найти на диске. ге webapps/address/jsps. При этом будет автоматически происходить
несколько действий, в результате которых файлы подхватятся прило-
И как все это вставить в Tomcat? жением. Так меняется дизайн без перекомпиляции, без рестарта сер-
Теперь у нас есть: верного приложения, как это у нас было до сих пор.
Классы Contact, AddressBook, AddressBookServlet. Я считаю, что на данном этапе приложение «Адресная книга» рабо-
Файл web.xml. тает хорошо. Оно выполняет свои несложные функции и умеет изме-
Каталог jsps с файлами edit.jsp, index.jsp, view.jsp. няться «на лету» по запросу пользователя. Оно простое – и это чуть ли
Для того, чтобы Tomcat понял, что ему дали полноценное приложе- не самое главное. Но есть еще достаточно аспектов, о которых стоит
ние, нужно выполнить всего три шага: знать при разработке более сложных интернет-приложений. Мы рас-
Скомпилировать все, что компилируется, и создать правильную смотрим их в следующих статьях данной серии. LXF
иерархию файлов и каталогов, которая представлена на рис. 2.

Рис. 2. Структура файлов и каталогов, которую мы будем собирать в


war.

Создать специальный файл-описание архива («манифест»).


Заархивировать созданную структуру при помоци утилиты jar, входя-
щей в комплект JDK.
Скомпилируем файлы. Тут ничего нового не появилось, разве что
изменилась сама команда (обратите внимание на ключ -cp, задающий
библиотеки classpath):
cd ~/Programming/AddressBook/src
javac -encoding utf-8 -cp ~/bin/tomcat/common/lib/servlet-api.jar
-d ../build/WEB-INF/classes/ *.java

Через месяц Паттерн MVC как основа для построения Web-приложений.

Март 2007 Linux Format 81


История
Учебник PostgreSQL Изучаем самый мощный
PostgreSQL
из открытых серверов баз данных

Настройка
ЧАСТЬ 5 PostgreSQL в фундаменте «1С:Предприятия»? В свое время эта новость произвела
фурор в мире Linux, а сегодня Евгений Балдин покажет, что для этого было сделано,
и расскажет, как настроить PostgreSQL для выполнения этих или любых других задач.

Как и для всякой программы, работающей с большим объемом


данных, дисковая подсистема является для PostgreSQL определяющей.
Поэтому, если есть возможность, то лучше вложиться именно в нее. В
противоположность дисковой подсистеме процессор нагружается не
очень сильно. Поэтому для сервера достаточно, чтобы процессор прос-
то был, хотя лучше, чтобы он был не один. Если на покупку хорошего
SCSI-диска денег нет, то следует вложиться в память.
По поводу дисков можно сказать, что чем их больше – тем лучше.
По возможности, следует выделить отдельный диск для журнала тран-
закций (pg_xlog). Избыток дисков так же позволит собрать из них RAID.
Никто не отменяет резервирование, но дополнительная избыточность
для дисковой подсистемы, равно как и источники бесперебойного
питания, сэкономят массу сил и нервов.
Относительно недорогие системы снабжены дешевыми встроенными
RAID-контроллерами на 4 диска. Не следует использовать эти контролле-
ры, лучше настроить программный RAID. Не надо использовать RAID 51
для небольшого числа дисков. До 6 дисков включительно лучше офор-
мить как RAID 1+02. Избыточность во всем – это похоже на паранойю.
На сервер, где уже работает PostgreSQL, не следует «подселять»
другие базы данных или программы, осуществляющие интенсивный
обмен с дисковой памятью. А вот программы, которые вместо этого
интенсивно используют процессор, например, Apache, вполне ужива-
ются, если памяти достаточно.

– Между прочим, – сказал Роман громко, – уже в тече-


ние двух минут я пытаюсь его пассивизировать, и Конфигурационные файлы
совершенно безрезультатно.
А. и Б. Стругацкие «Понедельник начинается в субботу» Конфигурационных файлы – не единственный способ настройки сер-
вера БД. Умолчания можно изменить непосредственно при сборке
из исходников. Значения можно передавать непосредственно серве-
ру postmaster в командной строке, используя ключ -с. Также можно

Т
юнинг – это не операция: это образ жизни. Очевидно [по крайней определить переменную окружения PGOPTIONS, а значения некоторых
мере, автору, – прим. ред.], что когда необходимые характерис- переменных можно изменить прямо в процессе выполнения запросов.
тики можно улучшить несколькими способами, то всеми этими Но работать c конфигурационными файлами все же придется. По
способами их улучшать и надо. Опять же, следует помнить, что избы- умолчанию PostgreSQL настроен на минимальное потребление ресур-
точная и ранняя оптимизация – корень многих зол. Если система рабо- сов, и это не может не сказаться на скорости. То, что подходит для
тает и «не кашляет», то, может быть, не стоит ее «настраивать»? локальной записной книжки, не годится для боевого сервера.
Все настройки очень подробно описаны в документации. Для
любителей «выжимать из программы все» существует специальный
Об оборудовании список рассылки psql-performance: http://archives.postgresql.org/pgsql-
performance/. В документации на странице Power PostgreSQL http://
«Театр начинается с вешалки», а большая база данных начинается с www.powerpostgresql.com/Docs также можно найти некоторое количе-
выбора сервера. PostgreSQL умудряется работать почти при любой ство полезных подсказок.
конфигурации, но если вас интересует результат, то следует знать, на Для настройки PostgreSQL используются следующие файлы:
что обращать внимание. Понятно, что ограничения на оборудование
диктуются, в основном, объемом денежных ресурсов, но в имеющихся 1
Один диск в массиве выделяется под контрольные суммы
пределах всегда можно что-то подвигать. 2
зеркалирование (1) + объединение (0)

Месяц назад Интерфейсы PostgreSQL: но на сей раз не пользовательские, а программные.

82 Linux Format Март 2007


PostgreSQL Учебник

PostgreSQL
pg_hba.conf – политика доступа и идентификации пользователей, reject – отказ в доступе.
postgresql.conf – собственно, настройки сервера. ident – доступ по регистрационной записи клиента, часто применя-
ется для локальных соединений. См. RFC 1413.
pg_hba.conf md5 – авторизация по паролю, зашифрованному с помощью алго-
При использовании PostgreSQL в качестве «личной записной книжки» ритма md5.
зачастую не требуется открывать сетевой доступ к базе данных. По Если клиент использует для доступа библиотеку к PostgreSQL стар-
умолчанию PostgreSQL настроен так, что каждый локальный пользова- ше 7.2, то вместо метода md5 следует использовать метод crypt.
тель может подсоединиться к одноименной базе данных, при условии, Пароль при желании и значительной степени бесшабашности мож-
что таковая уже создана. но передавать открытым текстом с помощью метода password.
Но это не значит, что так бывает всегда. PostgreSQL предоставляет pam – авторизация с помощью Pluggable Authentication Modules.
свои механизмы для управления пользователями с помощью тройки Этот сервис предоставляется операционной системой.
команд CREATE USER, DROP USER и ALTER USER. В случае несовпаде- Подробнее о PAM написано здесь: http://www.kernel.
ния регистрационных имен в PostgreSQL и в системе или при работе org/pub/linux/libs/pam/.
с БД с других компьютеров необходимо «обговорить» правила доступа krb4 и krb5 – авторизация с использованием механизма Kerberos
к данным на сервере. версий 4 и 5, соответственно. Это индустриальный стандарт авториза-
Для настройки политики доступа к серверу волей-неволей придет- ции, и если вы собираетесь его использовать, то, наверное, представ-
ся заглянуть в файл pg_hba.conf3. Файл разбит на строки, каждая из ляете себе, что это такое.
которых регулирует правила получения доступа для конкретной маши- После имени метода следуют необязательные опции.
ны или для целой группы IP. Общий вид pg_hba.conf примерно таков:
# Разрешаем доступ через локальные unix-сокеты абсолютно postgresql.conf
#всем пользователям к базам данным, совпадающим по названию Настройки в postgresql.conf разбиты по группам и подробно задокумен-
#с регистрационными именами тированы прямо в файле. Здесь мы коснемся самых важных из них.
local all all ident sameuser
# Доверяем пользователю alex с указанного IP безгранично Настройка соединений и авторизация (Connections and
#в рамках базы данных photos Authentication)
host photos alex 130.255.204.48/32 trust Политика авторизации настраивается в pg_hba.conf. Здесь же собраны
# Требуем пароль от пользователя baldin при доступе с в основном технические параметры.
#компьютеров из сети 128.138.242.192/27 к базам данных Настройка соединений (connection settings).
#data и photos • listen_addresses После настройки pg_hba.conf можно и нужно смело
hostssl data,photos baldin 128.138.242.192/27 md5 устанавливать * – слушаем все интерфейсы, которые есть в наличии.
Как можно догадаться (или подсмотреть в комментариях к исход- По умолчанию, localhost-запросы принимаются только от локальных
ному pg_hba.conf), первое поле определяет тип записи: пользователей, в том числе и через loopback-интерфейс (127.0.0.1).
local – запись определяет политику локального доступа через
UNIX-сокеты.
host – запись определяет политику для сетевого TCP/IP-соединения с Настройки PostgreSQL для 1C
использованием SSL и без него. Для обеспечения сетевого доступа необ-
ходимо также правильно настроить listen_addresses в postgresql.conf. По адресу http://v8.1c.ru/overview/postgres_patches_notes.htm доступны
патчи. Это – отличие сервера, поставляемого с «1С:Предприятием 8» от
hostssl – определяет политику для сетевого соединения с обяза-
оригинального PostgreSQL. Патч postgresql-1c-8.1.5.patch несет в себе
тельным использованием SSL. изменения в исходном файле настройки. Перечислим их:
hostnossl – антипод hostssl. Допускаются сетевые соединения:
Второе поле представляет из себя имя базы данных, для которой -#listen_addresses = ‘localhost’
определяется политика. Имя all означает «все базы», а sameuser – «база, +listen_addresses = ‘*’
совпадающая с именем пользователя». Можно перечислить несколько немного увеличен размер разделяемой памяти: с 8 МБ до 28 МБ:
-#shared_buffers = 1000
имен через запятую. Кроме того, в качестве имени БД можно исполь-
+shared_buffers = 3500
зовать имя файла со списком баз, разделенным запятыми или пробе-
оценка размера кэша системы изменилась с 8 МБ до 80 МБ:
лами – такое имя должно начинаться с префикса @. -#effective_cache_size = 1000
Третье поле – имя пользователя. Здесь тоже поддерживаются спис- +effective_cache_size = 10000
ки, а имя all обозначает для всех пользователей. Доступ можно открыть Включен процесс автоматической сборки мусора:
для группы пользователей (role) – для этого перед именем группы сле- -#stats_row_level = off
дует поставить знак «+». +stats_row_level = on
-#autovacuum = off
Следующие ноль (в случае записи local), одно (нотация CIDR4) или
+autovacuum = on
два поля (адрес и сетевая маска) отведены под сетевой адрес компью- Максимальное среднее число блокировок увеличено более чем в два
тера или подсети, для которых настраивается политика доступа. раза:
Предпоследнее обязательное поле содержит метод авторизации: -#max_locks_per_transaction = 64
trust – полностью доверяем этому клиенту. +max_locks_per_transaction = 150
Мне кажется, что судя по этим изменениям, есть куда оптимизировать и
3
hba – host-based authentication. сам продукт, и настройки к PostgreSQL.
4
Classless Inter-Domain Routing.

Март 2007 Linux Format 83


Учебник PostgreSQL

• port Номер порта, который слушает сервер в ожидании соединений. • max_fsm_pages Сборщик мусора должен знать, где этот самый мусор
По умолчанию – 5432. находится. Число страниц, отведенных для этих целей должно быть
• max_connections Число клиентов, которые могут подсоединяться к больше, чем число записей, удаленных или измененных между сбор-
базе данных одновременно, не может быть бесконечным – средний ками мусора. Если страниц достаточно, выполнение жестких оптимизи-
однопроцессорный компьютер может обслуживать не более 100-200 рующих операций, таких, как VACUUM FULL или REINDEX, никогда и не
соединений. Данная опция и задает их максимальное число. Если коли- понадобится. Так как объем требуемой для этого памяти не очень велик
чество клиентов жестко ограничено, то имеет смысл уменьшить этот (по 6 байт на страницу), то жадничать не стоит. Проще всего узнать необ-
параметр до минимально возможного значения. ходимое число max_fsm_pages, запустив VACUUM VERBOSE ANALYZE.
• superuser_reserved_connections Число соединений, которые зарезер- • max_fsm_relations Число таблиц, для которых создаются карты неис-
вированы для суперпользователя, чтобы он всегда мог зайти, разо- пользованного пространства. По умолчанию – 1000. В случае большего
браться, в чем дело, а затем принять меры. Не стоит совсем отказы- числа используемых таблиц это значение можно и нужно увеличить,
ваться от зарезервированных соединений, и даже одного такого соеди- тем более что на каждую таблицу требуется всего по 7 байт.
нения может оказаться недостаточно. Оставьте минимум 2. Системные ресурсы (kernel resource usage).
Безопасность и авторизация (security and authentication). • preload_libraries Если для выполнения запроса требуется загрузить
• authentication_timeout Время ожидания для прохождения авторизации какую-либо разделяемую библиотеку, то действует правило: «загружа-
в секундах. По умолчанию – 1 минута. Не позволяет клиенту «зависнуть» ем при первом использовании», что замедляет исполнение самого пер-
и заблокировать ресурс соединения на очень долгое время. вого запроса. Этого можно избежать, загрузив все необходимые биб-
• ssl Разрешает доступ через SSL. Для работы через SSL необходимо лиотеки при старте сервера («память в обмен на скорость»). Хороший
создать публичный ключ и сертификат. Это требует некоторых усилий, кандидат на подгрузку – модуль интерпретатора процедурного языка,
зато позволяет немного успокоиться по поводу безопасности сетевых используемого в запросах.
соединений. Оценка стоимости сборки мусора (cost-based vacuum delay).
Обычно нет необходимости заглядывать в этот раздел, так как сборка
Управление ресурсами (Resource Consumption) мусора (VACUUM) и анализ (ANALYZE) выполняются достаточно быстро.
Правильная оценка имеющихся ресурсов – путь к эффективному пла- Запись в фоне (background writer).
нированию. А оно позволяет добиваться поставленной цели, не сильно Начиная с PostgreSQL 8.0, вместе с основным сервером также стар-
увеличивая энтропию окружающей среды. Эти очевидные истины реа- тует процесс для записи данных в фоне. При выполнении запроса нет
лизованы в настройках PostgreSQL следующим образом: необходимости ждать самого акта записи, так как это гарантированно
Память (memory). сделает background writer.
• shared_buffers Объем совместно используемой памяти, выделяемой
PostgreSQL для кэширования данных. Определяется числом страниц Журнал транзакций (Write Ahead Log)
(shared_buffers) по 8 КБ каждая. Естественно, данные умеет кэширо- Наличие журнала транзакций или WAL (write ahead log) позволяет уве-
вать не только PostgreSQL, но и операционная система, поэтому нет личить скорость выполнения операций, требующих изменения данных,
необходимости отводить под кэш всю наличную оперативную память. поскольку информация об изменениях заносится в журнал последова-
Оптимальное число shared_buffers зависит от многих факторов, поэто- тельно, а модификацию таблиц можно отложить до «лучших времен» –
му проще принять следующие ориентиры: своеобразный кэш, только на диске. Если же база данных используется
* Обычный настольный ПК с 512 МБ RAM и небольшой базой дан- в основном для чтения, то в журнале транзакций особой необходимос-
ных: 8–16 МБ или 1000–2000 страниц. ти нет, но это не повод от него отказываться.
* Средний сервер 1 Гб RAM и БД около 10 ГБ: 80–160 МБ или 10000– Настройки (settings).
20000 страниц. • fsync По умолчанию эта опция включена (true). В этом случае
* Многопроцессорный сервер с 8 Гб RAM и БД свыше 100 ГБ, PostgreSQL пытается записать данные на диск физически. Это не такая
обслуживающий несколько сотен активных соединений одновремен- уж и простая операция, так как кэши существуют не только в системе, но
но – 400 МБ или 50000 страниц. и в контроллерах и в дисках. Вполне можно представить себе ситуацию,
• work_mem Каждому запросу можно выделить личный участок памя- когда слишком умный диск для увеличения производительности в тестах
ти для сортировки, объединения и других подобных операций. При рапортует о том, что данные записаны, а при перебое с питанием выясня-
превышении этого объема сервер начинает использовать временные ется, что это не так. Сбои самого сервера не приводят к порче данных, но
файлы на диске, что может существенно замедлить скорость обра- сервер живет в окружении далеко не идеальной операционной системы,
ботки запросов. Предел для work_mem можно вычислить, разделив которая, в свою очередь, управляет далеко не идеальными физически-
объем доступной памяти (физическая память минус объем, занятый ми устройствами. Вот почему так важно иметь проверенную аппаратуру,
другими программами и буферами shared_buffers) на максимальное источники бесперебойного питания и резервировать данные.
число одновременно используемых активных соединений. Если вы доверяете своему ПК, то эту опцию можно выключить, сме-
При необходимости, например, для выполнения очень объемных опе- няв немного безопасности на скорость. Более правильным решением
раций, допустимый лимит можно изменять прямо во время выполнения является перенос журнального файла на отдельный быстрый диск.
запроса, поэтому нет нужды изначально задавать теоретический предел. Контрольные точки (checkpoints).
• maintenance_work_mem Эта память используется для выполнения По свершению каких-то определенных условий или истечению кон-
операций по сбору статистики (ANALYZE), сборке мусора (VACUUM), трольного времени сервер гарантированно переносит данные, запи-
созданию индексов (CREATE INDEX) и добавлению внешних ключей. санные в WAL, непосредственно в таблицы (даже если он очень сильно
Размер выделяемой под эти операции памяти должен быть сравним занят обработкой других запросов).
с физическим размером самого большого индекса на диске. Как и в • checkpoint_segments Объем кэша на диске. Физический объем места
случае work_mem, эта переменная может быть установлена прямо во на диске, требуемый под кэш, вычисляется по формуле (checkpoint_
время выполнения запроса. segments*2+1)*16 МБ. Следует выделить столько, сколько не жалко,
• max_prepared_transactions Определяет максимальное число подго- осознавая, что 32 сегмента займет на диске свыше 1 ГБ.
товленных транзакций (команда PREPARE TRANSACTION). Если эта • checkpoint_timeout Время, через которое WAL очищается насильно.
сущность нигде не используется, то переменную можно занулить. По умолчанию 300 секунд.
Карта неиспользованного пространства (free space map). • checkpoint_warning Если кэш на диске заполняется быстрее, чем про-
Записи при удалении не уничтожаются физически, а только поме- ходит checkpoint_warning секунд, в журнальном файле появляется пре-
чаются как удаленные. На этом основана работа сборщика мусора. дупреждение. Это намек на то, что дисковый кэш следует увеличить.

84 Linux Format Март 2007


Архивация (archiving). отсылаемых клиенту.
• archive_command Для организации непрерывного резервного копи- • log_min_error_statement Контролирует уровень подробности записей,
рования (ура настоящим параноикам!) журнал необходимо копировать создаваемых в результате выполнения SQL-запросов.
куда-то еще. Здесь указывается команда, которая будет использовать- Что именно пишем в журнал (what to log).
ся системой для копирования данных. Подробности следует искать в В этом разделе настроек перечислены различные возможные
документации в разделе Point in Time Recover. источники записей для журнала. Можно записывать информацию о
создаваемых соединениях (log_connections), о выполняемых запросах
Планирование запросов (Query Planning) (log_statement), о времени, уходящем на их выполнение (log_duration)
Здесь можно повлиять на логику действия планировщика. Возможно, и т.п. Параметр log_line_prefix позволяет настроить идентификацию
конкретно для вашей системы значения по умолчанию не оптимальны, каждой записи по пользователю, IP, базе данных и так далее.
но менять их стоит только после серии тестов для выявления более
подходящей конфигурации под конкретную платформу и конкрет- Сбор статистики (Run-Time Statistics)
ные запросы. В большинстве случаев углубляться в тонкости настро- Есть ложь, гнусная ложь и статистика. База данных врать не научена,
ек из этого раздела имеет смысл только в случае очень изощренных поэтому остается только статистика. Этот раздел настроек отвечает за
запросов. ее сбор. Пока нет необходимости в мониторинге активности базы дан-
Методология планировщика (planner method configuration). ных, нет необходимости здесь что-то править.
В этом разделе перечислены алгоритмы, которые можно исполь- Для того, чтобы работала автоматическая сборка мусора, должны
зовать для извлечения данных. В целях тестирования какие-то из них быть включены опции stats_start_collector и stats_row_level.
можно отключить.
Оценочные константы (planner cost constants). Автоматическая сборка мусора (Automatic Vacuuming)
• effective_cache_size В своих планах PostgreSQL опирается на кэширо- Ну мусор, ну и пусть. Места много – зачем напрягаться, да еще авто-
вание файлов, осуществляемое операционной системой. Этот параметр матически? В этом есть какая-то логика, но кроме сборки мусора
соответствует максимальному размеру объекта, который может помес- (VACUUM) производится еще и анализ (ANALYZE). Периодическое
титься в системный кэш. Его установка не приводит к увеличению выполнение команды ANALYZE необходимо для нормального функ-
выделяемой памяти. Это значение используется только для оценки. ционирования планировщика. Собранная с помощью этой команды
effective_cache_size можно установить в 1/3 от объема имеющейся статистика позволяет значительно ускорить выполнение SQL-запросов.
в наличии оперативной памяти, если вся она отдана в распоряжение Иными словами, сборку мусора делать все равно придется: либо авто-
PostgreSQL. матически, либо вручную.
Процесс обычной сборки мусора в PostgreSQL (VACUUM без при-
Сообщения об ошибках и событиях (Error Reporting and ставки FULL) не блокирует таблицы и может выполняться в фоне, не
Logging) мешая запросам. Начиная с PostgreSQL 8.1, процесс автоматичес-
Оптимизация возможна только в случае обратной связи. Сервер кой сборки мусора выделяется в отдельный процесс. Данная группа
PostgreSQL может многое рассказать о себе. Этот раздел настроек настроек и контролирует работу этого процесса.
посвящен тому, как правильно его об этом попросить. • autovacuum Если вы лучше, чем PostgreSQL знаете, когда следует про-
Местоположение журнального файла (where to log). изводить сборку мусора, то автоматику можно выключить, хотя лучше
• log_destination Здесь можно выбрать способ записи в журнальный ее просто правильно настроить. С другой стороны, сборка мусора оття-
файл: stderr или syslog. Метод stderr хорош для тестирования, в режи- гивает на себя ресурсы системы, и если это недопустимо, то ее можно
ме штатной эксплуатации следует использовать syslog. отложить на некоторое время.
При выборе stderr придется также указать директорию для файла При настройке службы автоматической сборки мусора и анали-
журнала (log_directory), его имя (log_filename) и параметры ротации за следует понимать, что один из зарезервированных с помощью
(log_rotation_age, log_rotation_size, log_truncate_on_rotation). superuser_reserved_connections слотов может оказаться в нужный
Метод syslog подразумевает настройку через syslog_facility и момент занят.
syslog_iden – идентификационный префикс для сообщений, получае- • autovacuum_naptime Время в секундах, через которое проверяется
мых от PostgreSQL. необходимость сборки мусора. По умолчанию это происходит раз в
По какому случаю создаем запись (when to log). минуту.
Как правило, нет необходимости записывать в дневник информа- • autovacuum_vacuum_threshold Порог на число удаленных и изменен-
цию о каждом чихе, но при серьезном разбирательстве данные о чис- ных записей в любой таблице, по превышению которого происходит
ле чихов в секунду и их классификация могут подтолкнуть в нужном сборка мусора (VACUUM). По умолчанию – 1000, и его вполне можно
направлении. уменьшить.
Каждому событию можно присвоить какой-то определенный уро- • autovacuum_analyze_threshold Порог на число вставленных, удален-
вень. Например, уровень PANIC означает, что плохо стало всем, а ных и измененных записей в любой таблице, по превышению которого
уровень WARNING сообщает просто о подозрительных, но вполне запускается процесс анализа (ANALYZE). По умолчанию – 500. Никто не
законных событиях. В порядке возрастания подробности уровни име- запрещает сделать его поменьше.
ют примерно следующую классификацию: PANIC, FATAL, LOG, ERROR, • autovacuum_vacuum_scale_factor Процент измененных и удаленных
WARNING, NOTICE, INFO, DEBUG[1-5]. Уровень можно установить в про- записей по отношению к общему числу строк в таблице, по превыше-
цессе выполнения запроса. нию которого запускается сборка мусора. По умолчанию – 0.4.
Следует осознавать, что журнал необходим при разбирательствах, • autovacuum_analyze_scale_factor То же, что и предыдущая перемен-
но его активное использование ведет к уменьшению производитель- ная, но по отношению к анализу. Значение по умолчанию равно 0.2.
ности. Обычно это уменьшение находится в пределах 5% при усло-
вии, что журнальный файл и журнал транзакций находятся на разных Настройки для пользователя по умолчанию (Client
дисках. Connection Defaults)
• log_min_messages Характеризует уровень подробности записей в Настройки из этой группы задают некоторые значения по умолчанию
журнальном файле. для подсоединившегося к базе данных клиента и не влияют на произ-
• log_error_verbosity Характеризует степень подробности записей. водительность самого сервера. Исключением является разве что пере-
Различаются три степени: TERSE, DEFAULT и VERBOSE. менная statement_timeout, которая выставляет ограничение времени на
• client_min_messages Характеризует уровень подробности сообщений, выполнение запроса (в миллисекундах), да и то – не активированная

Март 2007 Linux Format 85


Учебник PostgreSQL

PostgreSQL в лицах: Алексей Харитонов


Алексей Харитонов (АлХ): Нам требовалась DBMS, работающая под ОС
Linux, лицензия на которую предусматривала бы возможность ее свободного (без
отчислений) распространения и самостоятельной модификации. Такой вариант
мы считаем полезным для определенного сегмента рынка. Из DBMS для Linux,
лицензируемых на таких условиях, мы оценили PostgreSQL как наиболее качест-
на DVD венную и эффективную.
ЕМБ: Какие изменения были внесены в базовый код PostgreSQL? Будут ли эти
Полный текст изменения интегрированы в основное дерево проекта PostgreSQL?
интервью с АлХ: Основная причина, по которой появилась необходимость модифицировать
комментариям PostgreSQL 8.1 – это то, что оригинальная версия не поддерживает сравнение
и
Олега Бартунов
а строк, нечувствительное к регистру символов. Внесенные в PostgreSQL измене-
и Федора Сига
ева ния позволили эффективно (быстро) работать с русскими символами в кодиров-
ке Unicode. Кроме того, конфигурационные файлы, которые получаются после
установки PostgreSQL 8.1, модифицированного для работы с «1С:Предприятием»,
Визитка LXF: несколько отличаются от оригинальных. Это также сделано для лучшего согласо-
Руководитель отдела вания PostgreSQL 8.1 с «1С:Предприятием» 8.1.
продвижения
Мы взаимодействуем с разработчиками PostgreSQL. Дополнительные моду-
экономических
ли расширения и необходимые изменения к БД были подготовлены членами
программ фирмы «1С»
команды разработчиков PostgreSQL Олегом Бартуновым и Федором Сигаевым.
Включение этих изменений в основную ветку будет еще обсуждаться.

Н
екоторое время назад фирма «1С» объявила о выходе версии 8.1 плат- ЕМБ: Что с точки зрения «1C» нужно добавить в PostgreSQL, чтобы улучшить его
формы «1С:Предприятие», серверная часть которой теперь работает под функциональность?
управлением Linux, а в качестве хранилища данных может использовать- АлХ: Критически важные для нас исправления мы внесли в патч, часть этих
ся и PostgreSQL (модифицированная версия). исправлений уже реализована в PostgreSQL 8.2. Прежде всего мы рекомендо-
Можно долго и эмоционально говорить о продуктах фирмы «1С», но они вали бы внести в основной проект все сделанные нами изменения, поскольку
реальны, и реальность эта повседневна. А то, что эта реальность стала использо- они необходимы для работы различных систем (не только «1С:Предприятия») с
вать продукты с открытым кодом – это явный плюс. Для выяснения подробностей русским языком. Есть и другие пожелания – пока мы обсуждаем их с разработ-
мы связались с представителем фирмы Алексеем Харитоновым через стандарт- чиками PostgreSQL.
ный e-mail: 1c@1c.ru. ЕМБ: Есть ли в планах «1С» сотрудничество с сообществом Open Source, ну, или,
На прилагаемом диске вы можете найти полный текст интервью, проком- хотя бы, использование других открытых продуктов для целей бизнеса?
ментированный Федором Сигаевым (LXF86) и Олегом Бартуновым (LXF85) – АлХ: Примеры использования нами открытых продуктов не ограничиваются
отечественными разработчиками, внесшими значительный вклад в развитие PostgreSQL – так, в «1С:Предприятии 8.1» расширенная поддержка XML реализо-
PostgreSQL. вана на основе библиотек Apache Xerces и Apache Xalan. Для интернационализа-
Евгений Балдин (ЕМБ): Почему вы выбрали именно PostgreSQL? Конечно, лет ции используется библиотека ICU.
пять назад особых альтернатив среди свободных продуктов не было. Но сейчас В качестве одного из возможных направлений бизнес-сотрудничества мы сей-
подросла в своих возможностях MySQL, Firebird восстал из пепла Interbase, да и час рассматриваем варианты лицензирования Linux-версии сервера приложений
смысла зацикливаться на открытых реализациях для 1С особого нет. Или есть? «1С:Предприятия 8.1» для ОЕМ-поставки с дистрибутивами Linux.

по умолчанию. Но если хочется настроить локаль (хотя это личное дело max_locks_per_transaction * (max_connections + max_prepared_
клиента) или порядок выбора объектов, относящихся к различным про- transactions)
странствам имен, то здесь можно что-то поправить. В документации сказано, что 64 (число стоящее по умолчанию) –
это исторически проверенный предел, и чтобы превзойти его, требуют-
Управление блокировками (Lock Management) ся определенные усилия.
Очевидно, что блокировок следует избегать всячески, причем делать
это надо начинать на этапе проектирования базы данных. К сожалению,
реальная жизнь отличается от планов. О том, что думать тоже надо
• deadlock_timeout Взаимные блокировки (deadlock) – это чрезвычайно
уродливое явление, при котором вошедшие в клинч процессы ожида- Можно идеально настроить сервер, регулярно проводить сборку мусо-
ют освобождения ресурсов, которые сами же и захватили. PostgreSQL ра, можно закупить самое дорогое оборудование и поставить рядом с
умеет разрешать эту проблему путем насильного прерывания одного ним дизельный генератор. Но если таблицы и отношения между ними
из процессов. Проверка на deadlock – это довольно длительная про- создавались без плана, а запросы задаются криво, то проблемы гаран-
цедура, поэтому, прежде чем начать такую проверку, сервер выжидает тированно будут.
указанное время. По умолчанию – 1000 миллисекунд. Для загруженных Выполнение запросов следует проверять с помощью команды
серверов имеет смысл увеличить это значение. EXPLAIN ANALYZE, которая по полочкам разложит, как ищется, сор-
• max_locks_per_transaction Вопреки своему названию, это не жесткий тируется, объединяется и группируется информация, какие для этого
лимит на число блокировок, осуществляемых в пределах транзакций. использовались алгоритмы, и какие индексы были задействованы. Для
Этот параметр входит в формулу, устанавливающую предел на число любителей картинок pgAdmin III имеет графический интерфейс к этой
одновременно существующих блокировок, то есть это скорее макси- команде. Ни в коем случае нельзя пренебрегать индексами и по воз-
мальное среднее: можности следует избегать блокировок. LXF

Через месяц Полнотекстовый поиск и другие крупные дополнительные модули PostgreSQL.

86 Linux Format Март 2007


Компьютерные
Учебник LaTeX TeXнологии Учимся
использовать культовую систему вёрстки

Путеводитель по
ЧАСТЬ 7 Подобно Золушке, ставшей принцессой, документ LaTeX может
несколько раз сменить свой класс за время существования. Многообразие
классов LaTeX способно смутить любого – но Евгений Балдин предлагает их
полную классификацию.
Классы у людей определяются выбором оружия… левых файлов. В классе задаётся геометрия страницы и определя-
Википедия. Из описания игры Tremulous. ются команды секционирования. Сам по себе класс может быть как
просто небольшой модификацией уже имеющегося, так и принципи-
ально новой реализацией представления печатного или электронного
TeXнического слова. В качестве примера последнего можно привести

К
ласс документа – это первое, что требуется указать при набо- молодой (2007 год) пока пакет papertex, который позволяет применять
ре. В то же время первое вовсе не значит важное. С заключи- LaTeX в деле вёрстки газет1, то есть для того, для чего LaTeX в проекте
тельным выбором класса почти всегда можно повременить до вовсе не предназначался. Сам пакет можно найти на любом CTAN-архи-
окончания основного набора. С другой стороны, выбирать всё равно ве в директории {CTAN}/macros/LaTeX/contrib/papertex/.
когда-нибудь придётся, так что нелишне знать, что может нам пред-
ложить LaTeX.
Классовая база
(Рис. 1) Класс
Зачем нужны эти классы? Исторически сложилось так, что LaTeX начался с 6 классов: article (ста-
тья), book (книга), report (отчёт), proc (доклад), letter (письмо) и slides
papertex — пример от
Класс документа выбирается с помощью команды documentclass. Её (слайды).
автора класса
Ignacio Llopis. нужно и можно выполнить ровно один раз в самом начале документа: По идее, статьи следовало набирать в article. В этом классе опреде-
\documentclass[a4paper,12pt]{article} лены команды секционирования вплоть до section (раздел). Одним из
В качестве обяза- желательных элементов оформления является предисловие (окруже-
тельного аргумен- ние abstract). В классе book присутствует расширенный набор команд
та указывается имя секционирования, в который добавлена команда chapter (глава). Также
класса, которому в классе book присутствует базовый набор команд для оформления
через запятую пере- титульного листа, предисловия и оглавления. Класс для создания отчё-
даются необяза- та report является упрощённой версией класса book. Отчёты – те же
тельные параметры. книги, только читают их по необходимости, а не по желанию. Класс
Класс определяется в proc, предназначенный для создания тезисов докладов, в свою оче-
файле с расширени- редь является модификацией класса article, причём основное отличие
ем .cls. В дистрибути- состоит в обязательной двухколоночной печати. Для написания писем
ве LaTeX TeX Live 2005 был создан класс letter. Набор команд в этом классе существенно
присутствует 175 отличается от уже перечисленных, в частности, для писем нет нужды
уникальных файлов в командах секционирования. Класс slides – простой и быстрый спо-
с подобным расши- соб сделать презентацию. С помощью этого класса не удастся создать
рением. Естественно, пёстрого фона и головокружительных эффектов смены слайдов, зато
это далеко не все он позволяет сосредоточиться на основном – на тексте.
существующие на Особняком от этих классов стоит класс minimal, который является
белом свете классы, «болванкой» для создания и тестирования новых классов и идей. В
тем более, что ник- классе minimal не определено никаких специальных команд – минимум
то не мешает вам есть минимум. В качестве побочного эффекта документ, выбирающий
создать свой личный этот класс, транслируется LaTeX значительно быстрее.
класс. Но для нача- С этих классов всё начиналось, но на них ничего не закончилось.
ла лучше все же вос- Следует понимать, что базовые классы далеко не так хороши, как
пользоваться одним хотелось бы. После трансляции текста сразу возникает желание взять
из имеющихся. в руки «электронный надфиль» и пройтись по настройкам класса. Это
Класс определяет цена за то, что перечисленные классы являются базовыми. На них ссы-
вид и структуру доку- лается и их модифицирует множество других классов и пакетов, поэто-
мента. Класс – это му их развитие было заморожено. Для начального набора сгодится и
база, которую можно
править с помощью 1
На текущий момент этот класс не годится для вёрстки чего-нибудь более серьёзного, чем
школьная газета, но ведь надо начинать с простого.
подключаемых сти-

Месяц назад Мы овладели искусством вёрстки в LaTeX – или,

88 Linux Format Март 2007


LaTeX Учебник

классам LaTeX
это, но для конечной вёрстки лучше подобрать что-то более подходя- Script bundle» (scrguien.pdf) позволяет подстроить все необходимые
щее, или придётся серьёзно модифицировать значения по умолчанию. параметры.
Часто набор необязательных параметров для стандартных классах
используется и в других классах, например, в целях совместимости. NCC
Некоторые из полезных опций перечислены ниже: Ещё один вариант замены стандартных классов – это использование
10pt|11pt|12pt – установка базового размера шрифта. Обычно этих пакета NCC. Очень подробно об этом пакете написано в замечательной
трёх значений хватает. книге от создателя NCC Александра И. Роженко: «Искусство верстки4 в
a4paper – установка размера листа бумаги. Следует использовать LaTeX’е», 2005 (ISBN 5-901548-25-6).
всегда, так как по умолчанию LaTeX использует размер листа letter. Для использования следует загрузить класс ncc и передать ему
draft – режим черновой печати для «отлавливания» проблем вёрс- желаемый стиль оформления в качестве параметра: article (статья –
тки. В этом режиме не внедряются картинки (вместо них вставляются используется по умолчанию), preprint (препринт), book (монография)
прямоугольники нужного размера) и отмечаются строчки, где алгоритм или report (отчёт). Дальнейшие подробности об использовании этого
разбиения абзаца на строки даёт осечку. класса можно почерпнуть в краткой инструкции к пакету: nccLaTeX.pdf.
oneside|twoside – форматирование документа для односторонней и
двухсторонней печати, соответственно. Поддерживаем стандарты
twocolumn – печать в две колонки. Стандарт подразумевает наличие подробного описания, которое и
является его сущностью. То, что написано на бумаге в виде набора
непротиворечивых правил, может быть переведено на язык машины.
Классификация Далее можно забыть про эти правила, так как помнить все нюансы –
работа для машины5 (Рис. 2).
Сразу предупрежу: число классов постоянно растёт, поэтому не сле- Константин Кориков создал и активно поддерживает пакет eskdx,
дует думать, что все имеющиеся варианты исчерпываются классами, который представляет из себя набор классов и стилей, предназна-
перечисленными ниже. ченный для вёрстки документации в соответствии с требованиями
«Единой системы конструкторской документации». Основу коллек-
Модификации и улучшения базы ции составляют три класса: eskdtext (для текстовой документации),
Стандартные классы не нравятся всем, и всякий старается их улучшить. eskdbtab (для чертежей и схем) и eskdgraph (для документов, разби-
Кто-то убирает какой-то конкретный недостаток, как это сделано в тых на графы). Внятная документация на русском (eskdx.pdf) приятно
наборе классов extsizes (extarticle, extbook, extletter, extproc, extreport), дополняет картину. Пакет можно найти на CTAN в директории {CTAN}/
которые отличаются от стандартных только возможностью указать macros/LaTeX/contrib/eskdx/, а его домашняя страничка расположена
базовый размер шрифта, отличный от обычного 10-12pt3. Есть наборы по адресу: http://lostclus.linux.kiev.ua/eskdx/.
классов, которые делались с какой-то определённой целью. Примером eskdx – относительно молодой пакет. Ранее аналогичная попыт-
такого подхода являются классы от AMS (amsart, amsbook, amsproc), ка была предпринята Вячеславом Фёдоровым, в результате которой
которые используются для материалов, предназначенных для публика- на свет появился пакет eskd (без «x» на конце). В отличии от класса
ции в журналах Американского математического сообщества. Классы Константина Корикова, класс eskd.cls требует обязательной установки
из набора ntgclass3 представляют из себя «героическую» попытку шрифтов из коллекции pscyr6.
немецкоговорящих голландцев сделать то же, что и в стандарте, но Стандарт для написания документов, описывающих стандарты. Что
существенно разными способами. может быть ещё более стандартным? Класс isov2.cls из пакета iso
является стандартом для стандартов. Документация к пакету isoman.pdf
KOMA-Script подробно описывает все технические тонкости в деле подготовки доку-
В последнее время всё больше внимания обращает на себя набор ментов по стандартам ISO. Аналогично, для создания документации ISO
классов KOMA-script. В этот раз хорошо постарались немцы. Следует 10303 есть свой пакет iso10303.
учитывать, что европейские традиции полиграфии (в основном фран-
цузские), всё-таки ближе к нам, чем американские, на которые тради- Пишем письма
ционно ориентировалось LaTeX-сообщество. Для статей предполага- Класс letter является стандартным для LaTeX и, как следствие, никто им
ется использовать scrartcl, для книг scrbook, для писем scrlttr2, а для не пользуется. Часто стандарт для написания писем создаётся автором
отчётов scrreprt. самостоятельно. Так, например, любит делать Кнут. Это очень неплохо
В отличие от стандарта, классы из KOMA-script позволяют исполь- работает в силу того, что структура письма не слишком сложна. Как
зовать базовые размеры шрифта в 9pt, 14pt и 17pt. Огромные поля, следствие, в LaTeX имеется огромное число альтернатив для letter.
имеющие место в стандартных классах, в классах KOMA-script зна- С точки зрения английского FAQ по LaTeX (http://www.tex.ac.uk/faq)
чительно уменьшены. Претерпели изменения и другие элементы. класс newlfm является наиболее продвинутым. lfm расшифровывается
Если оформление по умолчанию не кажется адекватным, то KOMA-
script предоставляет обширный набор высокоуровневых настроек.
Подробная документация на более чем двухстах страницах «The KOMA- 4
Да, да, именно «верстки» – букву «ё» опять обидели.
5
То есть тупая, нудная и неинтересная.
6
2
Шрифты из коллекции pscyr авторами больше не поддерживаются и не развиваются.
Кроме 10pt, 11pt и 12pt классы из набора extsizes поддерживают 8pt, 9pt, 14pt, 17pt и 20pt. Основные проблемы этого пакета не технические, а лицензионные, в связи с чем этот пакет
Смена размера базового шрифта приводит к принципиально иному дизайну документа отсутствует в дистрибутивах LaTeX. Впрочем, в дополнение к абсолютно не решаемым
3
В набор ntgclass входят классы для набора статей (artikel1, artikel2 и artikel3), для набора книг лицензионным, в них хватает и технических проблем. Последнюю версию пакета можно найти
(boek и boek3), писем (brief) и отчётов (rapport1 и rapport3). по адресу: ftp://ftp.vsu.ru/pub/tex/font-packs/pscyr/.

Март 2007 Linux Format 89


Учебник LaTeX

как letter (письмо), fax ному классу report.


(факс) и memorandum Инженер-электронщик Эли Биллауэр [Eli Billauer] сделал LaTeX-
(служебная запис- класс для бумаг в HiTech-стиле и назвал его, соответственно, hitec.
ка). Документация Простенько и со вкусом. Есть, естественно, и частные решения.
представляет из себя Хочется заключить контракт с американским правительством – стан-
текстовый README дартная форма 298, обеспечиваемая классом sffms, будет вполне кста-
и набор примеров ти. Класс manual из пакета nassflow даст возможность пообщаться со
использования. структурой под названием «Center for the Automation of Weapon and
Хорошо документи- Command Systems, Royal Netherlands Navy» [Центр автоматизации воо-
рованный класс akletter ружения и командных систем Королевских ВМФ, Нидерланды].
также является хоро-
шим шаблоном для Делаем презентации
старта. Документация
lettereng.pdf, кроме
краткой инструкции,
также включает и
формальное описание
структуры письма.
Упомянутый выше
пакет KOMA-script
предоставляет пре-
красную замену стан-
дартному классу letter
в виде scrlttr2. Набор
классов ntgclass так
же предоставляет
свой вариант в виде
класса brief.
Кроме более-менее (Рис. 3) prosper в действии.
общих решений, полно
и частных. Например, В начале предполагалось, что цель презентации состоит в распростране-
для внутренней пере- нии нужной информации от одного человека ко многим. Поэтому во гла-
писки университета ву угла ставился текст, а «украшательства» сводились к простой рамке.
(Рис. 2) Страница города Падуя есть специальный пакет cdpbundl, содержащий целых Стандартные классы seminar и sides вполне годились для этого.
документации к три класса. Но время суровых докладчиков прошло, и «рюшечки» вышли на
eskdx. первый план. LaTeX может предоставить и «рюшечки», но лучше всё-
Верстаем книги таки помнить о смысле.
Написание книги – это очень долгий процесс, и первоначальную Класс prosper создан как улучшенный seminar и поддерживает не
«набивку» текста можно начать со стандартного класса book. С дру- только оверлеи, гиперссылки и шаблоны оформления, но и «стандарт-
гой стороны, структура книги может быть очень сложной, и правиль- ный» набор динамических эффектов доступных через формат pdf7.
ный выбор базового класса позволит несколько облегчить процесс Вспомогательный класс ppr-prv позволяет создать печатную версию
созидания. электронных слайдов класса prosper.
В качестве улучшенного стандартного класса book можно исполь- В пакет texpower входит класс powersem, который, по сути дела,
зовать класс octavo. Класс scrbook из KOMA-script также является просто загружает slides, а всю работу по созданию презентации выпол-
хорошей альтернативой для book. Структура и основные команды няет стиль texpower. Возможности этого пакета сравнимы с prosper –
копируют стандартный класс. Значения же параметров по умолчанию просто он немного другой.
более адекватны для европейской полиграфии. В последнее время в деле создания презентации всё популярнее и
Описание класса memoir (memman.pdf) представляет из себя книгу о популярнее становится относительно молодой, но довольно мощный
создании книги, превышающую по объёму триста страниц. Там есть всё, класс beamer. Активная поддержка сообщества при создании этого
начиная от формальной структуры печатной книги, советов по оформ- пакета позволила автору beamer Тилу Тантау (Till Tantau) собрать в
лению электронных копий, и заканчивая собственно описанием клас- одном месте немало тем для слайдов. Ключевой особенностью этих
са. Все элементы структуры и управляющие размеры показаны в виде тем является разнообразие. Наличие широкого выбора стандартных
рисунков и схем. Класс не является надстройкой над чем-либо – это тем позволяет быстро выбрать обрамление для презентации. Более
произведение искусства, созданное с нуля. Документацию следует про- чем 200 страниц документации ускоряют решение любой возникшей
листать хотя бы просто для ознакомления. Класс развивается до сих пор. проблемы.
Новые возможности описываются в дополнении к основной документа- Для создания презентаций можно настроить даже WYSIWYM-
ции (memmanadd.pdf), и на текущий момент дополнение почти достигло редактор LyX. Для этого следует воспользоваться ещё одним доста-
объёма в сто страниц. точно молодым, но уже вполне функциональным классом powerdot, в
Если не требуется написать книгу, а нужно распечатать мегабайт- комплекте с которым идут настройки для LyX.
ный текст на дешёвеньком принтере в режиме экономии тонера, то для Класс talk, в отличие от упомянутых выше пакетов, позволяет
этого дела вполне может подойти класс sffms – простенько и строки пользователю определить более одного стиля слайдов для презен-
через два интервала. тации. Резкая смена стиля во время доклада – иногда бывает нужно
и такое.
Создаём отчёты Для создания настенного постера в первом приближении мож-
Отчёт – не книга, но и здесь есть свои правила и структура. Для начала
7
Для просмотра динамических эффектов требуется Acrobat Reader, раскрытый на полный
можно воспользоваться scrreprt из KOMA-script, как замена стандарт- экран.

90 Linux Format Март 2007


LaTeX Учебник

http://www.maik.ru/pub/
tex/. Но довольно мно-
го журнальных классов
можно найти в стандарт-
ном дистрибутиве LaTeX.
Например, класс asaetr
используется в American
Society for Agricultural
Engineers (ASAE). Maple
Technical Newsletter мож-
но создавать с помощью
класса mtn. Классом
jpsj2 отметились япон-
цы. Из русскоязычных
журналов замечен толь-
ко «Сибирский журнал
(Рис. 4) beamer – справится даже школьник. Изготовлено учеником вычислительной мате-
11 класса А.Ф. Зайковым самостоятельно. На ошибки не фыркаем! матики» – класс sibjnm.
Школьник всё-таки. Следует отметить
класс elsart, обязатель-
но воспользоваться пакетом a0poster, который позволяет работать ный для подготовки
с большими форматами бумаги. Канонического класса, который бы журнальных публикаций
решал все проблемы при изготовлении постера, в LaTeX на текущий в издательстве Elsevier.
момент не существует. Возможно, ближе всего к идеалу подошёл класс Класс nature позволит
sciposter из одноимённого пакета. подготовить pdf-файл
для журнала Nature.
Защищаем диссертации Часто при создании
Раньше всюду были курсовые и дипломные работы, а теперь, куда ни публикаций для журна-
плюнь, везде диссертации. Каждый уважающий, не сильно уважаю- лов или конференций
щий и вообще не уважающий себя университет имеет свой уникальный используются неболь-
стиль оформления диссертации. Если хочется написать свой класс, то в шие модификации клас- (Рис. 5) Класс
качестве отправной точки можно выбрать ucthesis от Калифорнийского са revtex4. moderncv.
университета (UC Berkeley). Для объединения разных документов в один, например, для офор-
Станислав Кручинин озадачился судьбами русскоговорящих дис- мления трудов конференции, может пригодиться класс combine.
сертантов и создал класс disser. Пакет с одноимённым названием
можно взять на CTAN в директории {CTAN}/macros/LaTeX/contrib/ Всякая всячина
disser. Следует учесть, что пользовательская документация на текущий Далеко не все классы подчиняются уже перечисленной классификации.
момент отсутствует. С другой стороны, диссертанты, по идее, люди За рамки темы вышли классы для составления календарей, обложек
неглупые и разберутся в имеющихся примерах. для CD (cd), вопросников (qcm), объявлений о занятиях (assignment),
концертных программок (ConcProg), программ курсов (courseoutline
Организуем резюме и coursepaper), рабочего журнала для биологов (labbook), пьес (stage),
Написание резюме или curriculum vitae – довольно популярный вид тибетских карточек (pecha), карточек для запоминания иностранных
деятельности в современном мире. Для резюме нет общепринятого слов (flashcards), и для многого другого. Старые и давно не поддержи-
стандарта, но некоторые указания существуют. ваемые классы могут не собраться в новом окружении, но исходные
Европейская комиссия рекомендует определённый формат для тексты доступны, так что их всегда можно довести до необходимой
составления резюме, и этот формат полностью реализуется с помо- кондиции.
щью класса europecv. Класс vita представляет собой конструктор для
создания резюме. Несмотря на отсутствие документации, разобраться
с ним по имеющимся примерам для IT-специалиста и певца не соста-
вит сложности. Класс curve, напротив, обладает качественной доку-
ментацией. Механизм рубрик позволяет классу curve поддерживать
несколько резюме разной направленности и легко переключаться
между ними. Современный класс morderncv рекомендуется как гиб-
кое и простое средство создания резюме как современного вида, так
и классической формы. Пакет можно взять на CTAN в директории Заключение (Рис. 6) Что-то
{CTAN}/macros/LaTeX/contrib/moderncv. определённо
Следует отметить, что классы определяют многое, но далеко не Классов существует много – места в статье мало. Малая толика из упо- тибетское – класс
pecha.
всё. Поэтому после выбора класса можно подключить стили, которые мянутых классов будет рассмотрена в последующих статьях цикла. Это
серьёзно поменяют внешний вид документа. Стиль currvita позволяет не является проблемой, так как в чём-чём, а в отсутствии документа-
создавать резюме в окружении стандартных классов. ции к пакетам LaTeX обвинить невозможно – ну, почти. LXF

Журнальные и конференционные классы


Каждый серьёзный научный журнал и крупная конференция имеет
свой LaTeX-класс. Обычно этот класс лежит где-то на официальном Через месяц Мы познакомимся с некоторыми из классов
сайте, например, журналы, издаваемые издательством МАИК «Наука/
Интерпериодика», должны следовать правилам, выложенным здесь:
поближе – и научимся создавать красочные презентации.

Март 2007 Linux Format 91


Blender
Учебник Свободный инструментарий для
Blender
трехмерного моделирования

на DVD
Готовый проект
Blender
Текстуры
Анимация и
ЧАСТЬ 3 Сегодня Андрей Прахов вдохнет жизнь в созданный нами мирок, раскрасив его
обитателей и научив их двигаться в соответствии с законами физики.

ное положение объекта, а программа достраивает промежуточные


значения. Это самый простой и распространенный вид анимации. С
его помощью можно не только перемещать и вращать объекты, но
и масштабировать их, работать с материалами и изменять внутрен-
нюю структуру. Для работы с данным инструментом существует окно
Timeline (рис. 1)
1 Начальное значение кадра;
2 Конечное значение кадра;
3 Пошаговая перемотка. Для быстрого перехода в нужное место вве-
дите сюда свое значение;
4 Переход в начало линейки;
5 Переход на ключ назад;
6 Проигрывание анимации. Приятная особенность Blender’а в том, что
он позволяет редактировать сцену без остановки проигрывания;
7 Переход на ключ вперед;
8 Переход в конец анимации;
9 «Автозапись». Автоматическое создание ключей в зависимости от
манипуляций над объектами;
10 Отключение/включение звука при проигрывании анимации;
11 Курсор текущего кадра;

Н
а прошлых уроках мы с вами познакомились с основами 12 Градация линейки.
моделирования в Blender и даже сваяли симпатичную фигур- Принцип работы с ключами очень простой и я продемонстрирую
ку пингвина. Но, как вы понимаете, возможности программы его на следующем примере. Создайте куб и откройте окно Timeline в
не ограничиваются банальным моделингом. В этот раз мы познако- удобном для вас месте. Находясь в режиме Object Mode и при выде-
мимся с различными с видами анимации, продолжим разговор о текс- ленной фигуре, нажмите I для вызова меню вставки анимационных
турировании, попробуем на ощупь физику. Вдохнем же жизнь в нашу ключей. Выберите верхнее значение Loc. Сдвиньте анимационный кур-
картинку! сор (№11, рис. 1) на любое количество кадров вперед и активируйте
Прежде чем мы приступим к анимации, необходимо разобраться с клавишу записи (№9, рис. 1). Передвиньте куб в произвольное место.
возможностями программы в этой области. На линейке появятся желтые полоски, обозначающие установленные
ключевые кадры. Если теперь проиграть анимацию, вы увидите движе-
Задача №1. ние объекта из одной точки в другую.
Предположим, имеются пункты «А» и «B», необходимо переместить
объект из одной точки в другую. Задача №2.
Передвинуть объект из точки «А» в точку «B» вдоль некоторой кривой.
Подобный метод анимации в трехмерной графике получил назва-
ние «ключевой». Смысл его в том, что указываются начальное и конеч- Первый метод обеспечивает линейную анимацию, что и было про-
демонстрировано в примере выше. Более точную настройку анимации
в пространстве и во времени предлагает специальный инструмент
Blender’a – IPO Curve Editor.
Позволю себе немного отвлечься от темы и напомнить, что програм-
ма имеет ряд предустановленных типов расположения окон – их можно
выбрать из выпадающего списка в верхней части экрана. Быстрые кла-
виши перехода от темы к теме – Ctrl+курсор влево или вправо.
Перейдите в режим отображения окон SR:1 - Animation. Эта тема,
Рисунок 1. как нетрудно догадаться, наиболее удобна для создания анимации. В

Месяц назад Мы занимались моделингом и создали выводок пингвинов.

92 Linux Format Март 2007


Blender Учебник

текстурирование
правом углу расположено окно IPO Curve Editor (рис. 2): нений (vertices=32). Перейдите в режим Object Mode (Tab) и в окне
Transform Properties (клавиша N) введите следующие параметры:
ScaleX=0,100
ScaleY=0,100
ScaleZ=3,500
Переименуйте объект в Staff. Теперь перейдем к созданию полот-
нища. Для этого идеально подходит примитив Plane (плоскость).
Переключите вид на Front View (NumPad1), немного сместите курсор
и создайте поверхность (Add->Mesh->Plane). Чтобы придать ему вид
флага, растяните его (S) по координате Z до 1,4000, а затем по X до
2,0000. Переименуйте полученный объект во Flag.
Теперь необходимо разделить объект на дополнительные полигоны.
Это можно сделать, перейдя в режим редактирования. Выделите объ-
ект (A), нажмите W и выберите пункт меню Subdivide. Проделайте эту
операцию еще три раза.
Из подготовительной части осталось только включить сглаживание
1 Область, отображающая кривые для манипуляции конкретными (F9, Set Smooth). В дальнейшем это нам пригодится.
переменными; Итак, система мягких тел в Blender’e позволяет реализовать дви-
2 Точка, являющаяся ключевым кадром в анимации; жение вершин объекта в соответствии с законами физики. Ключевое
3 Название свойства трансформации объекта; слово в этой фразе – «вершины». Поэтому сейчас нам необходимо
4 Кнопка активации конкретного показателя. подготовить объект к работе с физикой.
Работа с этим редактором требует определенного пространствен- Перейдите в окно Front View (NumPad1) и выделите полотни-
ного мышления, так как кривые представляют управление объектом ще флага. В режиме редактирования нажмите F9. Инструментарий
в схематическом виде. Тем не менее, в работе это окно практически для работы с вершинами находится в закладке Link and Materials ->
ничем не отличается от других. Можно перемещать, увеличивать изоб- Vertex Groups. Проследите, чтобы все вершины флага были выделе-
ражение в окне. Выделение и перемещение кривых происходит точно ны и нажмите кнопку New для создания новой группы. Введите в поле
такое же, как и в случае с обычными объектами. При входе в режим Edit Weight значение 0, переименуйте группу в 1, нажмите Assign. Таким
Mode возможна работа с отдельными точками. Не будем повторяться – образом, вы подготовите группу вершин, которые в дальнейшем будут
просто загляните во вторую часть урока (LXF89), где рассказывается обрабатываться физическим движком.
про работу со сплайнами. Теперь необходимо отделить от группы некоторое количество вер-
шин для закрепления их на древке; естественно, к ним физика приме-
Задача №3. няться не будет. Для этого снимите общее выделение (A) и отметьте
Анимация внутренней структуры объекта или самого объекта с учетом край полотнища толщиной в одну клетку для крепления (рис. 3а).
внешних воздействий.

Для решения этой задачи имеется несколько путей: либо использо-


вание ключевой анимации (с некоторыми нюансами), либо – встроен-
ного физического движка программы. С него-то мы и начнем.
Любой объект в Blender, помимо стандартных трехмерных показа-
телей, может иметь и физические, такие как масса, упругость, трение…
Все это обеспечивается так называемой системой мягких тел.
Откройте файл lesson3_begin.blend, который находится на диске
журнала, или же свой проект, оставшийся с прошлого урока. Теперь
нашей задачей является создание флага и имитация движения полот-
нища под воздействием ветра.
Установите 3D-курсор в свободном месте окна Top View (NumPad7)
справа от модели пингвина. Древко нашего флага мы будем делать Рисунок 3a. Рисунок 3б.
из примитива. Создайте его, нажав пробел и выбрав Add->Mesh-
>Cylinder. Значение, предлагаемое программой, оставьте без изме- Установите параметр Weight равным 1 и повторно выполните при-

Март 2007 Linux Format 93


Учебник Blender

соединение (Assign). Чтобы удостовериться в правильности наших Перенесите все значения, представленные на рисунке, в ваш проект.
настроек, можно перейти в режим Weight Paint (находится в том же Чтобы указать программе, с каким набором вершин нужно работать,
меню, что и Object Mode, Edit Mode). Картинка должна выглядеть, как нажмите маленькую кнопочку рядом с Use Goal и выберите группу 1.
на рисунке 3б. Для проверки сделанного необходимо перевести курсор в окно про-
Для перехода к настройкам физики нажмите «F7» и активируйте екции и нажать Alt+A. Этим сочетанием клавиш вы запустите анима-
кнопку Physics Buttons. Нас интересует закладка Soft Body. При вклю- цию в данном окне. Заметили, что полотнище безвольно колышется?
чении единственной находящейся там кнопки раскроется следующее Необходимо добавить ветер, но прежде чем мы сделаем это, ознакомь-
окно (рис. 4). тесь с настройками Soft Body во врезке «Физика мягкого тела».
Для создания ветра необходимо перейти в окно Top View. Установите
курсор слева от флагштока и создайте пустой объект (Add->Empty).
Подобного рода объект является лишь служебным каркасом и не отоб-
ражается при рендеринге. Разверните его так, чтобы ось «Z» смотрела
вдоль полотнища, и поменяйте название на Wind. Таким образом мы
указываем направление ветра.
Чтобы применить нужный эффект, нажмите F7, активируйте Physics
Buttons, в закладке Fields and Deflection -> Fields выберите Wind из
выпадающего списка. Данная функция предлагает нам следующие
настройки:
Strength (Сила);
Fall-off (Затухание) Ослабление силы ветра с расстоянием;
MaxDist Максимальное область действия эффекта по координате Z.
Физика мягкого тела Поменяйте значение параметра «strength» на 0,8. Проиграйте
анимацию… Вот теперь наш флаг колышется более правдоподобно.
Bake settings Открывает дополнительное окно, в котором можно Конечно же, не мешало бы сделать направление и силу ветра пере-
настроить и выполнить предварительный расчет физики объекта. При менными, но это вы сможете сделать самостоятельно после прочтения
общем рендеринге картинки не будет производится вторично. данного урока. А пока давайте совместим полотнище с флагштоком
Friction (Трение) Меньше трения – больше движения, скажем, при (рис. 5) и перейдем к следующей части – созданию и анимации зем-
использовании ветра. ного шара.
Grav Гравитация, сила, которая направлена в отрицательном направ-
лении по оси Z.
Error Limit (Лимит ошибок) Определяет размер шагов во время
симуляции. Меньшее значение дает большую точность, но повышает
время вычисления.
Mass (Масса) Определяет массу вершин. Большая масса замедляет
движение, но не для гравитации, где движение есть константа и не
зависит от массы.
Speed (Скорость) Контролирует внутреннюю скорость мягкого
тела.
Apply Deform First (Сначала применить деформацию) Позволяет
применить эффект мягкого тела после деформации объекта Арматурой
или Решеткой.
Use Goal (Использовать Цель) Использует для симуляции движение
из анимации (Ipo, Deform, Parents, и т.д.). “Goal” (Цель) – это желаемая
конечная позиция для вершин, основанных на этой анимации.
Задача №4.
Достижение “Цели” управляется силой упругости и демпфирования Заставить шарик вращаться и наложить на него текстуру.
(Damp).
Goal (Цель) Значение “цели” по умолчанию, если не назначена груп- Для сотворения Земли мы воспользуемся ключевой анимацией
па вершин (Vertex Group). Если группа вершин назначена и использу- и редактором IPO Curve. Начнем же, естественно, с создания модели.
ется, то эта кнопка будет отображать название группы вершин. Установите 3D-курсор в свободной области окна Front View ниже моде-
G Stiff Пружинная упругость для “цели”. Низкое значение дает боль- ли пингвина с учетом объемности создаваемого макета. Добавьте в сце-
ше эластичности, а высокое – больше упругости. ну примитив UVSphere с параметрами 64,64. Отмасштабируйте его по
G Damp Коэффициент трения для “цели”. Высокое значение увели-
всем осям до 20,000 единиц. Если при этом он перекроет другие объ-
чивает демпферный эффект на мягкое тело.
екты – ничего страшного, просто передвиньте его в более подходящее
G Min/G Max Когда вы задаете значение воздействия на вершины с
помощью окрашивания (используя WeightPaint), то для более точной
место. Совмещением моделей мы займемся попозже. Переименуйте
настройки можно использовать GMin и Gmax. Самое низкое воздейс- сферу в Earth и примените сглаживание (Set Smooth).
твие (синий цвет) будет соответствовать GMin, а самое высокое (крас- Работу над этой частью анимации лучше всего продолжать, при-
ный цвет) - GMax. менив схему расположения окон Sr:1 – Animation. Переключите окно
Use Edges (Использовать ребра) Ребра mesh-объекта могут рабо- с моделями в режим Front View. Выделите шар, нажмите I для вызо-
тать как пружины. ва меню вставки ключа. Так как предполагается осевое вращение
Stiff Quads - Если для граней включена опция quad, то диагональные по одной из координат, выберите начальной точкой параметр Rot.
ребра будут использоваться как пружины. Это предотвращает полное Передвиньте анимационный курсор на значение 250 или введите его в
ослабевание граней.
соответствующем окне (см. начало урока). Включите запись анимации
E Stiff - Пружинная упругость для ребер (определяет, насколько они
и поверните объект (R) по координате X на значение –10,00. Отключите
прочные). Низкое значение означает очень малую упругость (очень
гибкий материал), а высокое значение соответствует большой жест-
запись и проиграйте. Если все сделано верно, вы увидите неполный
кости (жесткий материал). поворот шара по оси X. Посмотрите теперь на окно редактора IPO Curve.
E Damp - Сила трения для граней. Высокое значение снижает трение Представленная там кривая RotX не является прямой, а значит, анима-
(т.е. “смазывает” ребра “смазкой”). ция будет с ускорением и замедлением (если кривую не видно, необхо-
димо «отъехать» колесиком мыши). Нам это не нужно. «Спрямление»

94 Linux Format Март 2007


Blender Учебник

Комментарий
1 Александра Супрунова

Иногда оказывается, что достичь желаемого результата, используя ключевую анимацию, затруднительно. Тогда
на помощь приходит анимация вдоль пути. С ее помощью многие вещи можно сделать значительно проще.
Например, в сцене данного урока Tux гордо шагает по вращающемуся шару, но если бы нам потребовалось так-
же изобразить Луну, делающую оборот вокруг Земли, или надпись “Linux Forever”, тут-то бы и пригодилась анимация вдоль пути.

1 Давайте попрактикуемся. Начните с чистой сцены, на которой 2 Привяжите анимацию куба к пути. Для этого: перейдите в Object
есть только куб. Mode (клавиша Tab), выделите куб правой кнопкой мыши, затем
Переключитесь на вид спереди (NumPad1) и добавьте путь: Пробел- щелкните правой кнопкой мыши по Path, удерживая нажатой кла-
> Add->Curve->Path. вишу Shift (таким образом вы выделите оба объекта) и нажмите
Расположите объект Path (он изображен ребристой линией) чуть Ctrl+P. В появившемся меню выберите пункт Follow Path – появится
выше куба. пунктирная линий, связывающая куб с Path. Осталось только
нажать Alt+A и убедиться, что анимация работает (куб движется
вдоль пути). Для завершения анимации нажмите Escape.

3 А теперь самое интересное. Перейдите в Edit Mode (Tab), выде-


лите любой из узлов пути щелчком мыши и тащите его вверх.
Завершите перемещение тем же щелчком мыши. Проиграйте изме-
нившуюся анимацию (Alt+A).
Только подумайте, сколько всего интересного можно создать, при-
ложив к этой схеме немного фантазии!

можно выполнить вручную, выделяя каждую точку и работая с ними Buttons и в закладке Links and Pipeline выбрать Add New (см. LXF89).
как с кривыми Безье, или же воспользоваться специальной функцией. Поменяйте значение RGB на: 0,500; 0,300; 0.
Выделите кривую RotX в режиме Object Mode (правой клавишей Помимо стандартной расцветки материала, Blender позволяет
мыши или цветной кнопкой у названия), затем вызовите функцию использовать многоуровневые наложения в виде слоев. В новой вер-
Extrapolation из меню Curve -> ExtendMode. Удалите лишние кривые. сии программы вы можете использовать до 10 текстур в одном мате-
Просто выделите их и нажмите клавишу X. риале. Не стоит думать, что под термином «текстура» скрывается воз-
Вот и все, теперь наш шар крутится с постоянной скоростью в нуж- можность использования лишь сторонних картинок! Blender имеет ряд
ном направлении. предустановленных, входящих в стандартную комплектацию процедур-
С анимацией мы закончили, осталось «раскрасить этот мир» и рас- ных карт, которые вы с успехом можете использовать в своих работах.
ставить объекты по местам. Начнем, пожалуй, с древка. Так как у нас Процедурными эти типы текстур называются потому, что для создания
не стоит задача добиться фотореалистичности, то оставим в покое про- их используются специальные программные модули. С их помощью вы
цедурные карты и текстуры высокого разрешения, и просто создадим можете сгенерировать вполне реальные облака, дерево, ландшафт, шер-
материал соответствующей расцветки. Напомню, что для этого нужно шавые поверхности и многое другое. Слои могут отображаться одно-
перейти в Object Mode, нажать сначала F5, а затем кнопку Materials временно при помощи механизма смешивания. Благодаря этому можно

Март 2007 Linux Format 95


Учебник Blender

Рисунок 7.

в окно View и вводите значения из таблицы (рис. 7) в окно Transform


Рисунок 6. Properties (клавиша N).
Выполните наводку камеры и лампы на объект Body. Для этого
выделите камеру, затем туловище, и нажмите Ctrl+T. То же самое про-
добиться весьма интересных эффектов, но это уже отдельная история. делайте и для лампы.
Мы же пока воспользуемся наложением внешней текстуры на объекты. Вот мы и подошли к завершению этого урока. Осталось только
В директории с файлами к этому уроку на LXFDVD вы найде- разобраться с рендером анимации и обработать первый свой ролик
те две текстуры для отображения земной поверхности и флага. из-под Blender.
Создайте новый материал для флага и в закладке Texture нажмите При нажатии F10 вы попадете в окно настройки рендера (рис. 8).
Add New. Так в текущий материал добавляются новые слои (рис. 6). Обратите внимание на закладку Format. Здесь вы можете выбрать один
Настройка созданной текстуры производится в панели, вызывае- из заготовленных стандартов, либо ввести удобные для себя значения.
мой клавишей F6. Выберите из выпадающего списка Texture Type тип Чуть ниже таблицы разрешений из выпадающего меню можно выбрать
Image. Осталось только загрузить нужный файл в проект, нажав Load необходимый вид сохранения результата, настроить кодек, установить
Image (файл flag_tex.jpg). Проделайте то же самое для шара, только количество кадров. Для демонстрации результата советую исполь-
текстура в данном случае будет называться earth.jpg. зовать предустановленный тип Preview, как наиболее скоростной из
Все необходимые настройки загруженных картинок находятся в имеющихся.
данной закладке. Вы можете указать смещение текстуры относительно
объекта, воспользовавшись значениями MinX, MaxX, MinY, MaxY, или
развернуть ее на 90 градусов функцией Rot9. Если тип картинки под-
держивает канал прозрачности (альфа-канал), его можно включить
кнопкой Use Alpha. Для повтора узора на поверхности имеется кнопка
Repeat, количество повторов можно регулировать значениями Xrepeat,
Yrepeat. Кроме того, поддерживается настройка анимации текстуры на Рисунок 8.
объекте.
Вот так, очень просто, можно раскрасить безликие примитивы. В панели Output необходимо указать путь для сохранения резуль-
тата, а закладка Anim позволяет выполнить саму обработку (кнопка
Задача №5. Anim), проиграть последнюю анимацию (Play) встроенным проигрыва-
Разместить объекты на сцене. телем программы, настроить начало и конец анимации для обработки
(значения Start, End). Выполните все выше сказанное и… запаситесь
Для завершения работы над нашей сценой необходимо размес- терпением, обработка может занять значительное время.
тить объекты в нужных местах. Задача эта непростая, если переме- Впереди у нас остался последний, заключительный урок из серии
щать каждый объект вручную. Очень часто при построении сложной «Blender для начинающих», где мы познакомимся со скелетной анима-
сцены и перемещении моделей в ней теряются некоторые компонен- цией, поговорим о правильном освещении, окончательно доработаем
ты. Поэтому важна строгая иерархия. Blender поддерживает создание сцену. LXF
групп со сложной подчинительной структурой, состоящей из мате-
ринского объекта и нескольких дочерних. Схватившись за родитель-
ский объект, можно перетянуть всю нижестоящую иерархию.
Выделите весь флаг таким образом, чтобы шток был отмечен пос-
ледним (не забудьте и про «ветер»!). По умолчанию, родительским
объявляется именно последний объект. Нажмите Ctrl+G – Add New Работа над ошибками
Group для создания новой группы и переименуйте ее во Flag. Затем
создайте иерархию комбинацией Ctrl+P – Make Parent. Вот и все, для В прошлом номере нашего журнала мы по ошибке указали в
проверки попробуйте перетянуть группу, ухватившись за шток флага. качестве автора комментариев к учебнику Blender Сергея
Если все сделано правильно – перенесется вся группа. Супрунова.
Следующим на очереди у нас идет пингвин. Проделайте ту же опе-
рацию, в качестве родительского объекта выберите тело (Body). Новую Редакция LinuxFormat приносит извинения своим авторам и чита-
группу можно назвать Tux. телям журнала.
Итак, у нас имеются группы и объекты: Tux, Flag, Lamp, Earth, Соавтором Андрея Прахова в цикле статей о пакете Blender и авто-
ром комментариев в прошлом и нынешнем номерах является
Camera. Удобнее всего выполнить нашу задачу в SR:1 - Animation. Окно
Александр Супрунов.
слева вверху демонстрирует иерархическую структуру сцены. Теперь,
выделяйте нужный объект или группу в этом окне, переносите курсор

Через месяц Мы обсудим скелетную анимацию и подберем для нашей сцены выгодное освещение.

96 Linux Format Март 2007


Ответы

Ответы
Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru

О
В этом месяце мы отвечаем Здесь, похоже, проблема с разрешением
на вопросы по: экрана. Не получив точную информацию от
монитора о допустимых разрешениях, уста-
1 Разрешениям 10VNC новщик Ubuntu выбирает безопасное 640x480, этого
слишком мало, чтобы вместить целиком окно добав-
экрана 11 Драйверам Nvidia
ления принтера. Быстро помочь горю можно, зажав
2 Заданиям cron 12 Раскладке
клавишу Alt и перетащив окно левой кнопкой мыши
3 CUPS клавиатуры так, чтобы кнопки внизу стали видны. Удержание Alt
4 NdisWrapper 13 Сетевому чату позволяет перетаскивать окно за любое место, а не
5 Мусору в /home 14 Совместному только за заголовок. Это поможет вам добавить прин-
6 Загрузке с USB использованию тер, но не решит проблему как таковую.
Для смены разрешения монитора на более под-
7 Mepis OnTheGo соединения
ходящее воспользуйтесь пунктом Настройки > Нажав клавишу Alt, можно перетаскивать мышью окна,
8 Moodle Очистке звука Разрешение экрана из меню Система. Там перечис- не влезающие в экран.
9 grep и sed Zen-updater’у лены все подходящие разрешения для ваших виде-
окарты и монитора. Если обнаруживается только Будет сгенерирован новый файл /etc/X11/xorg.
640х480, значит, ваше оборудование не было распоз- conf, а его резервная копия останется в Вашем домаш-
1 Куда деваются кнопки? нано при установке. Менеджер устройств (Система -> нем каталоге. После этого перезапустите Х-сервер.

В
Я работаю в Ubuntu 6.06 с диска к LXF83 на Администрирование) покажет, правильно ли была Это можно сделать из командной строки, но если вы
Compaq Presario SR1720NX, и я новичок. Когда определена видеокарта. На вашей машине это, по новичок, проще перезагрузить компьютер.
я пытаюсь добавить в систему принтер Epson идее, ATI Radeon XPress 200 IGP. Для смены настроек Если по-прежнему будет доступно лишь 640x480,
Stylus CX4800 с помощью Gnome CUPS, низ экрана, видеокарты и монитора запустите dexconf, он опреде- придется вручную редактировать xorg.conf. Не видя
где должны быть кнопки Отмена, Назад, Вперед и лит оборудование и запишет все в конфигурационный Вашу конфигурацию, нельзя точно сказать, что имен-
Применить, пропадает. Я могу нажать на кнопку Enter файл. Предварительно хорошо бы сделать резервную но потребуется изменить. Если вы зашли так далеко
вместо Вперед, но на экране 3 я не нашел способа копию текущих настроек: и не получили ничего, кроме 640х480, рекомен-
перейти на кнопку Применить. cp /etc/X11/xorg.conf ~ дую вам спросить совета на нашем форуме www.
Jim Laprad [Джим Лапрад] sudo dexconf linuxformat.co.uk, приложив содержимое вашего /
etc/X11/xorg.conf, вывод lspci -v и параметры вашего
монитора. НБ
Наши эксперты 2 Задачи времени

В
Мы найдем эксперта на любой вопрос! Вы получите ответ на все: от проблем с установкой или модемом до У меня небольшая проблема с задачами Cron на
сетевого администрирования; главное – спросить! SUSE 9.3. Скрипты, помещенные в директории
cron.hourly, cron.daily и cron.weekly, работают
Нейл Ботвик Майк Сондерс отлично, но как мне контролировать запуск файлов из
Владелец ISP и экс-редактор Майк был одним из создателей этих директорий? Можно ли выполнять какие-то еже-
дисков для нашего журнала, Нейл прототипа LXF – Linux Answers.
недельные задания в субботу, а какие-то – в пятницу,
считает, что в Linux он от скуки Его специальности –
на все руки. программирование, оконные а ежедневные – вечером или в полночь? Хотел про-
менеджеры, скрипты следить, как это работает, но ясности не добился.
инициализации и SNES. Единственно, что я нашел, это задание, записан-
Стефан Лукас Ник Вейч ное в crontabs, которое запускается каждые несколько
У Стефана шесть лет В свободное от исчеркивания минут и работает с заданиями из директорий cron.*.
администраторского стажа. текстов красными чернилами Скрипт смотрит, какие из заданий должны выполнять-
Теперь он администратор L2 Linux время Ник возится с Linux- ся в данный момент, и запускает их.
в Rackspace, в его коллекции графикой и 3D-приложениями;
Марк Бесяда [Mark Biesiada]
серверов есть все от Raq3 до Sun он у нас отвечает за простые

О
Netra X1. вопросы! SUSE 9.3 делает это не совсем так, как другие
дистрибутивы. Вместо запуска содержимого
Петр Семилетов Валентин Синицын этих директорий в определенное время, она
Разработчик текстового редактора В свободное от работы время редактор запускает их согласно времени последнего исполнения.
TEA, режиссер-любитель, нашего журнала разрабатывает
Вы почти добрались до этого сами: одна строка в /etc/
поможет вам разобраться KNetworkManager и другие открытые
в мультимедийных вопросах. приложения. Он с радостью поможет crontab вызывает скрипт run-crons каждые 15 минут.
вам в вопросах использования Linux Тот смотрит на файлы-маркеры каждой директории
на рабочем столе. /etc/cron.*, находящиеся в /var/spool/cron/lastrun. Если
маркеру больше, чем час/день/неделя, он запускает
КУДА ПОСЫЛАТЬ ВОПРОСЫ: скрипты в директории и обновляет маркер. Если марке-
Пишите нам по адресу: answers@linuxformat.ru или спрашивайте на форуме: www.linuxforum.ru ра нет, он запускает скрипты и создает его.

Март 2007 Linux Format 97


Ответы

Выходит, что вместо запуска ежедневных скрип- 3 Печать в Gentoo

В
тов в 4:30, когда загрузка системы минимальна, они Установка Gentoo прошла неожиданно гладко,
запускаются через день после последнего выполне- но заставить свой USB-принтер печатать я не
ния. Вы можете указать нужное время запуска, обно- могу. Тщательно следовал инструкциям из
вив временную метку файлов в /var/spool/cron/lastrun. Gentoo Printing Guide, трижды проверил конфигура-
Следующий скрипт поменяет ее на 4:30 для ежеднев- цию моего ядра и абсолютно уверен, что включал все,
ных, еженедельных и ежемесячных маркеров. что нужно. Пробовал собирать ядро с USB-опциями в
#!/bin/sh виде модулей и вкомпилированными в ядро. Ничем не
cd /var/spool/cron/lastrun помог genkernel, так что вряд ли дело в ядре.
for i in daily weekly monthly Принтер – Samsung ML1210. Он хоть и снят с про-
do изводства, но мне годится, и всегда работал в Linux
if [ -f cron.$i ] хорошо, да и сейчас отлично печатает в Ubuntu Edgy
Оптимизируете Gentoo? Установите USE-флаги
then на той же машине и на том же USB-порту, то есть это
через дружелюбный интерфейс Profuse.
touch -t $(date -r cron.$i+%Y%m%d) не аппаратная проблема и не CUPS.
0430 cron.$i Если я открываю менеджер печати Gnome, мас- ных Вами записях. Вы используете GPL Ghostscript, где
fi тер предлагает мне те же драйверы CUPS, что и в нет должной поддержки драйверов для GDI-принтеров
done других дистрибутивах, но при попытке печати тесто- (они же Win-принтеры) вроде Вашего Samsung. Так
Скрипт использует команду date для извлечения вой страницы ничего не происходит. То же самое и в что удалите ghostscript-gpl и поставьте ghostscript-esp,
текущей даты файла в формате ГГГГММДД, добавля- OpenOffice.org. OOo думает, что распечатал документ, дающий лучшую поддержку принтеров:
ет нужное время (0430) и передает это команде touch, а документа нету. emerge --unmerge ghostscript-gpl
которая и обновляет временную метку. Тем же спосо- Вот вывод lsusb: emerge --oneshot ghostscript-esp
бом можно поменять день выполнения еженедельных Bus 002 Device 003: ID 04e8:300c Samsung Вероятно, Вам нужен еще пакет openslp, хотя он
скриптов. Electronics Co., Ltd ML-1210 Printer и считается опциональной зависимостью CUPS. SLP
Учтите, что если вы измените временной штамп, Я проверил /var/log/cups/error_log и не увидел (Service Locator Protocol) пригодится и другим про-
а в 4:30 задача не выполнится (например, если ваша ничего неблагоприятного. граммам, так что добавьте его в USE-флаги в /etc/
машина будет выключена), временная метка перепи- «Пятнистый кот», с форума LXF make.conf. Еще стоит добавить foomaticdb: напрямую

О
шется на то время, когда задача сработает, и вам при- При определении проблем CUPS первым он на CUPS не влияет, но может повысить уровень
дется заново изменять ее. Этот процесс можно авто- делом нужно повысить уровень ведения жур- поддержки принтеров в приложениях.
матизировать, создав отдельную задачу в /etc/crontab нала. Измените LogLevel в /etc/cups/cupsd. Теперь пересоберите все пакеты, для которых
и запуская ее каждый день в 4:00. НВ conf с ‘info’ на ‘debug’ и перезапустите CUPS. изменились флаги, включая CUPS:
В вашем случае улика обнаруживается в приведен- emerge --newuse --deep --verbose --ask world
Отобразится список всех пересобранных пакетов,
включая CUPS и OpenSLP. Нажмите Enter для их уста-
новки и перезапустите CUPS, когда сборка завершится.
Краткая справка USE-флаги – важная часть Gentoo, все они опи-
саны в /usr/portage/profiles/use.desc и /usr/portage/
profiles/use.local.desc. Еще можно установить Profuse

Директория proc и искать, просматривать и устанавливать их из графи-


ческого интерфейса. НБ

Виртуальный снимок текущего состояния системы. 4 Бедствия WiFi

В
Вот думаю, не поможете ли вы мне с пробле-
Вы когда-нибудь просматривали свою файловую сис- мой с WiFi/NdisWrapper. Я пытаюсь заставить
тему, исследуя, куда девалось место на жестком работать карту Belkin под NdisWrapper с драй-
диске, который вы считали бездонным? Тогда вы вером rt2500 для Windows XP. Онлайн-инструкции
могли наткнуться на директорию proc, занимающую превосходны; я распознал свою карту и понял, какой
больше гигабайта и содержащую тысячи файлов, драйвер мне нужен. Установил NdisWrapper и этот
многие из которых на вид пусты, и задуматься: а не драйвер, и когда я набираю ndiswrapper-l, видно, что
удалить ли их? драйвер установлен и оборудование налицо.
Уж извините, удалить их нельзя. По счастью, они После этого я загрузил NdisWrapper в ядро через
фактически не занимают места на диске, поскольку /
modprobe, настроил сеть, и все отлично работало. А
proc – виртуальная файловая система. Это не коллек-
потом перезагрузился, и настройки, естественно, про-
ция реальных файлов, находящихся на Вашем жестком
диске, это всего лишь снимок текущего состояния Исследуем внутренности системы в /proc. пали. И теперь я не могу добиться работы. NdisWrapper
ядра, представленный в виде файлов, чтобы с ним по-прежнему показывает, что все в порядке, но инди-
было удобно работать. информация о процессе: используемая память, аргу- каторы на карте отключены, и когда я пытаюсь полу-
Как вы видите, /proc содержит много «файлов»; на менты командной строки, с которыми он был запущен, чить ip по DHCP, выдается сообщение «отсутствует
нашем компьютере их 7109, и каждый содержит некую и многое другое. связь, проверьте провод».
информацию. Например, набрав cat /proc/version, вы Многое из /proc доступно только для чтения, но в Я перезапускал modprobe ndiswrapper, вынимал
узнаете больше о ядре вашей системы; а cat /proc/ некоторые файлы вы можете писать. Например, /proc/ и вставлял карту заново, но индикаторы на ней все
cpuinfo выведет детальную информацию о процессоре. sys/vm/swappiness контролирует, насколько агрессив- равно не горят.
Директории ide, scsi, bus/usb, bus/pci и bluetooth но система будет сбрасывать страницы в раздел под- Эндрью Вуд [Andrew Wood]
содержат данные о соответствующих устройствах. качки – чем больше номер, тем больше сбросов.

О
Подобная проблема нередка для NdisWrapper,
Вы также можете заметить директории, названные Поменять значение можно командой echo:
цифрами. Каждая из них соответствует работающему но вас она не должна волновать. Для карт на
echo 30 >/proc/sys/vm/swappiness
процессу, идентификатор которого и является именем Подробные сведения о /proc ищите в /usr/src/linux/ основе rt2500 незачем использовать
директории. В каждой из них находится детальная Documentation/filesystems/proc.txt. NdisWrapper: это имеет смысл лишь при отсутствии
подходящего Linux-драйвера (выполнение Windows-

98 Linux Format Март 2007


Ответы

кода от имени root – плохая идея, если этого можно JPEG-файлы в одну директорию?
избежать). Также хотелось бы разобраться с дуб-
Linux-драйверы для чипсета rt2500 доступны на ликатами файлов. Я готовлюсь к пере-
http://rt2x00.serialmonkey.com и http://sourceforge.net/ установке Ubuntu.
projects/rt2400. Не беспокойтесь насчет 2400 в имени: AJB2K3, с форума LXF

О
один и тот же проект занимается драйверами как для Я бы переименовал /home/
rt2400, так и для rt2500. Это полуофициальные драй- username перед установкой, а
веры, на базе закрытых драйверах от Ralink, которые затем скопировал только
впоследствии вышли под GPL. Кроме самих драйве- нужные файлы. Возможно, это будет
ров, проект занимается разработкой графических ути- проще, чем очищать домашнюю дирек-
лит для настройки карт и сканирования. торию от обломков других систем.
Одни дистрибутивы, например, Debian, включают Лучшая программа для удаления
драйверы в свои репозитории, для других вам придет- ненужных файлов, которую я нашел,
ся собирать их из исходных кодов. Не зная, что у вас называется KleanSweep (http://linux.
за дистрибутив, сложно дать конкретные инструкции bydg.org/~yogin).
по установке, но если вы будете собирать драйверы С поиском дубликатов лучше все-
из исходников, потребуется также исходный код ядра. го справляется Fdupes с (http://netdial. Время весенней чистки машины? KleanSweep избавит
Обычно он находится в пакетах kernel-sources, linux- caribe.net/~adrian2/fdupes.html). Ее мож- вас от ненужного мусора.
sources или kernel-devel. но использовать так:
Удостоверьтесь, что вы установили исходники той fdupes --recurse ~ мне нужно загружаться с брелка, но перезагрузка
же версии, что и ваше ядро. Как и со всеми внешни- fdupes --recurse --omitfirst ~ | xargs rm невозможна, а так как машина «жестко» сконфигури-
ми модулями ядра, при обновлении ядра нужно будет Первая команда покажет все найденные в домаш- рована, Qemu воспользоваться нельзя.
обновить и модули. Поскольку в это время у вас может нем каталоге дубликаты, вторая удалит все, кроме Я пытался найти решение этой проблемы. Я про-
не быть доступа в Интернет, рекомендую сохранить первого – пользуйтесь с осторожностью! бовал VMPlayer, Qemu и Moka, и все без толку: чего-
копию исходных текстов или инсталляционный пакет. Сортировать файлы по имени лучше всего коман- нибудь да не хватает. Подходящим решением было
Если вы все-таки хотите использовать NdisWrapper, дой find. Вы можете переместить все изображения в бы установить VMPlayer прямо на брелок и туда же
нужно будет запустить ndiswrapper -m для настройки один каталог так: записать образ системы, но я не смог найти способа
псевдонима wlan0. Это заставит NdisWrapper загру- mkdir pics это сделать.
жать модуль и драйвер. МС find ~ -iname `*.jpg’ -o -iname `*.png’ -o -iname Есть ли на рынке решение, позволяющее запускать
Советы по графическим картам приводятся на стр. 26. `*.gif’ -exec mv “{}” pics `;’ свою собственную ОС с USB-брелка независимо от
НБ установленной на компьютере системы?
5 Домашняя уборка Virtaava
6 Linux на брелке
В О
Понаставив всяких дистрибутивов, я замусорил Есть несколько причин, по которым загрузка с

В
директорию /home/username, а в главном меню У меня есть USB-брелок на 2 ГБ, на нем уста- брелка может быть невозможна на некотором
теперь полно неработающих пунктов. Как уда- новлен Slax Popcorn Edition. Я запросто загру- оборудовании. На некоторых компьютерах нет
лить эти мертвые души и отсортировать файлы по жаю с него компьютер и сохраняю изменения в опции загрузки с USB-устройств, но к счастью, сейчас
расширениям, поместив, например, все GIF, PNG и системе. Время от времени я сталкиваюсь с тем, что это уже редкость. Другой возможный сценарий – хозя-

Часто задаваемые вопросы

Пользователи и суперпользователи
Считайте root своим суперсильным виртуальным другом.
Я только что впервые установил только вы, но даже вредоносное прило- Mandriva Control Center в Mandriva, у вас ноутбуке. Если он будет потерян или
Linux. Зачем мне создавать двух поль- жение к электронному письму не сможет спросят пароль root. Для запуска других украден, любой сможет получить доступ
зователей? повредить системные файлы: прав не программ, откройте терминал, наберите к вашей почте и конфиденциальной
Один из них будет root, суперпользова- хватит! Когда вам действительно потре- su, введите пароль и запустите нужную информации. Пароли дают некоторую
тель, только для администрирования. буются права администратора (напри- программу, введя ее имя. защиту от этого.
Другой – обычный пользователь для мер, при установке программы), вы
повседневной работы. можете переключиться на него и рабо- Если моим компьютером пользуюсь я
тать до тех пор, пока требуются права один, должен ли я каждый раз заходить
Почему я не могу администрировать root. в систему?
систему сам? Большинство дистрибутивов сейчас
Linux использует права доступа, установ- Значит, нужно выходить и заходить в имеют опцию автоматического входа под
ленные на каждую директорию и на систему каждый раз, когда потребуется любым пользователем (но не root!), и это
каждый файл в системе. Каждый поль- установить программу? Как это нудно. удобно, если компьютером пользуетесь
зователь имеет свою домашнюю дирек- Нет, вы не должны ни выходить из сис- только вы один. В рабочем столе KDE
торию, где он может создавать и удалять темы, ни заходить как root (некоторые опцию можно установить, запустив Центр
файлы с любым содержанием. Вне ее дистрибутивы даже предотвращают это). Управления KDE > Администрирование >
каждый пользователь имеет право вам нужно только запускать отдельные Экран входа в систему. В Gnome – Рабочий
читать файлы и запускать программы, программы с правами root. Многие про- стол > Система > Окно входа в систему
но не изменять и удалять их. Это обеспе- граммы настроены на это. Если вы поп- (включите автовход). Но подумайте дваж- Автоматический вход имеется
чивает надежность и безопасность. Не робуете запустить YaST в SUSE или ды перед включением этой опции на и в KDE, и в Gnome.

Март 2007 Linux Format 99


Ответы

ин настроил BIOS своего компьютера так, чтобы загруз- владельца сменить его.
ка с USB была невозможна. Попытка снять это ограни- Если таких ограничений
чение как минимум некрасива (а то и незаконна), если нет, попробуйте другой
только вы не получите разрешение хозяина. Если оно у дистрибутив. Mandriva
Вас есть, Вы можете использовать загрузочный ком- недавно анонсирова-
пакт-диск для передачи управления USB-устройству; на ла Mandriva Flash, пол-
сайте Slax (www.slax.org) есть такой образ. ноценную настольную
Другое препятствие загрузки с USB-устройства – систему на 2 ГБ флэш-
как минимум три ее способа. Устройство может загру- диске. Я его пока не
жаться как дискета, ZIP и жесткий диск. Установщик пробовал, но Вы може-
Slax на USB, видимо, использует первую опцию. те найти информацию о
Не все BIOS’ы умеют загружать систему со всех нем на www.linuxcenter.
этих типов носителей, так что может понадобиться ru/shop/distros/linux-
больше одного брелка. Damn Small Linux загружается distros/Mandrava-Flash-
с брелка как USB-ZIP и USB-HDD. Например, на моем 2GB-USB. НБ
ноутбуке Slax загружаться отказался, а DSL спокойно
загрузился с той же «флэшки». 7 OnTheGo...
Некоторые компьютеры не в состоянии загружать- заглох

В
ся с USB-брелка, если загрузочный раздел больше 256 Хотел создать
МБ, так что Вы должны разбить свой брелок на два OnTheGo-диск из
Slax Popcorn – миловидный дистрибутив, но с USB-брелка загружается
раздела – один для системы (256 МБ), другой – для Live SimplyMepis
не без проблем. Проверьте настройку BIOS.
данных. 6.0, но окно выбора
Ваша идея с VMWare весьма изобретательна, пос- дисков не содержит ни Я знаю, что диск нормально монтировался, пос-
кольку позволяет избежать перезагрузки, но неко- одного пункта. Я пробовал: кольку я сохранял на нем файлы – выделял несколь-
торые файлы VMPlayer должны быть обязательно 1 Загрузить машину с вставленным USB-брелком, ко изображений и перетаскивал их на него, и все они
установлены в гостевой ОС. Moka выглядит более затем смонтировать его. оставались на диске после перезагрузки. Моему ком-
подходящим решением, но она работает с временны- 2 Загружать систему без «флэшки», затем вставлять пьютеру около шести лет; это Pentium 3 с установ-
ми файлами гостевой системы, и ее надо запускать от ее и монтировать ленной Windows 98 и картой расширения PCI-USB2.
имени администратора. 3 Заходить в систему как demo и как root. Мой опыт в Linux ограничивается «живыми» дистри-
Если конфигурация компьютера препятствует 4 Вставлять «флэшки» Advent на 2 ГБ и Huke на 512 бутивами с журнальных дисков за последние месяцы.
загрузке с USB, Вы должны принять это или попросить МБ. Как новичок в Linux, я теряюсь и не знаю, что еще
придумать.
Д.Томпсон [D.Thompson]

!
О
Вопрос-победитель (русская версия) Для создания OnTheGo Вы должны войти в
систему как root, и USB-устройство должно
быть не смонтировано. После авторизации,
Алексей Николаевич получает подарочный сертификат на 1000 рублей от интернет-магазина LinuxCenter.Ru! вставьте устройство. Если диалоговое окно KDE спро-
Просим победителя выйти на связь с редакцией: info@linuxformat.ru
сит, что делать, отвечайте «Ничего». Если диск монти-
наложить очищенную звуковую нужен исходный MPEG2-файл. руется автоматически, размонтируйте его, запустив
Операция дорожку обратно на исходный Допустим, он называется KwikDisk или набрав umount /dev/sda1 в терминале. Не
«Чистый звук» DVD? Желательно чтобы при source.mpeg. Теперь нам нужна пользуйтесь опцией безопасного удаления из контекс-

В
У меня возникла следую- этом сохранилось и меню, кото- дорожка в формате PCM или тного меню иконки диска на рабочем столе: она удалит
щая проблема. Мои родс- рое было на этом диске. AC3. Пусть будет AC3 (в этот файл устройства в /dev, сделав его недоступным для
твенники недавно отмеча- Маслий А.Н. формат можно перевести дан- установщика.

О
ли юбилей и засняли весь празд- Ответ разложим на ные, используя ту же Cinelerra). Теперь запустите Mepis Utilites, выберите опцию
ник на любительскую MiniDV- пункты. Просто так Файл назовем sound.ac3. Не создания OnTheGo-диска, и ваш диск должен стать
камеру. взять да и заменить зву- забудьте, что звук должен быть доступным, скорее всего как sda. По завершении
Знакомые сделали им по ковую дорожку на DVD не полу- с частотой оцифровки 48 КГц. процесса, удалите USB-диск (размонтировать его нет
записанным материалам DVD- чится. DVD имеет четкую файло- Теперь совмещаем видео- и зву- нужды) и выберите «Завершение сеанса» из меню К.
диск с простенькими эффек- вую структуру, где видео и звук ковой потоки с помощью утили- Когда появится экран входа в систему, подключите
тами, меню и т.д. Все получи- хранится в VOB-файлах, плюс к ты mplex из состава mjpegtools/ USB-диск, подождите 10 секунд, пока он определит-
лось хорошо, но вот звук остал- ним есть разные служебные Cinelerra, примерно (повторяю - ся, и зайдите в систему под именем onthego (пароль
ся необработанным и на записи файлы. Для записи DVD-диска примерно) вот такой командой: onthego). Если вы создали OnTheGo с шифрованием,
очень много шума. Меня поп- необходимо подготовить видео- mplex -o out.mpeg --format 9 о пароле вас спросят позже.
росили, по возможности, убрать материал в формате MPEG2 и с source.mpg sound.ac3 OnTheGo-диск хранит только ваши данные, кото-
этот шум. Я записал звуковую помощью некой утилиты (напри- В итоге получаем в файл рые могут быть зашифрованы; это не избавляет вас
дорожку на жесткий диск с помо- мер, QDVDAuthor – http:// out.mpeg, который можно вста- от загрузки с компакт-диска Mepis. С другой стороны,
шью mencoder, затем загрузился qdvdauthor.sourceforge.net) запи- вить в проект QDVDAuthor. В в этом случае не будет проблем с загрузкой с USB-
с LiveDVD Dynebolic (с диска из сать MPEG2 таким образом, QDVDAuthor же можно сделать и устройства, описанных выше, и вы можете скопиро-
приложения к LXF) и попытался чтобы файлы MPEG2 (или один меню. Чтобы сохранить те меню, вать файл .onthego.iso на другой диск, если пожела-
удалить из записи лишние шумы большой файл) были разбиты на которые были на исходном DVD, ете. НБ
при помощи инструмента Remove файлы VOB и размещены на надо спроектировать весь DVD в
Noise редактора Audiacity. Вроде своих местах в структуре. Однако, той же программе. ПС 8 Linux-планы

В
бы получилось неплохо. Теперь вы хотите заменить звуковую Мне хотелось бы использовать Moodle, систему
у меня возникла проблема – как дорожку. В таком случае вам управления курсами, с web-хостингом на базе
Linux, Apache и MySQL. На каком Linux это

100 Linux Format Март 2007


Ответы

лучше всего сделать? Moodle допускает установку на


Windows, но мне все-таки хотелось бы сделать все ! Вопрос-победитель (английская версия)
по-правильному.
Ли [Lee]
В поисках дзэн-тишины
О
С какой версии Linux лучше начать? Я думаю, быть обнаружены в системе. И еще, пользователям

В
это зависит от Ваших предпочтений. Как поль- Может, это звучит странно, но мне хотелось ведь не нужно производить обновление системы.
зователь Debian, я предложил бы этот дистри- бы, чтобы Zen-updater не запускался, когда Майк [Mike], с форума LXF

О
бутив, он стабилен и прост в установке. Если Вы нови- пользователь входит в систему. Подскажите, Решение очень простое. В директории /
чок, я бы посоветовал Ubuntu (он основан на Debian). пожалуйста, как это сделать. etc/xdg/autostart есть файл zen-updater-
Последняя серверная версия – Ubuntu 6.06 LTS. Я имею Мне это нужно потому, что при входе пользова- auto.desktop. Вам нужно открыть его в
опыт с Debian и могу сказать, что установка серверной теля через домен, Zen рушится, выдавая сообщение любимом текстовом редакторе и закомментировать
части займет не более получаса с момента вставки об ошибке. По-моему, это из-за того, что доменные строку Icon=zen-icon. После этого нужно перезапус-
компакт-диска. Пакетная система Debian очень проста в пользователи не имеют локального ID и не могут тить Zen-updater. СЛ
использовании, поможет команда dselect. СЛ

9 Групповое редактирование

В
Мне нужно через grep найти в файле строки, что есть по умолчанию, не дает, однако, всей гибкос- на имя того пользователя, от которого Вы хотите
содержащие некоторую подстроку, и целиком ти. Откройте /etc/init.d/vncserver, отыщите следующую запускать VNC.
удалить их. Причем проделать это со множест- строку: Значение 1 в VNCSERVERS заставляет запускать
вом файлов. Можете помочь? su - ${display##*:} -c \”cd && [ -f .vnc/ VNC на первом дисплее. Вы можете добавить альтерна-
Гоутхам Вутхаркар [Goutham Vutharkar] passwd ] && vncservers :${display%%:*}\” тивные дисплеи под именами других пользователей:

О
Можно использовать grep для этого: grep -v и замените ее на VNCSERVERS=”1:jdimpson 2:phred
string file выведет все строки, не содержащие su - ${display##*:} -c \”cd && [ -f .vnc/ 3:sysadmin”
подстроки string. Но для группового редакти- passwd ] && vncservers ${ARGS} Удостоверьтесь, что сервер запущен. Если нет, то
рования больше подходит sed. :${display%%:*}\” запустить его можно так (на Red Hat):
sed --in-place `/some string/d’ myfile Затем перейдите к следующему фрагменту: /etc/init/d/vncserver start
удалит все строки, содержащие ‘some string’. Для # The VNCSERVERS variable is a list of Теперь Вы можете соединяться с сервером с помо-
обработки множества файлов Вам нужно будет вос- # display: user pairs. щью любого VNC-клиента. СЛ
пользоваться циклом for (или утилитой find), посколь- # Uncomment the line below to start a VNC
ку опция --in-place в sed работает только с одиночны- # server on display :1 as my ‘myusername’ 11 Как-то одномерно

В
ми файлами. Подойдет одна из этих команд: # (adjust # this to your own). Успешно установил Mandriva Linux 2007 и
for f in *.txt; do sed --in-place `/some string/d’ “$f”; # You will also need to set a VNC password; теперь пытаюсь включить 3D-эффекты. Когда я
done # run ‘man vncpasswd’ to see how to do кликаю на иконке 3D-эффектов в центре управ-
find -name `*.txt’ -exec sed --in-place=.bak `/some # that. ления, все пункты сереют и появляется окно, говоря-
string/d’ “{}” `;’ # DO NOT RUN THIS SERVICE if your local щее, что моя система 3D-эффекты не поддерживает.
Добавление =.bak в последнем примере заставит # area network is untrusted! For a secure У меня GeForce 6600 от Nvidia, она прекрасно рабо-
sed сохранить резервную копию перед редактирова- # way of using VNC, see <URL:http://www. тала с Mandriva 2006. Как мне получить трехмерный
нием файла. НБ # uk.research.att.com/vnc/sshvnc.html>. рабочий стол?
VNCSERVERS=”1:jdimpson” Зэкари [Zachary], c форума LXF
10 VNC, пожалуйста!
О
ARGS=”-geometry 1024x768 -alwaysshared” Скорее всего дело в том, что Вы используете

В
Я соединяюсь со своим домашним сервером с Смените 1024х768 в ARGS на разрешение, соот- свободный драйвер nv. Он не поддерживает
помощью VNC (не через SSH!). Однако он не ветствующее Вашему дисплею. Можно добавить и 3D-ускорение, тут нужен фирменный драй-
отображает KDE-экран входа в систему, и я другие аргументы в ARGS. Также замените jdimpson вер от Nvidia, который можно скачать с www.nvidia.com
автоматически вхожу в систему под тем пользовате-
лем, который запустил VNC-сервер (не пробовал под
root’ом).
Я хотел бы, чтобы моя система (Slackware 10.2)
запускала VNC при загрузке, чтобы я мог видеть экран
входа в систему (KDM/XDM). У меня сейчас установлен
4-й уровень запуска. Есть идеи, советы или, может
быть, предложения по поводу другого ПО? У моего
сервера нет монитора.
Psykx, с форума LXF

О
Все, что Вам нужно – грамотно настроить
VNC-сервер. Замечание: VNC-сервер должен
быть запущен и настроен на запуск Вашего
любимого оконного менеджера. Вы можете сделать
это, отредактировав $HOME/.vnc/xstartup. Используйте
startkde& для запуска KDE, gnome-session& – для
Gnome, fvwm2& – для FVWM2. Также убедитесь, что
Вы запустили vncpasswd в $HOME/.vnc/passwd для
создания файла паролей.
Red Hat предоставляет простой путь запуска VNC-
сервера во время загрузки системы. Используйте
linuxconf для настройки скрипта vncserver (/etc/init.
d/vncserver) на запуск во время загрузки. Тот скрипт, OnTheGo – мобильная домашняя директория на USB-носителе для LiveCD Mepis.

Март 2007 Linux Format 101


Ответы

в виде инсталляционного пакета. Однако перед уста-


новкой драйвера понадобится установить еще кое-
какие пакеты – как минимум, исходные тексты ядра.
Mandriva больше не включает их в установочные
диски, поэтому Вам нужно добавить онлайн-репозито-
рии Mandriva в Центре управления.
Вам также потребуется установить компилятор.
Инсталлятор Nvidia поставляется с прекомпилиро-
ванными модулями для некоторых ядер, а для других
модуль собирается в процессе установки. Установив
драйверы, Вы должны отредактировать файл конфи-
гурации X-сервера, чтоб использовать новый драйвер.
Инсталлятор Nvidia требует, чтобы Вы выполняли его
без запущенного X-сервера, в чистой консоли.
К счастью, есть путь попроще. Penguin Liberation
Front (PLF) – это «официальный неофициальный» репо-
зиторий для Mandriva, где имеются несвободные (as in
speech) пакеты, которые юридически нельзя включить
в дистрибутив (например, libdvdcss, необходимый для
просмотра зашифрованных DVD). Первый шаг – доба-
вить этот и официальные репозитории в вашу систему.
Посетите http://easyurpmi.zarb.org и выберите подходя-
щие зеркала Mandriva и PLF. Лучше выбирать ближай-
шие к вам. Щелкните Proceed, и увидите изрядное коли- EasyURPMI и вправду прост. Добавляйте репозитории в Mandriva несколькими щелчками мыши.
чество команд, которые нужно ввести в терминале для
выполнения этого шага. Но их можно скопировать. Из
меню Mandriva откройте терминал System > Terminals > Для создания резервной копии наберите: столом KDE, устанавливаемом в Mandriva Linux по
Konsole, введите su для перехода в режим root и выде- cp xorg.conf xorg.conf-back умолчанию и поддерживает как простой обмен тексто-
лите мышью команду из браузера. Откройте файл в вашем любимом редакторе. выми сообщениями, так и передачу файлов, аватары и
Теперь поместите мышь над терминалом, нажмите Отыщите строку Option “XkbLayout” “язык” и замените прочие «полезности». Кроме того, TriX использует тот
среднюю кнопку для вставки команды, а затем – Enter. язык на gb, сохраните файл и перезагрузите машину же протокол, что и популярный Vypress Chat для
Если Вы в сети, то через несколько минут будут скача- (shutdown -r now). СЛ Windows, так что, когда ваша сеть расширится, вы
ны списки доступных для установки пакетов. сможете без проблем общаться с товарищами по сег-
Теперь запустите Центр управления Mandriva 13 Поболтаем? менту, которые еще не перешли на Linux. Единственный

В
(Система > Настройка > Настройка Вашего компьюте- Я настроил сеть между двумя компьютерами минус – TriX не входит в состав Mandriva, и вам придет-
ра), перейдите в секцию управления пакетами и в поле под управлением Mandriva Linux 2006, соединив ся самостоятельно собрать его из исходных текстов.
поиска напечатайте nvidia. Выберите пакет (сейчас это их посредством двух сетевых плат и кабеля. Что касается второго вопроса, проблема кроется
nvidia-8774-4plf, но версия может поменяться, когда С одной стороны, это смешно (два компьютера в сети), не в способе вызова программы. Оболочке Linux все
Вы будете это читать) и нажмите Применить. Если для но на деле очень удобно, поскольку раньше для того, равно, является ли файл двоичным (откомпилирован-
установки этого пакета потребуются другие, они будут что бы передать что-нибудь друг другу, приходилось ным) или текстовым (скриптом) – важно, чтобы в его
установлены автоматически, то есть выбрать нужно бегать туда-сюда с «флэшками»... Сейчас для обмена правах доступа был установлен бит ‘x’ (eXecutable).
только один пакет. файлами используем Samba, установленную с диска Для скриптов, не являющихся исполняемыми файла-
Наконец, перейдите в секцию Оборудование > Mandriva. Но возникла проблема: понадобился чат. Я ми (без установленного бита ‘x’) возможен альтерна-
Графический сервер и выберите драйвер Nvidia для знаю о том, что существуют сетевые чаты для Windows, тивный вариант запуска: интерпретатор имя_скрипта,
Вашей видеокарты. но о сетевых чатах для Linux я не слышал ничего. например: python mount_image.py. В данном случае
Когда Вы перезагрузитесь, драйверы NVIDIA будут Подскажите, пожалуйста, какие программы для Linux скрипт благополучно запускается на выполнение, но
доступны во всем их великолепии, и Вы сможете позволяют общаться по сети, не используя Интернет (и завершается с ошибкой, потому что интерпретатор
настроить 3D-эффекты. Наслаждайтесь! НБ как их настроить)? Если таких програм нет, подскажите, Python не может найти модуль wx – привязки к Python
Про EasyURPMI можно прочесть в учебнике Первые шаги как сделать что-то вроде ICQ-сервера (чтобы использо- для библиотеки wxWidgets (см. стр. 13). Установите
на стр. 54. вать в качестве сетевого чата Gaim). пакет wxPythonGTK – все должно заработать. ВС
И еще один вопрос: как запускать программу,
12 От @ до “ написанную на Python? Я установил Python, набрал: 14 Интернет на всех

В В
У меня наблюдается небольшая проблема после $ ./mount-image.py У меня сложилась такая проблема. На моем
установки SUSE 10.1. Пытаюсь ввести @, а полу- Traceback (most recent call last): компьютере установлен Mandriva Linux 2007
чаю “. И наоборот, вместо двойной кавычки File “./mount-image.py”, line 3, in ? Free. Данная машина подключена к локальной
появляется «собака». При установке я выбрал англий- import wx, os, sys, shutil, re сети и напрямую к Интернету по технологии ADSL.
ский (UK) язык, и он отображался на экране перед ImportError: No module named wx Вопрос: как можно сделать так, чтобы Интернет с
самым началом установки. Надеюсь, есть возможность Я где-то читал, что программы написанные на этом моего компьютера был доступен на всех машинах
исправить это без переустановки. Можете помочь? языке, не требуют компиляции, но как их запускать, я сети? Остальные машины управляются ОС Windows
С форума LXF не знаю. Подскажите, пожалуйста. XP Professional.

О
Надо изменить раскладку клавиатуры. Для andrewkn Рак А.П.

О О
этого отредактируйте файл /etc/X11/xorg. Чтобы пообщаться с соседом по локальной В состав Mandriva Linux входит специальный
conf, предварительно сделав резервную сети, совершенно необязательно настраивать мастер, позволяющий разделить Ваше
копию файла, на случай, если вдруг что-то испортите. собственный сервер ICQ или Jabber. Я реко- Интернет-соединение между несколькими
Эта операция потребует прав root (su -). Просто мендую вам обратить внимание на программу TriX (trix. компьютерами. Откройте Центр Управления Mandriva и
откройте терминал и перейдите в /etc/X11. sourceforge.net). Она хорошо интегрируется с рабочим перейдите в раздел Network & Internet. Нужная Вам

102 Linux Format Март 2007


Ответы

опция называется Internet Connection Sharing.


Аналогичными возможностями обладает програм-
ма Firestarter (www.fs-security.com) – своего рода
Нужна помощь!
аналог настольного брандмауэра для Windows. Во Для наилучшего ответа на ваш вопрос нам нужно lspci -vv >>system.txt
время первого запуска программы появится мас- знать как можно больше подробностей. Детально
тер, на втором шаге которого следует отметить опишите конфигурацию системы. Если вы получили Пожалуйста, помните, что сотрудники журнала НЕ
галочкой пункты «Internet Connection Sharing» и сообщение об ошибке, приведите текст сообщения и являются авторами или разработчиками Linux,
«Enable DHCP for local network», если Вы хотите, точно опишите вызвавшие его действия. Если у вас любых пакетов или дистрибутивов. Зачастую люди,
чтобы ваши клиенты Windows XP настраивались проблемы с оборудованием, то опишите его. Если отвечающие за приложения, выкладывают большую
автоматически (для этого в свойствах их сетевых Linux уже запущен, то выполните в root-терминале часть информации на web-сайты. Попробуйте
карт должна быть выбрана опция «Получать IP- следующие команды и прикрепите к письму файл почитать документацию!
адрес автоматически»). Последний способ будет system.txt:
работать не только с Mandriva, но и со всеми попу- Мы стараемся ответить на все вопросы. Если вы не
лярными дистрибутивами. ВС uname -a >system.txt нашли ответ на свой, это, возможно, потому, что мы
lspci >>system.txt уже ответили на похожий вопрос.

Март 2007 Linux Format 103


LXF HotPicks Лучшие новинки
открытого ПО на планете

LXF HotPicks
В ЭТОТ РАЗ ТОЛЬКО ДЛЯ ВАС: Partition Image GElemental Weatherspect
Ричард Драммонд
Ричард – свободный разработчик,
писатель и отец двух детей.
Он живет в Индиане, США, где
отчаянно скучает по британскому
Texmacs FreeCol GLChess Exaile KAlarm EDB Smb4k TВ, подогретому пиву и сосискам.

Инструмент резервного копирования

Partition Image
Версия 0.6.5 Сайт www.partimage.org

P
artition Image – подарок судьбы: инстру- файловых систем, предназначенных для копи-
мент для простого, эффективного рования. К счастью, сегодня программа умеет
создания и восстановления образов обращаться с разделами ext2, ReiserFS, JFS,
файловых систем. Хотите ли вы размножить XFS и FAT, что покрывает большую часть пот-
общий Linux-дистрибутив в сети однотипных ребностей Linux, а для HFS+, UFS и NTFS есть
компьютеров, или сэкономить время при пере- экспериментальная поддержка.
установке ОС, если случилось ужасное – обра- Partition Image имеет дело только с размон-
тите внимание на эту программу. тированными файловыми системами, а как же
Да, можно копировать раздел в файл корневой раздел? Решение – использовать
одной простой командой оболочки, но специ- отдельный загрузочный диск с установленной
альный инструмент сделает работу куда быст- Partition Image: например, проект предлагает
рее и надежнее. Partition Image знает, каким инсталляционный образ, на основе которого
образом разные файловые системы органи- можно записать загрузочную дискету или CD-
зуют данные на диске, поэтому нет необходи- ROM. Partition Image может хранить образы на
мости копировать разделы целиком – доста- удаленном сервере (возможно шифрование с
точно сохранить задействованные дисковые SSL). Клиент-серверная архитектура Partition Partition Image версиях планируется осуществить поддержку
блоки. Это и быстрее, и образ диска получает- Image доведена до совершенства в проекте работает на машинах неизвестных файловых систем, использовать
PPC, но, к
ся меньше. Кроме того, Partition Image умеет Clonezilla (см. http://Clonezilla.sourceforge.net), алгоритм LZO для быстрого сжатия образов
сожалению, пока
сжимать образы и разбивать их на части фик- способном рассылать полноценный дисковый и усовершенствовать поддержку NTFS при-
не справляется с
сированного размера, удобные для размеще- образ по компьютерной сети с помощью одно- блоками файловой влечением кода из проекта ntfsprogs. Ждем с
ния на съемных носителях. сторонней связи. системы HFS+. нетерпением!
Потенциальный недостаток Partition Последний раз мы рассматривали Partition
Image – необходимость явной поддержки Image два года назад (LXF62). В будущих

Шаг за шагом: Получение дискового образа

Выбор цели Настройка параметров Запись образа


Выберите размонтированную систему для Укажите метод сжатия (рекомендуем gzip) и Partition Image проверит файловую систему
сохранения в файле и имя образа. Нажмите F5. способ разбиения, затем нажмите F5. Добавьте и выведет статистику. Выберите кнопку ОК
описание и снова нажмите F5. и нажмите Enter. Резервирование пошло!

104 Linux Format Март 2007


LXF HotPicks

Обозреватель периодической таблицы

GElemental
Версия 0.9.2 Сайт www.kdau.com/projects/gelemental

В
прошлом году ученые-химики объяви- соответственно их химическим группам или
ли, что нестабильный тяжелый эле- агрегатному состоянию (газ, жидкость, твер-
мент под условным названием унунок- дое тело) при любой температуре по вашему
тий – не плод больного воображения и может выбору. Список допускает сортировку по раз-
существовать реально (впрочем, недолго). личным критериям: от атомного веса и имени
Действительно ли это прогресс, или ученая до даты открытия.
братия рассчитывает на процент с прода- Щелкните по элементу в любом представ-
жи обновленных химических талмудов? Не лении; откроется выпадающее окно с более
беремся судить, но в любом случае у нас есть подробным описанием. Здесь помещены Все вместе отсутствие некоторых данных по сравнению с
альтернатива для нищих студентов-химиков общие сведения: физические свойства, исто- (глубокий вдох): бумажными учебниками по химии. Почему бы,
всего мира: GElemental, обозреватель пери- рические факты (дата открытия и имя откры- «Литий, натрий, например, не сортировать элементы по элект-
одической таблицы с открытым исходным вателя) и даже происхождение названия. На водород, калий, роотрицательности или удельной теплоемкос-
фосфор, кислород…»
кодом. другой вкладке приведена более подробная ти, или не добавить еще сведений (например,
GElemental произошел от GPeriodic. Проект химическая статистика, в том числе атомные, о стабильности). Но автор рьяно стремится к
был портирован на C++, код реорганизован, электронные и термодинамические свойства, совершенству, и мы ожидаем появления недо-
графический интерфейс GTK модернизирован например, теплоемкость. стающих функций в следующих версиях.
с помощью привязок gtkmm++, обновлены GElemental – полезный источник дан- Одно из обещанных дополнений для буду-
химические данные и добавлены переводы на ных, и очень удобный. Мы, правда, заметили щих версий – интеграция с Blue Obelisk Data
другие языки. Все сделано добротно, резуль- Repository (хранилище данных, разделяемое
тат налицо.
Как и его родитель, GElemental умеет пред-
«Альтернатива для различными химическими приложениями) –
еще один шаг в сторону информативности и
ставлять элементы и в общепринятом виде,
как завещал Менделеев, и в виде списка.
нищих студентов- достоверности (больше глаз – меньше оши-
бок). Если это удастся осуществить, успех
В первом случае элементы подсвечиваются химиков всего мира.» гарантирован.

Метеоигрушка

Weatherspect
Версия 1.7 Сайт http://robobunny.com/projects/weatherspect/htm

В
ы подвержены британской нацио- Честно говоря, погода часто бывает пас-
нальной болезни – помешательству мурной, особенно в умеренном климате, пере-
на погоде? Вы никогда не пропускае- павшем Британии. Weatherspect оживляет кар-
те прогноз для судоходства? Проводите часы, тину флорой, фауной и прохожими. Изредка
приникнув к метеорологическому каналу? На попадается мелочь вроде птичек, кроликов, а
вашем рабочем столе постоянно обновляют- то и улиток. Деревья растут, плодоносят и увя-
ся записи о погоде? Если на все вопросы был дают. В небе появляются самолеты, пролетают Weatherspect – суперпользователя запустите инструмент cpan
ответ «да» – мы добыли вам крутой хак, вам спутники. Сюрреализм заходит и дальше, но это как выглянуть в оболочке и наберите:
понравится. не будем портить сюрприз. в окно. Облака, install Term::Animation
Weatherspect воспроизводит на терминале Weatherspect написан на Perl и требует дождь, деревья, вот install Weather::Underground
проходит слон…
анимированные сцены, имитирующие погод- наличия некоторых дополнительных моду- Легко. Перед первым запуском Weatherspect
на севере штата
ные условия, с помощью псевдографики ASCII. лей, которых у вас, возможно, еще нет: Term:: необходимо настроить. Запустите программу
Индиана? Минуточку!
Только сообщите, где живете – и программа Animation, для управления псевдографикой с ключом –c, затем просто следуйте инструк-
тут же оценит данные, воспроизведет метео- ASCII, и Weather::Underground для загрузки циям на мониторе.
рологически точную картину; в окно больше метеорологических данных. Инсталлировать Честно говоря, надо полагать, что практи-
выглядывать незачем. Например, изображе- модули можно с помощью CPAN. От имени ческой ценности у Weatherspect никакой, но
ние облачности и цифровые данные о скоро- слишком уж трудно удержаться и не попро-
сти ветра используются для анимации тучек, бовать. Как минимум вы сможете подивиться
сыплющих соответствующего вида осадками.
Если идет снег, вы увидите снежинки и сне-
«Скажите, где вы живете. на хакерское искусство парней, создавших
программу, и пожелать им более полезного
говиков. Если небо чистое, будет нарисовано
солнце в правильной позиции днем или луна в
Если идет снег, вы времяпрепровождения.

соответствующей фазе – ночью. увидите снежинки.»


Март 2007 Linux Format 105
LXF HotPicks

Редактор документов

TeХmacs Hottest
Pick
Версия 1.0.6.7 Сайт www.texmacs.org

К
огда Линус Торвальдс впервые вдарил Конечно, большинство инструментов набо-
по клавишам Vic 20, звезда компью- ра TeXmacs достижимо всего несколькими
терных наук Дональд Кнут организо- щелчками мыши – или, для мастеров, через
вал революцию в цифровом наборе с помо- несколько клавиатурных комбинаций – но
щью TeX. Кнут остался недоволен качеством ведь про них еще нужно узнать.
печати последнего тома своего многотомного
шедевра The Art of Computer Programming Матемагика
(Искусство программирования) и написал кое- TeXmacs нацелен на пользователей, кото-
какое ПО, чтобы исправить дело. рым часто приходится создавать документы
Результат – TeX, был принят на ура акаде- с большим количеством научных символов и
мической общественностью, так как он пре- математических формул. Поэтому здесь есть
восходно обрабатывал математические фор- два основных режима редактирования: текс-
мулы. Но так как для этого требуется помечать товый и математический. Интерфейс и кнопки
документы командами TeX или, чаще, макро- панелей инструментов подстраиваются под
сами, а потом вызывать TeX для выработки текущий режим. В текстовом режиме, напри-
печатного варианта, поколению WYSIWIG про- мер, есть инструменты для смены шрифта, а
грамма кажется слишком сложной. Тут высту- в математическом предлагаются выпадающие
пает на сцену TeXmacs, визуальный редактор палитры с математическими символами. Там Освоить TeXmacs структурированное создание документов с
документов, основанных на правилах набора есть все операторы, о которых вам приходи- непросто, но помощью встроенных стилей – включая сти-
TeX. лось слышать, и еще кое-что; множество ско- исчерпывающая ли, заимствованные у LaTeX (article, book или
TeXmacs можно рассматривать как RAD бок всевозможных фасонов; греческие буквы, документация – letter) – наряду с различными классическими
сработанная,
(среду быстрой разработки) для TeX. Как и каллиграфические и другие специальные сим- стилями научных журналов. Стиль позволяет
понятно, в TeXmacs –
любая другая среда, она предназначена в волы, которыми обычно выделяют перемен- легко разбить документ на компоненты типа
поможет «грызть
общем не для облегчения работы, а для уве- ные. Инструмент Table (Таблица) добавляет гранит…». заголовок, глава, главка, абзац, или более
личения продуктивности. TeXmacs экономит поддержку матриц, определителей и других специфические части, вроде теоремы, леммы
время, давая возможность конструировать табличных условных обозначений. И все это или доказательства. Стиль документа заставит
и редактировать документы визуально (без носит отпечаток красоты и точности TeX. TeXmacs следить за соблюдением выбранных
разделения на фазы редактирования и визу- Чтобы вы не бились над внешним видом типографских правил, предоставляя вам забо-
ализации), но изучить его не так-то просто. вашего творения, TeXmacs поддерживает ту о содержании.
Если понадобились диаграммы Фейнмана,
активно применяемые в квантовой теории
Осваиваем интерфейс TeXmacs поля, TeXmacs позволит вставить в докумен-
ты изображения: поддерживаются все стан-
дартные векторные и растровые форматы, а
Кнопки для «чего-угодно» также интеграция с Gnuplot и собственные
В меню можно найти любую весьма изощренные инструменты векторного
функцию TeXmacs, а самым рисования.
популярным из них присвоена
После создания документа TeXmacs может
клавиатурная комбинация.
распечатать его или экспортировать в HTML
(формулы обрабатываются либо как изобра-
жения, либо при помощи MathML), LaTeX, PDF
Быстрый доступ
или PostScript. Чтобы восхитить студентов,
Кнопки основной панели
инструментов для: загрузки, сопящих у вас за спиной, добавлен модуль
сохранения и распечатки презентации, с полноэкранным представлени-
документа; откатов, отмены ем документа. Поддержка печати, увы, арха-
откатов и пр.; вставки таблиц, ична: для отправки документа на принтер
рисунков и уравнений. нужно указать команду типа lpr или kprinter.
Кроме того, мы нашли, что PDF, созданные
Формулы или текст? TeXmacs, ставят на колени свободные про-
В зависимости от текущего граммы-просмотрщики типа KPDF или Evince
режима эта панель управления (Adobe Reader отработал без запинки).
предоставляет быстрый доступ К тому же TeXmacs весьма медлителен, а
к функциям форматирования Окно редактирования С одного взгляда
Подсвеченный прямоугольник В строке состояния выводятся его интерфейс нуждается в обновлении. И тем
текста, математическим
операторам или инструментам обрамляет текущий компонент запросы системы, отображается не менее для TeX-новичка это действительно
рисования. редактирования. Здесь мы видим информация о текущем режиме кратчайший путь к созданию математических
матричное уравнение. редактирования, шрифте и т.п. документов под Linux.

106 Linux Format Март 2007


LXF HotPicks

HotGames Развлекательные приложения


Стратегия

FreeCol
Версия 0.5.3 Сайт www.freecol.org

П
опулярным жанром фантасти- другие колониальные силы, а можно играть
ки становится пересмотр истории, с друзьями через Интернет.
интересующийся вопросом: что Элементы стратегии и распоряжения
было бы, если бы какие-то исторические ресурсами взяты из Civ, но здесь нуж-
события не произошли? Если вы любите ны более развитые политические навыки.
отвечать на подобные вопросы, FreeCol – Задача состоит в росте и развитии ваших
ваша игра. Вы получите шанс переиграть колоний, и почти сразу придется умиро-
колонизацию Америки. творять и аборигенов, и родное правитель- Глянь-ка, королева Инсталлятор – JAR-файл, который можно
Фактически это перенос в мир открытого ство. В помощь игрокам создан форум на Бесс! Управляй ты развернуть командой:
ПО классической Colonization, игры, создан- SourceForge, где можно обмениваться сведе- колониями вот этак, java -jar FreeCol-0.5.3-installer.jar
ной Верховным стратегом Сидом Майером ниями о том, как извлечь максимум работы бостонское чаепитие в той директории, куда этот файл загружен.
[Sid Meier]. Игровая логика Colonization и товаров из местных индейцев. было бы всемирным! Следуйте экранным подсказкам, и игра будет
близка к его сверхуспешной Civilization, и FreeCol написана на Java, для ее рабо- установлена в выбранное вами место, вмес-
FreeCol не отстает. Но у Colonization, а значит, ты необходима среда Java 1.5 или выше. те со значками на рабочем столе. Это как
и FreeCol, более узкая задача: игра начина- раз нехитрое дело; а вот умудриться избе-
ется с открытия Америки, а вы становитесь жать войн за территории, катастрофическо-
вице-королем колоний от избранной вами го неурожая и нашествия Макдональдсов –
нации – англичан, французов, испанцев или «Придется умиротворять посложнее будет.
голландцев. Ваша задача – колонизировать
Новый Свет, а затем обрести независимость
и аборигенов, и родное
от собственной нации. Компьютер играет за правительство.»

GUI для шахмат Черт! Следовало


бы мне знать, что
компьютер умен

GLChess и не попадется
на детский мат!

Версия 1.0.0 Сайт http://glchess.sourceforge.net

Ш
ахматы! Игра королей, возник- рендеринг и сглаживание. Помимо приятной
шая в Индии почти две тысячи внешности, GLChess добавляет игре ком-
лет назад, занимала умы ком- форта за счет функции сохранения игры
пьютерных гениев почти… да, почти 20 лет. (поддержка формата Portable Game Notation,
Но, хотя для IBM недавнее достижение чем- или PGN) и возможности проследить исто-
пионского уровня стоило нескольких мил- рию ходов.
лионов долларов, сегодня ваш скромный Версия 1.0 стабилизирована для вклю-
настольный Linux-компьютер с шахматным чения в игровой пакет предстоящей вер-
движком сделает то же самое бесплатно. сии Gnome 2.18. Жертвой при этом пала
GLChess – графическое оформление для сетевая составляющая, но можно бросить привязки Python с GTK и OpenGL, а для 3D
различных шахматных движков, включая вызов компьютеру или гостю. Если вы не также расширения GL для GTK (PyGTKGlExt).
Crafty, GNUChess и Phalanx. Фактически, про- хотите ждать выхода Gnome, придется уста- Последние доступны на домашней странице
грамма может общаться с любым движком, новить немало недостающего. Программа GLChess, вместе с пакетами для Debian и
понимающим Chess Engine Communication написана на Python и GTK, поэтому нужны Ubuntu. Библиотека Python Imaging ускорит
Protocol или Universal Chess Interface. отрисовку текстур. Мы не сможем помочь
Префикс ‘GL’ в названии – прозрачный вам растормошить мозги, а вот несколько
намек на то, что GLChess воспроизводит
объемное изображение игровой доски; но
«Префикс ‘GL’ намекает, часов наедине с GLChess – должны.

она приятно выглядит и в двух измерени-


ях, благодаря инструментарию Cairo, обес-
что GLChess создает 3D-
печивающему независимый от разрешения изображение доски.»

Март 2007 Linux Format 107


LXF HotPicks

Медиа-плейер

Exaile
Версия 0.2.7b2 Сайт www.exaile.org

П
рекратив детские споры о том, чей можно импортировать откуда угодно, с пока-
рабочий стол лучше, Exaile перенес зом имени исполнителя или названия альбома.
лучшие качества AmaroK с KDE на Exaile хранит сведения о коллекции во встро-
Gnome. енной базе данных SQLite, поэтому скорость
В наши дни простого воспроизведе- доступа не зависит от размеров музыкаль-
ния музыкальных дорожек недостаточ- ной библиотеки. Плейлисты можно созда-
но. Разумеется, Exaile умеет это делать с вать простым перетаскиванием дорожек, но в
комфортом, управляясь с самыми разными Exaile есть и более мощные инструменты.
звуковыми форматами (Ogg Vorbis, MP3 и, Например, можно автоматически создать Загрузка блема – прощай, рытье на полках, забитых
конечно, старым добрым аудио-CD). Помимо плейлист из 100 случайно выбранных доро- альбомных обложек аудиодисками.
этого, Exaile поддерживает сайты интернет- жек или 100 ваших любимых тем. Умная – это круто, но Как и многие современные приложения
радио Shoutcast (при установке инструмента программа позволит составить плейлисты из держать в руках Gnome, Exaile написан на Python. Вам понадо-
Streamripper возможна запись передачи на песен, отвечающих сразу нескольким запро- настоящий конверт бятся привязки Python к GTK, Glade, GStreamer
диск), общественного сетевого сервиса Last. сам пользователя – по имени исполните- долгоиграющей и несколько других библиотек, но, как прави-
пластинки – совсем
fm и даже ваш iPod. Есть инструменты для ля, названию альбома, жанру, году выпуска ло, они уже присутствуют в новейших версиях
другое дело.
автоматической загрузки и отображения аль- и многим другим критериям. Короче, поиск Gnome. Для поддержки XML Exaile требуется
бомной графики текущей дорожки, слов пес- дорожки для прослушивания больше не про- также ElementTree, включенный в Python 2.5,
ни и гитарной табулатуры, а в окне встроенно- но если у вас 2.4, установите сами. Загрузите
го браузера можно просмотреть сведения об с http://effbot.org/zone/element-index.htm – и
исполнителе, взятые из Wikipedia.
Но все эти приятности лишь оттеняют
«Поиск дорожки для слушайте на здоровье!

основную функциональность Exaile: управле-


ние музыкальной коллекцией и создание плей-
прослушивания больше
листов (списков воспроизведения). Музыку не проблема.»

Планировщик

KAlarm
Версия 1.9.2beta Сайт www.astrojar.org.uk/linux/kalarm.html

К
омпьютеры придерживаются распи- вой файл, запустить заданную пользователем
сания куда точнее, чем люди. Они команду или скрипт. События можно заплани-
никогда не проспят, не опоздают на ровать на указанный день, или определенное
автобус и не забудут о юбилее. KAlarm – одна время дня, или спустя какой-то промежуток
из программ, обращающих сверхпунктуаль- времени от указанного часа. Если необходимо,
ность компьютеров в вашу пользу, помогая события могут повторяться с регулярными
KAlarm способен
соблюсти расписание. Программа включена в интервалами, или в особые дни, ежегодно и не только залатать гих приложений, понимающих этот формат.
пакет PIM для KDE, но здесь мы рассмотрим даже при каждом входе в систему. Да, KAlarm дыры в вашей Например, существует функция импорта Дней
версию еще свежее включенной в последний необычайно гибок – прямо Cron, стандартный памяти насчет дат, рождения из KAddressbook.
релиз KDE. Новый KAlarm может работать планировщик Linux, только для людей. хотя и тут Эта тестовая версия очень отличается от
самостоятельно (необходимы лишь kdelibs, Неудивительно, что KAlarm прекрасно сов- пригодится! последней стандартной. Переработан интер-
не весь KDE), а может заменить стандартный местим с KDE и другими частями PIM, типа (надпись в красном фейс, особенно диалоговое окно редактиро-
экземпляр KAlarm. KOrganizer. Например, можно добавить сра- диалоговом окне: вания напоминаний; добавлена функция сле-
За простым названием (КБудильник) кро- батывание будильника в календарь KOrganizer «Возможен жения за другими часовыми поясами; исправ-
похмельный
ется больше, чем ненавистный звон поут- в качестве события. KAlarm хранит историю лено много ошибок, включая обработку висо-
синдром!»).
ру, хотя KAlarm годится и для этого. KAlarm оповещений в стандартном формате iCalendar косных годов и переход с летнего на зимнее
обрабатывает событие, к которому можно и запросто импортирует события из дру- время; добавлены переводы на другие язы-
привязать начало выполнения самых разных ки и обновлены прежние. Программа очень
задач, не только напоминаний типа «Юбилей
любимой тещи!». KAlarm может вывести напо-
«Хорошо совмещается полезная, попробуйте обязательно.

минание (дополнительно – произнести его с


помощью речевого движка KDE, KTTSD), по-
с KDE и другими
слать почтовое сообщение, проиграть звуко- приложениями PIM.»
108 Linux Format Март 2007
LXF HotPicks

Отладчик
Также выпущены

EDB
Версия 0.8.11 Сайт www.codef00.com/projects.php
Новые и обновленные программы,
заслуживающие вашего внимания...
Battle Just Started 0.0.5 Танковое
сражение на базе OpenGL.
http://bjs.sourceforge.net

Н
е путайте с покойной звездой хип- просматривать строки и выискивать ссылки
хопа (да помнят ли читатели Linux на особые адреса памяти, последовательнос- Darkhttpd 1.5 Быстрый, легкий web-
Format ODB?): EDB (сокращение от ти байтов или группы машинных команд. Эти сервер для статического контента.
http://dmr.ath.cx/net/darkhttpd
Evan’s Debugger, по имени автора, Эван Теран инструменты уникальны для Linux-отладчиков,
[Evan Teran]) – графический отладчик, напи- и делают EDB ценным приобретением для Desktop Data Manager 0.8.5 Менеджер
санный Qt 4. Это не красивая обертка для поиска брешей в закрытом коде или инженер- буфера обмена для Gnome.
EDB незаменим
http://data-manager.sourceforge.net
некоторых известных отладчиков типа GDB: ного анализа. для анализа программ
EDB – полностью самостоятельный проект. без исходного кода. GNU Classpath 0.93 Свободная
С виду он работает так же, как боль- реализация стандартной библиотеки
классов Java.
шинство других отладчиков – предоставляет www.gnu.org/software/classpath
инструменты для установки точек прерывания,
Gnofract 4D 3.2 Экспериментальный
просмотра регистров и т.д.; отличия появля-
браузер Mandelbrot и Julia.
ются в обработке программно-библиотечных http://gnofract4d.sourceforge.net
символов. Странно, но их необходимо сбра-
ISO Master 0.6 Графический редактор
сывать в отдельный файл с помощью спе-
ISO-образов. http://littlesvr.ca/isomaster
циального скрипта. EDB будет обращаться к
нему при загрузке соответствующего двоич-
ного файла или библиотеки – такое поведение,
вероятно, связано с тем, что EDB был создан
для анализа программ с закрытым исходным
кодом.
Есть мощные инструменты для опроса
областей памяти, вероятно используемых при-
ложением, включая стек, кучу и области, заня-
тые подключаемыми библиотеками. Можно

Браузер общих ресурсов SMB


Фракталы как 4D-объекты!

Smb4k
Версия 0.8.0 Сайт http://smb4k.berlios.de
Lives 0.9.8.2 Мощный пакет
для редактирования видео.
http://lives.sourceforge.net
Pascal Server Pages 1.6.0.0 Web-
разработка на Pascal?
http://psp.furtopia.org

П
ротокол Server Message Block (SMB), мыши и предоставляет диалоговое окно для
основа Windows-сетей, стал de facto отправки файла прямо на сетевой принтер. Qalculate! 0.9.5 Настольный калькулятор.
http://qalculate.sourceforge.net
стандартом доступа к разделяемым Эти глубоко продуманные решения, плюс
сетевым ресурсам, благодаря открытой реали- более тонкие инструменты – например, спо- RecordMyDesktop 0.3.1 Захват видео
зации, Samba. KDE и Gnome, например, имеют собность синхронизировать содержимое с экрана монитора.
Smb4k сканирует http://recordmydesktop.sourceforge.net
встроенную базовую поддержку Samba. Если локальной папки с сетевым ресурсом через сеть в поисках SMB-
вашему рабочему столу недостает соответст- rsync – делают Smb4k незаменимым средст- ресурсов и находит SynchroEdit 0.5 Позволяет
вующих функций, на помощь придет специ- вом работы в сети. редактировать документ нескольким
известные хосты по
пользователям одновременно.
альный SMB-браузер, Smb4k. имени или IP-адресу.
www.synchroedit.com
У KDE и у Gnome есть общий недостаток:
доступ к общим ресурсам по SMB у них воз- Trac 0.10.3 Менеджмент web-проектов
и отслеживание ошибок.
можен лишь через KDE или Gnome, соответ-
ственно. А Smb4k монтирует общие ресурсы в
локальную файловую систему, и к ним может
обратиться любое приложение. Он также поз-
воляет настроить и более сложные функции
Samba. Идентификация может проходить либо
со стандартным паролем, либо со специально
назначенным для каждой обменной сессии.
Среди других параметров сессии – имя пользо-
вателя и групповой ID, с которым монтируется
общий ресурс.
Smb4k дает возможность открывать сете- Свободно с Classpath.
вые ресурсы в Konqueror одним щелчком

Март 2007 Linux Format 109


LXF DVD90
В этом месяце: два Live-дистрибутива, два BSD и подборка статей журнала в формате PDF...

Магия на марше
Linux жив! И вовсе не в виде орд жутких роботов- альны для демонстрации возможностей Linux
убийц – пингвинов, сметающих все на своем пути, потенциальным пользователям: можно просто
а в формате Live-дистрибутивов. Knoppix первым дать человеку диск, и пусть с ним поработает, не
запустил и начал популяризировать Live Linux – боясь случайно повредить раздел Windows. Но,
т.е. версию ОС, которая работает непосредствен- возможно, самое важное – Live-дистрибутивы
но с CD и не требует установки на жесткий диск. открывают дверь в мир новой компьютерной
Когда в 2003 г. появился Knoppix, его повсемест- техники: портативную среду рабочего стола.
но сочли новшеством, но слишком медлитель- Записав все нужные настройки и файлы на запо-
ным для использования в качестве повседневной минающее USB-устройство, вы можете создать
системы Linux (поскольку CD и DVD работали привычную для вас среду почти на любом ПК.
куда медленнее жесткого диска). Однако многие Итак, в этом месяце мы рады предложить
Майк Сондерс из современных Live-дистрибутивов работают вам два лучших Live-дистрибутива на планете:
любовно подбирает исключительно в ОЗУ, гораздо быстрее, чем Knoppix, золотого ветерана, и только что вы-
содержимое диска Linux Linux, установленный на жесткий диск; и пущенную Live-версию Fedora. Но это только
Format, а также каждый день они находят все новые и глазурь поверх тортика – вы найдете еще и
поддерживает сайт www. новые сферы применения. Например, NetBSD, и OpenBSD, и новый релиз OpenOffice.
linuxformat.co.uk. Live-дистрибутивы идеальны для тести- org 2.1, исчерпывающий мастер-класс
рования совместимости вашего компью- Inkscape, нашу подборку лучших игр и новых
тера с Linux: не требуется проходить релизов программ с открытым кодом.
через весь процесс установки, чтобы Наслаждайтесь!
узнать, имеется ли полная поддержка mike.saunders@futurenet.co.uk
вашего оборудования. А еще они иде-

Шаг за шагом: Запускаем Fedora Core 6 Live


1 Загрузитесь 2 Проверьте
Загрузите ваш ПК с детали
LXFDVD, выберите Загружаясь, Fedora
Fedora Core 6 Live и будет показывать на
нажмите Enter. Если экране информацию
у вас более 1 ГБ о результатах и о хо-
ОЗУ, выберите оп- де загрузки. Можете
цию ниже для уско- проигнорировать эту
ренной загрузки. информацию, но ес-
ли процесс загрузки
внезапно прекратит-
ся, обратите внима-
ние на отчет об
ошибках.

5 Places 6 Сохранение
Меню Places позво- Fedora Live грузится
ляет вам просматри- с DVD, предназна-
вать информацию о ченного только для
вашем компьютере чтения, поэтому на-
или получать доступ до сохранять все со-
к другим дискам (на- здаваемые вами
пример, к DVD-ROM). файлы на другом ус-
Через это меню мож- тройстве. Вставьте,
но также соединять- например, USB-бре-
ся с другими ком- лок, и на экране по-
пьютерами, если вы явится соответству-
подключены к сети. ющий значок.

110 Linux Format Март 2007


Fedora Core 6 Live DVD

Дистрибутив Linux

Fedora Core 6 Live


Д
ва выпуска назад, в LXF87/88, мы мости ПК с Linux перед возможной покупкой,
включили в наш диск полную вер- для демонстрации Linux друзьям и коллегам,
сию Fedora Core 6. Исторически, этот и, наконец, просто ради удовольствия полу-
дистрибутив, появившийся благодаря Red Hat, чить новые программы.
существовал только для установки на жесткий Fedora Core 6 Live – это Linux, который
диск, но команда разработчиков Fedora забо- всегда с вами. Например, вы пришли в гости к
тилась и о Live-версии, и в этом месяце мы другу, и не в силах ни минуты больше стерпеть
рады представить вам плоды их труда. Fedora вида Windows – поэтому берете DVD, вставля-
6 Live вобрала самые передовые программы ете его, и через минуту перед вами знакомый
Fedora, объединив их в один загружаемый рабочий стол Linux вместо Синего экрана смер-
дистрибутив, который работает прямо с DVD, ти. Fedora 6 Live неотличима от любой версии
не требуя установки на жесткий диск. А зна- Fedora; но, естественно, поскольку она рабо-
чит, он весьма удобен для проверки совмести- тает непосредственно с DVD, по умолчанию на
жестком диске не будет ничего сохраняться.
Поэтому при перезагрузке все ваши файлы и
настройки будут потеряны, если не сохранить
их на USB-устройстве или другом носителе. Считаете
Чтобы запустить Fedora Core 6 Live, следуй- бутив, работающий с CD, никогда не сравнится стандартную
те приведенной пошаговой инструкции. Если по скорости с дистрибутивом, работающим синюю тему
хотите продемонстрировать заинтересованно- непосредственно с жесткого диска. Помните, скучноватой?
му пользователю силу и стабильность Linux, что вы можете создать CD-версию Fedora Live с Оживите рабочий
можете использовать это руководство, чтобы нашего DVD, следуя инструкциям в index.html на стол: пусть он будет
показать, насколько просто начать работу в DVD. Если при загрузке или при работе с Fedora в пурпурный
Linux. Требования к оборудованию – минимум у вас возникли проблемы, вам всегда помогут цветочек.
Fedora – не только работа, но и игра: катим 512 MБ ОЗУ и процессор 1 ГГц –достаточны на наших форумах на www.linuxforum.ru.
с горки в Planet Penguin Racer. для приемлемой работы системы, хотя дистри-

3 Gnome 4 Смотрим
Загрузившись, программы
Fedora запустит Откройте меню
рабочий стол Applications сверху
Gnome, готовый к справа, чтобы уви-
работе. Внизу эк- деть, какие про-
рана вы увидите граммы включены
панель задач и пе- в Fedora Live. Это
реключатель вир- офисные инстру-
туальных рабочих менты, программы
столов. для Интернета и
работы с графи-
кой.

7 Настройки 8 Финиш
Если вы хотите Закончив работу с
изменить какие-либо Fedora, нажмите
настройки, например, меню System >
разрешение экрана
Shut Down, и смо-
или раскладку
жете перезагру-
клавиатуры, откройте
меню System и зить или выклю-
просмотрите чить компьютер.
подпункты Preferences Не забудьте из-
и Administration. влечь DVD перед
следующим запус-
ком ПК.

Март 2007 Linux Format 111


DVD Knoppix 5.1.1

Дистрибутив Linux

Knoppix 5.1.1
Х
отя за последние годы появились
сотни Live-дистрибутивов, имя Исследуем функции Knoppix
Knoppix по-прежнему остается сино-
нимом портативного Linux – и по праву: ведь
из всех Live-дистрибутивов это, несомненно, Программа
Главное меню установки
по-прежнему лучший. Основанный на Debian, Для доступа к изобилию
Программа установки
Knoppix сочетает потрясающее по качеству приложений Knoppix,
Knoppix на жесткий
обнаружение оборудования с богатейшим нажмите на меню K.
диск – для продвину-
набором программ, и все это на одном-единс- тых пользователей –
твенном диске. Просто установите DVD в при- позволит завести
Главное меню Knoppix на постоянной
вод, загрузите компьютер – и перед вами пор-
Для доступа к изобилию основе.
тативная Linux-система, которую вы можете
приложений Knoppix,
взять с собой куда угодно, она не требует
нажмите на меню K.
установки на жесткий диск. Хотите показать Системный лоток
Используя его значки,
друзьям возможности Linux – установите DVD
в их компьютер, и через пару минут Linux
Панель можно изменить
Панель содержит кнопки раскладку клавиатуры
загрузится и заработает. запуска терминала, и подредактировать
Даже если вы вполне счастливы с своим просмотрщика файлов настройки трехмерно-
дистрибутивом, в этом релизе Knoppix есть Konqueror и OOo. го рабочего стола.
функция, которую вы наверняка не упустите –
трехмерный рабочий стол Beryl, ответвление
Compiz, принесшее на рабочий стол Linux видели рабочий стол-куб и выбор окон а-ля проблемы, можете воспользоваться режима-
знаменитые 3D-эффекты и прозрачность, на Expose в предыдущих выпусках Linux Format – ми Framebuffer, Failsafe и Debug, но при этом
фоне которых Mac OS X выглядит как старая Beryl зашел дальше и предлагает такие функ- Beryl не будет задействован.
развалина Windows 3.1. Возможно, вы уже ции, как просвечивание и отличный менеджер Knoppix можно также установить и на жес-
тем рабочего стола. Известно, что и Compiz, и ткий диск; программа установки считается экс-
Beryl весьма сложны в установке, и если они периментальной, но если вы пару раз устанав-
у вас не работают, немедля пробуйте Knoppix. ливали Linux раньше, то проблем у вас возник-
А потом покажите его тем, кто помчался было нуть не должно, просто следуйте подсказкам.
закупать Vista. Зайдите в меню K > Knoppix > Root Shell, и набе-
Knoppix требует минимум 256 МБ ОЗУ рите knoppix-installer (требуется минимум 2 ГБ
и процессор не ниже 1 ГГц, чтобы система на жестком диске). После установки вы полу-
работала ровно. Для ее запуска загрузите ПК чите систему Debian Unstable, которую можно
с LXFDVD и нажмите Enter в меню загрузки. обновлять из обычных репозиториев Debian.
Если хотите посмотреть на вышеупомяну- Еще несколько слов об этом рели-
тые 3D-эффекты рабочего стола, выбери- зе Knoppix: он включает в себя KDE 3.5.5,
те Knoppix 5.1.1 (Beryl 3D Desktop) в меню OpenOffice.org 2.1 и драйвер NTFS-3G, кото-
Из-за проблем с товарными знаками, загрузки, это включит Beryl, когда загрузится рый позволяет монтировать NTFS-разделы
Firefox в Knoppix называется IceWeasel. рабочий стол. Если при загрузке возникли Windows на чтение и запись.

Шаг за шагом: Работаем с 3D-рабочим столом Beryl


1 Загрузка 2 Вращение
Загрузите ПК с Нажмите и удержи-
DVD и выберите те Ctrl+Alt, затем
Knoppix 5.1.1 (Beryl щелкните левой
3D Desktop) из ме- кнопкой мыши и та-
ню загрузки. Linux щите мышь через
загрузится с DVD, весь экран, чтобы
и через пару мину- полюбоваться эф-
ту вы войдете в фектом модного ра-
рабочий стол KDE. бочего стола в виде
куба. Откройте пару
окон и переместите
мышь вверх-вправо
экрана – увидите
мини-изображения.

112 Linux Format Март 2007


OpenOffice.org 2.1 DVD

Офисный пакет

OpenOffice.org 2.1
Н
ачать с хорошей новости или с пло- ких мониторов одновременно, а Base облада-
хой? Начнем с хорошей: OpenOffice. ет куда лучшей совместимостью с Microsoft
org стал чуть быстрее. Ну, еще не сов- Office. Плюс к тому вышеупомянутое увели-
сем в той же лиге скорости, что и AbiWord, но в чение скорости и сотни исправлений ошибок
новом релизе 2.1 слегка улучшена производи- и прочих усовершенствований по сравнению
тельность. Если вы постоянно пользуетесь ООо, с версией 2.0.
то, возможно, заметите одну-две секунды, сэко- Для установки скопируйте файл openoffice.
номленные при загрузке. А плохая новость – org-2.1.tar.gz из раздела Office/OpenOffice.org
процедура установки по-прежнему невероят- нашего DVD на жесткий диск. Откройте терми-
но глупа. Вы думали, что программа установ- нал (например, Gnome Terminal или Konsole)
ки у одного из крупнейших и популярнейших и введите:
открытых проектов, наверное, достойная, так tar xfvz openoffice.org-2.1.tar.gz
ведь? Как бы не так – у ООо нет ни RPMs, ни cd openoffice.org-2.1/RPMS/
Debs, ни автопакетов [имеется в виду ориги- Распакуется архив openoffice.org-2.1.tar.gz,
нальная сборка, – прим. ред.], ни даже толко- и вы перейдете в получившуюся в результа-
вых имен директорий. Мы прилагаем руковод- те распаковки директорию. (Учтите, мы ее
ство по установке, оно поможет вам продраться переименовали, поскольку в исходной вер-
сквозь этот нонсенс, установить ООо и заста- сии ООо ее название нечеловечески длинно!). Удобно, что интерфейс OpenOffice.org 2.1 почти не изменился;
вить его работать за несколько минут. Перед установкой лучше удалить все старые на рисунке показана тема GTK.
Но сначала – пробежимся по основным версии OpenOffice.org с помощью менеджера
функциям ООо 2.1. Расширен экспорт HTML пакетов.
в Calc, редакторе электронных таблиц, что Далее, в системах, основанных на RPM –
позволяет более эффективно использовать например, в Fedora, Mandriva, PCLinuxOS или Документация
таблицы стилей, и web-страницы стали боль- OpenSUSE, вводите:
ше похожи на исходные электронные таб- su -c “rpm -ivh *”
Учебники по Inkscape
лицы. Инструмент создания презентаций Команда su попросит вас ввести пароль Несколько наших DVD фокусиро-
Impress теперь имеет поддержку для несколь- администратора и затем установит нужные вались на продвинутом общении
пакеты. Если вы работаете в Ubuntu, то ввести с Linux, интересном для крутых
вам надо следующее: пользователей и хакеров – обо-
sudo alien * рудование, программирование и
sudo dpkg -i *.deb сети. Но в этом месяце наши
RPM-пакеты конвертируются в Debs, а архивы в формате PDF содержат
затем установятся. увесистую коллекцию руководств
по Inkscape, редактору векторной
Теперь у вас есть ООо2.1, расположенный
графики с открытым исходным Руководство по Inkscape –
в /opt/openoffice.org2.1, и вы можете запустить настоящий университет
кодом. Мы все знакомы с растро-
его из терминала, введя: выми редакторами, типа Gimp, но векторной графики.
/opt/openoffice.org2.1/program/soffice если вам нужны изображения с
Итак, вперед - не забудьте только доба- варьируемым размером, не пре- У нас здесь руководство по
Экспорт электроннных таблиц в HTML еще вить пунктик в меню или ярлык на рабочий вращающиеся при увеличении в Inkscape на 45 страницах, напи-
не идеален, но постоянно улучшается. стол! шахматную доску, то без вектор- санное его гуру Дмитрием
ной графики не обойтись (она Кирсановым для LXF74–85, в
использует координаты объекта, разделе Журнал/PDFs.
а не пиксели). Руководство начнет с самых ос-
Inkscape вы найдете в разделе нов (что такое градиенты и кон-
Графика – это релиз 0.45, но туры) и доведет вас до работы с
3 Настройка пусть вас не пугает небольшой текстом и инструментами клони-
Нажмите на крас- номер версии – Inkscape уже об- рования. Овладев набором функ-
ный значок Emerald ладает весьма внушительными ций Inkscape, вы сможете испы-
в системном лотке, способностями и очень надежен, тать ваши новые умения в пароч-
чтобы открыть так что его уже на данной стадии ке проектов – например, создать
Beryl Settings можно считать версией 1.0. визитную карточку или сайт.
Manager и настро- Однако разработчики хотят снаб- Inkscape – прекрасная програм-
ить эффекты дить его еще кое-какими функ- ма и для начинающих, и для
(включая чудесный циями до выпуска первого пол- опытных дизайнеров векторной
эффект прозрач- ноценного релиза. Возможно, графики; с помощью нашего ру-
ности рабочего вам удастся получить свежай- ководства вы мигом научитесь
стола в форме шую версию Inkscape из репози- создавать профессиональные
куба). ториев пакетов, ну, а если нет, изображения.
скомпилируйте релиз 0.45 из ис-
ходного кода на нашем DVD.

Март 2007 Linux Format 113


DVD Новые релизы

Операционные системы

NetBSD, OpenBSD, FreeDOS


Е
сли вам как-то неуютно в Linux, почему администрирования и просто получите удо-
бы не испробовать другие замечатель- вольствие от знакомства с новыми ОС.
ные операционные системы с откры- Вы найдете образы CD ISO для разных плат-
тым кодом? Мы уже рассказывали о NetBSD и форм в разделе Дистрибутивы/NetBSD наше-
OpenBSD на страницах Linux Format, а теперь го DVD: x86 ПК, AMD64, серверы SPARC64 и
на нашем диске – самые свежие версии. PowerPC Macs. Можете записать эти образы на
Пусть Linux – большая любовь мира x86 CD-R и загрузить их на ваш компьютер, следуя
ПК, но NetBSD и OpenBSD выдержали слав- инструкциям в документации, содержащейся
ную борьбу, доказав, что они имеют право на в той же директории, что и ISO (INSTALL-i386.
жизнь. Например, NetBSD включает многие txt). То же касается и OpenBSD (Дистрибутивы/
программы, используемые в Linux (в том чис- OpenBSD), но сюда мы включили только образ
ле, KDE, Firefox и множество других), но при x86 ПК. Руководство по полной установке
этом обладает преимуществом переносимос- OpenBSD находится в INSTALL.TXT.
ти исходного кода: он работает более чем на
50 архитектурах, вплоть до экзотических Sega Эмулируйте
Dreamcasts и карманных компьютеров HP – и Есть альтернативная опция для ОС, не пре-
при этом имеет единое дерево исходного кода дусматривающая записи и загрузки с CD- Установив ОС на ваш виртуальный ПК, можете NetBSD работает на
(в отличие от Linux, где многие не-ПК архи- R: использовать эмулятор Qemu PC (раздел удалить опции -cdrom и -boot из верхней стро- множестве платформ
тектуры работают как ответвления). Помимо Система нашего DVD) для создания виртуаль- ки, чтобы загрузиться с жесткого диска. и преспокойно
этого, NetBSD очень компактна и нетребова- ного ПК, где можно опробовать эти ОС. Эта И в конце – по очереди, но не по значимос- использует KDE,
тельна, что превращает ее в идеальную ОС для операция выполняется в три шага. Первый – ти – для тех, у кого ностальгия по технологи- Apache и MySQL.
стареньких 486-х. установка Qemu с нашего DVD или репозито- ям прошлых лет: клон DOS с открытым кодом.
А вот OpenBSD гордится своей суперна- риев пакетов вашего дистрибутива. Второй – FreeDOS пригодится, чтобы играть в старые
дежной защитой, по праву хвастаясь тем, что создание образа виртуального жесткого дис- игры под DOS и работать со старыми приложе-
за добрых десять лет работы была обнару- ка, это делается так: ниями, от которых вы не в силах отказаться –
жена всего одна уязвимость в установке по qemu-img create virtual-hd.img 3G вся информация на www.freedos.org.
умолчанию. Именно так – всего одна удален- При этом создается файл с образом вир- FreeDOS 1.0 можно установить на эму-
но доступная брешь (т.е. ошибка в системе туального жесткого диска объемом 3 ГБ под лятор вышеописанным способом, а можно
безопасности, допускающая проникновения) названием virtual-hd.img. записать на диск и установить на жесткий
за целых десять лет. Установка по умолчанию Третий, заключительный шаг – запуск диск нормальным способом – образ freedos-
OpenBSD минимальна и сильно заблокиро- Qemu с указанием этого файла виртуального fullws-1.0.iso находится в разделе директории
вана, но все равно это большое достижение, жесткого диска и файла с ISO-образом, кото- Дистрибутивы/FreeDOS .
а команда OpenBSD создала многие инстру- рый воспроизводит CD-ROM:
менты безопасности, используемые в Linux, qemu -cdrom /path/to/netbsd-3.1-i386.iso -
включая OpenSSH. hda virtual-hd.img -boot d -m 256 И наконец…
Учтите, что OpenBSD и NetBSD – продвину- Здесь мы запускаем Qemu с виртуально-
тые ОС Unix: если вы делаете первые робкие го CD-ROM, указывая на наш файл с образом Как всегда, предлагаем вам тщательно отобранные,
лучшие новые игры для Linux, чтобы скоротать дол-
шажки Linux, они покажутся вам слишком NetBSD ISO и используя файл, созданный
гие зимние вечера. Самая яркая в нашей подборке –
сложными. Но если вы пользуетесь Linux уже ранее в качестве виртуального жесткого диска Warzone 2100, фантастическая стратегия в реальном
несколько месяцев и решили испытать нечто (- hda). Опция -boot заставит Qemu загрузить- времени, изначально выпущенная Eidos Interactive. В
новое, то попробуйте их – и вы многое узнаете ся с CD, а опция -m в конце сообщит Qemu, 2004, Eidos выпустил игру по лицензии GPL, и на
о различных прелестях Unix, приобретете опыт сколько мегабайт ОЗУ надо эмулировать. данный момент ею можно пользоваться и распростра-
нять совершенно свободно.
Для установки скопируйте файл warzone2100-2.0.5.package в до-
машнюю директорию и запустите его(возможно, сначала вам понадо-
бится сделать его исполняемым) или откройте терминал и введите sh
warzone2100-.0.5.package. После установки, запустите игру вводом в
терминале warzone2100, и начните с обучающего режима, чтобы поз-
накомиться с работой игры и с управлением. LXF
Warzone 2100:
хватит ли вам
ума привести
ваши футурис-
тические армии
к победе?

FreeDOS, клон DOS с открытым кодом, оживляет старину: текстовый режим..

114 Linux Format Март 2007


DVD

Информация
о диске
ВНИМАТЕЛЬНО ПРОЧТИТЕ ЭТО ПЕРЕД ТЕМ, КАК ИСПОЛЬЗОВАТЬ DVD-ДИСК !

ЧТО-ТО ПОТЕРЯЛИ?
Часто случается, что новые программы зависят от дру-
гих программных продуктов, которые могут не вхо-
дить в текущую версию вашего дистрибутива Linux.
Мы стараемся предоставить вам как можно
больше важных вспомогательных файлов. В боль-
шинстве случаев, последние версии библиотек и
другие пакеты мы включаем в каталог «Essentials»
(Главное) на прилагаемом диске. Поэтому, если в
вашей системе возникли проблемы с зависимостя-
ми, следует заглянуть именно туда.
ФОРМАТЫ ПАКЕТОВ
Мы стараемся включать как можно больше раз-
личных типов установочных пакетов: RPM, Deb или
любые другие. Просим вас принять во внимание,
что мы ограничены свободным пространством и
доступными бинарными выпусками программ. По
возможности, мы будем включать исходные тексты
для любого пакета, чтобы вы смогли собрать его
самостоятельно.
ДОКУМЕНТАЦИЯ
На диске вы сможете найти всю необходимую
информацию о том, как устанавливать и использо-
вать некоторые программы. Пожалуйста, не забы-
вайте, что большинство программ поставляются
вместе со своей документацией, поэтому дополни-
тельные материалы и файлы находятся в соответ-
ствующих директориях.
ЧТО ЭТО ЗА ФАЙЛЫ?
Если вы новичок в Linux, вас может смутить
изобилие различных файлов и расширений. Так как
мы стараемся собрать как можно больше вариантов
пакетов для обеспечения совместимости, в одном
каталоге часто находятся два или три файла для
различных версий Linux, различных архитектур,
исходные тексты и откомпилированные пакеты.
Чтобы определить, какой именно файл вам нужен,
необходимо обратить внимание на его имя или
расширение:
имя_программы-1.0.1.i386.rpm – вероятно, это
бинарный пакет RPM, предназначенный для работы
на системах x86;
имя_программы-1.0.1.i386.deb – такой же пакет, но
уже для Debian;
имя_программы-1.0.1.tar.gz – обычно это исходный
код;
имя_программы-1.0.1.tgz – тот же файл, что и выше
по списку: «tgz» - это сокращение от «tar.gz»;
имя_программы-1.0.1.tar.bz2 – тот же файл, но
сжатый bzip2 вместо обычного gzip;
имя_программы-1.0.1.src.rpm – также исходный код,
но поставляемый как RPM-пакет для упрощения
процесса установки;
имя_программы-1.0.1.i386.FC4.RPM – бинарный пакет
RPM для x86, предназначенный специально для
операционной системы Fedora Core 4;
имя_программы-1.0.1.ppc.Suse9.rpm – бинарный
пакет RPM, предназначенный специально для
операционной системы SUSE 9.x PPC;
имя_программы-devel-1.0.1.i386.rpm – версия для
разработчиков.

Если диск не читается...


Это маловероятно, но если все же прилагаемый к
журналу диск поврежден, пожалуйста, свяжитесь с
нашей службой поддержки по электронной почте:
disks@linuxformat.ru

Декабрь 2006 Linux Format 115


DVD

СОЗДАНИЕ УСТАНОВОЧНЫХ
ДИСКОВ ПРИ ПОМОЩИ
CDRECORD

Самый быстрый способ записать ISO-образ


на чистую матрицу – это cdrecord. Для всех
перечисленных ниже действий потребуют-
ся права root. Для начала определите путь
к вашему устройству для записи дисков.
Наберите следующую команду:
cdrecord -scanbus
После этого на экране терминала должен
отобразиться список устройств, подключен-
ных к вашей системе. SCSI-адрес каждого
устройства представляет собой три числа в
левой колонке, например, 0,3,0. Теперь вы
можете с легкостью записать образ на диск:
cdrecord dev=0,3,0 -v /путь к образу/image.iso
Чтобы упростить дальнейшее использова-
ние cdrecord, сохраните некоторые настройки
в файле /etc/default/cdrecord. Добавьте по
одной строке для каждого устройства записи
(вероятно, в вашей системе присутствует все-
го одно такое устройство):
Plextor= 0,3,0 12 16M
Первое слово в этой строке – это мет-
ка, затем, после адреса SCSI-устройства вы
должны указать скорость и размер буфера.
Теперь вы можете заменить SCSI-адрес в
командной строке на выбранную вами мет-
ку. Все будет еще проще, если вы добавите
следующее:
CDR_DEVICE=Plextor
Все, что вам теперь нужно для записи ISO-
образа – это набрать команду
cdrecord -v /path/to/image.iso
Если вы не из числа любителей команд-
ной строки, в таком случае вам придет на
помощь утилита gcombust. Запустите ее из-
под root, выберите вкладку Burn и ISO 9660
Image в верхней части окна. Введите путь
к образу, который вы хотите записать на
диск, и смело нажимайте на Combust!. Пока
ваш образ пишется на диск, можете выпить
чашечку кофе.

Другая ОС?
Вам не обязательно использовать Linux для
записи компакт-диска. Все необходимые фай-
лы уже включены в ISO-образ. Программы
вроде cdrecord просто переносят данные на
чистую матрицу. Если у вас нет устройства
для записи дисков, можно найти того, у кого
оно есть, и записать диск на его компьюте-
ре. На нем может стоять Windows, Mac OS X,
AmigaOS, или любая другая ОС.

Нет устройства для записи дисков?


А что, если у вас нет устройства, с помо-
щью которого можно было записать образ
на диск? Вы знаете кого-либо с таким уст-
ройством? Вам не обязательно использовать
Linux для записи дисков, подойдет любая
операционная система, способная распознать
пишущий привод (см. выше).
Некоторые дистрибутивы умеют монтиро-
вать образы дисков и выполнять сетевую
установку или даже установку с раздела жес-
ткого диска. Конкретные методы, конечно,
зависят от дистрибутива. За дополнительной
информацией обращайтесь на web-сайт его
разработчика. LXF

116 Linux Format Декабрь 2006


DVD

Информация
о диске
ВНИМАТЕЛЬНО ПРОЧТИТЕ ЭТО ПЕРЕД ТЕМ, КАК ИСПОЛЬЗОВАТЬ DVD-ДИСК !

ЧТО-ТО ПОТЕРЯЛИ?
Часто случается, что новые программы зависят от дру-
гих программных продуктов, которые могут не вхо-
дить в текущую версию вашего дистрибутива Linux.
Мы стараемся предоставить вам как можно
больше важных вспомогательных файлов. В боль-
шинстве случаев, последние версии библиотек и
другие пакеты мы включаем в каталог «Essentials»
(Главное) на прилагаемом диске. Поэтому, если в
вашей системе возникли проблемы с зависимостя-
ми, следует заглянуть именно туда.
ФОРМАТЫ ПАКЕТОВ
Мы стараемся включать как можно больше раз-
личных типов установочных пакетов: RPM, Deb или
любые другие. Просим вас принять во внимание,
что мы ограничены свободным пространством и
доступными бинарными выпусками программ. По
возможности, мы будем включать исходные тексты
для любого пакета, чтобы вы смогли собрать его
самостоятельно.
ДОКУМЕНТАЦИЯ
На диске вы сможете найти всю необходимую
информацию о том, как устанавливать и использо-
вать некоторые программы. Пожалуйста, не забы-
вайте, что большинство программ поставляются
вместе со своей документацией, поэтому дополни-
тельные материалы и файлы находятся в соответ-
ствующих директориях.
ЧТО ЭТО ЗА ФАЙЛЫ?
Если вы новичок в Linux, вас может смутить
изобилие различных файлов и расширений. Так как
мы стараемся собрать как можно больше вариантов
пакетов для обеспечения совместимости, в одном
каталоге часто находятся два или три файла для
различных версий Linux, различных архитектур,
исходные тексты и откомпилированные пакеты.
Чтобы определить, какой именно файл вам нужен,
необходимо обратить внимание на его имя или
расширение:
имя_программы-1.0.1.i386.rpm – вероятно, это
бинарный пакет RPM, предназначенный для работы
на системах x86;
имя_программы-1.0.1.i386.deb – такой же пакет, но
уже для Debian;
имя_программы-1.0.1.tar.gz – обычно это исходный
код;
имя_программы-1.0.1.tgz – тот же файл, что и выше
по списку: «tgz» - это сокращение от «tar.gz»;
имя_программы-1.0.1.tar.bz2 – тот же файл, но
сжатый bzip2 вместо обычного gzip;
имя_программы-1.0.1.src.rpm – также исходный код,
но поставляемый как RPM-пакет для упрощения
процесса установки;
имя_программы-1.0.1.i386.FC4.RPM – бинарный пакет
RPM для x86, предназначенный специально для
операционной системы Fedora Core 4;
имя_программы-1.0.1.ppc.Suse9.rpm – бинарный
пакет RPM, предназначенный специально для
операционной системы SUSE 9.x PPC;
имя_программы-devel-1.0.1.i386.rpm – версия для
разработчиков.

Если диск не читается...


Это маловероятно, но если все же прилагаемый к
журналу диск поврежден, пожалуйста, свяжитесь с
нашей службой поддержки по электронной почте:
disks@linuxformat.ru

Декабрь 2006 Linux Format 117


DVD

СОЗДАНИЕ УСТАНОВОЧНЫХ
ДИСКОВ ПРИ ПОМОЩИ
CDRECORD

Самый быстрый способ записать ISO-образ


на чистую матрицу – это cdrecord. Для всех
перечисленных ниже действий потребуют-
ся права root. Для начала определите путь
к вашему устройству для записи дисков.
Наберите следующую команду:
cdrecord -scanbus
После этого на экране терминала должен
отобразиться список устройств, подключен-
ных к вашей системе. SCSI-адрес каждого
устройства представляет собой три числа в
левой колонке, например, 0,3,0. Теперь вы
можете с легкостью записать образ на диск:
cdrecord dev=0,3,0 -v /путь к образу/image.iso
Чтобы упростить дальнейшее использова-
ние cdrecord, сохраните некоторые настройки
в файле /etc/default/cdrecord. Добавьте по
одной строке для каждого устройства записи
(вероятно, в вашей системе присутствует все-
го одно такое устройство):
Plextor= 0,3,0 12 16M
Первое слово в этой строке – это мет-
ка, затем, после адреса SCSI-устройства вы
должны указать скорость и размер буфера.
Теперь вы можете заменить SCSI-адрес в
командной строке на выбранную вами мет-
ку. Все будет еще проще, если вы добавите
следующее:
CDR_DEVICE=Plextor
Все, что вам теперь нужно для записи ISO-
образа – это набрать команду
cdrecord -v /path/to/image.iso
Если вы не из числа любителей команд-
ной строки, в таком случае вам придет на
помощь утилита gcombust. Запустите ее из-
под root, выберите вкладку Burn и ISO 9660
Image в верхней части окна. Введите путь
к образу, который вы хотите записать на
диск, и смело нажимайте на Combust!. Пока
ваш образ пишется на диск, можете выпить
чашечку кофе.

Другая ОС?
Вам не обязательно использовать Linux для
записи компакт-диска. Все необходимые фай-
лы уже включены в ISO-образ. Программы
вроде cdrecord просто переносят данные на
чистую матрицу. Если у вас нет устройства
для записи дисков, можно найти того, у кого
оно есть, и записать диск на его компьюте-
ре. На нем может стоять Windows, Mac OS X,
AmigaOS, или любая другая ОС.

Нет устройства для записи дисков?


А что, если у вас нет устройства, с помо-
щью которого можно было записать образ
на диск? Вы знаете кого-либо с таким уст-
ройством? Вам не обязательно использовать
Linux для записи дисков, подойдет любая
операционная система, способная распознать
пишущий привод (см. выше).
Некоторые дистрибутивы умеют монтиро-
вать образы дисков и выполнять сетевую
установку или даже установку с раздела жес-
ткого диска. Конкретные методы, конечно,
зависят от дистрибутива. За дополнительной
информацией обращайтесь на web-сайт его
разработчика. LXF

118 Linux Format Декабрь 2006


Содержание DVD

Содержание DVD
ЖУРНАЛ WebMonx............Монитор сайтов.
Blender .............Примеры из статьи. XChat ..................IRC-клиент.
Gtk ....................Примеры из статьи.
Esoteric.............Экзотические языки программирования. ОФИС
JavaEE ..............Примеры из статьи. OpenOffice.org .....Офисный пакет.
Mono.................Примеры из статьи. Scribus ................Настольная издательская система.
PDFs .................Учебники Inkscape. SoftMaker demo ..Пробная версия офисного пакета.
Roundup............Клиенты BitTorrent.
СЕРВЕР
PostgreSQL .......Полный текст интервью с Алексеем
Apache ................Web-сервер.
Харитоновым.
Lightbird..............IM-сервер и клиент.
РАБОЧИЙ СТОЛ mod_cband .........Модуль Apache 2.
Day Planner ......Утилита планирования времени. MySQL ................Сервер баз данных.
Enlightenment ...Оконный менеджер. SugarCRM...........CRM-система.
GCstar ...............Менеджер коллекций. У Claws Mail, ответвления Sylpheed, аккуратный
СИСТЕМА интерфейс в стиле Evolution.
GnuCash ...........Персональный финансовый менеджер.
Grub ....................Тестовая версия загрузчика.
Hipo ..................Менеджер данных iPod.
KThinkBat ...........Монитор батареи ThinkPad.
KCatalog ...........Инструмент каталога мультимедиа.
Ndiswrapper........Слой совместимости
TkFlightPlan ......Планировщик.
с драйвером Windows.
Xpdf ..................Программа просмотра PDF.
Qemu ..................Эмулятор ПК.
РАЗРАБОТКА QtEmu .................Интерфейс Qt для Qemu.
FreeBasic ..........Компилятор Basic. Tweak .................Менеджер скрытых настроек KDE.
Monkey Studio ..IDE на базе Qt. XenMan ..............Менеджер виртуализатора Xen.
Mono.................Открытая реализация .NET.
ГЛАВНОЕ
MonoDevelop ....C# IDE.
ATI driver ............Графический драйвер.
wxWidgets ........GUI-инструментарий.
Avifile ..................Библиотека чтения/записи AVI файлов.
ДИСТРИБУТИВЫ Bash....................Командная оболочка.
Fedora ...............Live-дистрибутив, выпущенный Red Hat. CheckInstall ........Программа создания
FreeDOS ............DOS-совместимая ОС. двоичных пакетов.
Knoppix .............Live-дистрибутив. Coreutils .............Утилиты командной строки.
NetBSD .............Переносимая ОС. CSV .....................Список файлов, содержащихся Ищете новую IDE? В Monkey Studio есть
OpenBSD ...........Супербезопасная ОС. на диске. подсветка синтаксиса и завершение кода.
GLib ....................Низкоуровневая библиотека.
ИГРЫ Glibc....................Библиотека GNU C.
Brain Party ........Подборка мини-игр. GTK .....................GUI-инструментарий.
Enigma ..............Головоломка. HardInfo ..............Информация и оценка системы.
Warzone 2100 ..Стратегия в реальном времени. Jigdo ...................Создатель ISO-образов.
X-Moto ..............Гонки на мотоциклах. Kernel .................Свежий релиз ядра Linux.
LibXML2 .............Анализатор и набор
ГРАФИКА инструментов XML.
Inkscape ...........Редактор векторной графики. Ncurses...............Оконный инструментарий
KPhotoAlbum ....Менеджер изображений. текстового режима.
Linman ..............Программа фрактального увеличения. Nvidia driver .......Графический драйвер.
Python.................Язык программирования.
СПРАВКА
Rawrite ...............Запись образов на дискеты.
Rute ..................Руководство по администрированию
SBM ....................The Smart Boot Manager.
Linux.
SDL .....................Библиотека мультимедиа.
HOTPICKS
EDB ...................Отладчик. Если вы любите
Exaile ................Медиа-плейер. Kickstart II со времен
FreeCol .............Клон Colonization. 8 бит, испытайте свои
GElemental........Программа просмотра периодической виртуальные навыки
таблицы. мотогонщика
GLChess............Трехмерные шахматы. в X-Moto.
KAlarm ..............Персональный планировщик.
Partition Image ..Резервное копирование разделов.
Smb4k ...............Браузер ресурсов SMB.
TeXmacs ...........Платформа
для типографского набора.
Weatherspect ...Программа просмотра погоды ASCII.

ИНТЕРНЕТ
Claws Mail ........Email-клиент.
Firefox...............Web-браузер.
iPodder .............Получатель подкастов.
Pan ...................Программа для чтения новостей.

Март 2007 Linux Format 119


Reviews Xxx

Главное в мире Linux

Журнал зарегистрирован Федеральной службой по надзору за соблюдением


законодательства в сфере массовых коммуникаций и охране культурного
наследия
ПИ № ФС77-21973 от 14 сентября 2005 года
Выходит ежемесячно. Тираж 5000 экз.

РЕДАКЦИЯ РУССКОЯЗЫЧНОЙ ВЕРСИИ:


ГЛАВНЫЙ РЕДАКТОР
Валентин Синицын info@linuxformat.ru
Литературные редакторы
Родион Водейко, Елена Толстякова, Иван Мищенко
Переводчики
Александр Бикмеев, Светлана Кривошеина, Александр Кузьменков, Алексей Опарин,
Валентин Развозжаев, Сергей Супрунов, Александр Черных, Юлия Шабунио
Допечатная подготовка
Мария Пучкова, Родион Водейко
Креативный директор
Станислав Медведев
Технический директор
Денис Филиппов
Директор по рекламе

в апреле
Денис Игнатов +7 812 965 7236 advert@linuxformat.ru
Заместитель генерального директора
Софья Виниченко
Генеральный директор
Павел Фролов
УЧРЕДИТЕЛИ
частные лица
ИЗДАТЕЛИ

В ожидании
Станислав Медведев, Виктор Федосеев, Павел Фролов

Отпечатано в типографии «Текст», ООО «ППК «Текст»


188680, Ленинградская область, Всеволожский район, Колтуши, д.32
Заказ _____
Пре–пресс: d.r.i.v.e-group

Gimp
РЕДАКЦИЯ АНГЛОЯЗЫЧНОЙ ВЕРСИИ:
Редактор Ник Вейч (Nick Veitch) nick.veitch@futurenet.co.uk
Заместитель редактора Пол Хадсон (Paul Hudson) paul.hudson@futurenet.co.uk
Художественный редактор Эфрейн Эрнандес-Мендоса
(Efrain Hernandez-Mendoza) efrain.hernandez-mendoza@futurenet.co.uk
Новостной редактор Майк Сондерс (Mike Saunders) mike.saunders@futurenet.co.uk
Литературный редактор
Ребекка Смолли (Rebecca Smalley) rebecca.smalley@futurenet.co.uk
Штатный автор
Грэм Моррисон (Graham Morrison) graham.morrison@futurenet.co.uk
Ассистент по выпуску Новый крупный релиз уже на горизонте, но почему это заняло так
Эндрю Грегори (Andrew Gregory) andrew.gregory@futurenet.co.uk

Авторы
много времени, и что произошло c GEGL?
Марк Бейн (Mark Bain), Ладислав Боднар (Ladislav Bodnar), Нейл Ботвик (Neil
Bothwick), Энди Ченнел (Andy Channelle), Ричард Драммонд (Richard Drummond),
Попробуем разобраться...
Марко Фиоретти (Marco Fioretti), Стефан Лукас (Stephan Lucas), Евгений Балдин,
Андрей Боровский, Андрей Прахов, Петр Семилетов, Александр Супрунов, Алексей
Федорчук, Александр Бабаев, Илья Шпаньков

15 шагов к безопасности
Художественные ассистенты: Зигги Бейкер (Ziggi Baker), Энди Онстед (Andy Ounsted)
Фотографии: Джейсон Каплан (Jason Kaplan)
Иллюстрации: Нейл Бартлет (Neil Bartlett), Пол Блехфорд (Paul Blachford), Elly Walton
Illustrations, Крис Винн (Chris Winn)

КОНТАКТНАЯ ИНФОРМАЦИЯ
Мы научим вас, как защитить компьютер дома, в серверной и
UK: Linux Format, 30 Monmouth Street, Bath BA1 2BW
Tel 01225 442244 Email: linuxformat@futurenet.co.uk
даже в Сети!
РОССИЯ:
Санкт-Петербург (редакция): ул. Гончарная, 23, офис 54, телефон: (812) 717-00-37
Представительство в Москве:
пр.Мира, 161, телефон +7(495) 799-18-63, +7(495)136-88-45
Email: info@linuxformat.ru, Web: www.linuxformat.ru Обзор: Nokia N800
Авторские права: Статьи, переведенные из английского издания Linux Format, являются
собственностью или лицензией Future Publishing Ltd (Future plc group company). Все права
зарегистрированы. Никакая часть данного журнала не может быть повторно опубликована без
Новый интернет-планшет приходит в Россию. Не пора ли
письменного разрешения издателя.
Все письма, независимо от способа отправки, считаются предназначенными для публикации,
запланировать очередную покупку?
если иное не указано явно. Редакция оставляет за собой право корректировать присланные
письма и другие материалы. Редакция Linux Format получает неэксклюзивное право на
публикацию и лицензирование всех присланных материалов, если не было оговорено иное.
Linux Format стремится оставлять уведомление об авторских правах всюду, где это возможно.

Эрик Оллмен
Свяжитесь с нами, если мы не упомянули вас как автора предложенных вами материалов и мы
постараемся исправить эту ошибку. Редакция Linux Format не несет ответственности за опечатки.
Все присланные материалы могут быть помещены на CD или DVD-диски, поставляемые вместе с
журналом, если не было оговорено иное.
Ограничение ответственности: используйте все советы на свой страх и риск. Ни при каких условиях Интервью
редакция Linux Format не несет ответственность за повреждения или ущерб, нанесенные вашему
компьютеру и переферии вследствие использования тех или иных советов.
За содержание рекламных материалов редакция ответственности не несет.
Создатель Sendmail о том, откуда взялся
Linux-зарегистрированная торговая марка Линуса Торвальдса (Linus Torvalds). Название «GNU/
Linux» заменяется на «Linux» в целях сокращения. Остальные торговые марки являются
собственностью их законных владельцев.
спам.
Linux Format является торговой маркой Future Publishing Ltd (Future plc group company).
За информацией о журналах, издаваемых Future plc group company, обращайтесь
http://www.futureplc.com

© Linux Format 2005


© Future Publishing Ltd 2005

Внимание! Содержание следующих выпусков может изменяться без уведомления

120 Linux Format Xxx 2006


B AT H • L O N D O N • M I L A N • N E W Y O R K • PA R I S • S A N D I E G O • S A N F R A N C I S C O

You might also like