Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Ловушки для капризных программ

Крис Касперски

Хакер, номер #089, стр. 089-106-2


* качество автоматических инсталляторов в большинстве своем оставляет желать лучшего, и скомпилированную программу еще долго приходится дорабатывать напильником, руками, хвостом и головой;

* готовые сборки обычно включают в себя "бонусы" типа нестандартных цветовых схем и прочих компонентов, созданных сторонними разработчиками, которых в "официальных" исходных текстах может и не быть;

* существует тысяча причин, по которым собранная "вручную" программа может работать неправильно или нестабильно. Например, пользователь активировал "соблазнительную" опцию, находящуюся в стадии "under construction" и приводящую к появлению глюков в самых неожиданных местах;

* программы, собранные из исходников, значительно труднее удалить из системы, чем тот же rpm-пакет (впрочем, существуют утилиты, автоматизирующие этот процесс);

* если необходимые нам опции отсутствуют в официальной сборке, например поддержка x86-64 в BOCHS, то практически всегда можно найти неофициальную сборку, в которой все это сделано за нас. Правда, далеко не все они собраны правильно;

* пословица "лучше за день долететь, чем за час добежать" в условиях сурового корпоративного мира неприменима, и если готовая сборка хоть как-то гарантированно работает, то эксперименты с ручной компиляцией "за просто так" нам никто не оплатит.

Универсального решения нет! Каждый путь содержит свои минусы и плюсы. Мыщъх рекомендует: сначала скачать готовую сборку, немного поработать с программой, разобраться в структуре каталогов, освоиться с основными возможностями и только потом приступать к экспериментам. По крайней мере, правильно собранный эталон у нас всегда будет перед глазами, и если компиляция пойдет наперекосяк (или собранная программа откажет в работе), то он поможет установить, что мы делаем не так и в каком направлении нужно вращать хвостом.

[философская подготовка]

Компиляция программы всегда начинается с чтения инструкции. Заходим на главный сайт, находим, где у них download, скачиваем changelog (changes, what's new, readme) и вдумчиво читаем. Чем отличается наша версия от этой, и нужны ли нам все эти нововведения или нет? Практика показывает, что большинство программ останавливается в своем развитии еще в зачатии, а затем "жиреет", наращивая избыточную функциональность, двигаясь по пути Microsoft. Не будем гнаться за модой, стремясь использовать последние версии программ только потому, что они "последние".

Программа — это не игрушка! Это — инструмент! Даже небольшие изменения интерфейса или особенностей поведения зачастую приводят к жутким неудобствам и снижению производительности труда. Хороший хакер работает с клавиатурой, как заправский пианист, — пальцы так и летают. Все движения заучены наизусть, и переучиваться во имя новой версии никто не будет, если, конечно, эта версия не содержит чего-то действительно необходимого.

Пользователи в этом отношении более прогрессивны и качают все, что только попадает в их поле зрения. Существует предубеждение, что лучше всего скачивать стабильные ветви (stable) или релизы (release), - дескать, они работают намного надежнее экспериментальных альфа/бета-версий. Какая-то доля правды в этом есть, но в общем случае дела обстоят не совсем так. Стабильные версии выходят достаточно редко. За это время в них находят баги, которые планомерно устраняются в промежуточных версиях со статусом "нестабильные". В промежутках между битвами с багами разработчики добавляют новые функциональные возможности или расширяют уже существующие.

Назад на стр. 089-106-1  Содержание  Вперед на стр. 089-106-3