You are on page 1of 147

Создание легкой десктопной системы на базе Slackware

I - Введение
Slackware пользуется заслуженной популярностью как классический linux
дистрибутив, и поговорка "кто знает Red Hat тот знает только Red Hat, кто знает
Slackware тот знает linux" несмотря на явный снобизм поклонников "бога Патре­
га" все же имеет под собой основания. Одним из преимуществ Slackware является
возможность простого создания на ее основе практически любой системы, в том
числе быстрой и легкой десктопной, о чем далее и пойдет речь. Есть дис­
трибутивы, клоны Slackware, созданные именно с этой целью, типа Аbsolute, но
все же лучше создавать систему под себя, с максимальным учетом именно своих
потребностей, и Slackware пожалуй как никакой другой дистрибутив подходит
именно для этой цели.
Легкость и быстрота системы определяется выбором WM (DM) , набором
программ и оптимизацией программ и системы в целом. Первое исключает KDE,
Gnome, даже новые версии XFCЕ, остается разве что LXDE, но набор программ в
нем совершенно не устраивает. Оптимизация наиболее часто используемых про­
грамм и нескольких базовых системных пакетов осуществляется конфигурацией
исходя из имеющихся потребностей к их возможностям и сборкой из сорцов
компилятором, оптимизированным именно под Ваш комп. Оптимизация
системы в целом осуществляется ее настройкой согласно специфическим
требованиям к десктопу.
Такой подход был выбран по банальной причине, возиться с gentoo нет ни­
какого желания, комп все таки создан для того чтобы им пользоваться, а не для
компиляции программ, в тоже время у каждого есть минимальный набор из не­
большого количества наиболее часто используемых программ, на которые стоит
потратить некоторое, не такое уж большое, время, чтобы довести их до ума. Кро­
ме того, такой подход позволяет иметь самые свежие версии наиболее часто ис­
пользуемых программ.
Исходя из вышесказанного были выбраны IceWM, openbox и Enlightenment в
его разных версиях и набор наиболее часто используемых программ. Такой
выбор WM объясняется довольно просто, это наиболее распространенные WM
(Enlightenment вообще то DE, но его программы лучше не трогать, они мало­
функциональны и глюкавы), fvwm велик, могуч но и страшен, копаться в его на­
стройках занятие не для слабонервных, остальные весьма мало распространены и
доводить их до ума приходится самому с нуля, всякие тайловые изначально не
рассматривались. IceWM быстр, прекрасно и легко настраиваем под любой вкус,
имеет отлично документированные конфиги, но хотя его внешний вид и можно
настроить самыми красивыми темами, макет всех его тем в принципе несколько
схож. Openbox сейчас, пожалуй, самый массовый WM. Enlightenment E16 еще бо­
лее быстр чем IceWM, имеет прекрасную графическую конфигурялку, но его
внешний вид, в отличии от IceWM, можно сделать практически любым, со мно­
жеством уже имеющихся великолепных тем. Enlightenment E18 еще более красив,
и практически так же быстр как IceWM. Enlightenment что называется надо "про­
никнуться" но потом отказаться от него очень трудно, все остальные кажутся уже
какой­то бледной поделкой. Почему несколько WM ответ простой ­ один может и
надоесть.

Причем ниже сказанное применимо к любому набору Ваших любимых про­
грамм, любимому WM(DM), хоть к KDE из самой Slackware, и потребностям к их
возможностям, поскольку описанные далее принципы работы, установка, на­
стройка и оптимизация самой Slackware, методы построения такой системы при­
менимы ко всем из них.
Текущая версия описания основана на Slackware 14.1, но применима
практически ко всем версиям Slackware, как прошлым так и будущим, поскольку
не меняется внутренняя логика создания дистрибутива. От версии Slackware
зависит главным образом линки на программы в соответствующих разделах
сайтов, поэтому такие линки приводятся без привязки к версии Slackware, также
от версии может зависеть русификация. Описание постоянно обновляется,
последние версии можно взять здесь — serg­markov.livejournal.com/tag/Легкая
%20Slackware и на linuxforum.ru в разделе Slackware Linux..
Описание написано пошагово, так что если пропустили какой то пункт и
работает не так как хочется, смотрим пропущенные пункты.

II - Установка
­ если есть проблемы с настройкой сети лучше сразу скачать нужный
драй­
вер для видеокарты (Nvidia с www.nvidia.com/object/unix.html или
www.nvidia.ru/Download/Find.aspx?lang=ru)
­ загружаем образ -ftp.yandex.ru/slackware/slackware­*.*­iso/slackware­*.*­
install­dvd.iso (ISO c Яндекса), где «*» это номер версии Slackware. Оригинал
ISO находится вот здесь ­ mirrors.slackware.com/slackware­iso
­ записываем на dvd
­ подготавливаем разделы для установки (минимум 19Гб под /) при помощи
какого нибудь liveCD где есть gparted. Выбор файловой системы сейчас фак­
тически ограничен ext3 и ext4. Xfs и jfs имеют весьма интересные глюки и для
корня их лучше не ставить, для разделов со всякой мультимедиа и большими
файлами они вполне пригодны, но не для корня. Reiser3 не имеет особых пре­
имуществ перед ext4 и даже ext3, зато имеет массу неприятных особенностей,
reiser4 вообще не поддерживается ядром, да и перспективы этой ФC весьма
туманны, по крайней мере пока Ганс Рейзер находится в весьма интересном
месте. Btrfs на десктопе не имеет преимуществ перед ext, зато и по сей день
находится в стадии разработки, со всеми приятными неожиданностями для
такой стадии. Поэтому выбор по сути между ext3 и ext4. Обе стабильны, ext4
имеет свои преимущества, но требует больше ресурсов чем ext3. Если комп
достаточно мощный то выбор за ext4, если слака ставится на всякую
древность типа третьих пней или самых первых четвертых, то тогда лучше
ext3. Крайне рекомендуется создать еще один линукс раздел, кроме корня и
свапа, который будет использоваться для компиляции программ и хранения
созданных пакетов, на нем же будет создаваться архив раздела с самой
слакой. Размер этого дополнительного раздела от 19 Гб.
­ Загружаемся с DVD (не загружается установите в bios первым загрузку с
CD). На первых экранах внимательно читаем все написанное, там ответы на
вопросы, которые могут возникнуть при нестандартной установке
­ boot — нажать Enter
­ Enter 1 to select keyboard map ­ отвечаем на вопрос о раскладке. Выбираем по
умолчанию ­ Enter, русификация потом.
­ Slackware login: root
­ root@slackware : setup
­ Выбираем пункт "ADDSWAP option" в меню, выбираем раздел для свапа
Можно проверить или отказаться от проверки на наличие плохих блоков.
Если уверены что винт хороший, лучше отказаться, это довольно долгая
операция.
­ Select linux installation partitions ­ выбираем раздел для установки корня

­ Format partition — Quick — выбор типа форматирования корня
­ Select filesystem — Выбор файловой системы для корня
– Select other linux partitions — Выделение отдельных разделов, например для
/home. Если не нужно, то Continue
­ Pone adding linux partitions to /etc/fstab — Добавляем, если есть, другие
разделы с linux в /etc/fstab
– FAT or NTFS partitions detected — «Yes»
­ Select partitions to add to /etc/fstab — Выбор раздела FAT или NTFS для
добавления в /etc/fstab.
­ Set security for NTFS partitions — Устанавливаем опции монтирования
разделов NTFS в части прав доступа. В самом низу — fmask=111, dmask=000 —
доступ всем пользователям.
­ Pick mount point — Выбираем точку монтирования для выбранного раздела
(/media/sda* или /mnt/sda*, кто куда привык). Сontinue для следующего этапа
установки.
­ Source media selection — Выбор источника установки. Если с DVD, то Install
from Slackware CD or DVD c auto обнаружением диска.
­ Packages series selections — Выбор групп пакетов для установки. Можно
поставить все подряд, если ставите слаку в первый раз, то лучше ставить все. Но
для легкого десктопа не нужны группы E, F, KDE, TCL, XFCE, Y. Впрочем это
сугубо субъективное мнение, у вас оно вполне может быть другим.
­ Select prompting mode — Выбор метода установки
­ full — все, что выбрали ранее
­ terse — аналогично full, но компактнее и быстрее вывод устанавливаемых
пакетов
­ expert — Ручной выбор пакетов для установки. Там есть и другие методы, но
они более неудобны и дублируют сказанные.
Если ставите в первый раз, то наиболее лучший выбор — terse, поставится
все выбранное ранее с более быстрой и наглядной, в сравнении c full,
установкой. Expert позволяет вручную выбрать пакеты для установки, но для
него надо знать что нужно и что от чего зависит, иначе не поставив что­то
нужное, получите или частично или вообще полностью нерабочую систему.
­ Make USB flash boot — Сделать загрузочную флешку, если не нужна «No»
­ Install Lilo — Установка загрузчика. Лучше выбрать режим «Expert» или, если
уже есть какой­то линукс, вообще отказаться от установки lilo ­ «Skip»
­ Mouse configuration — Настройка мыши. Как правило установщик сам
определит нужный драйвер, подсветив его, но можно выбрать и вручную.

­ GPM ­ Включить драйвер мыши
­ Configure network — Настройка сети. Cтандартная настройка для ADSL модем
роутером ­ комп 198.162.1.2, маска 255.255.255.0, gateway 192.168.1.1, DNS
своего провайдера
­ Confirm startup services to run — Настройка автозапуска сервисов. Как правило
нужное уже включено.
­ Console font configuration — Выбор шрифта для консоли, подойдет Cyr_a8x16,
но можно выбрать и другой кириллический шрифт.
­ Hardware clock — Настройка часов ­ «No»
­ Timezone configuration — Выбор часового пояса
­ Выбираем оконный менеджер по умолчанию (fluxbox) или другой по вкусу
­ Warning no root password detected — Задаем пароль для root
­ exit
­ ctrl­alt­del
­ Перезагрузка
­ логинимся root
­ здесь можно завести своего пользователя adduser и все дальнейшее выполнять
уже из под него, прописав в /etc/sudoers нужные команды. Это канонично, но
для сборки хлопотно, и если вы хотя бы знаете что нельзя удалять /etc и /boot,
то этот шаг можно пропустить.
­ startx (да­да, это некошерно, но так проще :­). Запускается fluxbox. Если не
запустился, набираем xwmconfig и выбираем в нем fluxbox.
­ копируем /etc/X11/app­defaults/XTerm в /root/XTerm,
добавляем в него для установки шрифта, размера окна, показа скроллбара
и корректной работы alt­h в mc.
XTerm*font: -xos4-terminus-bold-r-normal--22-220-72-72-c-110-iso10646-1
XTerm*scrollBar: True
XTerm*geometry: 119x39+0+17
! Alt - h в mc
XTerm*eightBitInput: false
XTerm*metaSendsEscape: true

­ Если при установке не настроили сеть, то сейчас самое время ее настроить, она
понадобится при сборке своих пакетов
netconfig, pppoe, etc

­ Если сеть настроена можно сразу обновить слаку до последних актуальных
версий пакетов. Делаем:
– В /etc/slackpkg/mirrors раскомментируем одно зеркало (не подошло
выбираем другое)
­ Обновляем базу пакетов
slackpkg update

­ Устанавливаем новые пакеты
slackpkg install-new

­ Обновляем сами пакеты
slackpkg upgrade-all

Выше описан самый простой способ установки, но, если есть желание,
можно на этапе выбора пакетов перейти в режим «Expert» и в нем выбрать
конкретные пакеты для установки.
Также установка минимальной слаки хорошо описана вот здесь ­
slackwiki.com/Minimal_System

III - Русификация
– lilo

Редактируем файл /etc/lilo.conf , заменяем
append=" vt.default_utf8=0"

на:
append=" vt.default_utf8=1"

и выполняем команду:
/sbin/lilo -v

(не понадобилось, уже было vt.default_utf8=1)

Установка русской локали UTF-8

Редактируем файл /etc/profile.d/lang.sh.
#!/bin/sh
# en_US is the Slackware default locale:
#export LANG=en_US
# There is also support for UTF-8 locales, but be aware that
# some programs are not yet able to handle UTF-8 and will fail
# to run properly. In those cases, you can set LANG=C before
# starting them. Still, I'd avoid UTF unless you actually need it.
#export LANG=en_US.UTF-8
export LANG=ru_RU.UTF-8
#
#
#
#
#
#

One side effect of the newer locales is that the sort order
is no longer according to ASCII values, so the sort order will
change in many places. Since this isn't usually expected and
can break scripts, we'll stick with traditional ASCII sorting.
If you'd prefer the sort algorithm that goes with your $LANG
setting, comment this out.

export LC_COLLATE=C
# End of /etc/profile.d/lang.sh

Установка консольного шрифта с кириллицей

Редактируем файл /etc/rc.d/rc.font.
setfont Cyr_a8x16
for i in 1 2 3 4 5 6;do
echo -ne "\033%G" >/dev/tty$i
done

Русификация консоли

Создаем файл /etc/rc.d/rc.keymap и делаем исполняемым.
Здесь и далее помним что " \" в bash это просто перевод одной и той
же команды на новую строку, если она не помещается на экране, а так это
одна команда в одной строке. Это не касается xml­вещей и текстовых
файлов настроек, там " \" нет, но в них по смыслу понятно, где перенос на
новую строку из­за недостатка места, а где новая команда
#!/bin/sh
# Load the keyboard map. More maps are in
#/usr/share/kbd/keymaps.
if [ -x /usr/bin/loadkeys ]; then
/usr/bin/loadkeys \
/usr/share/kbd/keymaps/i386/qwerty/ruwin_ct_sh-UTF-8.map.gz
fi

Можно поставить другие клавиши переключения раскладок в
консоли, они определены в файлах /usr/share/kbd/keymaps/i386/qwerty/*­
UTF­8.map.gz.
Файлы /etc/rc.d/rc.font и /etc/rc.d/rc.keymap должны быть исполняемые.
- Русификация иксов

Создаем файл /etc/X11/xorg.conf.d/90­keyboard­layout.conf и пишем в
него (переключение раскладок по Ctrl­Shift).
Section "InputClass"
Identifier "keyboard-all"
MatchIsKeyboard "on"
Driver "evdev"
Option "XkbLayout" "us,ru"
Option "XkbVariant" ",winkeys"
Option "XkbOptions" "terminate:ctrl_alt_bksp,grp:ctrl_shift_toggle,grp_led:scroll"
EndSection

Если хочется переключения через CapsLock пишем
"terminate:ctrl_alt_bksp,grp:caps_toggle,grp_led:scroll"
- Отображение русских имен файлов на разделах NTFS

Редактируем файл /etc/fstab.
Пример
/dev/sda* /mnt/sdb5 ntfs-3g locale=ru_RU.utf8,umask=000 1 0

Русификация наверное единственный раздел в написанном (кроме разве
что раздела с Xorg, если Патрик все же переедет на что то более новое), который
может зависеть от версии слаки. В этом случае смотрим на форумах, например
www.linux.org.ru/wiki/enРусификация_Slackware_13_c_utf8, или на linuxforum.ru,
unixforum.org, на которых довольно быстро появляются советы по русификации
очередной версии слаки.

IV - Пакеты в Slackware - общие положения
Пакеты в Slackware используются как готовые, так и собственноручно
созданные.
1 - Управление пакетами

Список всех установленных пакетов находится в /var/log/packages, оттуда же
их можно удалить при помощи removepkg <пакет>.
Время удаления больших пакетов можно значительно, почти в два раза,
сократить, удаляя пакеты следующим образом ­ removepkg <пакет> | grep
WARNING, при этом выводится информация только о предупреждениях, а не по
каждому удаленному файлу.
Готовый пакет устанавливаем через installpkg </путь/пакет>, хотя корректнее
делать upgradepkg --install-new </путь/пакет>. Обновляем через upgradepkg
</путь/пакет>. Переустановка при каких то глюках upgradepkg --reinstall
</путь/пакет>.
Стандартный менеджер пакетов для операций с локальными пакетами на
компе и DVD ­ pkgtool, в которым помимо операций с пакетами есть возможность
запустить по новой настроечные скрипты, которые вызываются при установке
слаки и входят в состав ее инсталлятора, также в нем есть и несколько других
скриптов, которые могут быть полезны.
Стандартный менеджер пакетов для операций с пакетами из сети ­ slackpkg.
Есть расширение для
slackpkg ­ slackpkg+(slakfinder.org/slackpkg+.html),
позволяющее подключать сторонние репозитории, в том числе репозитории
multilib и различных форков слаки. Все, что о них можно сказать, уже сказано в
выводе —help и в соответствующих манах, там все просто и понятно и не требует
каких либо объяснений. Надо только внимательно прочитать man slackpkg.conf и
соответствующим образом настроить slackpkg в /etc/slackpkg, далее настроить
slackpkg+ в /etc/slackpkg/slackpkgplus.conf. Более подробно вот здесь —
alien.slackbook.org/blog/introducing­slackpkg­an­extension­to­slackpkg­for­3rd­
party­repositories.
Существует также заточенный для работы с пакетами известного сайта
slacky.eu менеджер пакетов slackyd ­ www.slacky.eu/~dani/slackyd, позволяющий
разрешать зависимости, указанные для пакетов этого сайта. Это простая
консольная утилита, описание команд по линку на привычном и понятном
итальянском.. :­)
Есть также менеджер
пакетов slackroll с несколько расширенными
возможностями — rg3.github.io/slackroll.
Посмотреть какому установленному пакету принадлежит нужный файл
можно простым поиском по содержимому файлов в этой директории. Также
просто определяется время установки всякого хлама, который из
любознательности был поставлен ­ простой сортировкой по времени в файл­
менеджере.
Хлам и не только, который был удален, ищем в /var/log/removed­packages,
так что если слака отказывается делать "ку" смотреть надо там, чего такого "не­
нужного" поудаляли :­).
Ориентироваться в пакетах установочного DVD помогают файлики
MANIFEST ­ все файлы во всех пакетах, FILE_LIST ­ все пакеты по категориям,
PACKAGES.TXT ­ описания пакетов, которые есть и на самом DVD и в инете,
например здесь — www.slackware.org.uk/slackware/slackware­14.0/slackware.

Что нового появилось в текущей версии слаки и некоторые советы по ее
использованию находятся там же в файле CHANGES_AND_HINTS.TXT
Разруливания зависимостей в слаке нет как класса, что с одной стороны
очень хорошо, так как позволяет получить именно ту систему, которую хочется, с
другой плохо для любителей щелкнув мышкой получить все сразу, и то что надо
и еще массу приятных вещей, которые совершенно не нужны. К примеру
PClinuxOS при установке IceWM подтянул не только qt4 (что еще можно объяс­
нить,так как одна из графических конфигурялок IceWM написана с использова­
нием qt, зачем непонятно, но так написана), но и googlearth.
Если при операциях с пакетами, компилировании и конфигурации что то
происходит не так, то помним что все они применяются от рута.

2 - Использование готовых пакетов

В оригинальной слаке которую выпускает Патрик пакетов не так уж много,
тем не менее пакеты с установочного DVD вполне способны удовлетворить базо­
вые запросы как домашнего, так и среднего корпоративного пользователя. Но по­
скольку базовыми запросами дело правило не ограничивается, то на помощь в
этом случае приходят собранные другими пакеты. Наиболее известные места где
можно найти готовые пакеты
slacky.eu
slakfinder.org
rlworkman.net/pkgs
connie.slackware.com/~alien/slackbuilds
slackers.it
Существует также множество основанных на Slackware дистрибутивов, из
которых можно брать готовые пакеты, но не всегда (хотя и в большинстве случа­
ев) такие пакеты корректно работают. Лучше всего в этом плане работают пакеты
взятые из дистрибутива zenwalk (packages.zenwalk.org/?v=current).
Пакеты с этих сайтов надо скачивать и устанавливать вручную. Можно авто­
матизировать этот процесс и даже использовать разрешение зависимостей при
помощи утилиты slapt­get и ее фронтенда gslapt, но в этом случае надо внести все
скомпилированные самим пакеты в список исключений, иначе при обновлении
они затрутся стандартными версиями. Вообще говоря это не "путь Slackware" по­
скольку накладывает помимо сказанного еще и дополнительные ограничения и
тем самым значительно сужаетcя феноменальная гибкость слаки в управлении
пакетами. Кроме того в них немеряно "особенностей", в частности удалять пакеты
с их помощью надо крайне осторожно, запросто может снести полсистемы. Для
slapt­get и
gslapt есть сервис оповещения об обновлениях ­
software.jaos.org/#slapt­update­service
Возможно преобразование пакетов rpm в пакеты слаки при помощи утилиты
rpm2tgz. Найти пакеты rpm можно на pkgs.org, там же есть пакеты и других фор­
матов. Также можно преобразовать пакеты deb из debian в пакеты слаки (за ис­
ключением всего связанного с python, поскольку у debain специфическое распо­
ложение
его
файлов).
Удобно
пользоваться
PackageConverter
­
code.google.com/p/foxoman/wiki/PackageConverter, GUI к alien, утилите преоб­
разования пакетов разных форматов. Необходимы пакеты ­ сам alien со slacky.eu

fakeroot co download.salixos.org/i486/14.0/salix/ap и dpkg co slackbuilds.org.
Если какая то программа после установки не запускается, смотрим вывод ее
запуска в терминале, и ищем нужный пакет. Найти нужный пакет слаки по вхо­
дящему в нему файлу можно на slakfinder.org, но он не всегда корректно
работает, поэтому в этих случаях можно использовать поиск файлов по пакетам
дебиана, www.debian.org/distrib/packages#search_packages, или по пакетам
ubuntu, packages.ubuntu.com, для нахождения нужного пакета по аналогии.
Поскольку в слаке, в отличие от того же дебиана и пр, зависимости
минимальные и пакет объединяет в себе большинство необходимого для его
запуска, то доставлять приходится как правило довольно мало.
При желании всегда можно перекомпилировать нужный пакет со своими оп­
циями конфигурирования и флагами компиляции, как правило где то рядом с го­
товым пакетом в инете лежит его слакбилд, обычно в директории src или source.

3 - Создание пользовательских пакетов

Одна из изюминок слаки, за которую ее многие любят, это возможность до­
вольно просто и быстро создавать свои пакеты, заточенные именно под свой
комп и с теми возможностями, которые необходимы именно себе. Наверное
только для слаки верно высказывание «Любые сорцы это пакет самым простым
образом». Свои пакеты создаются из сорцов при помощи slackbuilds или
традиционным методом компиляции из сорцов через конфигурацию ­
компиляцию и установку (make &&make install) ­ создание пакета, в ходе которого
создается пакет.
При создании пакетов внимательно читаем файлы README, INSTALL и им
подобные в папке с сорцами, зачастую в них кроме тривиальщины содержится
крайне полезная информация, без которой программа просто не собирается.
Далее все команды выполняем или в папке с распакованными сорцами или в
папке со слакбилдом.
Очень удобно при создании пользовательских пакетов пользоваться связкой
worker­roxterm­juffed­набор скриптов, созданных для конфигурирования, компи­
ляции и создания пакета. Такая связка приведена во вложении worker.tbz.
A. Где искать проги и патчи к ним

На сайте конкретной программы, если знаете что именно надо. Не знаете ка­
кую программу хочется прямой путь на freshmeat.net, sourceforge.net. Если нашли
какую то старую программу, которая понравилась, но сайт который уже давно в
глубоком дауне и сорцов не найти, то в этом случае как правило помогает поиск
таких сорцов на www.debian.org/distrib/packages или packages.ubuntu.com/ru, где
есть и сорцы и патчи к ним, приспосабливающие старые сорцы под новые компи­
лятор и либы.
Интересные форки многих программ, как новых, так и зачастую уже
заброшенных первоначальными разработчиками, можно найти на всяких git
сайтах типа github.com.
Наиболее свежие версии программ распространяются через различные си­
стемы управления версиями, среди который наиболее распространены svn, git и
mercurial. Такие свежие версии наиболее полезны для программ, которые привя­

заны к каким либо внешним интерфейсам, типа youtube и других подобных
сайтов, поскольку изменения интерфейса к ним зачастую отражены только в
самой новой версии программы из систем управления версиями. Естественно они
могут быть полезны и в других случаях, например очень понравилось какая то
версия программы, изменения в которой далее не были включены в официаль­
ные релизы, такое тоже бывает :­)
Для выкачивания последней версии сорцов из svn набираем в терминале
svn co (или checkout) <URL svn>

для выкачивания какой то определенной версии
svn co -r <номер ревизии> <URL svn>

Для выкачивания последней версии сорцов из git набираем в терминале
git clone <URL git>

Для выкачивания последней версии сорцов из mercurial набираем в терминале
hg clone < URL mercurial>

К сорцам прог могут быть патчи, Некоторые из них необязательные,
добавляющие или изменяющие какие то возможности проги, но иногда
встречаются патчи, без которых прога не собирается, особенно это касается
каких­то уже сравнительно давних релизов прог. Необязательные патчи
накладываются по желанию, если вам нужна какая то дополнительная
функциональность, которой нет в оригинальной версии, но без патчей второго
типа прога просто не соберется. Лучший помощник в поисках патчей, как всегда
это гугель :­), proga patch в поисковом запросе вываливает достаточно много
всяких разных патчей.
Очень много всяких разных патчей есть в репозиториях ArchLinux и Ubuntu
(Debian), как с ними работать описано в разделах «Создание пакетов из
ArchLinux» и «Создание пакетов из Debian (Ubuntu)». Если вам нужен какой то
патч из этих репозиториев совершенно необязательно собирать из них пакет
методами, описанными в этих разделах, вполне достаточно скачать сам патч,
применить его к сорцам проги и далее создавать пакет каким­либо удобным
способом.
B. Что такое slackbuild и как их использовать

Slackbuild это скрипт с набором правил компиляции программы из сорцов,
который создает пакет для установки. Этот пакет после выполнения скрипта про­
га.SlackBuild создается в /tmp (это в общем и наиболее распространенном случае,
место зависит от переменной PKG= в slackbuild).
Наиболее известное место нахождения slackbuild ­ slackbuilds.org.
Слакбилды для некоторых программ, которые есть в этом описании, но для
которых нет слакбилдов на slackbuilds.or, можно найти здесь ­
www.wuala.com/SergMarkov19/Slackbuilds. К slackbuild нужны сами сорцы, линки
на которых есть на slackbuilds.org. Сорцы кладем в директорию со slackbuild. Если

на сайте программы есть более новая версия, чем указано в slackbuild, то со сайта
скачиваем архив с сорцами новой версии и кладем его в папку со slackbuild, в ко­
тором правится VERSION=. Если хотите увековечить себя в имени пакета, правим
в slackbuild переменную BUILD, вообще то делать так рекомендуется, чтобы затем
отличить свой доморощенный самосбор от высочайше одобренного Патриком :­).
Для настройки программы под свои вкусы в slackbuild правим опции configure
(опции смотрим через ./configure ­­help в в папке с сорцами).
Для запуска слакбилда со своими параметрами ( в данном случае
компиляция и создание пакета в директории со слакбилдом) запускаем его
следующим образом
OUTPUT=$(pwd) TMP=$(pwd) ./some.SlackBuild

или меняем необходимые параметры в самом слакбилде.
Если хочется переопределить некоторые стандартные для всех слакбилдов
переменные, вносим их в ~/.bashrc, например
export OUTPUT="/usr/local/packages"
export PKGTYPE="txz"

Если слакбилд запускается от рута при помощи sudo, то поможет
потребоваться или поправить слакбилд, заменив в нем makepkg на /sbin/makepkg
или, нерекомедованное вообще­то по соображениям безопасности, внести /sbin в
PATH в настройках используемого шелла, наподобие:
export PATH=$PATH:/usr/share/texmf/bin:/usr/sbin:/sbin

Если на slackbuilds.org нет проги для нужной версии слаки, еще не собрали
или вообще не собрали, то вполне можно взять слакбилд от предыдущей версии
(или вообще в какой эта прога есть), скачать новые сорцы и изменить VERSION в
слакбилде (и еще кое что подправить если потребуется), как правило такой метод
работает.
Если же слакбилда нужной программы вообще нет и не хочется идти тради­
ционным путем компиляции из сорцов через make &&make install — создание па­
кета, то писать свой slackbuild проще легкого, читаем FAQ ­ slackbuilds.org/faq и
пишем свой слакбилд. Еще проще создать свой слакбилд со стандартными
опциями и параметрами можно с помощью генератора слакбилдов на
alien.slackbook.org/AST.
Опции конфигурации и патчи для некоторых прог можно подсмотреть в в
официальных репах и в ауре ArchLinux — www.archlinux.org/packages,
По аналогии со средствами автоматизации для бинарных пакетов есть
подобные утилиты и для сборки пакетов из слакбилдов ­ slapt­src, sourcery,
sbopkg. Но их использование не позволяет без самопальных костылей задать ни
свои опции конфигурации программы ни свои оптимизационные флаги компи­
ляции, и по сути собранные ими пакеты ничем не отличаются от уже собранных
бинарников. Но у них есть и свои преимущества, в частности возможность
установки не только самого пакета, но и всех пакетов его зависимостей, например
т. н. «очереди» в sbopkg. Как их использовать можно прочитать здесь —
sbopkg.org/queues.php. Для этого скрипты сборки (файлы *.sqf) кладутся в
/var/lib/sbopkg/qu. Sbopkg также позволяет использовать git master branch со

slackbuilds.org, а не только официальные слакбилды. Как это сделать описано вот
здесь — pastebin.com/jRPYQsVL.
Естественно можно пересобрать уже имеющиеся пакеты, использую
слакбилды для них. Для официальных пакетов слакбилды находятся в папке
source/прога, для остальных где то примерно там же, в папках src, source и им
подобных.
C. Оптимизация пакетов

Оптимизация программ состоит из оптимального выбора программ, их
конфигурации «под себя» и оптимизации компиляции.
Самый большой выигрыш в производительности не в ущерб
функциональности получается при оптимальном выборе программы: KDE
никогда не будет быстрее IceWM или openbox, krusader на либах KDE никогда не
будет быстрее worker на xlib, при том что worker еще и функциональнее, проги на
python никогда не будут быстрее аналогичных прог на С, применение
простейшего композитного менеджера окон вместе с используемым на порядок
эффективнее чем перекомпиляция со своими флагами уже используемого итп
итд, поэтому главное внимание обращаем на подбор прог, они должны быть
быстрыми не в ущерб функциональности, такой выбор, как правило, можно
сделать.
Следующий шаг оптимизации это конфигурация прог в соответствии со
своими потребностями. Как правило проги перегружены лишними
возможностями, которые в ней включены автоматом, и зачастую в них нет
нужных возможностей, которые автоматом не включаются. Лишние
возможности прогу утяжеляют, с недостающими возможностями и так все
понятно.
Заключительный шаг это оптимизация компиляции проги через задание
флагов компиляции и линковки. Этот шаг надо делать только после первых двух,
так как наибольший выигрыш в производительности дают как правило именно
они, а не махание флагами gcc :­) Если у вас мало памяти, то можно заменить gcc
версий 4.8 и дальнейших на gcc­4.7.1 из skackware 14. Естественно его надо
пересобрать, используя слакбилд из раздела source дистрибутива, нельзя ставить
сам пакет
D. Конфигурирование программ

Конфигурирование программ позволяет как использовать необходимые воз­
можности программы, не входящие в ее конфигурацию по умолчанию, так и из­
бавиться от ненужных ее возможностей в конфигурации по умолчанию, тем са­
мым облегчив и ускорив ее работу. Конфигурирование осуществляется заданием
необходимых опций конфигурации. Методы задания опций зависят от применяе­
мого метода конфигурирования.
Далее сказанное применимо как при конфигурировании программы при ис­
пользование make ­ создание пакета, так и при использовании слакбилдов, в ко­
торых правится секция ./configure или другая секция конфигурации.
Если конфигурация прошла успешно, но при компиляции возникают какие
то ошибки, смотрим весь вывод конфигурирования, чего не хватает и какие есть
предупреждения.

- Конфигурирование программ, использующих configure

В папке с распакованными сорцами таких программ лежит файл configure.
Выполняем в папке с сорцами
./configure --help

Далее смотрим опции и конфигурируем по желанию (и хотению :­)
./configure — опции

Если опций много и их неудобно размещать в одной строке, разбиваем их на
несколько строк, добавляя в конец каждой строки кроме конечной
[пробел]\.
Не оставляем умолчальную опцию ­­prefix=/usr/local, ставим или в /usr
или в /opt/пакет, оставьте /usr/local для всяких прог, собираемых для пробы и
на скорую руку. Если в дальнейшем планируется использовать prelink, (который
не работает в 13.37) то надо добавить опцию ­­with­pic, если она есть в выводе
./configure ­­help.
Помним базовый принцип конфигурации ­ не впихивать все подряд, и что
нужно и то что сто лет не будет нужно. Если через сто лет приспичит какая то
возможность ее через сто лет и надо сделать, прогу лишние возможности только
утяжеляют со снижением производительности того, чем пользуемся каждый
день, а не раз в сто лет.
В результате использования ./configure создается Makefile и если что то все
таки не нравится, то тогда уже править его, ну или вообще ковырять сам
configure.
Удобно использовать шаблон конфигурирования, куда добавляются нужные
опции.
#!/bin/bash
#
renice 19 $$ > /dev/null
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
# Оптимизированные опции gcc
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
# Иногда приходится использовать стандартные опции gcc, закоментированные

# ниже ниже
# CFLAGS="-O2 -march=i486 -mtune=i686" \
# CXXFLAGS="-O2 -march=i486 -mtune=i686"
- Конфигурирование программ, использующих cmake

В папке с распакованными сорцами таких программ лежит файл
CMakeLists.txt. Параметры cmake как правило указаны в файлах README или
INSTALL. Выполняем в папке с сорцами
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_INSTALL_DIR=/usr/lib \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc \
-DINCLUDE_INSTALL_DIR=/usr/include \
-DCMAKE_C_FLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \
-DCMAKE_CXX_FLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1"

Часто необходимо создать директорию build и уже из нее запускать cmake, об
этом как правило написано в README или install, тогда
mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_INSTALL_DIR=/usr/lib \
-DMAN_INSTALL_DIR=/usr/man \
-DSYSCONF_INSTALL_DIR=/etc \
-DINCLUDE_INSTALL_DIR=/usr/include \
-DCMAKE_C_FLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \
-DCMAKE_CXX_FLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1"

У cmake есть интересная особенность, позволяющая исключать отдельные
директории из папки проги при компиляции, для этого надо использовать опцию
­DBUILD_foo=OFF, где foo соответствующая папка, которую вы хотите исключить
при компиляции. При этом не надо опасаться что исключите что то нужное, если
такое произойдет то cmake проигнорирует эту опцию.
Для каких то объемных прог далее можно запустить ccmake .. и установить
свои опции конфигурирования, но как правило это не требуются, да и зачастую
авторы не предусматривают такую возможность. Есть гуевая утилита cmake­gui.
Возможно также интерактивное конфигурирование посредством cmake ­i.
Полный список всех возможных параметров cmake приведен здесь ­
www.cmake.org/Wiki/CMake_Useful_Variables

- Конфигурирование программ, использующих qmake

В папке с распакованными сорцами таких программ лежит файл *.pro.
Параметры qmake как правило указаны в файлах README или INSTALL, их
можно отредактировать прямо в файлах *.pro, *.pri, *.qrc. Выполняем в папке с
сорцами
qmake файл.pro \
QMAKE_CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \
QMAKE_CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1"

Полный список всех возможных параметров cmake приведен здесь ­ qt­
project.org/doc/qt­4.8/qmake­variable­reference.html
- Конфигурирование программ, использующих waf

Иногда, чаще всего для каких то гномовых прог, применяется
конфигурирование при помощи waf. В папке с распакованными сорцами таких
программ лежит файл waf. Параметры waf как правило указаны в файлах
README или INSTALL. Конфигурация:
./waf configure \
--prefix=/usr \
--mandir=/usr/man

- Другие методы конфигурирования программ

Иногда в папке с сорцами нет ни одного из вышеперечисленных файлов, но
лежит файл autogen.sh, часто это встречается в системах контроля версия типа
git. Запускаем этот файл и он создает файл configure. Далее как описано выше.
Для самых простых программ нет и этого, а есть только Makefile, тогда и кон
фигурировать нечего, просто собираем пакет.
Если же нет и Makefile, но есть файлы configure.ac, Makefile.am, Makefile.in,
то делаем так ­ autoreconf -fiv (autoreconf -v —install)
В некоторых случаях необходимо сделать вот так:
aclocal
autoheader
automake --add-missing --copy
#libtoolize --automake
autoconf

E. Флаги компиляции

Настройка компилятора при создании пакетов из сорцов естественно имеет
значение, и нельзя сказать что настройки по умолчанию в gcc являются опти­
мальными. Настройка осуществляем путем задания флагов компиляции.
Есть отличие в флагах компиляции для системных программ и пользова­
тельских программ. Если первые, в число которых входят утилиты linuxbase (tar,
bz2, zlib и.т.п), тулкиты (GTK и другие), программы на python и perl лучше
собирать с принятыми в слаке флагами по умолчанию ("­O2 ­march=i486
­mtune=i686"), то вторые лучше собирать с оптимизационными флагами.
Приведенные далее оптимизационные флаги определены не путем умозри­
тельных заключений и теоретических представлений (таким образом почти все
флаги оптимизации будут только улучшать, на практике это далеко не так, вернее
совсем не так :­), эти флаги были определены путем тестирования производи­
тельности собранных пакетов. Ниже приведены примеры таких флагов для x86
(Ваши флаги скорее всего будут отличаться только поддержкой SSE).
Место задания флагов определяется способом конфигурирования програм­
мы. При конфигурации autoconf (в сорцах есть файл configure) флаги компиля­
ции определяются в ~/.bashrc или в опциях configure, причем флаги в configure
перекрывают флаги в ~/.bashrc. При конфигурации cmake (в сорцах есть файл
CmakeLists.txt)
флаги
определяются
в
/usr/share/cmake­
2.8/Modules/Compiler/GNU.cmake. При конфигурации qmake флаги определяют­
ся в /usr/lib/qt/mkspecs/common/g++.conf
При этом надо помнить, что настройки в вызываемом процессе всегда
перекрывают настройки в вызывающем процессе: если из bash с его настройками
вызвать запуск слакбилда с его настройками, а из слакбилда будет вызываться
cmake, то в результате будут действовать настройки именно cmake, а не bash или
слакбилда.
- Задание флагов компиляции в .bashrc

Редактируем файл ~/.bashrc
# gcc
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1"
export CXXFLAGS="${CFLAGS}"
export LDFLAGS="-Wl,-O1 -Wl,--as-needed"

где:
­ O3 ­ уровень оптимизации
­ march=native и mtune=native ­ настройка компилятора под Ваш
про­
цессор (mtune можно и не указывать, он оставлен для полноты)
Не­
которые программы (как правило системные а не прикладные) показыва­
ют более высокую производительность с ­march=i686 и mtune=i686, даже
если Ваш процессор намного мощнее.
­ mmmx (m3dnow, msse) ­ поддержка соответствующих инструкций
процессора. Узнать поддерживаемые Вашим процессором инструкции

можно через cat /proc/cpuinfo. Как именно их включать под свой
процессор смотрим здесь gcc.gnu.org/onlinedocs/gcc­4.7.2/gcc/i386­and­
x86_002d64­Options.html#i386­and­x86_002d64­Options.
Пример: ­msse(1,2,3,4) включает поддержку sse, ­mno­sse(1,2,3,4)
выключает
­ pipe ­ отключение создания временных файлов при компиляции и переда
ча данных напрямую, убыстряет компиляцию не в ущерб качеству.
­ fomit­frame­pointer ­ не сохранять указатель на кадр (frame pointer) в реги
стре для функций, которые не нуждаются в этом. Это позволяет избежать
инструкций на сохранение, определение и восстановление указателя на кадр
(frame pointer); в то же время освобождая регистры для других функций. Это
делает невозможным отладку на большинстве машин.
­ falign* ­ не выравнивать по границам блока (актуально для процессоров
включая и выше PIII и K6­2).
­ Wl,­O1 ­Wl,­­as­needed ­ уменьшает количество требуемых библиотек для
линковки (лучше не применять при компиляции системных пакетов).
Немного о флаге ­O3, этот флаг оптимизационный, на одних программах он
может улучшить производительность, на других, напротив, ухудшить. Но послед­
нее верно в части весьма узкого круга программ, по крайней мере далее рассмот­
ренные программы лучше работают именно с ­O3.
Cпорный флаг ­ffast­math что называется «на любителя», особого выигрыша
в производительности нет, но есть проблемы при сборке всего использующего
sql(lite) .
Всегда помним базовый принцип оптимизации ­ не бывает много хорошей
оптимизации, бывает только оптимальная оптимизация :­) , иначе, повключав
множество разных флагов, почти гарантированно получаем только ухудшение, а
не улучшение.
Приведенные флаги оптимизационные и при сборке всех программ, про ко­
торые говорится далее, они работают, но может случится и так, что какая то про­
грамма с этими флагами может собираться некорректно. Сначала узнаем собира­
ется ли программа вообще ­ убираем LDFLAGS и заменяем CFLAGS на стандарт­
ный "­O2 ­march=i486 ­mtune=i686". Если программа собирается, то далее
заменяем последовательно в оптимизационных настройках ­O3 на ­O2, далее
убираем вообще LDFLAGS, если и это не помогает убираем опции ­falign и ­fomit­
frame­pointer. Если линковщик пишет ошибку типа «Символ такой­то определен
в такой­то либе, добавьте ее PATCH» попробуйте убрать LDFLAGS. Также надо
собирать со стандартными флагами компиляции, если программа нормально
собралась, но при запуске в терминале пишет какую то ошибку типа segmentation
fault.
Оптимизационные флаги используем только при сборке пользовательских
программ, при сборке системных пакетов типа qt, gtk, zlib и.т.п и программ на пи­
тоне используем стандартные флаги
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
и без LDFLAGS

Не забудьте перезагрузить настройки bash через . ~/.bashrc, обязателен
пробел после точки. Это надо сделать для всех пользователей, root в том числе.

Многие программы при компиляции через configure­make­make install ис­
пользуют свои флаги компиляции из Makefile, создаваемом в ходе configure. Если
Вы твердо уверены что эти флаги лучше изменить (в большинстве случаев, кроме
например mplayer и системных прог, так и есть, добавляем в конец опций Вашего
configure
CFLAGS="-O3 -march=native -mtune=native -pipe \
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1" \
CXXFLAGS="-O3 -march=native -mtune=native -pipe \
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Можно попробовать использовать следующие, более «безопасные», флаги
компиляции и линковки
CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffersize=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffersize=4 -D_FORTIFY_SOURCE=2"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"

но для них надо включить при конфигурации ядра fstack­protector
Настройки в ~/.bashrc действуют при компиляции с использованием make
&&make install, в slackbuild и в других случаях своя настройка флагов
компиляции, которая перекрывает настройки в /root/.bashrc, поэтому каждый
slackbuild правим под свой комп, также задаем свои флаги в местах согласно
приведенным ниже примерах.
Далее приводятся примеры задания флагов компиляции и линковки, исходя
из первого примера флагов в .bashrc. Естественно если вы выбрали другие флаги,
то надо подставлять именно их в соответствующие места, приведенные в
примерах.
- Задание флагов компиляции в configure
Ниже приведен шаблон конфигурации при помощи configure с заданием в
нем флагов компиляции
#!/bin/bash
#
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \

CXXFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
- Задание флагов компиляции при использовании cmake

Заменяем в файле (здесь нет " \" для перевода строки и все что начинается с
"set" это на самом деле одна команда в одной строке )
/usr/share/cmake-2.8/Modules/Compiler/GNU.cmake
# Initial configuration flags.
set(CMAKE_${lang}_FLAGS_INIT "")
set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-g")
set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG")
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_$
{lang}_COMPILER> <DEFINES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER>
<DEFINES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
if(NOT APPLE)

на
# Initial configuration flags.
set(CMAKE_${lang}_FLAGS_INIT "-O3 -march=native -mtune=native -pipe -fomitframe-pointer -mmmx -m3dnow -falign-jumps=1 -falign-labels=1")
set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-g")
set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -march=native -mtune=native -pipe
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 -falign-labels=1")
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-O3 -march=native
-mtune=native -pipe -fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 -falignlabels=1")
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE "<CMAKE_$
{lang}_COMPILER> <DEFINES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>")
set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE "<CMAKE_${lang}_COMPILER>
<DEFINES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>")
if(NOT APPLE)

- Задание флагов компиляции при использовании qmake

Заменяем в файле /usr/lib/qt/mkspecs/common/gcc­base.conf (CFLAGS в
одной строке)
QMAKE_CFLAGS

+= -pipe

и
QMAKE_CFLAGS_RELEASE

+= -O2 -march=i486 -mtune=i686

на
QMAKE_CFLAGS+= -O3 -march=native -mtune=native -pipe
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1
-falign-labels=1

и
QMAKE_CFLAGS_RELEASE += -O3 -march=native -mtune=native
-pipe -fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1
-falign-labels=1
- Задание флагов компиляции в slackbuild
- Задание флагов компиляции в slackbuild при использовании configure

Во всех slackbuild (кроме системных пакетов) заменяем
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi

на (для примера) ­только для x86 (флаги естественно подставляем свои, по анало­
гии с ~/.bashrc)
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1"
LIBDIRSUFFIX=""

elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-fomit-frame-pointer -mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
fi
SLKLDFLAGS="-Wl,-O1 -Wl,--as-needed"

и заменяем также в зависимости от того, что в слакбиде написано
если написано
CFLAGS="$SLKCFLAGS" \

то заменяем на
CFLAGS="$SLKCFLAGS" \
LDFLAGS="$SLKLDFLAGS" \

если написано
export CFLAGS="$SLKCFLAGS"

то заменяем на
export CFLAGS="$SLKCFLAGS"
export LDFLAGS="$SLKLDFLAGS"

Простейший скриптик для первого случая, здесь нет " \" для перевода строки
и все что начинается с "sed" это на самом деле одна команда в одной строке
#!/bin/bash
# Скрипт заменяющий стандартные опции компилятора в слакбилдах со slackbuikds.org
# на свои опции
cp $1 $1.orig
sed -i 's/ SLKCFLAGS="-O2 -march=i486 -mtune=i686"/ SLKCFLAGS="-O3 -march=native
-mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 -falignlabels=1"/g' $1
sed -i 's/ SLKCFLAGS="-O2 -march=i686 -mtune=i686"/ SLKCFLAGS="-O3 -march=native
-mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 -falignlabels=1"/g' $1
sed -i 's/ SLKCFLAGS="-O2"/ SLKCFLAGS="-O3 -march=native -mtune=native -fomit-frame-

pointer -pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1"/g' $1
sed -i 's/TAG=${TAG:-_SBo}/TAG=${TAG:-_am}/g' $1
sed -i 's/^NUMJOBS=.*/NUMJOBS=${NUMJOBS:-" -j2 "}/g' $1
sed -i 's/CFLAGS="$SLKCFLAGS" \\/CFLAGS="$SLKCFLAGS" \\\nLDFLAGS="-Wl,-O1 -Wl,--asneeded" \\/g' $1
sed -i 's/\/sbin\/makepkg -l y -c n $OUTPUT\/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$
{PKGTYPE:-tgz}/\/sbin\/makepkg -l y -c n $CWD\/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.
${PKGTYPE\:-txz}/g' $1
echo 'Опции компилятора исправлены'
- Задание флагов компиляции в slackbuild при использовании cmake

Точно также как и для случая configure но вместо export ставим как часть
cmake
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- Задание флагов компиляции в slackbuild при использовании qmake

Точно также как и для случая configure но вместо export ставим как часть
qmake
qmake \
QMAKE_CFLAGS="$SLKCFLAGS" \
QMAKE_CXXFLAGS="$SLKCFLAGS"

- Задание флагов компиляции при использовании prelink

Немного о prelink, который осуществляет предварительную линковку разде­
ляемых библиотек и тем самым увеличивает производительность и особенно
время запуска программ. Чтобы prelink работал со своими скомпилированными
пакетами надо в опции CFLAGS и SLKCFLAGS добавить "­fPIC" и/или добавить в
опции его configure ­­with­pic.

F. Компилирование и создание пакета
- Компилирование и создание пакета при использовании autotools и cmake

После конфигурации программы остается ее скомпилировать и создать
установочный пакет для слаки. Эти операции лучше рассматривать вместе.
Стандартный метод следующий (от рута)
make
make install DESTDIR=/tmp/packages-temp
cd /tmp/packages-temp
makepkg /tmp/packages.tgz (или makepkg /tmp/packages.txz)
cd ..
rm -rf /tmp/packages-temp

packages.txz естественно заменяем на свое­имя­пакета.txz.
Такая схема сборки пакета работает, если в Makefile есть параметр DESTDIR,
он как правило есть, но если в Makefile его нет, то и нет такой возможности и па­
кет собрать таким образом будет нельзя, поскольку пакет будут ставиться сразу в
/usr а не в папку для создания пакета. В этом случае остается только тихо (ну или
громко :­) славя разработчиков такой прелести смотреть в вывод терминала и в
секцию Install в Makefile что и куда таким образом поставилось, удалять все это
ручками, и применять один из способов ниже.
Первый способ ­ править Makefile.
В секции Install заменять что то типа
-install -d $(PREFIX)/bin/

на
-install -d $(DESTDIR)/$(PREFIX)/bin/

Второй способ ­ вместо makepkg использовать slacktrack, т.е. вместо
make install
cd /tmp/5
makepkg /tmp/пакет.tgz (или makepkg /tmp/пакет.txz)

использовать
slacktrack -cmrzSbY -p пакет.tgz make install

естественно нужно сначала установить пакет slacktrack с dvd.
Нежелательно сразу использовать slacktrack по простой причине, при
работе он сканирует всю корневую файловую систему два раза, сначала как
образец, второй для нахождения различий до и после установки, время это
занимает довольно много. Если это не смущает лучше сразу использовать именно

его. При его работе лучше не использовать проги обращающиеся к дискам. Или
можно чуть модифицировать сам скрипт, заменив в /usr/bin/slacktrack
EXCLUDE_LIST="/dev/shm|/dev/shm/|/dev/shm$|/var/run/|/var/run$|/etc/dhcpc/|/etc/dhcpc
$|/var/cache/|/var/cache$|/media$|/media/|/srv$|/srv/|/selinux$|/selinux/|/var/lib/rpm|/var/li
b/rpm$|/var/yp$|/var/yp/|/sys$|/sys/|/initrd$|/initrd/|/dev/input$|/dev/input/|/dev/.udev/|/de
v/.udev$|/dev/vc$|/dev/vc/|/dev/console|/dev/pts$|/dev/pts/|/dev/ptmx|/dev/tty|/var/log|/et
c/mtab|/etc/resolv.conf|/etc/ld.so.cache|/tmp|/root|/proc|/var/tmp|/var/run/utmp"

на
EXCLUDE_LIST="/dev|/dev/|/dev$|/var/run/|/var/run$|/etc/dhcpc/|/etc/dhcpc$|/var/cache/|/
var/cache$|/media$|/media/|/srv$|/srv/|/selinux$|/selinux/|/var/lib/rpm|/var/lib/rpm$|/var/yp
$|/var/yp/|/sys$|/sys/|/initrd$|/initrd/|/dev/input$|/dev/input/|/dev/.udev/|/dev/.udev$|/dev/
vc$|/dev/vc/|/dev/console|/dev/pts$|/dev/pts/|/dev/ptmx|/dev/tty|/var/log|/etc/mtab|/etc/re
solv.conf|/etc/ld.so.cache|/tmp|/root|/proc|/var/tmp|/var/run/utmp"

при такой замене пакеты, что то создающие в /dev будут некорректно собираться,
но как правило такие пакеты очень редки, поэтому можно сделать такую замену.
Также удобно использовать простейший скриптик для создания пакета, в ко­
тором пакет создается в текущей директории с именем пакета как именем дирек­
тории
#!/bin/sh
#
ARCH=${ARCH:-i686}
# Директории, использущиеся при компиляции
CWD=$(pwd)
name=$(basename $(pwd))
TMP=${TMP:-/tmp/compile-am}
PKG=$TMP/package-$name
OUTPUT=${OUTPUT:-/tmp}
# Очистка предыдущей компиляции
rm -rf $PKG
rm -rf /tmp/compile-am
# Флаги компиляции и сама компиляция
# Оптимизированные опции
SLKCFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
# Стандартные опции
#SLKCFLAGS="-O2 -march=i486 -mtune=i686"
CFLAGS="$SLKCFLAGS"
CXXFLAGS="$SLKCFLAGS"

# nice -n 19 устанавливает самый низкий приоритет для make, если
# нужна более быстрая компиляция при которой make отбирает
# больше ресурсов и не дает нормально работать другим программ
# уберите nice -n 19
nice -n 19 make || exit 1
make install DESTDIR=$PKG || exit 1
# strip
find $PKG | xargs file | grep -e "executable" \
-e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Сжать маны
if [ -d $PKG/usr/man ]; then
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in $(find $PKG/usr/man -type l -name "*.?") ; \
do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi
# Копирование doinst.sh
mkdir -p $PKG/install
cat /opt/scripts/doinst.sh > $PKG/install/doinst.sh
# Создание готового пакета с makepkg
cd $PKG
/sbin/makepkg -l y -c n $CWD/$name.txz
# Создание при помощи slacktrack
# slacktrack -mzSp $CWD/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz \
# make install
#cp /tmp/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz \
#$CWD/$PRGNAM-#$VERSION-$ARCH-$BUILD-$TAG.tgz
#rm -rf /tmp/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz
echo ""
echo "Пакет" "$name.txz" "создан в рабочей директории"

В оригинальном виде скрипт создает пакет при помощи makepkg, если нуж­
но создать пакет при помощи slacktrack читаем комментарии и закомментируем
и раскомментируем соответствующие строки.
- Компилирование и создание пакета при использовании qmake

Пакет создается следующим образом (от рута)
make
make install INSTALL_ROOT=/tmp/packages-temp
cd /tmp/packages-temp
makepkg /tmp/packages.tgz (или makepkg /tmp/packages.txz)
cd ..
rm -rf /tmp/packages-temp

packages.txz естественно заменяем на свое­имя­пакета.txz.
Также удобно использовать простейший скриптик для создания пакета, в
котором пакет создается в текущей директории с именем пакета как именем
директории
#!/bin/sh
#
ARCH=${ARCH:-i686}
# Директории, использущиеся при компиляции
CWD=$(pwd)
name=$(basename $(pwd))
TMP=${TMP:-/tmp/compile-am}
PKG=$TMP/package-$name
OUTPUT=${OUTPUT:-/tmp}
# Очистка предыдущей компиляции
rm -rf $PKG
rm -rf /tmp/compile-am
# Флаги компиляции и сама компиляция
# Оптимизированные опции
SLKCFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow -falign-jumps=1 \
-falign-labels=1"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
# Стандартные опции
#SLKCFLAGS="-O2 -march=i486 -mtune=i686"
CFLAGS="$SLKCFLAGS"
CXXFLAGS="$SLKCFLAGS"
# nice -n 19 устанавливает самый низкий приоритет для make, если
# нужна более быстрая компиляция при которой make отбирает
# больше ресурсов и не дает нормально работать другим программ
# уберите nice -n 19
nice -n 19 make || exit 1
make INSTALL_ROOT=$PKG install || exit 1
# strip
find $PKG | xargs file | grep -e "executable" \
-e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Сжать маны
if [ -d $PKG/usr/man ]; then
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in $(find $PKG/usr/man -type l -name "*.?") ; \
do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi
# Копирование doinst.sh

mkdir -p $PKG/install
cat /opt/scripts/doinst.sh > $PKG/install/doinst.sh
# Создание готового пакета с makepkg
cd $PKG
/sbin/makepkg -l y -c n $CWD/$name.txz
# Создание при помощи slacktrack
# slacktrack -mzSp $CWD/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz \
# make install
#cp /tmp/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz \
#$CWD/$PRGNAM-#$VERSION-$ARCH-$BUILD-$TAG.tgz
#rm -rf /tmp/$PRGNAM-$VERSION-$ARCH-$BUILD-$TAG.tgz
echo ""
echo "Пакет" "$name.txz" "создан в рабочей директории"

- Компилирование и создание пакета при использовании waf

Общая схема создания пакета в данном случае:
./waf build
./waf install —destdir=/tmp/packages-temp
cd /tmp/packages-temp
/sbin/makepkg -l y -c n packages.txz
rm -rf /tmp/packages-temp

где packages — имя пакета.
- Компилирование и создание пакета программ на python

Довольно много прог на python, у которых своя процедура установки. В об­
щем случае как всегда надо смотреть в INSTALL и/или README файлы в папке с
сорцами, но в большинстве случаев установка из папки с сорцами производится
следующим образом, package.txz естественно заменяем на свое­имя­пакета.txz.
#!/bin/bash
#
# build-python-packages
# Cкрипт создания пакетов из сорцов на питоне (python)
#
renice 19 $$ > /dev/null
CWD=$(pwd)
name=$(basename $(pwd))
#name=basename $(pwd)
rm -rf /tmp/temp-packages19
mkdir /tmp/temp-packages19

mkdir -p /tmp/python-package19
#
#Вот здесь править если не setup.py а install.py;'
#
python ./setup.py build
#
#python ./install.py build
#
python setup.py install --root=/tmp/python-package19
#
#python install.py install --root=/tmp/python-package19
#
cd /tmp/python-package19
mv usr/share/man usr/man
mv usr/share/doc usr/doc
/sbin/makepkg -l y -c n $CWD/$name.txz
rm -rf /tmp/python-package19
echo "Пакет" "$name.txz" "создан в рабочей директории"
echo

В общем случае запускаем python setup(install).py ­­help и смотрим что надо
делать. В некоторых случаях можно напрямую запускать соответствующий файл
из распакованного архива с сорцами.
Если при компиляции обнаруживается что не хватает какого то модуля и
нет готового пакета на известных сайтах, то ищем нужные сорцы на
pypi.python.org/pypi
Для некоторых старых прог на питоне возможно придется заменить
python2.6 на python в первой строке скрипта.
Для автоматизированной установки модулей питона c PyPI ­ the Python
Package Index, где находится множество модулей питона, удобно использовать
утилиту pip — pypi.python.org/pypi/pip, есть на slackbuilds.org. Как ее
использовать полностью описано в доках на ее сайте — www.pip­
installer.org/en/latest/index.html.
Основные команды:
pip
pip
pip
pip
pip
pip

search -v <package>
install -v <package>
uninstall -v -y <package>
freeze -v
list -v
show -v <package>

- Компилирование и создание пакета программ на perl

Довольно мало, но еще есть проги на perl, которые как правило требуют мно­
жество перловых модулей со CPAN.
В общем случае пакет с модулем perl можно создать следующим скриптом,
выполняемым в папке с распакованным архивом сорцов модуля:

#!/bin/bash
# nice -n 19 устанавливает самый низкий приоритет для make, если нужна более быстрая
# компиляция при которой make отбирает
# больше ресурсов и не дает нормально работать другим программм уберите nice -n 19
renice 19 $$ > /dev/null
# Переменные окружения сборки пакета
ARCH=${ARCH:-i686}
# Директории, использущиеся при компиляции
CWD=$(pwd)
name=$(basename $(pwd))
TMP=${TMP:-/tmp/compile-am}
PKG=$TMP/package-$name
OUTPUT=${OUTPUT:-/tmp}
# Очистка предыдущей компиляции
rm -rf $PKG
rm -rf /tmp/compile-am
# Флаги компиляции и линковки и сама компиляция
SLKCFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow \
-falign-jumps=1 -falign-labels=1 -fPIC"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
# Стандартный SLKCFLAGS
# SLKCFLAGS="-O2 -march=i486 -mtune=i686"
CFLAGS="$SLKCFLAGS"
CXXFLAGS="$SLKCFLAGS"
perl Makefile.PL
nice -n 19 make || exit 1
make install DESTDIR=$PKG || exit 1
mv $PKG/usr/share/man $PKG/usr/man
# strip
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
# Сжать маны
if [ -d $PKG/usr/man ]; then
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi
# Копирование doinst.sh
mkdir -p $PKG/install
cat /opt/scripts/doinst.sh > $PKG/install/doinst.sh
# Создание готового пакета c makepkg
cd $PKG
/sbin/makepkg -l y -c n $CWD/$name.txz
echo ""

echo "Пакет" "$name.txz" "создан в рабочей директории"

Если модулей много, то ставить их вручную удовольствие ниже среднего,
поэтому проще воспользоваться встроенными в сам perl утилитами для работы с
его модулями и плагином perl-CPANPLUS-Dist-Slackware со slacbuilds.org для
создания пакетов слаки с нужным модулем.
Для поиска нужного модуля и других операций с модулями используется
cpanp. Как и что он делает смотрите man cpanp, там все описано и переписывать
man нет надобности.
Основные команды:
a AUTHOR ...
m MODULE ...
f MODULE ...

# search by author(s)
# search by module(s)
# list all releases of a module

i MODULE ...
t MODULE ...
u MODULE ...
d MODULE ...
l MODULE ...
r MODULE ...
c MODULE ...
z MODULE ...

# install module(s)
# test module(s)
# uninstall module(s)
# download module(s)
# display detailed information about module(s)
# display README files of module(s)
# check for module report(s) from cpan-testers
# extract module(s) and open command prompt in it

x

# reload CPAN indices

o [ MODULE ... ] # list installed module(s) that aren't up to date

Команды i MODULE и аналогичные НЕ создают пакеты слаки, а прямо
устанавливают модуль в файловую систему.
Возможно потребуется симлинк /usr/bin/gzip -> /bin/gzip.
Для создания пакета слаки с нужным модулем и всех необходимых для него
по зависимостям пакетов модулей служит утилита cpan2dist (пакет создается в
/tmp)
cpan2dist --verbose --format CPANPLUS::Dist::Slackware имя:модуля

Нужный пакет создается в /tmp, причем создаются и все требуемые для него
пакеты, а не только он сам. Название нужного недостающего модуля смотрим в
выводе терминала при запуске в нем программы на perl, если вывод «no
blabla/ablabl» то имя­модуля скорее всего blabla::ablabl, в более общем случае
смотрим на www.cpan.org. Искать название нужного модуля на CPAN можно
также используя cpanp, утилиту входящую в состав perl – cpanp -m MODULE. Эту же
утилиту удобно применять для разнообразных действий с модулями perl со
CPAN. Ее описание, как всегда, man cpanp.
При первом запуске этих утилит может понадобится некоторое время на
создание индексов модулей.
Perl сам может выполнять автоматическое обновление модулей,
установленных в системе. Это выполняется с помощью команды:
perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

Для удобной работы с модулем CPAN лучше установить дополнительные
модули (например, Term::ReadKey и Term::ReadLine::GNU) , которые обеспечивают
дополнение в командной строке по клавише табуляции и другие удобные
возможности

- Послеустановочные процедуры

В состав пакета также входит скрипт doinst.sh, который определяет
послеустановочные процедуры, и в самом общем случае выглядит так
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
# toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
preserve_perms() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
if [ -e $OLD ]; then
cp -a $OLD ${NEW}.incoming
cat $NEW > ${NEW}.incoming
mv ${NEW}.incoming $NEW
fi
config $NEW
}
schema_install() {
SCHEMA="$1"
GCONF_CONFIG_SOURCE="xml::etc/gconf/gconf.xml.defaults" \
chroot . gconftool-2 --makefile-install-rule \
/etc/gconf/schemas/$SCHEMA \
1>/dev/null
}
schema_install blah.schemas
preserve_perms etc/rc.d/rc.INIT.new
config etc/configfile.new
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -x /usr/bin/update-mime-database ]; then

/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
fi
fi
if [ -x /usr/bin/glib-compile-schemas ]; then
/usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas/
fi

Но в большинстве случаев, когда нет установки файлов конфигурации в
/etc и необходимости компиляции schemas для гномовых прог, вполне подходит
его сокращенный тип
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1
fi
fi

Если собранный пакет чем то не устраивает, то делаем в папке с сорцами
make clean для очистки результатов предыдущей компиляции, заново конфигури­
руем, компилируем и создаем новый пакет (хотя проще удалить папку с сорцами
и по новой распаковать их из архива с сорцами :­)
Иногда надо создать создать пакет из директории с файлами, в этом случае
выполняем в ней /sbin/makepkg -l y -c n /tmp/packages.txz, где packages.txz заменяем
на свое­имя­пакета.txz
Если хочется просто проверить и посмотреть прогу, не устанавливая ее в
систему, то после компиляции можно сложить прогу и ее либы в какую то папку и
запустить в ней скрипт
#!/bin/sh
export PATH=\
`pwd`:\
$PATH
export LD_LIBRARY_PATH=\
`pwd`:\
$LD_LIBRARY_PATH
./program_name

4 - Создание пакетов из ArchLinux

Репозитории ArchLinux огромны и есть прямой смысл иметь возможность
создания пакетов слаки используя PKGBUILD, который в арче служит неким
аналогом SlackBuild в слаке. Помимо простоты и удобства сборки пакетов прог
которых нигде нет в слаке из неисчерпаемых репозиториев ArchLinux (наверное
самых больших в мире), сборка пакетов из арча позволяет также просто
использовать патчи из арча ко многим прогам, которые без этих патчей просто не
собираются.
Предлагаемый
далее
метод
имеет
следующие
ограничения:
нет разрешения зависимостей, как в арче, их придется устанавливать ручками
нет верификации подписи.
Естественно нет гарантии что любой пакет , собранный таким методом,
будет работать, но большинство пакетов будет работать вполне нормально.
PKGBUILD официальных репозиториев берутся из abs (Arch Build System) или
можно клонировать git
git clone git://projects.archlinux.org/svntogit/packages.git

PKGBUILD
неофициального
репозитория
aur
берутся
здесь
­
aur.archlinux.org/packages.php (тарбалл).
Арч использует для создания пакетов из PKGBUILD утилиту makepkg в
составе менеджера пакетов pacman. Сам по себе pacman в слаке не только не
нужен, но и крайне вреден, с его помощью можно запросто сломать систему,
поэтому создаем пакет только с makepkg и утилитой обновления хэшей
updpkgsums из пакета pacman. Это скрипты, которые работают везде, где есть
bash,
поэтому
не
стоит
беспокоиться
на
этот
счет.
Скачиваем отсюда ­https://www.archlinux.org/packages пакет с pacman и
распаковываем
его
в
любую
временную
папку.
Правим в этой папке usr/bin/makepkg: находим и комментируем (# в
начале каждой строки) следующие строчки (их расположение в файле может
меняться от версии к версии, но сам код постоянен)
­ чтобы makepkg не стирал файлы *.la, необходимые слаке. Должно получится вот
так:
# if [[ $(check_option libtool) = "n" ]]; then
# msg2 "$(gettext "Removing "%s" files...")" "libtool"
# find . ! -type d -name "*.la" -exec rm -f -- '{}' \;
# fi

­ чтобы makepkg не искал pacman для проверки зависимостей. Должно получится
вот так:
# check for PACMAN if we need it
# if (( ! INFAKEROOT && ( ! NODEPS || DEP_BIN || RMDEPS || INSTALL ) )); then
# if [[ -z $PACMAN_PATH ]]; then
# error "$(gettext "Cannot find the %s binary required for dependency operations.")"
"$PACMAN"

# ret=1
# fi
#fi

­ чтобы не надоедал напоминаниями ищем функцию run_pacman() и
комментируем в ней последнюю строчку. Должно получится вот так:
if (( ! ASROOT )) && [[ ! $1 = -@(T|Qq) ]]; then
if type -p sudo >/dev/null; then
cmd=(sudo "${cmd[@]}")
else
cmd=(su root -c "$(printf '%q ' "${cmd[@]}")")
fi
fi
# "${cmd[@]}"
}

Правим в этой папке usr/bin/updpkgsums, заменяем
newsums=$(makepkg -g -p "$buildfile") && rm -f "$buildfile" &&

на
newsums=$(/sbin/makepkg-arch --asroot -g -p "$buildfile") && rm -f "$buildfile" &&

Переопределяем флаги
приводя их к следующему виду:

компиляции

в

файле

/etc/makepkg.conf

#-- Compiler and Linker Flags
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC"
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1 -fPIC"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
#-- Make Flags: change this for DistCC/SMP systems
MAKEFLAGS="-j1"

Флаги могут какие угодно по хотению собственной левой пятки :­)
Создаем пакет pacman­slackware, запускаем от рута во временной папке с
pacman скриптик:
#!/bin/sh
mkdir -p /tmp/pacman-slackware/etc /tmp/pacman-slackware/usr/bin \
/tmp/pacman-slackware/usr/share /tmp/pacman-slackware/usr/man \
/tmp/pacman-slackware/sbin
cp -a etc/makepkg.conf /tmp/pacman-slackware/etc
cp -a usr/bin/makepkg /tmp/pacman-slackware/sbin/makepkg-arch
cp -a usr/bin/updpkgsums /tmp/pacman-slackware/usr/bin/updpkgsums
cp -ar usr/share/man /tmp/pacman-slackware/usr

cp -ar usr/share/bash-completion /tmp/pacman-slackware/usr/share
cp -ar usr/share/locale /tmp/pacman-slackware/usr/share
cp -ar usr/share/pacman /tmp/pacman-slackware/usr/share
cp -ar usr/share/zsh /tmp/pacman-slackware/usr/share
CWD=$(pwd)
cd /tmp/pacman-slackware
chown -R root:root .
find . \
\( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
-exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
/sbin/makepkg -l y -c n $CWD/pacman-slackware.txz
cd $CWD

получаем в папке с распакованным pacman пакет pacman­slackware.txz и
устанавливаем его.
Скачиваем
пакет
pacman­mirrorlist
­https://www.archlinux.org/packages/core/any/pacman­mirrorlist и распаковываем
его в соответствии с его структурой (распаковываем папку pacman.d в /etc).
Раскомментируем в /etc/ pacman.d/mirrorlist какой нибудь сервер репозиториев,
у самого стоит Server = http://mirrors.liquidweb.com/archlinux/$repo/os/$arch.
Для создания и использования abs необходим сам пакет abs. Создаем его
следующим
образом:
копируем
PKGBUILD
для
abs
c
www.archlinux.org/packages/extra/i686/abs
(projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/abs). Создаем
из PKGBUILD пакет слаки следующим скриптом, исполняемым от root во
временной папке с PKGBUILD abs (в дальнейшем этот же скрипт будет
использоваться для создания пакетов слаки и из других PKGBUILD).
#!/bin/bash
# Текущая директория
CWD=$(pwd)
#
# Замена qmake-qt4 в арче на qmake в слаке
sed -i 's|qmake-qt4 |qmake |g' PKGBUILD
#
# Название и версия пакета (из PKGBUILD)
namepkg=$(sed -n '/^pkgname=/p' $CWD/PKGBUILD | sed 's/pkgname=//') > /dev/null
version=$(sed -n '/^pkgver=/p' $CWD/PKGBUILD | sed 's/pkgver=//') > /dev/null
#
# Создание пакета ArchLinux
/sbin/makepkg-arch --asroot || exit 1
# Создание пакета Slackware
rm -rf pkg-slack
mkdir -p pkg-slack/install
find *tar.xz | while read i; do tar --xz -xf $i -C pkg-slack; done
sed -n -e '/post_install() {[[:space:]]*$/,/^[[:space:]]*}[[:space:]]*$/p' .INSTALL | sed -e
'1d;$d' -e 's/[[:space:]]*//' > pkg-slack/install/doinst.sh
cd pkg-slack
rm -rf .INSTALL > /dev/null

rm -rf .PKGINFO > /dev/null
rm -rf .MTREE > /dev/null
mv usr/share/man usr/man
mv usr/share/doc usr/doc
/sbin/makepkg -l y -c n $CWD/$namepkg-$version-archlinux.txz
cd $CWD

sed ­n ­e '/post_install() и далее в одной строке. Если этот скрипт по каким то
причинам не создал пакет слаки, то переходим в директорию pkg в этой папке,
удаляем в ней файлы .MTREE, .PKGINFO, .INSTALL и запускаем в этой папке от
рута
/sbin/makepkg -l y -c n /tmp/packages-temp.txz

Далее переименовываем созданный в /tmp пакет packages­temp.txz.
Полученный таким образом пакет будет работоспособен в большинстве случаев,
изменятся только пути документации, который будут отличаться от стандартно
принятого в слаке и, возможно, надо будет ручками выполнить процедуры в
.INSTALL.
В файле /etc/abs.conf можно переопределить место сохранения дерева abs в
строке
[ "$ABSROOT" = "" ] && ABSROOT="/ваш_путь_к_дереву_abs/"

Создаем дерево официальных репозиториев — abs в терминале.
Обновляется дерево abs такой же командой — abs.
Далее просто переходим в папку с нужным PKGBUILD, копируем папку
куда­нибудь, или в ваше место сборки пакетов или, например, в /tmp и запускаем
в ней указанный выше скрипт, на выходе получаем пакет слаки. Если у пакета
есть какие то зависимости, то они указаны и в вебморде и в секциях depends,
makedepends, optdepends PKGBUILD. Depends жесткие зависимости, которые
обязательно должны быть, makedepends нужны только для создания пакета и
после его создания могут быть удалены, optdepends для каких то дополнительных
и необязательных возможностей.
Но в общем случае эти зависимости отражают мнение майнтейнеров арча и
совершенно необязательно, что это мнение объективно. Единственным
объективным мнением в данном случае может служить только мнение автора
проги, поэтому смотреть зависимости надо в первую очередь в выводе ее
конфигурации. Как и было сказано, все зависимости придется устанавливать
ручками.
Арч декларирует наличие самых новых версий прог, но это далеко не всегда
так, особенно в aur. Поэтому если хочется самые последние версии прог, надо
зайти на сайт проги, и если есть новая версия, скачать ее сорцы в папку со
PKGBUILD и в нем поправить pkgver, править md5sums (sha256sums) для архива
сорцов можно утилиткой updpkgsums из пакета pacman­slackware
Поиск PKGBUILD выполняется через вебморды, для официальных
репозиториев здесь — www.archlinux.org/packages, для aur здесь —
aur.archlinux.org/packages. Поиск возможен как по названию пакета, так и по
описанию (типа «pdf»)
Иногда, довольно редко, нужны тривиальные правки PKGBUILD, типа
замены qmake­qt4 на qmake.

Для включения ccache необходимо убрать в файле /etc/makepkg.conf
восклицательный знак перед ccache в строке BUILDENV=(fakeroot !distcc color
ccache check !sign).
Сказанного вполне достаточно для работы с abs и aur, но если возникли
какие то вопросы они скорее всего разобраны в вики арча, wiki.archlinux.org.
Но надо помнить что создание пакетов из чужого дистра изначально может
быть некорректным (хотя в большинстве случаев такое создание вполне удачно),
поэтому в первую очередь надо думать головой (впрочем это всегда полезно :­).
При сборке пакетов из арча надо помнить, что в арче принято более мелкое
разбиение пакетов, чем в слаке, поэтому если вы увидели в арче какую то
зависимость для нужного вам пакета, не надо спешить ее собирать и ставить,
вполне возможно, что необходимая либа или прога в слаке уже стоит в составе
какого­то более крупного пакета и если вы ее соберете из арча и установите, то
тем самым замените уже имеющуюся. Таким образом очень легко получить
неработоспособную систему. Поэтому перед сборкой и установкой пакетов из
арча всегда надо проверять, нет ли уже вас необходимого. Проверить это проще
всего поиском по содержимому файлов в /var/log/packages/ любой утилитой
поиска, типа упомянутой ниже regexxer.
Например в арче отдельный пакет webkit, тем более что он взят не из
самого qt4, а из порта webkit­qt5 на qt4. Совершенно необязательно и даже вредно
заменять им уже имеющийся в слаке webkit в составе qt4, подавляющее
большинство прог будет прекрасно на нем работать.
В любом случае не надо собирать из арча системные пакеты, уже
имеющиеся в слаке на DVD или в других местах, поломать систему таким образом
очень легко. Лучше всего использовать abs и aur для сборки пользовательских
пакетов и их зависимостей, которых в слаке нигде нет.

5 - Создание пакетов из Debian (Ubuntu)

Репозитории Debian (Ubuntu) также огромны, и также есть прямой смысл
использовать их. К сожалению простой метод, подобный методу использования
реп ArchLinux, применительно к репам Debian(Ubuntu) сопряжен со
значительными трудностями портирования множества его утилит на слаку и
вряд ли применим. Но по крайней мере можно упростить наложение патчей из
дебиана и убунты, среди которых не только специфичные для них, но и
необходимые в общем случае патчи, путем использования dpkg co slackbuilds.org
(также необходим пакет fakeroot).
Поиск
нужного
пакета
в
дебиане

www.debian.org/distrib/packages.ru.html#search_packages,
в
убунте

packages.ubuntu.com. Находим нужный пакет и далее со страницы пакета
скачиваем файлы — пакет.dsc, пакет.orig.tar.bz2, пакет.debian.tar.bz2, кладем их в
отдельную папку и выполняем в ней от root dpkg-source -x пакет.dsc. В результате в
той же папке распаковывается пакет с оригинальными сорцами и на них
накладываются патчи. Далее можно конфигурировать и собирать пакет
стандартными способами, описанными выше.

6 - Создание пакетов из rpm-base дистрибутивов

Репозитории
rpm­base
дистрибутивов
типа
opensuse
(download.opensuse.org/repositories) или fedora также большие, и из них вполне
можно собирать пакеты для слаки.
Можно собрать пакеты слаки из бинарных пакетов rpm­base дистрибутивов
пр помощи утилиты rpm2tgz, входящей в поставку Slackware, но результат тут
вовсе не гарантирован из­за несовпадения версий библиотек и прочих прелестей.
Поэтому лучше собирать из сорцов в пакетах *.src.rpm, в которых порой
содержатся необходимые патчи:
­ распаковываем пакет с сорцами в /root/rpmbuild
rpm --force -Uhv пакет.src.rpm

­ переходим в /root/rpmbuild/SPECS
­ разворачиваем пакет с сорцами и накладываем патчи
rpmbuild --nodeps -bp пакет.spec

иногда может потребоваться незначительная правка spec файла из­за
разницы в реализации rpm. В частность в спеках из AltLinux, к примеру,
зачастую приходится удалять неподдерживаемые в rpm из Slackware
директивы.
­ Переходим в директорию /root/rpmbuild/BUILD/пакет и далее
стандартное создание пакета

7 - Использование ccache

Если Вы часто компилируете какие то одинаковые куски кода, то будет
полезен ссache
­ кэш компиляторов. Он может значительно ускорить
компиляцию, так как заново компилироваться будут только файлы, которые
изменились с последней компиляции. Особенно удобно использовать ccache для
сборки пакетов из git или других систем контроля версий. По каким то
непонятным причинам он может ускорить и разовую сборку, но сие уже из
разряда необъяснимых феноменов. Необходимо помнить, что ccache требует 1 гиг
на диске для своего кэша.
В slackware 14.1 ccache уже настроен и не требует каких­либо
дополнительных телодвижений. Но если вы видите, что при компиляции
происходят странные вещи, которые нельзя чем­то объяснить, то можно
попробовать очистить кэш ccache командой ccache ­С, иногда это позволяет
разрешить проблему.
8 - Двухпроходная компиляция

Если есть много времени, можно попробовать использовать такую возмож­
ность gcс, как компилирование с обратной связью, при котором сначала создает­
ся исполняемый файл с дополнительным кодом, который затем при исполнении
анализирует выполнение программы и записывает результата анализа в отдель­

ный файл, а потом при повторной компиляции этот файл используется компиля­
тором с целью оптимизации вновь создаваемого исполняемого файла (профили­
ровщик+оптимизатор). Затраты времени на создание пакета при этом
возрастают минимум раза в три. Выигрыш в производительности, это как
повезет:­)
Общая схема использования:
­ сначала компилируем с флагами
-O3 -march=native -mtune=native -pipe -mmmx -m3dnow \
-falign-jumps=1 -falign-labels=1 \
-fprofile-dir=/tmp/prof/proga -fprofile-generate \
-fprofile-arcs -fprofile-values

где директория /tmp/prof/proga должны быть доступна для записи
­ запускаем несколько раз программу с выполнением типичных для нее
операций
­ затем компилируем во второй раз с флагами
-O3 -march=native -mtune=native -pipe -mmmx -m3dnow \
-falign-jumps=1 -falign-labels=1 \
-fprofile-dir=/tmp/prof/proga -fprofile-use \
-fbranch-probabilities -fvpt -funroll-loops -fpeel-loops -ftracer

тут есть флаги, которые вставляются fprofile­use автоматом и они включены толь­
ко для гарантии.

9 - Установка другой версии системного пакета
Допустим вы нашли какую то очень понравившуюся программу, но она
работает только с более новой ( или более старой) версией некоторых пакетов,
чем установлены в системе. Выход довольно простой, устанавливаем эти новые
(старые) версии в место, отличное от уже имеющихся в системе пакетов, и
указываем ей как надо использовать эти новые пакеты.
Далее на конкретном примере, ну очень понравился например evince третьей
версии но он требует GTK3, а в системе установлен GTK2 (GTK есть в Slackware
14.1, поэтому далее сказанное можно рассматривать только как пример). Сначала
создаем пакет GTK3 с установкой куда нибудь в /opt/system/gtk­3.1.2,
конфигурируем его по образу и подобию слакбилда GTK2, начнет при
конфигурации ругаться на неправильные опции, смотрим в ./configure ­­help что
изменилось в сравнении с GTK2. Конфигурация что то типа такого, обязательно
указываем в ­­prefix место отличное от /usr, лучше куда нибудь в /opt
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/opt/system/gtk-3.1.2 \

--enable-xinput \
--enable-xkb \
--disable-introspection \
CFLAGS="-O2 -march=i486 -mtune=i686" \
CXXFLAGS="-O2 -march=i486 -mtune=i686"

Поскольку системный пакет, то применяем стандартные опции компиляции,
а не оптимизированные. Создаем пакет GTK3, устанавливаем, для порядка сде­
лаем от рута updatedb ; locate *.pc | grep gtk.
Создаем привязки к либам GTK3 и вносим их в кэш либов, дополняем
/etc/ld.so.conf, добавляя в него путь к либам GTK3, должно получится что то типа
такого
/usr/local/lib
/usr/i486-slackware-linux/lib
/usr/lib/seamonkey
/usr/lib/qt/lib
/opt/e17/lib
/usr/lib/xulrunner
/opt/system/gtk-3.1.2/lib

Выполняем от рута ldconfig, чтобы изменения вступили в силу.
Теперь указываем системе где искать GTK3 при компиляции программ, до­
бавляем в configure соответствующей программы, в данном случае evince
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH: \
/opt/system/gtk-3.1.2/lib/pkgconfig/

Для evince должно получиться что то типа такого, ставить новый пакет будем
не в /usr, где уже стоит старый пакет, а куда нибудь в /usr/local или в /opt, чтобы
не мешал уже имеющемуся пакету.
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH: \
/opt/system/gtk-3.1.2/lib/pkgconfig/ \
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr/local \
--disable-scrollkeeper \
--disable-nautilus \
CFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow \
-falign-jumps=1 -falign-labels=1" \
CXXFLAGS="-O3 -march=native -mtune=native \
-fomit-frame-pointer -pipe -mmmx -m3dnow \
-falign-jumps=1 -falign-labels=1"

для остальных программ по аналогии.
Создаем пакет evince3 и устанавливаем его. Теперь указываем системе где
искать GTK3 при выполнении программ на нем. Пишем в /root/.bashrc и в

/home/user/.bashrc
export XDG_DATA_DIRS=/usr/share:/usr/local/share:\
/opt/system/gtk-3.1.2/share
export XDG_SHARED_DIR=/usr/share:/usr/local/share:\
/opt/system/gtk-3.1.2/share

Перезагружаем иксы чтобы применить изменения в ~/.bashrc Далее фишка
специфичная
для
GTK3,
выполняем
для
компиляции
схемы
org.gtk.Settings.FileChooser.gschema.xml
glib-compile-schemas /opt/system/gtk-3.1.2/share/glib-2.0/schemas/*

Теперь можно запускать evince3 оттуда, куда вы его установили, и насла­
ждаться :­) Естественно это общая схема установки таких пакетов, работает она в
большинстве случае, если есть какие то специфические особенности, ищем в
гугле вылезающую в терминале ошибку, находится как правило за пять минут.
Очень удобно создание и управление пакетами реализовать через файл­ме­
неджер worker, написав простейшие скрипты автоматизации создания пакетов и
назначив их и команды управления пакетами на кнопки worker. Пример таких
скриптов и конфигурации worker в связке с терминалом roxterm и редактором
juffed во вложении worker.tbz. Естественно что скрипты можно использовать и са­
ми по себе, но в связке worker ­ roxterm ­ juffed ими наиболее удобно пользовать­
ся.
10 - Ошибки при создании пакета и методы их устранения

При создании пакета могут возникнуть ошибки на разных этапах его
создания. Далее описаны некоторые возникающие ошибки и методы их
исправления. Естественно, описать все возможные ошибки не представляется
возможным, поэтому приведены только некоторые из них.
В общем случае вывод ошибки в терминале ищется в интернете, как
правило это самый простой способ идентифицировать источники ошибки и
найти методы ее исправления.
Для исправлений можно править как сам Makefile (неканонично и
некорректно) или править соответствующие опции конфигурации и сборки (как
надо)
Зачастую соответствующие исправления надо вносить как при
конфигурации, так и при компиляции.
A. Ошибки на этапе конфигурации
Ошибка
Отсутствует необходимый пакет.
Исправление
Поставить необходимый пакет.
Есть ряд особенностей, связанных с крупными пакетами в слаке. Зачастую
необходимая библиотека или еще что­то еще уже содержится в самой слаке, но в
составе какого­то крупного пакета. Например, зачастую требуется пакет webkit,

но сам webkit уже есть в слаке в составе пакета qt, но не указан в явном виде как
пакет, поэтому конфигурация завершается с ошибкой. В этом случае надо
править файлы конфигурации типа configure.in(configure), cmakelist.txt и убирать
из них проверку на наличие пакета webkit.
Поэтому прежде чем что­то ставить, тем более самосборное, поищем
название недостающего файла поиском по содержимому файлов в
/var/log/packages, вполне возможно, что нужное уже есть, но в составе крупного
пакета.
Ошибка
Несовпадение версий необходимый пакетов.
Исправление
Поставить необходимую версию. В некоторых старых прогах необходимая
версия, больше требуемой уже есть и удовлетворяет требованию «быть больше,
чем», но все равно выдается ошибка об отсутствии необходимой версии. В этом
случае надо править файлы конфигурации типа configure.in(configure),
CmakeList.txt и заменить в месте проверки версии пакета указанную там версию
на или имеющуюся версию, или, что лучше, предыдущую минорную версию,
например если стоит версия 19.5, то указать в файле конфигурации проверку на
версию 19.4.
Ошибка
Нет необходимой возможности в имеющимся пакете. Иногда есть требуемый
пакет нужной версии, но в нем нет необходимой возможности, которая есть в его
стандартной конфигурации, но по каким­то причинам эта возможность
выключена в имеющемся пакете.
Исправление
Пересобрать пакет, включив при конфигурации требуемую возможность
B. Ошибки на этапе компиляции
Ошибка
Нет нужного файла (file .. not found). Сначала убедимся что такого файла нет в
системе — slоcate файл.
Исправление
Есть несколько причин такой ошибки:

­ На этапе конфигурации не проверены необходимые зависимости
Тогда просто поставить необходимый пакет. Найти нужный пакет по
входящему в него файлу можно, например, на slackfinder.org.
­ Компилятор не видит имеющийся файл.
Прописываем во флагах компилятора файл с путем, например для какой­
то либы ­l файл­с­путем.
При компиляции
специфическая ошибка

некоторых

старых

прог

иногда

выскакивает

/usr/lib/X11/config/site.def:44:0: fatal error: host.def: No such file or directory.

Сам по себе этот файл не нужен, все необходимое из этого файла находится в
других файлах, но компилятор ищет именно его. Тогда просто создаем пустой
файл /usr/lib/X11/config/site.def

Ошибка
Типа undefined reference to `что­то'
Исправление
Она может возникнуть в древних прогах, которые требуют каких­то
возможностей, которых или уже нет в новых версиях используемых либ или они
в других либах. Это лечится, и то не всегда, только копанием в коде проги.
Она может возникнуть при использования оптимизационных флагов
компилятора и линкера. В этом случае ставим стандартные для слаки флаги
компиляции и убираем вообще флаги линкера типа LDFLAGS =
Ошибка
Типа hypot@@GLIBC_2.0' is defined in DSO /lib/libm.so.6 so try adding it to the
linker command line, либа может быть любая.
Исправление
Добавляем либу при конфигурации, иногда может потребоваться добавить
ее и во флагах компилятора. Как пример:
LIBS+="-lm" \
./configure \

..
где ­l это обязательный суффикс, а 'm' название библиотеки без «lib»
Ошибка
При использовании новой версии компилятора, в которой ужесточены
требования к коду, в сравнении с версией компилятора, используемой ранее,
зачастую возникает великое множество ошибок типа таких:
ошибка: неявная декларация функции «posix_openpt» [-Werror=implicit-functiondeclaration]

ошибка может быть любая и написана в квадратных скобках.
Исправление
Выключаем такие проверки, добавляя при конфигурации и компиляции во
флаги компилятора (CFLAGS, CXXFLAGS и аналогичные) что­то типа
-Wno-implicit-function-declaration

наподобие

./configure CFLAGS="­Wno­implicit­function­declaration"
С. Ошибки на этапе сборки пакета

Ошибка
Не находит makepkg
Исправление
Иногда в слакбилдах прописано не /sbin/makepkg а просто makepkg, в этом
случае при запуске слакбилдов от root при помощи sudo /sbin/makepkg просто не
виден, его нет в PATH.
Простейший метод исправления просто заменить makepkg в слакбилде на
/sbin/makepkg

V - Пересборка некоторых базовых системных пакетов
Осуществляется с целью повышения быстродействия и производительности.
Такая переборка необязательна, но желательна, т.к. довольно сильно повышает
производительность. Не хотите возиться с их перекомпиляцией, можно этого и
не делать, но и «мгновенной» системы тогда не получите.
1 - Перекомпиляция ядра

Сейчас, как правило, нет необходимости перекомпилировать ядро для
включения в него каких­то драйверов, без которых не работали нужные
устройства. Сейчас перекомпиляция ядра нужна для его оптимизации под
конкретные задачи и железо. В частности для десктопа существуют ряд патчей,
которые значительно повышают производительность, многозадачность и
отзывчивость, поскольку оригинальные вещи в ядре заточены под серверные, а
не под десктопные задачи. Для оптимизации под декстопные задачи и
конкретное железа также изменяются значения некоторых параметров
настройки ядра. Описание параметров конфигурации ядра можно посмотреть
здесь ­ www.unix­lab.org/posts/kernel­v3
Все сказанное в части выбора и конфигурирования ядра, патчей к нему отно­
сится к любым версиям слаки, в том числе и к будущим, только внимательно сле­
дим чтобы патчи подходили под версию ядра, и если планируем ставить фирмен­
ные драйвера видеокарты, также чтобы выбранная версия ядра поддерживалась
нужным драйвером видеокарты. Если драйвер nvidia не собирается с выбранным
ядром, то ищем патчи для нужного драйвера на packages.ubuntu.com. Если таких
патчей нет и нужен драйвер, то с этой версией ядра придется погодить, пока либо
nvidia либо Марк не наваяют требуемое :­) В ряде случаев удобнее использовать
патчи к требуемому драйверу из aur ArchLinux.
Патчи к ядру можно разделить на одиночные и комбинированные. К
первым относятся патчи, изменяющие только одну функцию ядра. Примеры
таких патчей — BFS (альтернативный планировщик задач), BFQ
(альтернативный планировщик ввода­вывода), TuxOnIce (hibernate). Вторые
включают в себя набор одиночных патчей. Примеры таких патчей — ck1
(включает BFS и ряд других патчей для десктопа), pf (включает BFS, BFQ,
TuxOnIce, ряд других патчей и апдейты к ядру), zen (весьма широкий набор
патчей), liquorix со liquorix.net для мультимедийного и игрового десктопа.
Эффективность применения патчей сильно зависит от конкретного компа,
патчи BFS, BFQ, ck1 применимы ко всем компам, pf содержит специфические
патчи для ноут­ и нетбуков, zen патч универсальный, но именно в силу
универсальности менее эффективный. В общем случае лучше всего подбирать
одиночные патчи под свой комп исходя из требуемых задач и имеющегося
железа, для настольного десктопа наиболее эффективно сочетание патчей BFS и
BFQ или набор патчей liquorix, для ноут­ и нетбуков патч pf.
В данном примере используются патч BFS — ck.kolivas.org/patches и патч
BFQ — algo.ing.unimo.it/people/paolo/disk_sched/patches. Естественно можно
применить и другие патчи, исходя из своего железа и задач.
Немного о выборе версии ядра. Как правило для десктопа на том же железе
более новое ядро тормознее чем старое, исключений из этого правила
практически нет, поэтому если ваше железо поддерживается более старой

версией ядра, не имеет смысла увлекаться более новыми версиями. В новье
впиханы какие то новые серверные технологии, которыми вы на десктопе скорее
всего никогда не будете пользоваться, но которые тормозят ядро именно для
десктопа. Далее будет использоваться ядро 3.10.17 из самой слаки, конфиг ядра
берем из нее же. Если вы собираетесь применять другую версию ядра, отличную
от
имеющейся
в
слаке,
то
сорцы
ядра
брать
здесь­
www.kernel.org/pub/linux/kernel.
Если при установке слаке не поставили сорцы ядра, то ставим пакет kernel­
source­*. В случае использования другой версии ядра распаковываем сорцы ядра
в
/usr/src и делаем симлинк от директории /usr/src/linux­*.**.** на
/usr/src/linux, дальнейшие операции производим в директории /usr/src/linux.
Если ядро скачивается с kernel.org, а не устанавливается пакет с DVD, то
смотрим в пакете kernel­source­* с DVD файл ../install/doinst.sh и делаем то, что в
нем сказано.
Ядро основная часть системы, поэтому принимаем необходимые
предосторожности, чтобы всегда можно было откатиться к первоначальному
состоянию после каких­то некорректных изменений. Эти предосторожности
гарантируют откат к корректному состоянию ядра и их лучше сделать, чтобы
потом не хлопать себя с досады по лбу :­) Перекомпиляция ядра вещь
совершенно безопасная при выполнении нескольких простых шагов :
Копируем куда­нибудь /boot, /lib/modules и /etc/lilo.conf.
Если эксперименты не удовлетворяют, восстанавливаем /boot, /lib и
/etc/lilo.conf, выполняем lilo ­v и получаем старую конфигурацию.
– Если напортачили так, что с винта вообще ничего не загружается,
загружаемся с какого нибудь liveCD, восстанавливаем /boot, /lib/modules и
/etc/lilo.conf, затем загружаемся с установочного DVD Slackware, внима­
тельно читаем самый первый экран, пишем в строку приглашения

hugesmp.s root=/dev/sda1 rdinit= ro

где sda1 ваш раздел со слакой, пробел после rdinit= обязателен.
­ Выполняем lilo -v. Можно сделать chroot с liveCD в раздел со слакой, но
восстановление с установочного DVD гарантированно работает.
Есть несколько методов пересборки ядра в зависимости от пожеланий к
нему, они рассмотрены далее.
A. Стандартное ядро с патчами

Самый простой и самый длительный при сборке метод, но при изменении
или добавлении железа его не придется пересобирать.
­ Патчим ядро, patch -p1 -i патч, сначала патч BFS, затем все подряд по
порядку нумерации BFQ в папке с сорцами ядра /usr/src/linux.
­ Заменяем /usr/src/linux/.config на распакованный из /proc/config.gz (не
забываем переименовать распакованный config в .config :­)
– Подстраиваем конфиг к текущей версии ядра ­ make oldconfig. Включаем

здесь BFQ. Выбираем BFQ шедулером ввода­вывода по умолчанию. Далее
лучше жать Enter на умолчания.
­ Настраиваем параметры ядра — make nconfig
Пример настройки приведен ниже, но это только пример, показывающий
принцип такой настройки. Некоторые параметры в примере общие для
всех, некоторые специфичны для конкретного железа и ваших
пожеланий к ядру. Если вы не уверены или не хотите этого делать, то
этот шаг можно пропустить, что­то потеряв в производительности в
сравнении с ядром, настроенным «под себя».
­ Собираем ядро ­ make bzImage
­ Собираем модули ­ make modules
­ Добавляем в lilo.conf (естественно заменяем раздел на свой)
# Linux bootable partition config begins
image = /boot/vmlinuz.old
root = /dev/sda*
label = Slackold
# Partitions should be mounted read-only for checking
read-only

vmlinuz.old создается автоматом при установке нового ядра, lilo его
прописывает при установке нового ядра, поэтому напортачив в кон­
фигурации нового ядра всегда можно будет загрузить старое.
­ Устанавливаем модули ­ make modules_install
­ Устанавливаем новое ядро ­ make install
Здесь могут быть не совсем понятные грабли, которых не было в
предыдущих
версиях,
поэтому
возможно
придется
ручками
скопировать /usr/src/linux/arch/x86/boot/bzImage System.map в /boot и
далее подправить lilo.conf под bzImage
­ Выполняем lilo ­v
­ Перезагружаемся, выбираем новое ядро в lilo, вуаля :­)

B. Ядро с патчами и только необходимыми модулями

Ядро с патчами и только необходимыми, а не всеми модулями. Выигрыш
во времени компиляции, но при установке нового оборудования или его замене
ядро придется пересобирать.
Все тоже самое, что и в методе A, но после шага
­ Подстраиваем конфиг к текущей версии ядра ­ make oldconfig.
добавляется
­ Убираем лишние модули ­ make localmodconfig, при этом должно быть
включено все используемое оборудование.

Далее аналогично методу A.

C. Монолитное ядро с патчами

Ядро с патчами и только необходимыми, а не всеми модулями,
включенными в само ядро. Самое производительное ядро, но при установке
нового оборудования или его замене ядро придется пересобирать.
Все тоже самое, что и в методе B, но после шага
­ Убираем лишние модули ­ make localmodconfig, при этом должно быть
включено все используемое оборудование.
добавляется
­ Включаем необходимые модули в ядро ­ make localyesconfig и создаем
таким образом маленькое монолитное быстродействующее ядро
Далее аналогично методу B

D. Настройка параметров ядра
General setup

Local version append to kernel release ­ свое название, чтобы оно не затерло
уже имеющиеся ядро
Auditing support ­ убираем
Initial RAM filesystem and RAM disk (initramfs/initrd) support — убираем в
случае монолитного ядра
SLUB per cpu partial cache ­ убираем, понижается латентность
Profiling support­ убираем,
Configure standard kernel features (for small systems)­ убираем, если нет
этих small systems
Enable the block layer

Support for large (2TB+) block devices and files ­ убираем если нет таких
устройств
Partition Types ­ убираем все, кроме PC BIOS и EFI
IO Schedulers ­ Default I/O scheduler ­ BFQ
Processor type and features

Support for big SMP systems with more than 8 CPUs ­ убираем если нет таких
устройств
Memtest ­ убираем, если не нужен
Processor family ­ выбираем свой тип процессора
Generic x86 support ­ убираем, нужен только авторам дистрибутивов
Preemption Model (Preemptible Kernel ­ Low­Latency Desktop ­ для десктопа
Enable X86 board specific fixups for reboot ­ убираем, нужен только для
CS5530A and CS5536 chipsets and the RDC R­321x SoC

High Memory Support ­ для 32 битных процесоров выбираем исходя из своей
памяти, как именно написано в помощи
PAE (Physical Address Extension) Support ­ убираем, если нет необходимости
Allow for memory compaction ­ убираем, если памяти меньше 4Gb
Transparent Hugepage Support ­ убираем, если памяти меньше 4Gb
Math emulation ­ убираем,нужно только для супердревних процессоров.
EFI runtime service support ­ убираем, если нет EFI
Timer frequency ­ 1000 для десктопа
Maximum number of CPU ­ ставим количество своих процессоров, не ставьте
1 и не отключайте поддержку SMP, даже если у Вас один процессор, не
будут собираться драйвера NVIDIA.
Power management and ACPI options
Suspend to RAM and standby ­ убираем, если не нужен
Hibernation (aka 'suspend to disk') ­ убираем, если не нужен
ACPI (Advanced Configuration and Power Interface) Support ­ Dock ­ убираем,
если их нет
CPU Frequency scaling ­ для настольного можно вообще убрать, для
остальных выбираем по соотношению производительность/потребление
Cpuidle Driver for Intel Processors ­ убираем для не Intel
Bus options

PCI Express support — убираем, если нет таких устройств
PCI IO­APIC hotplug support — убираем, если нет таких устройств
ISA support — убираем, если нет таких устройств
Support for PCI Hotplug — убираем, если нет таких устройств
Networking support

Networking options
The IPv6 protocol ­ убираем, если не нужен
Network packet filtering framework ­ если нет параноидальности, то для
одиночного дестопа можно убрать
Amateur Radio support ­ убираем если нет таких устройств
Device Drivers

Parallel port support ­ ­ убираем, если нет таких устройств
Plug and Play support ­ PNP debugging messages ­ убираем если нет проблем
с устройствами
Block devices
Compaq SMART2 support ­ ­ убираем, если нет таких устройств
Compaq Smart Array 5xxx support
Mylex DAC960/DAC1100 PCI RAID Controller support ­ убираем, если
нет таких устройств
SCSI device support
SCSI tape support ­ ­ убираем, если нет таких устройств
SCSI generic support ­ включаем, нужен для некоторых программ,
типа Nero
SCSI Transports
SCSI target support for FiberChannel Transport Attributes ­
убираем если нет таких устройств
SCSI low­level drivers — убираем ненужное, для примера

3ware 5/6/7/8xxx ATA­RAID support
HP Smart Array SCSI driver
3ware 9xxx SATA­RAID support
3ware 97xx SAS/SATA­RAID support
ACARD SCSI support
ARECA (ARC11xx/12xx/13xx/16xx) SATA/SAS RAID Host Adapter
LSI Logic New Generation RAID Device Drivers
LSI Logic MegaRAID SAS RAID Module
HighPoint RocketRAID 3xxx/4xxx Controller support
Cisco FNIC Driver
Intel/ICP (former GDT SCSI Disk Array) RAID Controller support
IBM ServeRAID support
IBM Power Linux RAID adapter support
Emulex LightPulse Fibre Channel Support
PMC SIERRA Linux MaxRAID adapter support
Brocade BFA Fibre Channel Support
LibFC module
LibFCoE module
Serial ATA and Parallel ATA drivers— убираем ненужное, для примера
SATA Port Multiplier support
Initio 162x SATA support (Very Experimental)
ACard AHCI variant (ATP 8620)
Silicon Image 3124/3132 SATA support
Pacific Digital ADMA support
Pacific Digital SATA QStor support
Promise SATA SX4 support (Experimental)
Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Marvell SATA support
NVIDIA SATA support
Promise SATA TX2/TX4 support
Silicon Image SATA support
SiS 964/965/966/180 SATA support
ServerWorks Frodo / Apple K2 SATA support
ULi Electronics SATA support
VITESSE VSC­7174 / INTEL 31244 SATA support
Проверяем включены ли драйвера нужных контроллеров жестких
дисков в ядро. Для работы некоторых жестких дисков также надо
включить нужное устройство в Device Drivers ­ I2C support ­ I2C
Hardware Bus support.
Multiple devices driver support (RAID and LVM) — убираем, если нет
Network device support
Fibre Channel driver support ­ убираем, если нет таких устройств
Ethernet driver support ­ выбираем свою карту
FDDI driver support ­ убираем, если нет таких устройств
HIPPI driver support ­ убираем, если нет таких устройств
Character devices

Non­standard serial port support ­ убираем, если нет таких
устройств
Serial drivers ­ убираем, если нет таких устройств
I2C support ­ I2C Hardware Bus support ­ ­ выбираем свое устройство
Hardware Monitoring suppor ­ ­ выбираем свое устройство
Watchdog Timer Support ­ WatchDog Timer Driver Core ­ убираем
Graphics support
Laptop Hybrid Graphics ­ GPU switching support ­ убираем, если
нет таких устройств
Support for frame buffer devices — убираем для карт NVIDIA
поддержку frame buffer, из­за проблем с фирменным драйвером
Sound card support
Advanced Linux Sound Architecture
PCI sound devices ­ выбираем свою карту
Accessibility support ­ Console on braille device ­ убираем, если нет
таких устройств
Generic Dynamic Voltage and Frequency Scaling (DVFS) support ­
убираем для настольного компа
File systems

оставляем только нужные файловые системы
Quota support — убираем, если не нужно
DOS/FAT/NT Filesystems
Default codepage for FAT ­ 866
Default iocharset for FAT ­ utf­8
Network File Systems ­ ­ убираем если не нужно
Native language support
включаем в ядро не как модуль ­ Codepage 866 (Cyrillic/Russian),
Windows CP1251 (Bulgarian, Belarusian), ASCII (United States) ,
NLS ISO 8859­5 (Cyrillic), NLS KOI8­R (Russian)
Kernel hacking

Compile­time checks and compiler options ­
Compile the kernel with frame pointers ­ убираем,
Kernel debugging ­ убираем
Tracers ­ убираем
Убираем всякие хаки ядра (Kernel hacking), оставляем только Enable
deprecated logic, Enable __must_check logic, Magic SysRq key, Strip
assembler­generated symbols during link, Filter access to /dev/mem,
Enable verbose x86 bootup info messages, Allow gcc to uninline functions
marked 'inline'. Остальное это вообще то не хаки, а фичи для
разработчиков, которые им нужны для отладки ядра, но которые
только тормозят его работу пользователей.
Security options

Enable the securityfs filesystem ­ убираем
Socket and Networking Security Hooks ­ убираем

Virtualization — убираем, если нет необходимости

Сохраняем конфигурацию F6­Save
Дальнейшая оптимизация заключается в выкидывании ненужного из ядра.
Можно много чего убрать ненужного из ядра, но НЕ НАДО изменять значения
параметров других настроек ядра, для этого надо иметь не начальные а глубокие
знания по его устройству, если их нет (и не надо обольщаться что они есть :­), то
не надо их трогать, лучше не станет, хуже станет запросто.
Для простоты переустановки ядра можно создать пакет с ним простейшим
скриптиком
#!/bin/sh
mkdir -p /tmp/kernel-package/boot
cd /tmp/kernel-package
cp /boot/vmlinuz ./boot/
cp /boot/System.map ./boot/
# Здесь и далее **-** та часть, которая относится именно к этому ядру.
# Посмотреть какая именно проще по тому что прописали
# в EXTRAVERSION в /usr/src/linux/Makefile
cp /lib/modules/**-**/build/.config ./boot/config
mkdir -p /tmp/kernel-package/lib/modules
cp -a /lib/modules/**-** ./lib/modules/
makepkg -l y -c n /tmp/kernel-**-**-i686.txz
rm -rf /tmp/kernel-package

Можно порекомендовать ресурс kernelnewbies.org, на котором очень многое
и очень детально можно почерпнуть по новым версиям ядра.

2 - Установка драйверов NVIDIA

­ Ставим пакет
dvd/extra/xf86­video­nouveau­blacklist/xf86­video­nouveau­blacklist­noarch­
1.txz для блокировки драйвера nouveau или просто создаем файл
/etc/modprobe.d/BLACKLIST­nouveau.conf и пишем в него
# Do not load the kernel nouveau dri module, since it
# interferes with both
# the nv and binary nvidia drivers.
blacklist nouveau

­ Выходим из иксов — Ctrl­Alt­BackSpace.
– ./Nvidia­* в папке с драйвером. В конце создаем xorg.conf. Владельцы карт

ATI здесь что то делают :­)
– Впрочем

если в дальнейшем будет использоваться vdpau для
декодирования GPU то лучше ставить драйвер NVIDIA cо slackbuilds.org

­ В терминале запускаем nvidia-settings, ставим нужное разрешение (остальное
потом), записываем в xorg.conf.
- В терминале nvidia-xconfig --composite --no-logo --render-accel

­ В /etc/X11/xorg.conf должно получиться что то типа такого (для
карт nvidia)
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings: version 1.0 (buildmeister@builder63) Tue Jul 13 13:32:36 PDT 2010
Section "ServerLayout"
Identifier
"Layout0"
Screen
0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
FontPath
EndSection

"/usr/lib/X11/fonts/misc/:unscaled"
"/usr/lib/X11/fonts/100dpi/:unscaled"
"/usr/lib/X11/fonts/75dpi/:unscaled"
"/usr/lib/X11/fonts/misc/"
"/usr/lib/X11/fonts/Type1/"
"/usr/lib/X11/fonts/Speedo/"
"/usr/lib/X11/fonts/100dpi/"
"/usr/lib/X11/fonts/75dpi/"
"/usr/lib/X11/fonts/cyrillic/"
"/usr/lib/X11/fonts/TTF/"

Section "Module"
#Load "GLcore" #should be removed/commented out
Load
"dbe"
SubSection
"extmod"
Option
"omit xfree86-dga" # don't initialise the DGA extension
EndSubSection
Load
"extmod"
Load
"type1"
Load
"freetype"
Load
"glx"
#Load "dri"
#should be removed/commented out
EndSection
Section "ServerFlags"
Option
"Xinerama" "0"
EndSection
Section "InputDevice"
# generated from default
Identifier
"Mouse0"
Driver
"mouse"

Option
"Protocol" "auto"
Option
"Device" "/dev/psaux"
Option
"Emulate3Buttons" "no"
Option
"ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier
"Keyboard0"
Driver
"kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier
"Monitor0"
VendorName
"Unknown"
ModelName
"Samsung SyncMaster"
HorizSync
30.0 - 81.0
VertRefresh
56.0 - 60.0
Option
"DPMS"
EndSection
Section "Device"
Identifier
"Videocard0"
Driver
"nvidia"
VendorName
"NVIDIA Corporation"
BoardName
"GeForce4 MX 440"
Option "AllowGLXWithComposite" "True"
Option
"RenderAccel" "True"
# Для корректного отображения частоты обновление монитора в диалогах настроек
# Option
"DynamicTwinView" "False"
EndSection
Section "Screen"
Identifier
"Screen0"
Device
"Videocard0"
Monitor
"Monitor0"
DefaultDepth 16
Option
"metamodes" "1920x1080_60 +0+0; 1280x1024 +0+0; 1024x768 +0+0;
800x600 +0+0; 640x480 +0+0"
Option
"NoLogo" "True"
#
# BackingStore - по возможности сохранять в буфере изображение области,
#перекрытой окном, для
# ускорения последующего восстановления данной области
Option
"BackingStore" "True"
# TripleBuffer - направляет вывод графики в дополнительный буфер перед
# выводом на экран.
# Улучшает плавность вывода графики на экран, но увеличивает время
# реакции на пользовательские события
# Option "TripleBuffer" "True"
# DamageEvents - отправка сообщений о необходимости перерисовки
# области (Отключается при MultiGPU)

Option "DamageEvents" "True"
# SubSection
"Display"
#
Depth
16
#
Modes
"1600x1200" "1280x1024" "1024x768" "800x600" "640x480"
# EndSubSection
EndSection
Section "Extensions"
Option
"Composite" "Enable"
Option "RENDER" "Enable"
EndSection

Есть стародавние советы включить AGP Fast Write и SB в драйвере Nvidia.
Но никакой пользы от них нет, увеличение производительности на уровне
десятых долей процента, если вообще она не падает, зато запросто можно
поймать немеряно всяких глюков.
Но можно в некоторой степени улучшить отрисовку 2D, заставив драйвер
принудительно размещать всю графику в видеопамяти карты
nvidia-settings -a InitialPixmapPlacement=2

для автозапуска можно включить эту команду в ~/.xinitrc. Более подробно читаем
здесь

cgit.freedesktop.org/~aplattner/nvidia­
settings/tree/src/libXNVCtrl/NVCtrl.h?
id=b27db3d10d58b821e87fbe3f46166e02dc589855#n2797
Если захотите после установки драйверов nvidia установить свободные
драйвера, надо кроме деинсталляции самого драйвера (смотрим в нем —help) и
обратных процедур с nouveau, переустановить mesa.
Далее при замене флагов SLKCFLAGS и SLKLDFLAGS ставим свои, как описано
выше в разделе "Подготовка компиляции" (отличаться будут скорее всего только
поддержкой SSE).

3 - libjpeg-turbo

Версия libjpeg с использованием sse и mmx.
Правим слакбилд, заменяем
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
else
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
SLKCFLAGS="-O2"

LIBDIRSUFFIX=""
fi

на, например, (какие опции SLKCFLAGS и SLKLDFLAGS ставить смотрим в разде­
ле "Подготовка в компиляции").
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
fi
SLKLDFLAGS="-Wl,-O1 -Wl,--as-needed"

также заменяем
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \

на

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
LDFLAGS="$SLKLDFLAGS" \

также заменяем
PREFIX=${PREFIX:-/opt/$PRGNAM}

на
PREFIX=/usr

Если при компиляции программ возникает ошибка о конфликте версий
libjpeg, то удаляем libjpeg­turbo, компилируем программу и заново устанавливаем
libjpeg­turbo.

4 - cairo

Графическая библиотека.
Сорцы ­ ftp.osuosl.org/pub/slackware/slackware­14.0/source/l/cairo

Производим аналогичную libjpeg­turbo замену в слакбилде.
Правим слакбилд, заменяем
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
else
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi

на, например, (какие опции SLKCFLAGS и SLKLDFLAGS ставить смотрим в разде­
ле "Подготовка в компиляции").
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O3 -march=native -mtune=native -pipe \
-mmmx -m3dnow -falign-jumps=1 -falign-labels=1"
LIBDIRSUFFIX=""
fi
SLKLDFLAGS="-Wl,-O1 -Wl,--as-needed"

также заменяем
CFLAGS="$SLKCFLAGS" \

на
CFLAGS="$SLKCFLAGS" \
LDFLAGS="$SLKLDFLAGS" \

5 - java

По патентным ограничениям готового пакета jre7 в слаке 14 нет, но есть
слакбилд и указание как собрать пакет jre7. Например здесь —

ftp.osuosl.org/pub/slackware/slackware­14.1/extra/java.
Но java 7 появилась
сравнительно недавно, прог под нее не так много, зато есть множество
прекрасных прог на java 6, многие из которых не совсем корректно работают под
jre7. В этом случае пересобираем пакет с jre6 из слаки 13.37 например отсюда –
ftp.osuosl.org/pub/slackware/slackware­13.37/source/l/jre. Можно также поставить
две версии jre, но в этом случае придется править слакбилд одной из версии так,
чтобы он ставил jre куда то в другое место, чем другая версия, и при запуске прог
экспортировать путь именно к этой версии.

6 - Другие

Аналогичным образом можно (и нужно) перекомпилировать с заменой
флагов компиляции и линковки qt и gdk­pixbuf2. Для более быстрой работы
текстовых редакторов с подсветкой синтаксиса также рекомендуется
перекомпилировать со своими флагами компиляции и линковки Qscintilla, также
для более быстрой работы можно перекомпилировать со своими опциями sqlite,
тогда программы, использующие ее, будут работать несколько быстрее.

VI - Создание пакетов базового набора программ
Далее описываются опции конфигурации при создании пакетов базового на­
бора программ. Пропускается задание флагов компиляции и сборка пакетов, ко­
торые описаны выше.
Программы по возможности ставим в /usr, оставим /usr/local для сборки че­
го то на быструю руку для проверки. Для создания пакетов лучше отвести место
на другом linux разделе с тематической структурой (чтобы не путаться потом).
Если не приведены опции ./configure, то конфигурация стандартная,
описанная выше для каждого типа. Slackbuild берется со slackbuilds.org. Если
slackbuild правится вдобавок к сказанному выше в части флагов компиляции, то
об этом будет сказано.
Сорцы берем с сайта программы, а не со slackbuilds.org (кроме особо ого­
воренных случаев), затем в слакбилде правим VERSION. Если последняя версия с
сайта не компилируется (и такое бывает) то берем предпоследнюю и.т.д. Если нет
ни опций ни слакбилда, то используется шаблон конфигурации.
Необходимые пакеты и либы ставим до компиляции основной программы
из готовых пакетов (или создаются свои пакеты). Если в результате компиляции
образуется единственный файл, то он помещается в /usr/local/bin.
Немного о версиях прог, причем сказанное касается как выбора версии для
первоначальной установки так и дальнейшей замены уже имеющейся версии на
долее новую. Зачастую в новые версии включается совершенно ненужный имен­
но вам функционал, который тем не менее значительно утяжеляет прогу, увели­
чивает время запуска и потребление ресурсов. В этом случае может быть оправ­
данным установка более старой версии проги и отказ от замены версии на более
новую. Естественно что это должно определяться для каждого конкретного слу­
чая исходя из личных предпочтений.
Сначала ставим со slackbuilds.org некоторые пакеты, которые затем будут ис­
пользоваться для многих других пакетов ­ vala, libgee, enca, ORBit2, lua.

1 - WM и утилиты
IceWM - оконный менеджер, со slackbuilds.org
Слакбид IceWM правится как сказано выше в части флагов компиляции и
линковки, далее об этом не упоминается а подразумевается, кроме особо огово­
ренных случаев.
Далее в терминале xwmconfig, выбираем в меню IceWM, выходим из иксов
(Ctrl­Alt­BackSpace), startx и загружается icewm.
Можно
попробовать
использовать
форк
IceWM
­
github.com/bbidulock/icewm, в котором не только аккумулируются многие
нужные уже известные патчи, но и пишутся свои. В планах развития проекта
много интересных вещей, наподобие панели в любом месте экрана, а не только
снизу­сверху, поддержка прозрачности и многие другие вкусности. Если у вас
IceWM работает не так, как вам хочется, то имеет смысл попробовать собрать
IceWM из этого проекта. Сборка стандартная для прог из гита.
В IceWM нет встроенной возможности создания и управления иконками на
рабочем столе. Есть несколько способов создать иконки на рабочем столе.
Можно использовать консольную утилиту idesk, которая предназначена
именно для этого. Она есть в официальном репозитории Arch Linux, в его aur для

нее есть несколько графических конфигурялок типа idesk­extras. Лучше
использовать idesk именно оттуда, там есть нужные патчи.
Есть также менеджер рабочего стола stuurman­desktop из состава очень
интересного проекта SDE (Simple Desktop Environment). Проект пока находится в
стадии разработки, но уже вполне пригоден для применения. Его развитие
сейчас осуществляется путем добавления новых возможностей не в ущерб уже
имеющимся. Stuurman­desktop есть в aur ArchLinux.
Openbox ­ оконный менеджер, со slackbuilds.org
Для некоторых его утилит понадобится fuse­python —
sourceforge.net/projects/fuse/files/fuse­python, сборка пакета стандарная для
питона.
Ставим по порядку со slackbuilds.org — openbox (ту же версию сорцов что
указана на slackbuilds.org), openbox­themes, obconf, obmenu. Далее ставим
obtheme со xyne.archlinux.ca/projects/obtheme (просто распаковываем в
/usr/local/bin), в нем заменяем
#!/usr/bin/env python2

на
#!/usr/bin/env python

Для автоматической генерации меню можно использовать menumaker со co
slackbuilds.org. Задать правила для окон приложений можно при помощи OBApps
co slackbuilds.org.
К openbox нужна панель, тут на выбор tint2, lxpanel, bmpanel2 ­ панели co
slackbuilds.org, fbpanel из aur ArchLinux. К lxpanel нужны lxmenu­data и menu­
cache co slackbuilds.org. Берем версии сорцов, указанные на slackbuilds.org.
Перечисленные выше проекты заслуженно признанные, но сейчас лучшая
по возможностям панель это lxpanelx. Она имеет очень широкие возможности
настройки, массу функционала, она позволяет разместить где угодно на экране
необходимое количество панелей, выводить только иконки без подписей для
окон на панели, группировать окна на панели и множество других приятных
вещей. Lxpanelx хорошо взаимодействует с различными композитными
менеджерами, в частности дает возможность получить в IceWM прозрачную
панель при использовании вместе с легкими композитными менеджерами типа
xcompmgr или compton. Lxpanelx есть в aur ArchLinux. Более новая версия
lxpanelx называется waterline и входит в состав проекта SDE. Waterline также есть
в aur ArchLinux. Подробное описание waterline на сайте проекта — make­
linux.org/projects/sde/waterline/2013/09/user­manual­0.6.0­ru. В состав проекта
SDE входят и другие интересные вещи, типа файлового менеджера stuurman,
форка PCManFM с расширенными возможностями.
Поддержка прозрачности для многих панелей становится возможной только
после автозагрузки проги установки обоев типа nitrogen или feh
в
соответствующем файле автозагрузки вашего менеджера окон.
Для установки фоновых картинок на рабочий стол openbox можно
воспользоваться одной из следующих утилит:
feh co slackbuilds.org. Нужна либа giblib co slackbuilds.org
или
nitrogen co slackbuilds.org. Нужна либы libsigc++, glibmm, cairomm, pangomm,

mm­common, atkmm, gtkmm, libglademm, gconfmm. Берутся со slackbuilds.org. Эти
либы потребуются для многих программ, так что если даже не ставить сам
nitrogen то либы лучше поставить.
Существует множество менеджеров окон, помимо приведенных выше, их
более или менее полный и постоянно обновляющийся список можно посмотреть
вот здесь — www.gilesorr.com/wm/table.html.
Enlightenment E16 ­ DE
Сорцы E16 и сопутствующие ­ sourceforge.net/projects/enlightenment/files
Сам E16
../configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
--enable-sound=no \
--enable-pango=no \
--enable-xft \
--enable-composite \
--enable-pseudotrans \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Делаем симлинк из ~/.e16 в ~/.enlightenment
Далее ставятся e16menuedit - редактор меню, e16doc ­ помощь по E16,
ew16-themes ­ темы, e16keyedit ­ редактор шорткеев, epplets ­ апплеты. Сорцы
берутся там же. Апплеты не появляются в меню, их надо добавлять в меню
самому.
В /etc/X11/xinit создаем файл xinitrc.e16 следующего содержания и делаем
исполняемым
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# Start the window manager:
exec /usr/bin/e16

Далее через xwmconfig выбираем нужный WM.
Enlightenment 17,18 ­ DE
Е17 ­ ставятся по порядку со slackbuilds.org ­ embryo, eina, eet, evas, ecore,
edje, e_dbus, efreet, eeze, enlightenment.
Е17 был упомянут только потому, что на slackbuilds.org нет Е18. Его придется
собирать самому, скачав сорцы с http://www.enlightenment.org/p.php?
p=download&l=en. Собирать надо в следующем порядке ­ EFL, Evas Generic
Loaders, Emotion Generic Players, Elementary, Enlightenment (other apps etc.)
После первого запуска обязательно архивируем ~/.e , поскольку при на­
стройках они, зачастую слетают и восстанавливать все же лучше не "с нуля" :­)

Есть множество других оконных менеджеров, часть из них есть в базовой
поставке слаки, такие как WindowMaker и fvwm, другие придется собирать
самому. Выбор WM вопрос чисто личных пристрастий и поэтому сложно
говорить, что какой WM изначально лучше других.
Для fvwm есть надстройка fvwm­crystal — fvwm­crystal.sourceforge.net,
которая приводит крайне уродливый по умолчанию вид fvwm в более или менее
нормальный вид.
xcompmgr — композитный менеджер окон для X11.
Поскольку заменить один оконный менеджер другим просто нельзя, но
хочется иметь эффекты типа теней под окнами и эффектов меню (также
композит существенно убыстряет переключение между окнами приложений и
вообще работу всего интерфейса), то самый простой путь это использовать
xcompmgr с другими менеджерами окон, такими как IceWm и openbox.
Если есть желание можно перекомпилировать xcompmgr со следующими
опциями конфигурации

./configure \

--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow
-falign-jumps=1 -falign-labels=1 -fPIC" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow
-falign-jumps=1 -falign-labels=1 -fPIC" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

сompton - композитный менеджер, форк xcompmgr c расширенными
возможностями и без его глюков. Сорцы здесь — github.com/chjj/compton.
Конфигурировать ничего не надо, просто создать пакет скриптом.
wmdrawer — удобная, красивая и очень широко настраиваемая графическая
запускалка программ. Хотя она и довольно старая, но и сейчас смотрится очень
хорошо.
Есть на slackbuilds.org.

Ставим со slackbuilds.org архиваторы
p7z — архиватор
unrar — архиватор
Как настроить корректное отображение кириллических имен файлов в архи­
вах zip в кодировках, отличных от UTF­8,
описано здесь —
www.opennet.ru/tips/info/2494.shtml. Но самый простой способ он как всегда
самый лучший :­), благо таких архивов очень мало , просто ставим под wine
любой виндовый архиватор – 7z, winrar.
worker ­ файловый менеджер
Феноменально удобный и быстрый классический двухпанельник, табы,
встроенная поддержка архивов, ftp и многое другое. Очень широко настраиваем ,
настроить можно практически все, и через гуй. Не смотрите скриншоты на сайте
проекта:­) , они не обновлялись уже много лет, теперь есть и поддержка TTF
шрифтов и настройка цветов и многое­многое другое. Настраивать его довольно
муторно, настройка хотя и простая через GUI, но занимает много времени, т.к
приходится вручную прописывать ассоциации, создавать свое контекстное меню,
настраивать под себя кнопки, зато затем очень удобно и феноменально быстро.
Особенно удобно его использовать в связке с терминалом roxterm и редактором
juffed. Пример настройки такой связки смотрим во вложении worker.tbz. Есть
на slackbuilds.org. В секцию configure слакбилда можно добавить ­­with­dbus=no \
У worker есть один недостаток, прыгающие каждый раз в разное место диало­
говые окна. Проблема решается установкой
devilspie — настройка параметров окон
Он позволяет принудительно задать многие параметры окон, в т.ч. располо­
жение на экране окон определенного класса.Есть на slackbuilds.org.
Для devilspie есть frontend gdevilspie, сорцы (питон) ­
code.google.com/p/gdevilspie/downloads/list. Нужны либы pyxdg со slackbuilds.org
и python­wnck. Также есть в aur ArchLinux.
Сорцы
python­wnck — ftp://ftp.gnome.org/pub/GNOME/sources/gnome­
python­desktop/2.32/gnome­python­desktop­2.32.0.tar.gz.
Конфигурация
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \

--mandir=/usr/man \
--disable-gtk-doc \
--disable-applet \
--disable-gnomeprint \
--disable-gnomeprintui \
--disable-gtksourceview \
--disable-totem_plparser \
--disable-gtop \
--disable-nautilusburn \
--disable-braseromedia \
--disable-braseroburn \
--disable-mediaprofiles \
--disable-gnomekeyring \
--disable-gnomedesktop \
--disable-bugbuddy \
--disable-evolution \
--disable-evolution_ecal \
--disable-evince \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow
-falign-jumps=1 -falign-labels=1 -fPIC" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow
-falign-jumps=1 -falign-labels=1 -fPIC" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Для любителей explorer­like файловых менеджеров есть SpaceFM ­
sourceforge.net/projects/spacefm, форк PCManFM с расширенными возможностя­
ми. Хотя автор пишет о ранней стадии разработки spacefm вполне стабилен. Кон­
фигурация стандартная, можно разве что добавить опцию —disable­superuser­
checks. Есть на slackbuilds.org.
roxterm ­ терминал.
roxterm единственный из "легких" терминалов, который позволяет без "ко­
стылей" открывать команды в новом табе из других программ , что очень удобно
при совместной работе с worker, да и с другими файл­менеджерами
Слакбилд и сорцы со slackbuilds.org.
Есть похожий по возможностям терминал lilyterm — lilyterm.luna.com.tw, но
в нем нет поиска и он менее удобен чем roxterm
juffed - редактор

Прекрасный легкий редактор со множеством возможностей, в том числе та­
кой как блоковое выделение вертикальных столбцов, прекрасным поиском с
представлением результатов поиска в дополнительном табе внизу основного ок­
на. Он есть на slackbuilds.org, но там он собран без плагинов. Поэтому собираем
плагины: скачиваем сорцы — sourceforge.net/projects/juffed/files/Plugins/0.8.1,
далее стандартная для qmake конфигурация и сборка пакета.
ne — великолепный консольный редактор, для тех кому неудобен vim или emacs.
По крайней мере у ne ноги растут из 1993 года еще из Amiga и сам автор так объ­
яснил его портирование на линукс и дальнейшее развитие.. ­ "If you have the
resources and the patience to use emacs or the right mental twist to use vi then
probably ne is not for you. However, if you need an editor that (очень много вкусно­

стей)" то обратите внимание на ne.. :­) Привычные биндинги и вообще управле­
ние в целом, управление через хоткеи, меню и команды (как в виме), полностью
настраиваемое меню и хоткеи, мультиредактирование, подсветка и еще очень
много других вкусностей. Он хорош не только сам по себе но и как хорошая заме­
на внутреннего просмотрщика worker. Берем с ne.dsi.unimi.it. Также есть слак­
билд
на
slackbuilds.org.
Полное
описание
на
www.emerson.emory.edu/services/editors/ne/Top.html.
Пакет создается простейшим скриптом
./version.pl
mkdir -p /tmp/ne-packages/usr
make PREFIX=/usr
make PREFIX=/tmp/ne-packages/usr install
cd /tmp/ne-packages
/sbin/makepkg -l y -c n -p /tmp/ne.tgz

Поскольку автор ne в новой, только что вышедшей версии, сотворил какую
то лабуду с меню (часть пунктов не работает, части нужных команд в меню
просто
нет)
вот
здесь
подправленное
www.amazon.com/clouddrive/?
downloadById=bd06004d­8c5f­41f8­bdc9­88c9644cdab9&attachment=0
Есть
широко
настраиваемый
консольный
редактор
tilde
(os.ghalkes.nl/tilde.html) с привычными еще с доса хоткеями, с хорошими
возможностями. Есть в aur ArchLinux.
Есть также хороший редактор tea (tea­editor.sourceforge.net), со своим ориги­
нальным подходом к элементам интерфейса и множеством интересных и нужных
возможностей. Но есть и два "но", первое это русопятство автора в терминах ин­
терфейса в стиле "азм глаголю веди (зырить, ладить и.т.п) и второе это ориги­
нальный подход, когда все, помощь, локали, подсветки, компилируется в бинар­
ник. Над первым хорошо поржать первую минуту, но с работать с этим неудобно,
хочется привычных названий, второе увеличивает размер бинарника и время
запуска проги.
Решение как всегда тривиальное, для первого берем в лапки qt­linguist и
правим русскую локаль, приводя все эти зырить­ладить в нормальные, привыч­
ные термины, второе решается удалением ненужного, как самих файлов (англий­
ская помощь, другие локали, ненужные подсветки и еще по вкусу) так и их пере­
числения в rlvn.qrc.
На выходе получается хорошая прога с привычными терминами, с меньшим
по размеру и быстрее запускающимся бинарником.
Русская локаль в привычных терминах для tea­33.1.0, правленный rlvn.qrc и
исправленная помощь — www.wuala.com/SergMarkov19/Guide­pdf/tea­33.1.0­
classic­mod.tar.bz2. В папке origin оригинальный tea, в папке mod поправленный,
причем эти файлы пригодны для более поздних версий tea.
Конфигурация
qmake USE_PRINTER=false USE_ASPELL=true USE_HUNSPELL=false PREFIX=/usr

Естественно есть еще и geany и масса других редакторов со slackbuilds.org,
но для тех кто мало занимается или вообще не занимается программированием,
их возможности все же избыточны.

qxmledit - редактор XML файлов, может понадобится для ручного
редактирования XML конфигов ­ code.google.com/p/qxmledit. Есть в aur
ArchLinux. Конфигурация стандартная для qmake. Поскольку qxmledit ставится в
opt/qxmledit то для запуска проги туда же кладем скриптик qxmledit.sh
#!/bin/sh
cd /opt/qxmledit
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/qxmledit
./QXmlEdit "$1"

xneur ­ переключатель клавиатуры.
Сорцы ­ xneur.ru/downloads
Конфигурация xneur
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
--with-sound=no \
--without-keylogger \
--without-xosd \
--without-libnotify \
--with-gtk=gtk2 \
--with-spell=aspell \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falignCXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falig
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

gxneur, гуй к xneur. Конфигурация.
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
--without-appindicator \
--without-gconf \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falign-labels=1 -fPIC" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

regexxer ­ поиск файлов и содержимого в текстовых файлах с возможностью ре­
дактирования содержимого найденных текстовых файлов прямо в утилите.
Нужны либы ­ libsigc++, glibmm, cairomm, pangomm, mm­common, atkmm,
gtkmm, libglademm, gconfmm. Берутся со slackbuilds.org. Эти либы потребуются
для многих программ, так что если даже не ставить сам regexxer, то либы лучше
поставить.
Есть слакбилд на slackbuilds.org, версию проги в нем менять не нужно,
следующая версия просто переписана на GTK3 без прибавления в
функциональности.
docfetcher ­ утилита поиска в документах различных офисных и текстовых
форматов. Сорцы ­ docfetcher.sourceforge.net/en/index.html
Поскольку нужна jre, не входящая в состав слаки по лицензионным
соображениям, то скачиваем jre под свою архитектуру (архив tar.gz) отсюда —
www.oracle.com/technetwork/java/javase/downloads/index.html, кладем его в
папку
со
слакбилдом,
скачанным,
например,
отсюда
ftp.osuosl.org/pub/slackware/slackware­14.0/extra/java, и выполняем в папке
./java.SlackBuild ./jre-7*.tar.gz

Для корректной работы java приложений после установки jre выходим из
иксов, разлогиниваемся (exit) и снова логинимся.
Затем просто распаковываем архив с docfetcher в любое место и ставим на
папку с docfetcher и все ее содержимое разрешение <user>:user, где <user> свой
пользователь.
recoll ­ утилита поиска по многим форматам с индексированием, простыми и
сложными параметрами поиска, предпросмотром найденных файлов. Использу­
ет мощнейший backend Xapian. Одним из преимуществ recoll является то, что
Xapian не запущен постоянно и не потребляет ресурсы все время а работает по
запросу, его можно как запустить вручную так и запускать по расписанию ли при
старте системы. Cо slackbuilds.org (версия сорцов та же что указана на
slackbuilds.org).
Во всех пакетах, нужных для , и в нем самом, не меняем стандартные флаги
компилятора на оптимизационные.
Нужны пакеты wv со rlworkman.net/pkgs/14.0/i486, antiword, catdoc, exiftool,
mutagen, pstotext, pychm, python2­chardet со slackbuilds.org и rarfile
co
pypi.python.org/pypi/rarfile
Также нужны пакеты
­ unrtf со slackbuilds.org,но вместо сорцов unrtf со slackbuilds.org берутся
сорцы с поддержкой кириллицы отсюда
www.lesbonscomptes.com/recoll/unrtf/unrtf­0.22.2beta.tar.gz, соответ­
ственно правится VERSION в слакбилде unrtf.
– xapian­core со slackbuilds.org. Если комп очень старый, без поддержки
ssl, то правим слакбилд, приводя секцию configure к виду
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \

--localstatedir=/var \
--mandir=/usr/man \
--disable-sse \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--disable-static \
--build=$ARCH-slackware-linux

Для корректного поиска recoll на русском необходим пакет aspell­ru. После
завершения построения индекса проверяем в меню recoll недостающие пакеты и
доставляем их.
Наличие разных средств поиска определяется их различным назначением:
regexxer удобен для поиска/замены и быстрой правки в конфигурационных
файлах или в файлах определенного типа (html например) в каком то проекте;
docfetcher для быстрого поиска в офисных файлах , не входящих в какой то
проект или непроиндексированных recoll; recoll самое мощное и универсальное
средство, но иногда удобнее использовать первые.
meld ­ сравнение файлов и папок со slackbuilds.org. Для компиляции необходим
rarian со slackbuilds.org.
Также для сравнения файлов может быть полезен diffuse —
diffuse.sourceforge.net. Создание пакета стандартное для питона, но вместо
setup.py ставим install.py.
Есть слакбилд на slackbuilds.org
trashCaN — корзина.
www.richardneill.org/src/cn­1.20.tar.bz2 или www.ruo3.org/~rjn/src/cn­1.20.tar.bz2
Прописывается на кнопку в worker. Удобно в вызове скрипта назначить кор­
зину не в стандарте freedesktop а в папку /.trash, т.е. назначить на кнопку worker ­
sudo cn ­t /.trash ­f {A} и прописать cn в /etc/sudoers.
Есть также корзина trash-cli со slackbuilds.org, более навороченная но и бо­
лее медленная.
clipit - менеджер буфера обмена, форк parcellite, позволяющий определить неуда­
ляемые автоматически пункты. В нем есть и такая интересная особенность как
прямая вставка в нужное окно, без "вставить", только выбором нужного пункта в
меню clipit, но она некорректно работает со всеми офисами, clipit в этом случае
впадает в ступор и помогает только его убиение через htop и перезапуск, так что
лучше этой возможностью не пользоваться.
Нужна утилита xdotool со slackbuilds.org.
Сорцы — sourceforge.net/projects/gtkclipit/files. Есть слакбилд на slackbuilds.org
CopyQ - прекрасный менеджер буфера обмена — github.com/hluk/CopyQ, с
возможностью запоминать не только текст но и изображения, создавать группы,
в том числе для постоянного запоминания, и многими другими вкусностями.
Конфигурация стандартная для qmake. Есть в aur ArchLinux.
Впрочем при использовании cairo­dock нет необходимости в сторонних
менеджерах буфера обмена, в cairo­dock есть свой прекрасный менеджер буфера
clipper.
cairo-dock, cairo-dock-plugins - док в стиле макоси.
Есть на slackbuilds.org, но последние версии разжиревшие сверх меры,

причем жиреет он преимущественно за счет более глубокой интеграции с gnome
и появления большого количества плагинов, заточенных тоже под gnome. Если
gnome нет лучше поставить более старую версию. Нужна либа gtkglext со
slackbuilds.org.
Слакбилд cairo­dock — repository.slacky.eu/slackware­13.1/desktop/cairo­
dock/2.1.3_9/src
Сорцы — launchpad.net/cairo­dock­core/2.1/2.1.3/+download/cairo­dock­2.1.3­
9.tar.gz
В сорцах заменяем в строке 34 файла src/cairo­dock­keybinder.h
#include <glib/gtypes.h> на #include <glib.h>, иначе не соберется новым gcc.
Слакбилд cairo­dock­plugin­ repository.slacky.eu/slackware­
13.1/desktop/cairo­dock­plugins/2.1.3_9_2/src (сорцы сам подтянет).
Если вы все же хотите собрать более новую версию, то она есть на
slackbuilds.org для текущей версии слаки, но надо учитывать, что после версии
3.2.1 из cairo­dock убрали поддержку эмуляции прозрачности и если у вас
древняя видео карта, то на более новых версиях вы не получите прозрачную
панель.
Любителям минимализма может понравится маленькая выплывающая свер
ху панель для запуска программ yeahlaunch — www.bstern.org/yeahlaunch. Есть в
aur ArchLinux.
Есть еще одна кандидатура на роль дока ­ Avant Window Navigator, но он тре­
бует композитного менеджера , как минимум xcompmgr, что не всегда приемле­
мо, к тому же именно с xcompmgr awn работает абы как.
Далее ставим проги со slackbuilds.org (читаем там же о зависимостях и ста­
вим их). Естественно правим слакбилд как выше сказано и собираем с последней
версией прог, сорцы которых берем с их сайта.
gdmap ­ графическая карта дисков (не меняем версию проги). Вместо него можно
использовать xdiskusage отсюда ­ xdiskusage.sourceforge.net. Он не так красив, но
где то более функционален.
gprename ­ переименование файлов. В слакбилдах не правим флаги gcc. В
слакбилде perl­gtk2.SlackBuild, входящим в зависимости, комментируем make
test, чтобы было вот так ­ #make test
Вместо него для переименования файлов можно использовать siren —
www.scarabee­software.net/en/siren.html. Где то он лучше, где то хуже, но
непривычнее.
wxhexeditor ­ HEX редактор (даже если не ставить его самого, то для некоторых
программ далее понадобится wxPython, который входит в его зависимости). В
слакбилде wxPython не меняем опции компиляции.
isomaster ­ для работы с образами ISO
bleachbit ­ уборка мусора
gsmartcontrol ­ контроль SMART
gtk-chtheme ­ переключалка тем GTK

lxappearance — настройка внешнего вида
wmctrl ­ утилита управления параметрами окон (но сорцы лучше взять отсюда —
github.com/geekless/wmctrl/downloads, в этой версии есть ряд дополнительных
возможностей.
numlockx ­ включение NumLock
file-roller — гуй к архиваторам
luckybackup — бэкапы файлов и директорий
davfs2 – доступ по webdav к облакам
fsarchiver— бэкапы директорий и разделов (не применяем для и на ntfs)
Для fsarchiver есть хороший гуй
qt4-fsarchiver — sourceforge.net/projects/qt4­fsarchiver. Есть в aur ArchLinux.
qmake
make all

Получившийся бинарник в /usr/local/bin и прописываем его в /etc/sudoers.
Есть слакбилд на www.wuala.com/SergMarkov19/Slackbuilds
Super Flexible File Synchronizer ­ программа для синхронизации в облака и ре­
зервного копирования, поддерживающая FTP, SSH, WebDAV, Amazon S3, Google
Drive ­ www.superflexible.com/linux.htm
dropbox client — синхронизация с dropbox. Есть в aur ArchLinux.
Бинарник ­ www.getdropbox.com/download?plat=lnx.x86
wuala client — синхронизация и резервное копирование wuala.com. Есть в aur
ArchLinux. wuala.com/en/download/linux.

Для переименования файлов удобно использовать скрипт vilm, который
можно повесить на кнопку worker. Он позволяют использовать для переименова­
ния файлов текстовый редактор, во многих случаях это удобнее чем использовать
специальную утилиту. Скрипт кладем куда нибудь в path, в /usr/local/bin к при­
меру.
vilm — redchamp.net/vimv
Для использование juffed вместо vi правим скрипт, заменяем
parser.add_option('-e',
'--editor',
default='vi',
help = 'Use an alternative editor (e.g., pico).')
на
parser.add_option('-e',

'--editor',
default='juffed',
help = 'Use an alternative editor (e.g., pico).')

Для мониторинга системы применяется множество утилит, как входящих в
состав самой слаки, преимущественно консольных и рассчитанных на контроль
только одного параметра или одной группы параметров, так и сторонние
утилиты, не входящие в состав слаки, среди которых есть и утилиты с гуем,
рассчитанные на контроль множества параметров. Среди сторонних утилит
можно выделить следующие.
hddtemp ­ температура винтов
Компиляция hddtemp пример того, как можно создать пакет программы,
которая обычным способом не компилируется. Скачиваем сорцы hddtemp с пат­
чами для последней версии убунты, в которой его еще можно найти, с
packages.ubuntu.com. Копируем все патчи в папку с распакованными сорцами
hddtemp (в разные папках патчей могут быть патчи с одинаковыми названиями,
естественно применяем их по очереди и все). Применяем все патчи, создаем
скриптик в папке с распакованными сорцами, делаем исполняемым и запускаем
в терминале
#!/bin/bash
clear
for d in ls /mnt/sda9/Slackware/Compile/hddtemp-0.3-beta15/*; do
patch -p1 -i `basename "$d"`;
echo "-----------------------"
done
exit 0

Конфигурация
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
--with-db-path=/etc/hddtemp.db \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \
CXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer \
-pipe -mmmx -m3dnow -falign-jumps=1 -falign-labels=1" \
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Есть в aur ArchLinux.
whdd — контроль состояния винтов и восстановление данных с них. Есть пакеты
для слаки — whdd.org/get­it
DiskScan - контроль состояния винтов — blog.disksurvey.org/proj/diskscan

Для сборки просто make :­)
psensor ­ температурный монитор. Есть в aur ArchLinux, но там старая версия,
поэтому лучше собрать самому или править пакбилд.
Сорцы — wpitchoune.net/psensor/files

Сейчас самая распространенная
утилита комплексного мониторинга
системы это conky cо slackbuilds.org. Но кроме нее есть и другие утилиты, которые
обладают рядом возможностей, которых нет в conky, но которые могут показаться
кому то привлекательными.
В состав самой слаки входит заслуженный gkrellm. От conky его выгодно
отличает интерактивность, при тех же контролируемых параметрах можно на
любой индикатор какого либо параметра назначить вызов управляющей
программы. К нему есть множество плагинов, по большей части они требуют
патчей для корректной сборки, такие патчи можно найти в AUR Archlinux и в
сизифе AltLinux ­ www.sisyphus.ru. Gkrellm прост и функционален, его можно
прилепить к краю экрана в вызывать по щелчку мышкой на крае экрана, не
говоря уже о том, что он красив, для него есть множество великолепных тем на
www.muhri.net/gkrellm.
Если нет желания возиться ни с настройками conky ни с патчами, то есть
screenlets из арча и его аура. В нем есть все необходимые индикаторы, но
маловато возможностей настройки, но если нужно только вывести значения
требуемых параметров, то screenlets вполне пригодны. Остальные подобного
рода системы или канули в лету или совсем уж примитивны.
wine - неэмулятор виндов.
Сначала ставим зависимости
webcore-fonts ­ шрифты MS co slackbuilds.org
Перед установкой webcore­fonts переносим куда­нибудь в другое место файл
/etc/fonts/conf.d/60­liberation.conf
(еще
лучше
заархивировать
весь/etc/fonts/conf.d) и после установки возвращаем на место. Если будут какие
то проблемы с замещением шрифтами от MS своих шрифтов, то устанавливаем в
каждой секции каждого файла в /etc/fonts/conf.d свои шрифты выше шрифтов от
MS.
cabextract co slackbuilds.org
winetricks ­ установка библиотек и разных причиндал виндов для wine co
slackbuilds.org
Теперь ставим сам wine co slackbuilds.org.
glogg — просмотр и удобный поиск в больших (более 10 Мб) файлов
http://glogg.bonnefon.org/index.html
Конфигурация стандартная для qmake. Есть в aur ArchLinux
Бенчмарки
github.com/megabaks/test/raw/master/distfiles/qtperf.tar.bz2 ­ бенчмарк QT
code.google.com/p/qtperf ­ другой бенчмарк QT
gtkperf.sourceforge.net ­ бенчмарк GTK

qtcurve — темы приложений, со slackbuilds.org.
Ставятся обе темы, сначала QtCurve­KDE4, в слакбилде которой секция
cmake приводится в виду
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIB_SUFFIX=${LIBDIRSUFFIX} \
-DMAN_INSTALL_DIR=/usr/man \
-DQTC_STYLE_SUPPORT=true \
-Wno-dev \
-DQTC_QT_ONLY=true \
-DCMAKE_BUILD_TYPE=Release \
..

затем QtCurve­Gtk2.
Помимо перечисленных есть масса всяких мелких утилит, полезных и не
очень, порой просто курьезных. Среди полезных есть такие как perwindowlayoutd
из aur ArchLinux, утилитка позволят запоминать раскладку для окон приложений
и автоматически ее переключать при переключении между окнами, среди
курьезных redshiftgui оттуда же, которая автоматически регулирует температуру
(яркость) монитора в зависимости от времени дня и вашего нахождения на
шарике.
2 - Интернет
google chrome — браузер.
Устанавливаем из ftp.osuosl.org/pub/slackware/slackware­14.0/extra/google­chrome
пакет google­chrome­pam­solibs (в дальнейших версия слаки это может
измениться).
Скачиваем релиз хрома ­ пакет deb, кладем в папку с ним google­
chrome.SlackBuild из оттуда же и запускаем слакбилд, далее устанавливаем по­
лучившийся пакет.
Если не нравятся продукция империи добра или хочется более новую вер­
сию, то на slacky.eu есть chromium.
firefox ­ если не нравится хром или уже установленная версия FF и хочется поно­
вее,
скачиваем
архив
или
с
релизом
или
с
ночнушками
с
ftp.mozilla.org/pub/firefox, распаковываем архив в /opt и делаем симлинк с firefox
в /usr/local/bin.
Если не нужен старый firefox из самой слаки, то удаляем его и копируем со­
держимое папки firefox скачанного архива в /usr/lib/firefox­** , далее делаем сим­
линк из /usr/lib/firefox­*/firefox в /usr/bin/firefox.
qupzilla - наверное лучший выбор среди браузеров, если нет каких
завышенных требований к нему, есть на slackbuilds.org.

то особо

Можно не любить флеш, его есть за что не любить, но он нужен, поэтому
ставим flashplayer­plugin co slackbuilds.org.

dillo ­ браузер для быстрого просмотра локальных страничек, он очень быстр,
запускается практически мгновенно и удобен именно для локального просмотра,
когда надо быстренько глянуть какую то сохраненную страничку. Берем готовые
пакеты fltk и dillo co slacky.eu (для версии слаки 13.37)
Есть также прекрасный и быстрый браузер dwb на webkit, подходящий
именно для просмотра локальных страничек. Есть в abs (Community) ArchLinux.
claws-mail ­ почтовый клиент.
Сначала устанавливаем нужные пакеты
libetpan ­ co slackbuilds.org
compface, webkitgtk, geoclue ­ co slacky.eu
Ставим сам claws­mail co slackbuilds.org, убираем поддержку всяких palm,
приведя секцию сonfigure слакбилда к виду

./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--enable-static=no \
--disable-ldap \
--disable-jpilot \
--disable-startup-notification \
--disable-dbus \
--disable-networkmanager-support \
--disable-spamassassin-plugin \
--disable-bogofilter-plugin \
--disable-dillo-viewer-plugin \
--disable-valgrind \
--disable-ipv6 \
--build=$ARCH-slackware-linux

Ставим плагины к нему claws­mail­extra­plugins co slackbuilds.org, плагинов
полно, в том числе и ненужные, поэтому правим слакбилд и отключаем ненуж­
ные. Заменяем в слакбилде
PLUGIN_LIST="acpi_notifier address_keeper archive att_remover attachwarner \
bsfilter_plugin clamd fancy fetchinfo-plugin geolocation_plugin \
gtkhtml2_viewer mailmbox newmail notification_plugin perl_plugin \
python_plugin rssyl spam_report tnef_parse vcalendar"

на
PLUGIN_LIST="address_keeper archive attachwarner
fetchinfo-plugin fancy \
mailmbox \
tnef_parse"

Есть и готовые пакеты
rlworkman.net/pkgs/14.0/i486.

claws­mail

и

claws­mail­extra­plugins

на

Если чем либо не устраивает claws­mail, то всегда есть thunderbird, как в
поставке самой слаки, так и на ftp://ftp.mozilla.org/pub/thunderbird/releases,
достаточно просто распаковать куда нибудь скачанный архив. Thunderbird можно
использовать не только как почтовый клиент, но и как мессенджер, клиент
фейсбук и твиттер при помощи расширений Additional Chat Protocols for
Thunderbird и Facebook Tab. Также может быть полезен плагин для перевода
www.tran.52.
Quite-rss — Читалка RSS — code.google.com/p/quite­rss
От аналогов типа liferia выгодно отличается большей функциональностью,
приятным продуманным интерфейсом и большей скоростью работы.
Конфигурация и сборка стандартная для qmake. Есть на slackbuilds.org.
filezilla ­ FTP клиент co slackbuilds.org.
Правим слакбилд
LDFLAGS="-ldl -Wl,-O1 -Wl,--as-needed" \

Если не ставили wxhexeditor с его зависимостями, то нужен wxPython co
slackbuilds.org.
qbittorrent ­ торрент клиент а­ля utorrent co slackbuilds.org
В инете есть упоминания что qbittorrent тормозит на множестве торрентов,
ни подтвердить ни опровергнуть не могу, поскольку редко когда бывает более 15
торрентов, из которых не более 5 активных. Но если нужна работа с большим,
более 100, количеством торрентов, то может быть полезен
transmission ­ торрент клиент co slackbuilds.org.
Нужна либа libevent co slackbuilds.org.
Удаляем из ./configure
--disable-static

и убираем создание корявого qt гуя ­ удаляем из слакбилда
cd $TMP/$PRGNAM-$VERSION/qt
qmake \
QMAKE_CXXFLAGS+="$SLKCFLAGS" \
QMAKE_CFLAGS+="$SLKCFLAGS" \
qtr.pro
sed -i -e 's% -g % %g' Makefile
make
INSTALL_ROOT=$PKG/usr make install
cd -

licq — ICQ и jabber клиент. Есть в aur ArchLinux. В последних версиях пофиксены
все баги с кириллицей и классический клиент вполне готов к работе с ней. Нуж­
ны либы cdk, xosd, libaosd, gloox co slackbuilds.org. Клонируем git
git clone git://github.com/licq-im/licq.git

сd build-all

Далее стандартная конфигурация cmake.
vacuum ­ jabber клиент. Есть готовый пакет на www.vacuum­im.org
uget ­ менеджер загрузок co slackbuilds.org, в необязательных зависимостях есть
aria2, которую лучше поставить, так как эффективность загрузок намного
возрастает.
aMule ­ P2P клиент co slacky.eu. Нужна либа libupnp co slacky.eu.
httraqt ­ загрузчик сайтов, httraqt.sourceforge.net/index_ru.html, более удобный,
чем httrack. Конфигурация стандартная для cmake.
gtorrentviewer ­ просмотрщик торрент­файлов, бывает удобен когда накопилось
много торрент­файлов с непонятными названиями.
Сорцы — gtorrentviewer.sourceforge.net. В src/main.c заменяем в строке 43
#include <curl/types.h>

на
#include <curl/typecheck-gcc.h>

Конфигурация по шаблону. Есть в aur ArchLinux.
w3m ­ консольный браузер, тоже иногда может быть полезен, co slackbuilds.org.
Нужен пакет gc co slackbuilds.org.

Быстро измерить скорость интернета поможет простейшая консольная
утилитка speedtest­cli с www.kossboss.com/linux­­­cli­internet­connection­speed­
tests.

3 - Графика

Когда произносится слова «графика в linux» первая ассоциация естественно
с gimp. Он есть в стандартной поставке слаки, но если у вас процессор без
поддержки sse, то придется перекомпилировать gegl, приведя секцию configure в
его слакбилде к виду
./configure \

--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--docdir=/usr/doc/gegl-$VERSION \
--enable-gtk-doc \
--disable-docs \
--enable-mmx \
--disable-sse \

--build=$ARCH-slackware-linux || exit 1
# Trust defaults:
# --enable-mmx \
# --disable-sse \

Далее ставится
программ.

inkscape

co slacky.eu. Остается немного маленьких

hotshots — наверное лучшая скриншотилка с возможностью редактирования
скриншота и выгрузкой на хостинги картинок и ftp. Есть на slackbuilds.org.
screengrab - скриншотилка с возможностью выгрузки на imageshack.us co
slackbuilds.org. Сорцы брать с screengrab.doomer.org/download
Есть также скриншотилка Jshot — jshot.info c возможностью редактирования
и выгрузки на imageshack.us (ставить его надо в /home иначе не подхватывает
свои плагины).
Широко известный в узких кругах shutter тянет за собой все либы гнома.
Недавно появилась новая и симпатичная скриншотилка hotshots —
sourceforge.net/projects/hotshots с возможностью редактирования скриншота и
выгрузкой на хостинги картинок и ftp, она легче чем Jshot, поскольку написана
на Qt. Конфигурирование стандартное.
gcolor2 ­ подбор цвета co slackbuilds.org.
gammapage ­ настройка gamma и цветовая калибровка, ей можно регулировать и
яркость
Готовый пакет ­ ftp://ftp.yandex.ru/altlinux/Sisyphus/files/SRPMS/gammapage­
0.5.1­alt1.src.rpm (это простой скрипт на питоне, вытаскивается из архива при
помощи file­roller). Есть в aur ArchLinux.
Редакторы диаграмм
Нормальных редакторов диаграмм по сути два ­ dia и yEd. Первый берется
co
slackbuilds.org,
второй
(архив
с
jar)
co
www.yworks.com/en/products_yed_applicationfeatures.html.
Запуск
второго
стандартный ­ java ­Xmx256M ­jar yed.jar. Yed есть в aur ArchLinux.
geeqie ­ просмотрщик изображений.
Для ускорения работы и использования libjpeg­turbo в geeqie лучше пере­
компилировать его из сорцов с DVD с заменой в слакбилде флагов компиляции
на свои.
Впрочем, как это не печально для любителей opensource, но лучшая на сего­
дня программа для просмотра изображений это проприетарная XnViewMP —
newsgroup.xnview.com/viewtopic.php?f=60&t=26033. Богатейшие возможности,
прекрасное удобство и при все при этом высочайшая скорость работы, выше чем
в опенсурсных аналогах. Широкие возможности коррекции изображений прямо
в программе, выгрузка на фотохостинги, система рейтингования, подключение
внешних прог, и не требует ничего для работы кроме phonon. Установка крайне
проста — разархивируем в какую то папку, хоть в opt хоть в папку для программ в
home, корректируем xnview.sh, вставляя сразу после #!/bin/sh

cd /папка с XnViewMP

делаем симлинк из xnview.sh в /usr/local/bin и прописываем в файловые зависи­
мости worker. Есть в aur ArchLinux.
Есть еще естественно и picasa, но это редкий тормоз. Продолжая тему, не­
льзя не упомянуть и Corel AfterShot Pro for Linux, программу обработки
изображений от Corel, как и все ее продукты она прекрасна, также естественна
что она платная, но наверное все знают как приобретать лицензию на продукты
Corel .. :­)

4 - Мультимедиа
Видео в linux это, конечно, mplayer, лучшего пока не придумали и вряд ли
придумают, по крайней мере в ближайшее время. Но mplayer с официального
DVD собран без поддержки vdpau, c патентными ограничениями, без некоторых
нужных кодеков типа ape и привязан к samba. Поэтому лучше
перекомпилировать его, используя официальный слакбилд. Ставим
co
slackbuilds.org либы — mplayer­codecs, mac, libdvdcss, lame, faad2, libmp4v2, faac,
libvdpau. Удаляем пакет samba (если он не нужен, конечно). Затем разрешаем
использование всяких патентованных вещей, в слакбилде заменяем
USE_PATENTS=${USE_PATENTS:-"NO"}

на
USE_PATENTS="YES"

Если планируется использовать скрипт mplayer.ext для запоминания
позиции в фильме, то в mplayer нельзя встраивать поддержки других языков,
кроме английского, mplayer.ext парсит вывод mplayer и не будет работать, если
вывод будет на языке, отличном от английского.
mplayer2 ­ форк mplayer c расширенными возможностями, в остальном он полно­
стью совместим с классическим mplayer.
Для конфигурации mplayer2 используется python3, поэтому ставим его co
slackbuilds.org (после создания mplayer2 python3 можно удалить, если он не
нужен).
Сорцы самого mplayer2 берем со www.mplayer2.org, клонируем git

git clone git://git.mplayer2.org/mplayer2­build.git
Далее
./init --shallow
make

На некоторых компах возможно придется переустановить mesa,
скомпилировать mplayer2 и затем переустановить драйвер nvidia. Получивший
бинарник переименовываем в mplayer2 и копируем в /usr/bin.

Для продолжения прослушивания/просмотра аудио и видео файлов с той
позиции, на которой просмотр/прослушивание завершился в прошлый раз при
закрытии
Mplayer'a
есть
обертка
к
нему,
mplayer.ext

sourceforge.net/projects/mplayerext
Для использования mplayer2 вместо mplayer заменяем в mplayer.ext
if ! which mplayer > /dev/null
then
die "Error! Mplayer not installed."
fi

на
if ! which mplayer2 > /dev/null
then
die "Error! Mplayer not installed."
fi

и
# Starting MPlayer with changed command line parameters
# Запускаем MPlayer с измененными параметрами командной строки
mplayer_ext_echo "Starting MPlayer: mplayer ${options[@]}"
mplayer "${options[@]}" | tee "$tmp_file"

на
# Starting MPlayer with changed command line parameters
# Запускаем MPlayer с измененными параметрами командной строки
mplayer_ext_echo "Starting MPlayer: mplayer ${options[@]}"
mplayer2 "${options[@]}" | tee "$tmp_file"

Есть
также
хороший
плеер
mpv

github.com/mpv­
player/mpv/blob/master/DOCS/man/en/changes.rst, который объединяет в себе
лучшее из mplayer и mplayer2
ffmpeg - для конвертации, создания скринкастов и некоторых других вещей co
slacky.eu.
Можно поставить полный комплект готовых пакетов со slacky.eu, но более
предпочтительный путь поставить только нужные кодеки, оптимизировав их
путем сборки со своими флагами компиляции. Далее приведен свой набор
кодеков, но, естественно, никто не мешает его урезать или дополнить кодеками,
нужными именно вам.
Собираем слакбилдами со slacku.eu c заменой флагов компиляции на свои
пакеты — libass, openal­soft, openjpeg, orc, rtmpdump, twolame, x264, xvidcore.
Приводим секцию configure слакбилда ffmpeg к виду
./configure --prefix=/usr \
--shlibdir=/usr/lib${LIBDIRSUFFIX} \
--libdir=/usr/lib${LIBDIRSUFFIX} \
--build-suffix=${LIBDIRSUFFIX} \

--mandir=/usr/man \
--disable-static \
--enable-shared \
--enable-gnutls \
--enable-x11grab \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--enable-postproc \
--enable-swscale \
--enable-avfilter \
--enable-pthreads \
--enable-bzlib \
--enable-libcdio \
--enable-libass \
--enable-libcaca \
--enable-libfaac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libtheora \
--enable-libtwolame \
--enable-libvorbis \
--enable-libx264 \
--enable-memalign-hack \
--enable-libxvid \
--enable-openal \
--enable-openssl \
--enable-zlib \
--disable-debug \
--arch=${ARCH} \
$([ "${ARCH}" == 'i686' ] && echo '--disable-ssse3' '--disable-amd3dnowext' )

smplayer ­ фронтенд к mplayer со многими дополнительными возможностями,
такими как поиск, просмотр и скачивание клипов с youtube.com,. Есть на
slackbuilds.org.
Smplayer состоит из двух частей: собственно smplayer и утилиты для работы с
youtube

smtube.
Сорцы
smtube
и
smplayer
берем
на
smplayer.sourceforge.net/downloads.php?tr_lang=ru
Первым собираем пакет smtube (для его интеграции в smplayer). В Makefle
приводим строку с PREFIX к виду PREFIX=/usr, далее стандартное создание пакета
через make install DESTDIR и makepkg.
Затем собираем smplayer слакбилдом co slackbuilds.org. Сначала правим
сорцы, во всех форках smplayer ­ umplayer, smplayer2, и в нем самом, есть некото­
рое неудобство при регулировке параметров с клавиатуры, слишком велик шаг
изменения параметров и поэтому трудно подстроить их оптимальные значения.
Проблема решается правкой сорцов. В файле ../src/core.cpp есть функции void
Core::incBrightness(), void Core::decBrightness(), void Core::incContrast(), void
Core::decContrast(), void Core::incGamma(), void Core::decGamma(), void
Core::incHue(),
void
Core::decHue(),
void
Core::incSaturation(),
void
Core::decSaturation(), в которых надо заменить
set*(mset.*
+(­)
4);
на

set*(mset.* +(­) 1); и шаг регулировки станет минимальным.
Кому не нравится mplayer с форками всегда есть vlc
taper.alienbase.nl/mirrors/people/alien/restricted_slackbuilds/vlc/pkg/14.0,
естественно надо брать версию без патентных ограничений.

gnome-mplayer - фронтенд к mplayer, необходим только для проигрывания
флеша с youtube.com через расширение firefox flashvideoreplacer, co
slackbuilds.org. Впрочем можно с успехом использовать в нем и xine.
xine-plugin ­ плагин к браузерам на основе gecko для проигрывания потокового
видео через xine, coрцы www.xine­project.org/releases. Конфигурация стандарт­
ная. Аналогичный плагин к mplayer обладает способностью работать абы как.
fbreader ­ читалка книг, co slackbuilds.org.
Нужна либа liblinebreak co slackbuilds.org.
В слакбилде fbreader заменяем
UI=${UI:-qt4}

на

UI=${UI:-gtk}

и заменяем
patch -p1 < $CWD/fbreader_gcc45x.patch

на
patch -p1 < $CWD/fbreader_gcc45x.patch
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Есть еще одна хорошая читалка книг, CoolReader, co slackbuilds.org
MyRuLib — каталогизатор онлайн библиотек, позволяющий каталогизировать по
темам, авторам и сериям с использованием собственной обновляемой базы книги
с флибусты, либрусека и некоторых других библиотек, с возможностью их скачи­
вания и чтения, co slackbuilds.org. Если не хочется использовать coolreader
(fbreader все же получше), то вставляем вверху слакбилда после комментариев
COOLREADER="no"

Немного о выборе аудиоплеера. Если выбор видеоплееров по сути ограничен
mplayer, vlc и xine c различными их фронтендами и форками, то аудиоплееров
наплодили несметное количество и выбор между ними сделать довольно таки не­
просто. Поэтому сначала определяемся с критериями такого выбора, которые
естественно у каждого свои, поэтому далее сугубо субъективные рассуждения.
Что нужно от аудиоплеера, естественно в первую очередь хороший звук. Хо­
роший звук требует как хорошего кода самого плеера так и хорошего эквалайзе­
ра, в силу объективной неравномерности AЧХ всего процесса восприятия звука ­
от записи до прослушивания через среднего качества колонки в комнате с
коврами и трухлявым паркетом :­) Далее, если есть большое количество музыки
то в плеере нужна база данных, которая поддерживает все форматы которые есть

в наличии. Ну и естественно всякие дополнительные плюшки типа поддержки
интернет­радио, last.fm, поиска обложек и текстов, которые в принципе
совершенно необязательны, поскольку аудиоплеер обязан иметь только две
основные характеристики, хороший звук и хороший базу с поиском в ней. Исходя
из всего этого как аудиоплеер был выбран guayadeque, c прекрасным, без
малейшей глухоты, звуком, отличным эквалайзером, с sqlite базой данных,
понимающей все форматы, в том числе и ape и возможностью выборки из этой
базы по разным критериям и их комбинациям. Плюс все дополнительные
плюшки. Он не очень красив, но на аудиоплеер как правило не глядят а слушают
через него музыку, так что это не самый большой недостаток. Guayadeque требует
wxPython, так что если раньше его не поставили, то теперь уж точно понадобится.
guayadeque — аудиоплеер.
Сорцы — sourceforge.net/projects/guayadeque/files/guayadeque или здесь ­
launchpad.net/~anonbeat/+archive/guayadeque/+sourcepub/2246901/+listing­
archive­extra . Нужны пакеты – pysetuptools, gst­python, libmpeg2, a52dec, gst­
plugins­ugly, gst­ffmpeg (нужен пакет mac) со slackbuilds.org.
./build в папке с сорцами, далее стандартное создание пакета через make install
DESTDIR и makepkg. Есть в aur ArchLinux. Последняя релиз плеера был уже
сравнительно давно, но если судить по активности автора в svn, работа над ним
не прекращается и вполне возможно, что новый релиз уже не за горами.

Есть также прекрасный по звучанию проигрыватель qmmp
co
slackbuilds.org. Нужны либы — libmms со slackbuilds.org, libmpcdec co slacky.eu.
Qmmp по умолчанию имеет интерфейс а­ля winamp, если нравится
классический интерфейс типа foobar ставим Qmmp Plugin Pack, сорцы –
qmmp.ylsoftware.com/plugins_ru.php. Если из пака нужен только плагин простого
(simple) интерфейса, то правим в qmmp­plugin­pack.pri, приводим к виду
#Comment/uncomment this if you want to change plugins list
#CONFIG += MPG123_PLUGIN
#CONFIG += FFAP_PLUGIN
CONFIG += SIMPLE_UI_PLUGIN

далее qmake, make и получившийся файлик libqsui.so кидаем в /usr/lib/qmmp/Ui.
puddletag — великолепный редактор тегов co slackbuilds.org. Еще один хороший
редактор тегов из aur ArchLinux — Exfalso.

Для тех, кто много слушает онлайн радио может быть интересен
проигрыватель foobnix — www.foobnix.com, заточенный как раз под онлайн
прослушивание, причем в предустановках есть весь guzei.com, множество русских
радиостанций, немного со sky.fm и xiph.org, интеграция с ВКонтакте с поиском и
скачивания с него и довольно хорошим эквалайзером. Нужна либа simplejson co
slackbuilds.org ­ (поскольку это питон, то слакбилд не правим вообще). Создание
пакета
стандартное
для
питона.
Есть
слакбилд
на
www.wuala.com/SergMarkov19/Slackbuilds. Есть в aur ArchLinux.
Интернет радио можно слушать в любом проигрывателе, но если не хочется
запускать для его прослушивания громоздкие аудиоплееры, то подойдет
консольная обертка к mplayer для проигрывания онлайн­радио — pyradio с

github.com/coderholic/pyradio, которая просто распаковывается из архива в любое
подходящее место. Удобнее он тем, что позволяет использовать аудиоэквалайзер
mplayer для улучшения далеко не блестящего качества звука онлайн­радио. Для
использования аудиоэквалайзера прописываем в ~/.mplayer/config.
# Аудио эквалайзер
af=equalizer=6:4:2:0:0:0:0:3:5:8

естественно что параметры эквалайзера подбираются по собственному вкусу
(надо заметить что аудиоэквалайзер весьма ресурсоемок, и если комп не самый
мощный, то лучше его выключать при просмотре фильмов). Урлы самих станций
берем из streamtuner2 или из foobnix и прописываем в stations.csv. Есть в aur
ArchLinux и в slackbuilds.org. Можно установить и по­ другому ­ pip install pyradio. В
ней при желании можно уменьшить время задержки переключения на другую
станцию, уменьшив размер кэша mplayer в файле player.py следующим образом:
def _buildStartOpts(self, streamUrl, playList=False):
""" Builds the options to pass to subprocess."""
if playList:
opts = [self.PLAYER_CMD, "-cache", "128", "-quiet", "-playlist", streamUrl]
else:
opts = [self.PLAYER_CMD, "-cache", "128", "-quiet", streamUrl]
return opts

Для прослушивания интернет радио также можно использовать radiotray ­
проигрыватель интернет радио в трее, сорцы — radiotray.sourceforge.net. Также
есть слакбилд co slackbuilds.org.
streamtuner2 — менеджер интернет радио и ТВ, позволяет искать, прогрывать и
записывать аудиопотоки интернет­радио. Нужен streamripper co slackbuilds.org.
Сорцы — streamtuner2.sourceforge.net. Есть в aur ArchLinux.
Нужны либы — Cython, lxml, pyquery co slackbuilds.org (поскольку это питон,
то слакбилды не правим вообще, также не меняем номера версий прог).
Поскольку автор streamtuner2 не озаботился созданием установочного
скрипта, то пишем простейший свой , streamtuner­setup, кладем его в папку с сор­
цами, делаем исполняемым и запускаем
#!/bin/bash
mkdir -p /tmp/streamnuner2 /tmp/streamnuner2/usr/bin \
/tmp/streamnuner2/usr/share \
/tmp/streamnuner2/usr/share/pixmap \
/tmp/streamnuner2/usr/share/streamtuner2
cp ./st2.py /tmp/streamnuner2/usr/bin/
cp ./streamtuner2.png /tmp/streamnuner2/usr/share/pixmap/
cp -r ./* /tmp/streamnuner2/usr/share/streamtuner2/
rm -rf /tmp/streamnuner2/usr/share/streamtuner2/st2.py
rm -rf /tmp/streamnuner2/usr/share/streamtuner2/streamtuner2.png
cd /tmp/streamnuner2/
/sbin/makepkg -l y -c n /tmp/streamtuner2.txz
rm -rf /tmp/streamnuner2

Пакет создается в /tmp.
peyote ­ консольный проигрыватель. Сорцы — peyote.sourceforge.net.
Конфигурация по шаблону. Есть в aur ArchLinux. Нужна либа pyinotify co
slackbuilds.org. Если peyote не запускается, то запускаем его как
mescaline && peyote

Естественно что аудиоплееров масса, и audacious, и deadbeaf и даже xmms,
их настолько много что выбор определяется только предпочтениями, которые у
каждого свои, поэтому выше и были даны свои предпочтения :­) Но никто не ме­
шает поставить какой угодно плеер, благо большинство из них есть на
slackbuilds.org
Немного о такой кому необходимой, кому нет, вещи как регулятор
громкости в трее. Есть комплект утилит для настройки alsa ­ qastools co
slackbuilds.org, в котором есть такой регулятор, есть отдельные регуляторы, такие
как volumeicon, volti и
retrovol co slackbuilds.org или fbmix —
sandbox.ltmnet.com/fbmix. Последний наверное лучший по простоте, но тут уж на
вкус и цвет. Но еще проще использовать пару скриптов, которые можно повесить
на какие нибудь клавиши.
voldown.sh — уменьшение громкости
amixer set 'Master' 1killall notify-osd
notify-send "Громкость изменена. Текущая: `amixer get 'Master' | grep 'Front Left:'| cut \
-b23-25` из 63"

volup.sh — увеличение громкости
amixer set 'Master' 1+
killall notify-osd
notify-send "Громкость изменена. Текущая: `amixer get 'Master' | grep 'Front Left:'|\ cut
-b23-25` из 63"

feff — видеоконвертер.
Бинарник — dansoft.krasnokamensk.ru/more.html?id=1013
Сорцы
http://qt­apps.org/content/show.php/Feff?
content=140298&PHPSESSID=5e0f8817dce26a9eb7650e499e1c42d7
qmake, make, получившийся бинарник в любое место в PATH. Есть в aur
ArchLinux.

У кого выше крыши всяких DVD тому нужен каталогизатор дисков, который
сканирует их содержимое, хранит и дает возможность искать по содержимому. В
принципе таких каталогизаторов вагон и маленькая тележка, но одни тянут пол­
ный комплект кедо­гномолиб, другие используют свой формат хранения данных
и когда прога прекращает поддерживаться использовать ее данные уже пробле­
матично, еще одни крайне примитивны. Есть прога cdcat без таких недостатков
— cdcat.sourceforge.net, она есть на slackbuilds.org, но там старая версия для qt3 и

ставить лишний тулкит, к тому же здоровенный, только для одной проги как то
не комильфо, поэтому лучше собрать ее самому из последней версии с ее сайта.
Для нее нужны либы libzen,libtar, libmediainfo cо slackbuilds.org, либа lib7zip co
code.google.com/p/lib7zip. Для компиляции lib7zip нужно распаковать сорцы p7zip
cо slackbuilds.org в папку с lib7zip. Конфигурация lib7zip
./configure \
--build=i686-pc-linux-gnu \
--host=i686-pc-linux-gnu \
--prefix=/usr \
--libdir=/usr/lib \
--localstatedir=/var \
--sysconfdir=/etc \
--mandir=/usr/man \
P7ZIP_SOURCE_DIR="полный_путь_к_сорцам_p7zip" \
CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow \
-falign-jumps=1 -falignCXXFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx -m3dnow \
-falign-jumps=1 -falig
LDFLAGS="-Wl,-O1 -Wl,--as-needed"

Поскольку автор lib7zip не включил в Makefile копирование include файлов,
перепаковываем получившийся пакет: распаковываем пакет во временную папку,
создаем в ней директорию usr/include и копируем в нее все *.h файлы lib7zip
(инклюды p7zip копировать не надо), затем создаем из временной папки пакет
при помощи makepkg.
Компилируем
сам
cdcat,
в
src/cdcat.pro
заменяем
distfiles.path =
/usr/local/share/cdcat
target.path +=
/usr/local/bin
translations.path += /usr/local/share/cdcat/translations

на
distfiles.path =
/usr/share/cdcat
target.path +=
/usr/bin
translations.path += /usr/share/cdcat/translations

везде /usr/local/ на /usr/, запускаем qmake cdcat.pro, далее процедура создания
пакета, но не через makepkg а через slacktrack. Как именно смотрим, как всегда,
выше.
Конвертировать музыку и фильмы можно также простейшими скриптами,
пример которых есть во вложение worker.tbz, иожно использовать прекрасный
менеджер тегов в foobar, лучшая разрезалка cue+ape(flac) это CUESplitter опять
же под wine.

5 - Офис
libreOffice ­ офисный пакет.
Берем здесь — www.libreoffice.org/download.
Преобразовываем rpm в tgz утилитой rpm2tgz. Также
готовые
скомпилированные из сорцов пакеты для новых версий libre достаточно быстро
выкладываются на alien.slackbook.org/blog. Проверку орфографии смотрим здесь
— help.libreoffice.org/Writer/Checking_Spelling_and_Grammar/ru.
Впрочем после того как openoffice взял под свое крылышко апач, ситуация с
ним резко улучшилась. Претензии к нему ранее были в основном в части неимо­
верной тормознутости. Непонятно что сделали в фонде апача, но теперь
openoffice работает быстрее libre, он быстрее запускается, быстрее и скорость
открытия доков и скорость интерфейса, экспорт в pdf вообще быстрее в разы. Так
что имеет полный смысл вернуться снова к openoffice. Скачиваем нужную вер­
сию отсюда — download.i­rs.ru/pub/openoffice, распаковываем архивы tar.gz,
преобразуем rpm в tgz утилитой rpm2tgz (rpm2tgz *.rpm), устанавливаем tgz
(installpkg *.tgz).
Есть еще более простой путь, gnumeric уже давно лучше calc во всех форках
OO и в нем самом, abiword более чем подходящ для написания нескольких стра­
ничек, а такие тексты составляют подавляющий объем от общего числа, и про­
смотра остальных. Нет совершенно никакой надобности для написания пары
тройки страниц или составления и просмотра простейших табличек запускать
этих тормозных монстров. Gnumeric и abiword есть на slackbuilds.org.
Ну а кому не нравится всякие офисы всегда есть lyx :­) со slackbuilds.org, для
него нужен tetex с DVD. Чтобы lyx подхватил программы из tetex включаем в
~/.bashrc
export PATH=$PATH:/usr/share/texmf/bin

Немного о такой необходимой вещи как записные книжки, которые
постоянно висят в трее и в которые походу кидаются умные (ну или всякие :­)
мысли. Их довольно много и выбор опять же определяется требованиями. Кодеру
нужна подсветка синтаксиса, тому кто много тянет из инета нужна возможность
скопировать страницу из браузеру в записную книжку в первозданном виде, со
всеми картинками и прочими плюшками, у кого информации выше крыши
уделит внимание не только простой иерархической структуре, но и наличию
тегов и особому представлению информации. Далее всякие вики типа zim не
рассматриваются, они конечно хороши, но к ним надо привыкнуть. Поэтому на
выбор.
keepnote
Особенности ­ позволяет сохранить всю страницу из инета простым копиро­
ванием из браузера. Поскольку написана на питоне то запускается довольно
медленно. Сo slackbuilds.org
mytetra
Особенности: в наличии теги и удобное, (в отличии от других) трехпанель­
ное представление, также есть онлайн синхронизация.
Сорцы — webhamster.ru/site/page/index/articles/projectcode/105
Есть слакбилд на slackbuilds.org.

notecase - простейшая записная книжка с форматированием и удобным
поиском. Очень быстрая и удобная если не нужны навороты (а в большинстве
случаев они вовсе не нужны, это только представляется что без ну никак нельзя,
но если посмотреть что из этих наворотов реально используется, то
обнаруживается что чуть меньше чем нуль целых хрен десятых :­). Также она
позволяет создать исполняемый файл, включающий в себя как саму программу
так и ее данные (базу записей). Правда у нее есть глюк ­ надо выходить из нее
перед перезагрузкой иксов или компа, иначе придется восстанавливать
последнюю информацию из резервной копии.
Сорцы и патчи берем с
packages.ubuntu.com и делаем по аналогии с hddtemp, описанной выше.
Правим Makefile, заменяем
if [[ "$(TEST_SRCVIEW_VER)" < "2.4.1" ]]; then \

на
if [[ "$(TEST_SRCVIEW_VER)" < "2.11.0" ]]; then \

Что на что заменять становиться понятно при ошибках компиляции с
оригинальным Makefile. Есть в aur ArchLinux, там же есть и версия pro с
надоедливыми сообщениями о приобретении.
Есть масса других записных книжек, модных и не очень, тут уж на вкус и
цвет. Впрочем стоит обратить внимание на одну из них, TreeSheets ­
treesheets.com, с весьма своеобразной идеологией, лежащей в ее основе.
Кому то может понадобится органайзер, их тоже полно, от консольных до са­
мых навороченных, здесь можно обратить внимание на qorganizer —
qorganizer.sourceforge.net,
достаточно
простой
но
одновременно
функциональный органайзер. Есть в aur ArchLinux.
Кто любит сохранение информации и планирование в виде карт может быть
интересен vym или xmind со slackbuilds.org.
Есть много просмотрщиков pdf, evince и прочие, но лучший, наверное,
qpdfview — launchpad.net/qpdfview, есть на slackbuilds.org и в aur ArchLinux.
Просмотрщик имеет табы, настраиваемый тулбар и множество других
вкусностей. Конфигурация стандартная для qmake, некоторые параметры можно
изменить в qpdfview.pro. Для более быстрой работы можно перекомпилировать
poppler со своими флагами компиляции и линковки.
Для просмотра djvu также можно использовать evince, но удобнее,
функциональнее и быстрее специализированный вьювер djview4 из пакета
djview4 со slackbuilds.org (разумеется если нет желания использовать windjvu под
wine..:=)
,
kchmviewer-qt - просмотрщик chm, co slackbuilds.org.
xchm ­ еще один просмотрщик chm, он хуже чем kchmviewer но иногда бывает по­
лезен. Со slackbuilds.org
speedcrunch - калькулятор со slackbuilds.org.
stardict - словарь stardict в слаке 14 не собирается, ставим пакет для 13.37 отсюда

download.salixos.org/i486/13.37/salix/xap/stardict­3.0.2­i486­1gv.txz.
Можно
также поставить со slackbuilds.org словарь qstardict.

Лучший по возможностям, но и самый ресурсоемкий (память жрет как не в
себя), словарь это goldendict, но версия с сайта не собирается, надо брать версию
из git. Клонируем git
git clone git://github.com/goldendict/goldendict.git

далее стандартная процедура создания пакета для qmake. Есть в aur ArchLinux.
Сами словари берем здесь sourceforge.net/projects/xdxf/files или здесь
planetiphone.ru/useful/stardict/page1515.php, но там настолько неудобная
классификация, к тому же на первый взгляд не так уж много словарей, поэтому
взять расклассифицированные словари можно здесь —
http://dl.dropbox.com/u/75441862/stardict­словари.tar
Есть утилитка преобразования словарей лингво в словари stardict, впрочем
где то в известном месте .. :­) есть торрент со словарями лингво, уже готовыми к
применению в stardict.
jpdftweak - утилита для работы с pdf
Позволяет делать оглавления, вкладывать файлы, делать различное оформ­
ление и множество других операций с pdf. Сорцы ­ jpdftweak.sourceforge.net
Поскольку java просто распаковать куда нибудь в opt. Запуск стандартный

java ­Xmx256M ­jar файл.jar. Есть в aur ArchLinux.
Adobe Acrobat Reader - иногда бывает нужен для открытия каких то особых pdf.
Скачиваем с сайта adobe.com установщик, делаем исполняемым и запускаем
от рута в терминале.

6 - Игры

Здесь маленькие игрушки, монстров нет
barrage — танчики. Есть в Community ArchLinux.
Сорцы — lgames.sourceforge.net/index.php?project=Barrage

ltris ­ старый добрый тетрис, со slackbuilds.org.
lbreakout2 ­ арканоид, со slackbuilds.org
Аддоны к нему – sourceforge.net/projects/lgames/files/add­ons/lbreakout2
foobillardplus - биллиард.
Сорцы

sourceforge.net/projects/foobillard/files/FooBillard­Sources.
Конфигурация стандартная
Преферанс
Под линух нет вменяемого, так что остается только запуск под wine из набо­
ра ­ bridge­preferance.narod.ru/PrefPrograms.htm, лучший наверное до сих пор
marriage
выпуска
2007
года,
или
он
же,
но
старый,
с
www.marriage.ru/winmar/index.htm.

gambler ­ online игры (преф, бридж, масса других). Как убрать ограничение при­
думать легко :­). Программа (java) ­ www.gambler.ru/download
openarena — шутер, со slackbuilds.org
масса других игруль ­ packages.zenwalk.org/?b=/extra/games&zversion=current

Для любителей старых досовских игр есть dosbox cо slackbuilds.org и
фронтенд к нему с массой предустановок для популярных тогда игр, DOSBox
Game Launcher — members.quicknet.nl/blankendaalr/dbgl, к которому необходим
SDL_sound cо slackbuilds.org.

7 - Использование программ KDE и GNOME

Легко заметить что все приведенные выше программы не зависят ни от
kdelibs ни от gnomelibs, что обеспечивает «реактивность» системы. Если возник­
нет желание использовать какие то программы, требующие к примеру kdelibs , то
устанавливаем минимальный комплект кед ­ kde­baseapps, kdelibs, kde­l10n­ru,
oxygen­icons, kde­runtime, polkit­kde­agent, kde­workspace, strigi, далее при запуске
кедовых прог смотрим какого файла из кед не хватает, ищем по этому
недостающему файлу нужный пакет на slakfinder.org и доставляем этот пакет.
Для ускорения запуска прог из KDE ставим /usr/bin/kdeinit в автозагрузку WM.
Полный комплект либ gnome есть на slackbuilds.org.

VII - Настройка системы
Если раньше не завели юзера, то заводим его сейчас ­ adduser, выходим из
иксов, logout, логинимся под новым юзером и входим в иксы уже под новым
юзером.
1 - Настройка шрифтов

На отображение и восприятие шрифтов очень сильно влияет соответствие
DPI монитора и иксов. Как правило драйвер видеокарты должен читать DPI из
самого монитора и устанавливать его правильным образом, но это не всегда так.
Узнать
DPI
монитора
можно
на
сайтах
pxcalc.com
и
members.ping.de/~sven/dpi.html или рассчитать вручную, DPI иксов узнаем через
xdpyinfo | grep -B2 resolution. Если все в порядке, то нечего беспокоиться. Если же
данные сильно разнятся, то придется принудительно выставлять нужное DPI
иксов. Способов это сделать масса, самый простой описан ниже, если же он не
подходит, то в инете всегда можно найти требуемый.
Прописываем в ~/.Xresources
Xft.dpi: Ваше значение DPI

...
обязательно в конце перевод строки.
Потом
xrdb -merge ~/.Xresources

Затем смотрим результат:
xrdb -query -all

Теперь переходим непосредственно к настройке самих шрифтов. Есть
несколько способов значительно улучшить шрифты. Восприятие шрифтов сугубо
субъективно, кому нравится одно, кому другое, поэтому если не подходит какой
то из способов можно попробовать другой, а в рамках самого выбранного способа
побаловаться настройками font.conf. Как правило нужный вид шрифтов таким
методом всегда можно подобрать, затратив не такое уж и большое время.
Самые азы оптимизации шрифтов для слаки на забугорном изложены здесь
­ duganchen.ca/writings/slackware/fonts (естественно не надо буквально приме­
нять все советы подряд, а смотреть что подходит под свои вкусы). Есть огромный
и постоянно пополняемый топик на linuxquestions.org о настройке шрифтов в
слаке — www.linuxquestions.org/questions/slackware­14/how­to­optimize­fonts­in­
slackware­640468. Топик по мере выхода новой версии слаки просто переносится в
соответствуюший раздел на linuxquestions.org. C пользой можно также почитать
соотвествующий
раздел
в
вики
archlinux

wiki.archlinux.org/index.php/Font_Configuration/
Важно — перед тем как что то делать с настройками шрифтов, архивируйте
/var/cache/fontconfig,/etc/fonts,~/.fonts,~/.fontconfig,~/.fonts.conf,~/.config/font­
manager,~/.config/Trolltech.conf,~/.config/fontgroups.xml, чтобы потом не плакать
«пропало все». Архивировать их надо всегда, когда наковыряли настройки

шрифтов так, что они превратились в нечто совсем неудобоваримое, или
использовали для настройки внешнего вида прог KDE systemsettings, который
успешно портит ваши настройки шрифтов, даже если вы их в systemsettings
вообще не трогали.
Есть много методов улучшить отображение шрифтов в линуксе, основные из
них приведены ниже.
A. Настройка freetype.
Включить bytecode interpreter (если он выключен) и включить
масштабирование и сглаживание от Apple.
Распаковываем архив с сорцами, идущими в комплекте со слакбилдом
freetype, правим /freetype­***/include/freetype/config/ftoption.h, переопределим
чтобы было вот так
#define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED

Естественно если не нравятся феньки от Apple то последнее можно убрать.
Для улучшения отображения на LCD мониторах включаем в нем субпик­
сельный рендеринг, для чего раскомментируем в слакбилде строчку
zcat $CWD/freetype.subpixel.rendering.diff.gz | patch -p1 --verbose || exit 1

(в новых версиях freetype можно попробовать переопределить во /freetype­
***/include/freetype/config/ftoption.h
опцию
TT_CONFIG_OPTION_SUBPIXEL_HINTING
по
аналогии
с
TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED)
раскомментируем также (для ранних версий слакбилдов freetype, ниже чем 14
слака)
zcat $CWD/freetype.illadvisederror.diff.gz | patch -p1 --verbose || exit 1

Запаковываем сорцы в архив и подсовываем архив слакбилду freetype. Если
не нравится версия freetype заменяем ее какой нибудь (лучше естественно по­
следней версией с сайта freetype) и также правим ее.
Включаем сам субпиксельный рендеринг ­ из /etc/fonts/conf.avail делаем
симлинк в /etc/fonts/conf.d одного из файлов 10­sub­pixel­*.conf. Какого именно
рендеринг ­ какой больше понравится на глаз :­), делаем скриншоты для каждого
файла и сравниваем. Скорее всего это будет vrgb рендеринг. После создания
каждого симлинка или его удаления делаем fc­cache ­f ­v.
В принципе самый простой способ как всегда самый лучший :­), и кому нра­
вятся четкие, контрастные и сглаженные шрифты лучше всего ограничиться
включением bytecode interpreter и сглаживание от Apple, со включенными пат­
чами в слакбилде, даже без симлинков sub­pixel­* в /etc/fonts/conf.d, и включить
в шрифтах полный (full) хинтинг (hinting) и сглаживания (antialisang) для других
шрифтов в ~/.fonts.conf (/root/.fonts.conf) и соответствующими симлинками
из /etc/fonts/conf.avail в /etc/fonts/conf.d.
Чисто личные предпочтения — настройка шрифтов по первому способу
компиляции freetype, нет субпиксельного сглаживания (симлинков **­sub­pixel
в /etc/fonts/conf.d), есть симлинки из /etc/fonts/conf.avail/10­antialias.conf (файл
надо создать, если его нет)

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<edit name="antialias" mode="assign"><bool>true</bool></edit>
</match>
</fontconfig>>

и 10­autohint.conf в /etc/fonts/conf.d. Шрифт интерфейса, текстовых редакторов и
браузера Liberastika, шрифт читалки handbookpdcyr, serif для офисов
самопальный шрифт на основе Georgia, получающийся заменой цифр в Georgia
на цифры из Times New Roman (шрифт можно встраивать в документы, но нельзя
распространять как собственно шрифт), шрифт терминалов DejaVu Sans Mono и
Terminus. Почему именно так, ответ прост и правдив ­ они нравятся :­).
Оставлены нужные для wine и виндовых доков Arial, Times New Roman и MS Sans
Serif, остальные шрифты за ненадобностью удалены.
Свой ~/.fonts.conf (/root/.fonts.conf)
<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Liberation Serif</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Liberastika</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
</fontconfig>

и ~/.Xresources (/root/.Xresources) (в части настройки шрифтов)
Xft.antialias: 1
Xft.autohint: 1

Затем чистая мистика, для случая личных предпочтений, почему так
происходит внятного объяснения нет, возможно на это влияет наличие папки
~/.compose­cache, поэтому ее лучше создать заранее. Но шрифты становятся еще
лучше. Делается так:






Убирается симлинк /etc/fonts/conf.d/60­liberation.conf
В default.theme текушей темы IceWM заменяется все *FontName*
для примера одной такой замены, на
TitleFontNameXft
=
Arial:size=14
Перезапускается тема IceWM, в его меню заново выбрать ту же тему
В default.theme текущей темы IceWM заменяется все *FontName* на
для примера одной такой замены
TitleFontNameXft
=
Liberation Sans:size=14
Перезапускается тема IceWM, в его меню заново выбрать ту же тему
Возвращается на место симлинк /etc/fonts/conf.d/60­liberation.conf
Перезапускается тема IceWM, в его меню заново выбрать ту же тему
В default.theme текушей темы IceWM заменяется все *FontName*
для примера одной такой замены, на
TitleFontNameXft
=
sans­serif:size=14
Перезапускается тема IceWM, в его меню заново выбрать ту же тему

и шрифты в меню IceWM становятся еще лучше. Почему они от этого становятся
лучше, ну так это и есть мистика :­)
B. Патчи ubuntu
На freetype, fontconfig, libXft, cairo накладываются патчи от Дугана

duganchen.ca/writings/slackware/fonts, раздел LCD Filter Rendering, или
github.com/duganchen/slackware­lcdfilter
Можно посмотреть и здесь
gitorious.org/lcd­filtering
raw.github.com/duganchen/dotfiles/master/.fonts.conf
или как вариант брать патчи отсюда (или для более поздних версий
бубунты)
launchpad.net/ubuntu/oneiric/+source/freetype
launchpad.net/ubuntu/oneiric/+source/fontconfig
launchpad.net/ubuntu/oneiric/+source/cairo
launchpad.net/ubuntu/oneiric/+source/xft
Включаем сам субпиксельный рендеринг ­ из /etc/fonts/conf.avail делаем
симлинк в /etc/fonts/conf.d одного из файлов 10­sub­pixel­*.conf.
С. Патчи clear type
На freetype, libXft, cairo накладываются патчи отсюда (в комплекте сами
патчи и слакбилд)

sites.google.com/site/mostlyslack/cleartype
и здесь
www.linuxquestions.org/questions/slackware­14/how­to­optimize­fonts­in­
slackware­640468/page23.html#post4793524

Там же примеры fonts.conf и скрины до и после
Включаем сам субпиксельный рендеринг ­ из /etc/fonts/conf.avail делаем
симлинк в /etc/fonts/conf.d одного из файлов 10­sub­pixel­*.conf. Убираем линк
/etc/fonts/conf.d/60­liberation.conf и выбираем Arial как шрифт интерфейса и
всего другого.
D. Патчи infinality.
Есть также набор патчей от www.infinality.net/blog, включающий
субпиксельное сглаживание и пример fonts.conf. Взять готовые пакеты для слаки
и почитать как пользоваться можно здесь — someslack.wordpress.com/infinality­
on­slackware. Также можно посмотреть вот здесь — github.com/nihilismus/bob­
infinality­bundle. Почитать на посконном можно здесь — suseana.ru/?p=576#more­
576 и здесь posix.ru/?p=126. Для удобной настройки infinality можно использовать
Infinality Style Changer с gtk­apps.org.

Есть множество других патчей для улучшения шрифтов, это только основ­
ные их виды. Естественно даже их можно комбинировать и получить что то, мо­
жет и лучшее а может и вырвиглазное :­)
Пересобрать freetype co включенным bytecode interpreter и subpixel rendering
лучше в любом случае, так как шрифты с ними смотрятся на порядок красивее.
Есть огромный топик на забугорном о настройке шрифтов в слаке —
www.linuxquestions.org/questions/slackware­14/how­to­optimize­fonts­in­slackware­
640468.
Но наладка freetype и различные патчи это только одна часть проблемы.
Но не меньшее значение имеет и выбор самого шрифта, если он изначально
коряв, то блестящим он от этих методов не станет. Есть множество всяких
шрифтов, и новые от убунту, гугля и paratype, и старые, типа liberation и пакета
pscyr (www.tex.uniyar.ac.ru/package/fonts/pscyr). Здесь уж на вкус и цвет. Шрифты
из пакета pscyr в формате Type1, поэтому копируем в ~/.fonts все шрифты из
пакета, и pfb и afm.
Прекрасно смотрятся шрифты начертания medium, но, к сожалению, очень
мало таких свободных шрифтов. Желающие могут их как то приобрести.
Множество хороших кириллических шрифтов можно найти по этим линкам:
free.type.org.ua
www.thessalonica.org.ru/ru/fonts.html
connie.slackware.com/~alien/slackbuilds/msofficefonts
pier.botik.ru/~znamensk/ftp.vsu.ru/font­packs/pscyr/
www.webtag.ru/fonts
www.dafont.com
i­font.ru
download.opensuse.org/repositories/M17N:/fonts/openSUSE_Factory/
noarch
ru.fonts2u.com
forum.rudtp.ru/threads/besplatnye­kirillicheskie­shrifty.46105
webfont.ru
Для малых размеров шрифтов, меньше 13 пунктов, при включении во
freetype сглаживания от Apple очень хорошо смотрятся шрифты roboto и Lucida
G. Оба шрифта есть в aur ArchLinux, пакеты ttf­roboto и ttf­mac­fonts.

Большинство из кучи шрифтов, которые по умолчанию ставятся в слаке, со­
вершенно не нужны и только замедляют систему, в них поддержка и тайского и
тамильского и прочей экзотики, которой большинство вряд ли пользуется поэто­
му удаляем соответствующие пакеты из /var/log/packages. Можно также затем
посмотреть fonts.dir в /usr/share/fonts/OTF(TTF) и ручками поудалять ненужные
файлы шрифтов (естественно предварительно сделав бэкап этих директорий).
Для гарантии затем можно сделать mkfontdir и mkfontscale, fс-cache -frv во всех
директориях /usr/share/fonts. Чем меньше шрифтов тем быстрее иксы и тем
быстрее грузятся многие проги, поэтому можно или выключить или вообще
удалить неиспользуемые шрифты. Нельзя удалять только fixed, cursor, cursor.pcf,
Liberation, Microsoft Sans Serif, Arial, Tmes New Roman, Terminus и какой нибудь
дополнительный serif для офисов, шрифт для читалки handbookpscyr, DejaVu
Sans Mono для терминалов, остальные можно удалить, растровые шрифты misc­
misc естественно нельзя удалять.
При добавлении своих шрифтов в ~/.fonts выполняем в этой папке mkfontdir,
mkfontscale, fс-cache -frv. Если что то не так со шрифтами, восстановите из архива
предварительно сохраненные в нем настройки и перезагрузите комп, это
помогает.
Для работы со шрифтами есть встроенные в саму слаку утилитки fc­cache, fc­
cat, fc­list, fc­match, fc­query и fc­scan. Что и как они делают можно прочитать в
их манах.
2 - Настройка сервисов

Находятся в /etc/rc.d. Чем меньше ненужных сервисов тем комп легче ды­
шит :­) В большинстве практических случаях для десктопа для остановки сервиса
делаем в терминале сервис stop, и чтобы он не включался при последующих пе­
резагрузках снимаем с соответствующего файла атрибут "исполняемый" хоть в
терминале, хоть в mc, хоть в worker. Для включения сервиса делаем его файл ис­
полняемым и командуем сервис start. Для перезапуска, который необходим если
что то изменили в конфигурации сервиса (файлы *.conf в /etc), делаем в терми­
нале сервис restart. В более общем случае ищем название сервиса поиском по со­
держимому файлов в /etc/rc.d и комментируем его вызов.
Совершенно минимальный рабочий набор сервисов (и других вещей), без
которых одиночный десктоп просто не будет нормально работать ­ rc.4, rc.6, rc.K,
rc.M, rc.S (которые собственно не сами сервисы а перечень их наборов при
разных уровнях запуска компа), rc.alsa, rc.dnsmasq, rc.font, rc.fuse, rc.inet1,
rc.keymap, rc.loop, rc.messagebus, rc.modules­*, rc.udev. На отлаженном компе
можно выключить rc.mcelog и rc.syslog
Если хочется выполнить что то свое при выходе, создаем
/etc/rc.d/rc.local_shutdown, в который пишутся свои команды, которые надо вы­
полнить при выходе, синтаксис такой же как и у /etc/rc.d/rc.local, который
выполняет аналогичную функцию при входе. Естественно делаем его
исполняемым. Все операции с сервисами делаются от рута.
3 - Модули ядра

Убираем оставшиеся лишние модули, комментируя строки с ненужными в
/etc/rc.d/rc.modules*. Запускаем hardinfo, в Kernel Modules смотрим что лишнее и

вносим их в /etc/modprobe.d/blacklist.conf таким образом
blacklist <модуль>

В любом случае IPV6 лишнее по любому, так как сильно тормозит инет, и
если не убрали его поддержку при конфигурировании ядра, то добавляем в
/etc/modprobe.d/blacklist.conf
blacklist ipv6

4 - prelink

Применяется для предварительного связывания программ и библиотек,
убыстряет запуск программ. Есть на slackbuilds.org (не меняем версию проги).
Если ставили программы в /opt добавляем в конец файла /etc/prelink.conf
-l /opt

Для выполнения предлинковки делаем исполняемым и запускаем в
терминале файл /usr/doc/prelink­20100106/prelink­all. В конец этого файла лучше
добавить что то типа
echo «Сделано»

чтобы узнать когда закончилась предлинковка.
При первом запуске рекомендуется повторить предлинковку пару раз. После
установки новых программ (удаления старых) выполняем предлинкову заново.
Если после предлинковки не работает какая то прога, то можно внести ее в
список исключений в /etc/prelink.conf в виде, например
-b /usr/bin/skype

Если после перезагрузки возникли проблемы, и даже система не
загружается, то загружаемся с какого нибудь liveCD, желательно новых версий,
распихиваем файлы из пакета prelink в файловую систему LiveCD, правим в ней
/etc/prelink.conf чтобы для каждой опции ­I было примерно вот так (естественно
заменяем на свою точку монтирования слаки)
-l /mnt/sda1/bin

и запускаем prelink­undo из пакета prelink. Перезагружаемся в слаку (хоть систе­
ма загрузится) и в ней снова выполняем уже ее prelink­undo. Ну и конечно сразу
удаляем пакет prelink. Снова перезагружаемcя, вуаля, слака как новенькая. Это в
лучшем случае, в худшем придется переустанавливать часть пакетов, смотрим
при запуске системы на ругань, смотрим на ругань при запуске своих программ и
переустанавливаем нужные пакеты.

5 - sudoers

Вписываем в /etc/sudoers программы, которые хотим запускать от рута при
помощи sudo но без ввода пароля рута. Таким образом можно запускать програм­
мы от рута например из меню WM, или в каких нибудь скриптах.
Что то типа этого, например
ed ALL=NOPASSWD: /usr/sbin/hddtemp,/usr/sbin/smartctl
ed ALL=NOPASSWD: /usr/bin/worker,/usr/bin/htop

где «ed» - свой юзер.
6 - bash

Настроить его можно под собственные вкусы как угодно, поэтому ниже при­
мер только базовых настроек в ~/.bashrc, которые понадобятся в большинстве
случаев.
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -r /etc/bashrc ]; then
. /etc/bashrc
fi
# Приглашение
PS1='\[\033[1;34m\]\w\n\[\033[0;30m\]\u->'
# Опции bash, полный список по shopt -p (shopt — сокращение от Shell Options)
shopt -s autocd cdspell checkjobs cmdhist dirspell globstar
#В историю не будут попадать дубликаты и команды ls, bg, fg, exit
export HISTIGNORE="&:ls:[bf]g:exit"
# Опции gcc
export CHOST="i686-pc-linux-gnu"
# Cвои
export CFLAGS="-O3 -march=native -mtune=native -fomit-frame-pointer -pipe -mmmx
-m3dnow -falign-jumps=1 -falign-labels=1 -fPIC"
# Arch
#export CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector
--param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -fPIC"
# Иногда приходится использовать стандартные опции gcc, закомментированные
ниже ниже
#export CFLAGS="-O2 -march=i486 -mtune=i686"
# Опции gcc для старых компов и для gtk
#export CFLAGS="-Os -march=i686 -mtune=i686 -fomit-frame-pointer -pipe -falignjumps=1 -falign-labels=1 -fPIC"
export CXXFLAGS="${CFLAGS}"
# Опции линковки

# Cвои
export LDFLAGS="-Wl,-O1 -Wl,--as-needed"
#
# Arch
#LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
# Алиасы
alias gdeman="apropos"
alias gde="slocate"
# Алиаcы уменьшения приоритетов ресурсоемких процессов
alias tar='nice -n 19 tar'
alias gzip='nice -n 19 gzip'
alias bzip2='nice -n 19 bzip2'
alias xz='nice -n 19 xz'
alias zip='nice -n 19 zip'
alias unzip='nice -n 19 unzip'
alias removepkg='nice -n 19 removepkg'
alias installpkg='nice -n 19 installpkg'
alias
alias
alias
alias
alias
alias

/opt/scripts/makepkg-arch='nice -n 19 /opt/scripts/makepkg-arch'
/usr/sbin/makepkg-arch='nice -n 19 /usr/sbin/makepkg-arch'
cmake='nice -n 19 cmake'
qmake='nice -n 19 qmake'
ccache='nice -n 19 ccache'
make='nice -n 19 make'

# Метод рендеринга QT
export QT_GRAPHICSSYSTEM="raster"
# убрать использование pango для отрисовки страниц в firefox для увеличение
скорости отображения страниц
export MOZ_DISABLE_PANGO=1
# Программы по умолчанию
export XEDITOR=/usr/bin/juffed
export EDITOR=tilde
export VISUAL=$EDITOR
export BROWSER=/usr/bin/qupzilla
# Параметры терминала
export TERM=xterm
# Внешний вид java приложений
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on
-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
#export _JAVA_OPTIONS='Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
export JAVA_FONTS=/usr/share/fonts/TTF

#Регистронезависимое автодополнение
set completion-ignore-case on
# Автодополнение в man, sudo, time, etc
complete -cf sudo
complete -cf man
complete -cf time
complete -cf mantxt
complete -cf killall

Не забудьте перезагрузить настройки bash через . ~/.bashrc, обязателен
пробел после точки. Это надо сделать для всех пользователей, root в том числе.
Удобно пользоваться поиском в истории баша по нескольким введенным
буквам и последующем нажатии клавиш «Up» и «Down», для этого создаем файл
~/.inputrc и пишем в него
"\e[A": history-search-backward
"\e[B": history-search-forwavd

7 - Управление процессами

Linux сам прекрасно управляет процессами, но в некоторых случаях может
понадобится ручное управление приоритетами процессов. Например вы
запустили какой то ресурсоемкий процесс, но одновременно вам хочется и
посмотреть фильм в высоком качестве :­) Достигается это понижением
приоритета ресурсоемкого процесса. Это можно сделать как вручную через htop,
так и автоматически. Есть хитроумные методы динамического задания
приоритетов процессов, с их группировкой, но самый просто путь это включить в
~/.bashrc строчки типа alias прога="nice ­n19 прога" для уменьшения приоритета
ресурсоемких процессов. Значения n выше нуля понижают приоритет процесса,
чем больше n тем меньше его приоритет, значения n ниже нуля повышают
приоритет процесса, чем меньше n тем больше его приоритет. В приведенном
выше примере ~/.bashrc показаны некоторые примеры таких настроек.
Понижать приоритет процесса может любой пользователь, которому
принадлежит этот процесс, но повышать приоритет процесса может только
пользователь root.
Если параллельно выполняется что­либо еще, то понижение приоритета
процесса увеличивает время его выполнения, соответственно повышение
приоритета процесса сокращает время его выполнения.
8 - Настройка файловой системы и винтов

­ Ускоряем файловую систему.
Редактируем файл /etc/fstab
/dev/sda* / ext3 defaults,noatime,nodiratime,barrier=0,commit=120,data=ordered 1 1

где
­ noatime,nodiratime ­ отключение записи времени последнего

доступа к файлам и папкам

barrier ­ Код файловой системы обязан перед созданием записи
фиксации журнала быть абсолютно уверенным, что вся информация о
транзакции помещена в журнал. Просто делать запись в правильном
порядке недостаточно; современные диски имеют кэш большого объёма и
меняют порядок записи для оптимизации производительности. Поэтому
файловая система обязана явно сообщить диску о необходимости записать
все журнальные данные на носитель перед созданием записи фиксации;
если сначала будет создана запись фиксации, журнал может быть
повреждён. Блокирующая система ввода­вывода ядра предоставляет такую
возможность благодаря использованию механизма «шлагбаумов»
(barriers); проще говоря, «шлагбаум» запрещает запись любых блоков,
посланных после него, до того момента, как всё, что было прислано перед
«шлагбаумом», будет перенесено на носитель. При использовании
«шлагбаумов» файловая система может гарантировать, что всё, что
находится на диске, целостно в любой момент времени. Отключая
шлагбаум barrier=0, мы ускоряем операции записи
­ commit ­ период синхронизации данных и метаданных
­ data=ordered ­ способ синхронизации данных. Не ставьте кое­где
рекомендуемый writeback, это отложенная из кэша запись изменений и
при случайном сбое в питании изменяемые в этот момент файлы и
сохраняемые в кэше могут испортиться. Впрочем если есть хороший UPS
(или даже нет его, но очень хочется поиметь себе приключений на
определенное место :­) то можно поставить и writeback, но только
изменением опций монтирования в fstab он не ставится. Надо загрузиться
с какого нибудь LiveCD, отмонтировать свой раздел, на котором будет
меняться эта опция, и выполнить команду
tune2fs -O has_journal -o journal_data_writeback /dev/sda*

после этого исправить в fstab опцию на data=writeback и сплюнув энное
количество раз перезагрузиться :­)
Не надо включать индексирование директорий, если у вас нет таковых
с миллионами файлов, оно только замедляет работу на стандартных дирек­
ториях.
­ Включаем отслеживание SMART для винтов. В /etc/rc.d/rc.M
раскомментировать, чтобы было вот так
# Start smartd, which monitors the status of S.M.A.R.T.
# compatible
# hard drives and reports any problems. Note some devices
# (which aren”t
# smart, I guess ;) will hang if probed by smartd, so it”s
#commented
# out
# by default.
if [ -x /usr/sbin/smartd ]; then

/usr/sbin/smartd
fi

Если какое то устройство будет тормозить, как и предупреждают, то
снова закомментировать.
­ Убираем резервирование 5 % места для рута на не корневых (не / или не
/var или не /tmp) разделах linux c ext на отмонтированном (обязательно!!)
разделе
tune2fs -m 0 /dev/sda*

На корневом разделе десктопа 5% для рута тоже совсем не нужно, если у
Вас на нем не вертится какой то супернагруженный сервер, поэтому можно,
загрузившись с какого нибудь LiveCD и отмонтировав раздел со своим
корнем, проделать тоже и с корнем, оставив для рута 1 %
tune2fs -m 1 /dev/sda*

9 - Настройка свопа и кэша

Делаем слаку более отзывчивой, заставив держать как можно больше в
памяти, а не сбрасывать в свап. Создаем файл /etc/sysctl.conf и пишем в него
vm.swappiness=20

Оптимизируем отношение ядра к освободившимся от кэшированных
объектов
файловой системы страницам ОЗУ , пишем в /etc/sysctl.conf
vm.vfs_cache_pressure = 1000

10 - Настройка Xorg и задание типа курсора

Создаем в /home/user и в /root директорию .compose­cache, в которой будут
кэшироваться программы. Они будут быстрее стартовать и потреблять меньше
памяти, благодаря тому, что libX11 будет создавать в ~/.compose­cache кэши рас­
парсенной информации и использовать ее повторно.
Изредка приходится пользоваться такими иксовыми приложениями как
xpaint для снятия скриншотов или xfontsel чтобы узнать параметры шрифта, но
видок у них такой, что навевает мысли о винде 3.1. В основном это касается со­
вершенно угребищного темно­серого фона и некоторых других вещей. Изменить
их можно в файле ~/.Xresources. В нем же задаем тему курсора и его размер, сами
темы курсоров кладутся в ~/.icons. Ниже пример такого файла
Xcursor.theme: Jimmac
Xcursor.size: 20
!##
!## xfontsel
!##
xfontsel*background:

#FFFBEF

xfontsel*foreground:
#000000
xfontsel*font: -adobe-helvetica-*-r-*-*-17-*-*-*-*-*-*-*
!##
!## xpaint
!##
xpaint*background:
#FFFBEF
xpaint*foreground:
#000000
xpaint.toolbox.vport.box*background: #FFFBEF
xpaint.toolbox*font: -adobe-helvetica-*-r-*-*-17-*-*-*-*-*-*-*
Canvas*background:
#FFFBEF
Canvas*foreground:
#000000
Canvas.pane*background:
#FFFBEF
Canvas.pane*foreground:
#000000
Canvas.pane*font: -adobe-helvetica-*-r-*-*-17-*-*-*-*-*-*-*

Как видно из примера после имени окна идет или просто общий для всего
окна параметр со значением или имя ресурса окна и уже затем параметр для кон­
кретного ресурса со значением. Имя ресурса для иксовой проги можно узнать
при помощи editres.
11 - Настройка иконок

Для приложений на базе GTK. Распаковываем архив с темой в ~/.icons. Для
замены иконок во всех темах пишем в ~/.gtkrc­2.0
//название_темы - название каталога с иконками в ~/.icons(не полный //путь!)
gtk-icon-theme-name="название_темы"
gtk-icon-sizes="gtk-menu=24,24: //размер значков в меню
gtk-button=24,24:
//размер значков на "кнопках"
gtk-small-toolbar=32,32: //размер значков на панельках
gtk-large-toolbar=24,24:
gtk-dnd=32,32:
gtk-dialog=24,24" //размер значков в диалоговых окнах

Для замены иконок в конкретной теме пишем в файл gtkrc в ~/.themes/тема
или в /usr/share/themes/тема тоже самое что и для случая всех тем.
12 - Настройка GTK

­ Ускоряем GTK приложения, уменьшая время задержки интерфейса,
добавляем в ~/.gtkrc­2.0 (/root/.gtkrc­2.0)
gtk-menu-popup-delay = 50
gtk-menu-popdown-delay = 50
gtk-menu-bar-popup-delay = 50
gtk-enable-animations = 0
gtk-timeout-expand = 10

­ Определяем иконки для GTK приложений, добавляем в ~/.gtkrc­2.0

gtk-theme-name = "Human"

где иконки Human находятся в папке ~/.icons/Human или
/usr/share/icons/Human
Остальные параметры, которые можно регулировать в ~/.gtkrc­2.0,
можно посмотреть в www.gtk.org/api/2.6/gtk/GtkSettings.html
­ Настраиваем оставшееся, тему GTK и шрифты для GTK приложений,
через gtk­chtheme
13 - Настройка Qt

­ Ускоряем Qt приложения, используя для рендеринга raster.
Добавляем в ~/.bashrc (/root/.bashrc)
export QT_GRAPHICSSYSTEM="raster"
– Настраиваем внешний вид и некоторые другие параметры QT приложе­

ний через qtconfig. При желании можно вручную покопаться в секции
[QT] файла ~/.config/Trolltech.conf, но особого смысла в этом нет, все эти
значения проще настроить именно через qtconfig
Естественно для задания разных параметров и внешнего вида GTK и QT
при запуске от обычного юзера и рута надо править соответствующие файлы в
/home и в /root, и запускать gtk­chtheme и qtconfig от обычного юзера и от рута.

14 - Настройка темы qtcurve

Для настройки темы придется временно поставить минимальный набор кед
(см ­ Использование программ KDE и GNOME) и настроить тему через
systemsettings. В противном случае приложения на GTK не подхватят эту тему.
Есть некоторые особенности задания иконок для темы qtcurve, в ней для
приложений на базе KDE пишем в файл ~/.kde/share/config/kdeglobals
[Icons]
Theme=gnome

для GTK приложений пишем в ~/.themes/QtCurve/gtk­2.0/gtkrc
gtk-menu-images = 1
gtk-fallback-icon-theme="gnome"

где gnome имя темы (папки с иконками) в /usr/share/icons
Для GTK приложений настройка шрифтов при использовании темы qtcurve
осуществляется
через
systemsettings
или
ручной
правкой
файла
~/.kde/share/config/kdeglobals (/root/.kde/share/config/kdeglobals), например
[General]
XftHintStyle=hintfull

desktopFont=Liberastika,15,-1,5,50,0,0,0,0,0
fixed=DejaVu Sans Mono,14,-1,5,50,0,0,0,0,0
font=Liberastika,15,-1,5,50,0,0,0,0,0
menuFont=Liberastika,15,-1,5,50,0,0,0,0,0
shadeSortColumn=false
smallestReadableFont=Liberastika,15,-1,5,50,0,0,0,0,0
taskbarFont=Liberastika,15,-1,5,50,0,0,0,0,0
toolBarFont=Liberastika,15,-1,5,50,0,0,0,0,0
widgetStyle=plastique
..
[WM]
activeFont=Liberastika,15,-1,5,50,0,0,0,0,0
activeForeground=255,251,239

15 - Включение NumLock

Есть два способа включения NumLock.
Первый при помощи утилитки numlockx cо slackbuilds.org, которая включа­
ется вверху скрипта запуска WM /etc/X11/xinit/xinitrc.ваш­WM, следующим об­
разом, после
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

добавляем
# Turn NumLock on (using numlockx)
if [ -x /usr/bin/numlockx ]; then
/usr/bin/numlockx
fi

или просто добавляем в скрипт автозапуска WM, например для IceWM это
/home/user/.icewm/startup, следующим образом
/usr/bin/numlockx &

Второй способ начисто вырубает на цифровой клавиатуре все, кроме самих
цифр. Создаем файл ~/.Xmodmap и пишем в него
keycode
keycode
keycode
keycode
keycode
keycode
keycode
keycode
keycode
keycode
keycode

79=7
80=8
81=9
83=4
84=5
85=6
87=1
88=2
89=3
90=0
91=period

keycode
keycode
keycode
keycode
keycode

108=Return
86=plus
82=minus
63=asterisk
112=slash

16 - Графический вход в WM

Если лень набирать startx, изменяем на графический вход, редактируем
файл /etc/inittab
# These are the default runlevels in Slackware:
# 0 = halt
# 1 = single user mode
# 2 = unused (but configured the same as runlevel 3)
# 3 = multiuser mode (default Slackware runlevel)
# 4 = X11 with KDM/GDM/XDM (session managers)
# 5 = unused (but configured the same as runlevel 3)
# 6 = reboot
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:

17 - Настройки ассоциаций

Иногда бывает необходимо настроить некоторые ассоциации, чтобы
программа, не имеющая своих настроек ассоциаций, могла открывать файл в
определенном приложении. Интегрированные среды типа KDE или gnome имеют
встроенные средства настройки ассоциаций, но таких средств, как правило, нет в
легких оконных менеджерах, поэтому такие настройки приходится делать
вручную.
В качестве примера рассмотрим настройки ассоциаций протокола magnet c
определенными программами, которые могут понадобится, например, в браузере
qupzilla, который не имеет своих настроек ассоциаций и чтобы в нем ссылки
протокола magnet в зависимости от типа этих ссылок открывались или в
qbittorrent или eiskaltdcpp необходимо вручную настроить такие ассоциации в
файле
/usr/bin/xdg­open, заменив имеющиеся в нем секцию generic) на
приведенную ниже
case "$DE" in
kde)
open_kde "$url"
;;
gnome)
open_gnome "$url"
;;
xfce)
open_xfce "$url"
;;

lxde)
open_lxde "$url"
;;
generic)
if (echo $url | grep '^magnet:?xt=urn:tree') then
eiskaltdcpp "$url"
elif (echo $url | grep '^magnet:?xt=urn:btih') then
qbittorrent "$url"
elif (echo $url | grep 'torrent$') then
qbittorrent "$url"
else
open_generic "$url"
fi;;
*)
exit_failure_operation_impossible "no method available for opening '$url'"
;;
esac

Еще один пример показывает настройки ассоциаций, позволяющие
открывать ссылки типа file:// в файловом менеджере worker. В файле
/usr/bin/xdg­open необходимо привести функцию open_generic() к виду:
open_generic()
{
# pcmanfm only knows how to handle file:// urls and filepaths, it seems.
if (echo "$1" | grep -q '^file://' ||
! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:')
then
local file="$(echo "$1" | sed 's%^file://%%')"
# handle relative paths
if ! echo "$file" | grep -q '^/'; then
file="$(pwd)/$file"
fi
worker "$(pwd)"
fi

18 - Русские имена файлов в zip архивах

Иногда попадаются zip архивы с крякозябрами в именах файлов. Преиму­
щественно это случается с архивами винды в кодировке cp1251, но могут быть и
другие кодировки.
Для начала узнаем кодировку
unzip -l archive.zip |enca

Затем преобразуем в каталоге с распакованным архивом, подбирая
кодировки если надо

ls | iconv -c -f cp1252 -t cp850 | iconv -c -f cp866 -t utf8

Можно
также
использовать
маленькую
утилитку
convmv
www.j3e.de/linux/convmv, которую кладем в /usr/local/bin. Сначала узнаем коди­
ровку архива, подбирая кодировки если надо
$ ls -1 | head -1 | iconv -f CP1251 -t utf8

Затем преобразуем в каталоге с распакованным архивом
ls -1 | head -1 | xargs convmv -f CP1251 -t utf8 -r --notest

Как настроить патчами корректное отображение кириллических имен
файлов в архивах zip описано здесь — www.opennet.ru/tips/info/2494.shtml.
Но самый простой способ он как всегда самый лучший :­), благо таких архи­
вов очень мало , просто ставим под wine любой виндовый архиватор – 7z, peazip,
winrar.
19 - Другое

­ Настраиваем dnsmasq как кэширующий DNS сервер
Вот здесь ­ http://linuxru.org/man/spravka­po­nastroyke­dnsmasq­dnsmasqconf,
dnsmasq.conf с русскими примечаниями.
­ В файле /etc/dnsmasq.conf дописываем (или раскомментируем и дописы­
ваем) строчку
listen-address=127.0.0.1

и добавляем в /etc/resolv.conf самой первой строчкой
nameserver 127.0.0.1
– В настройках браузеров убираем что то типа "предупреждающее чтение

dns", поскольку от двойного кеширования только вред. В firefox для это­
го надо установить в «0» значения network.dnsCacheExpiration и
network.dnsCacheEntries в about:config..
­ Делаем/etc/rc.d/rc.dnsmasq исполняемым и выполняем
/etc/rc.d/rc.dnsmasq start (или restart)

­ Для блокировки всякой хитрой рекламы и другого нежелательного
контента добавляем в секцию
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.

Для примера

address=/an.yandex.ru/127.0.0.1
address=/adfox.ru/127.0.0.1
address=/vk.com/127.0.0.1
address=/luxup.ru/127.0.0.1
address=/rambler.ru/127.0.0.1
address=/apis.google.com/127.0.0.1
address=/cdn.api.twitter.com/127.0.0.1
address=/feeds.delicious.com/127.0.0.1
address=/api.ak.facebook.com/127.0.0.1
address=/kontera.com/127.0.0.1
address=/googleadservices.com/127.0.0.1
address=/adriver.ru/127.0.0.1
address=/adru.net/127.0.0.1
address=/vkontakte.ru/127.0.0.1
address=/www.tns-counter.ru/127.0.0.1
address=/gravatar.com/127.0.0.1
address=/mc.yandex.ru/127.0.0.1
address=/google-analytics.com/127.0.0.1
address=/platform.twitter.com/127.0.0.1
address=/yadro.ru/127.0.0.1
address=/begun.ru/127.0.0.1
address=/googlesyndication.com/127.0.0.1
address=/redtram.com/127.0.0.1
address=/redtram.ru/127.0.0.1
address=/marketgid.com/127.0.0.1
address=/rl0.ru/127.0.0.1
address=/doubleclick.net/127.0.0.1
address=/novoteka.ru/127.0.0.1
address=/sj10.ru/127.0.0.1
address=/sj3.ru/127.0.0.1
address=/odnoklassniki.ru/127.0.0.1
address=/dt00.net/127.0.0.1
address=/24smi.org/127.0.0.1
address=/openx.org/127.0.0.1

при этом на 127.0.0.1 отправляются не только запросы к самому adfox.ru, но
и запросы ко всем его поддоменам и страничкам.
­ Если при установке не настроили сеть, то сейчас самое время ее настроить
netconfig, pppoe, etc

­ Настраиваем звук если надо
alsaconf, alsamixer (от юзера) alsactl store (от рута). Если появляется треск, то
запускаем alsamixer и убираем в ноль все уровни, кроме master (1 и 2), PCM,
CD и снова выполняем alsactl store (от рута). Перезагружаемся.

­ Настраиваем частоту повтора и задержку нажатия клавиш клавиатуры для
убыстрения работы с текстом

xset r rate 200 40

где
200 ­ задержка в мс
40 ­ частота повтора Гц
Восстановить значения по умолчанию можно командой xset r rate без парамет­
ров
­ Настройка путей для slocate
Удобно искать файлы при помощи slocate с использованием индексов,
такой поиcк намного быстрее find. Но по умолчанию индексы создаются отнюдь
не для всех нужных путей, поэтому правим файл /etc/updatedb.conf, заменяя в
нем
PRUNEPATHS="/dev /proc /sys /tmp /usr/tmp /var/tmp /afs /net /media /mnt /home /root /opt"

на
PRUNEPATHS="/dev /proc /sys /tmp /usr/tmp /var/tmp /afs /net /media /mnt"

тогда будут создаваться индексы в том числе и для /home, /root и /opt. Поскольку
база обновляется по cron в определенное время, то обновить базу данных при
необходимости можно командой updatedb
­ Включаем hddtemp для контроля за температурой дисков, пишем в
/etc/rc.d/rc.local
/usr/sbin/hddtemp -d /ваш диск (например /dev/sda)

­ Можно заменить bash как пользовательский шелл любым другим, по вкусу и
желанию. Многие предпочитают zsh из­за его богатейших возможностей, но
можно также поставить и какой­нибудь легкий, но мощный, шелл типа mksh.
Для замены пользовательского шелла надо его прописать в /etc/shells, если он
там уже не прописан и указать его в качестве пользовательского шелла для
выбранного пользователя в /etc/passwd.
Не надо только заменять login shell на какой­то другой.
­ Интересные рекомендации по повышению производительности есть на сайте
optimization.hardlinux.ru
и
в
вики
арча

wiki.archlinux.org/index.php/Maximizing_Performance
­ .. много много тюнинга, который не стоит делать. Чтобы сделать лучше надо
знать как параметры оптимизации влияют друг на друга и понимать что именно
хочется, иначе вряд ли будет лучше , хуже может стать запросто :­).
Если у вас вдруг возникнет желания полностью пересобрать слаку или
сделать из слаки LFS, желания крайне причудливые, но вдруг :­), то посмотреть в
каком именно порядке следует собирать пакеты можно в описании LFS и BLFS на
www.linuxfromscratch.org или в их русских, но более старых переводах на
http://rus­linux.net/nlib.php?name=/MyLDP/BOOKS/LFS­BOOK­6.8­ru/lfs­6.8­ru­
index.html
http://rus­linux.net/nlib.php?name=/MyLDP/BOOKS/BLFS­ru/blfs­ru­index.html

VIII - Настройка оконных менеджеров (WM)
1 - Выбор и запуск оконных менеджеров
Выбор определенного WM можно произвести при помощи xwmconfig, просто
запускаем его в терминале, выбираем нужный WM, и перезапускаем иксы.
Далее для примера рассмотрим запуск IceWM. Запустить IceWM можно
просто добавив следующую строку в файл ~/.xinitrc:
exec icewm-session

В этом случае, при запуске X.Org, будет автоматически запущен IceWM.
Иногда, для корректной работы вашего файлового менеджера совместно с udisks,
вместо "exec icewm­session" лучше будет использовать строку вида:
exec ck-launch-session dbus-launch icewm-session

или
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session icewm-session

По команде icewm­session будут запущены icewm, icewmbg и icewmtray.
В более общем виде создаем файл /etc/X11/xinit/xinit.icewm вида
#!/bin/sh
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# Merge in defaults and keymaps
[ -f $sysresources ] && /usr/bin/xrdb -merge $sysresources
[ -f $sysmodmap ] && /usr/bin/xmodmap $sysmodmap
[ -f $userresources ] && /usr/bin/xrdb -merge $userresources
[ -f $usermodmap ] && /usr/bin/xmodmap $usermodmap
# Create default user directory & populate it if it does not already exist
if [ ! -d $HOME/.icewm ]; then
mkdir $HOME/.icewm
for FILE in keys menu preferences toolbar winoptions;
do cat /usr/share/icewm/$FILE > $HOME/.icewm/$FILE;
done
fi
# Start IceWM
#icewmbg &
#icewmtray &
if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then

ck-launch-session dbus-launch --exit-with-session icewm-session
else
exec icewm-session
fi

и делам симлинк из него в /etc/X11/xinit/xinitrc.

2 - Настройка IceWM
A. Настройка основных параметров

Айс легкий, красивый и широко настраиваемый, но его внешний вид и на­
стройки по умолчанию могут отпугнуть сразу, почему автор годами не хочет их
менять это уже вопрос к нему.
Настраивается ручной правкой конфигов в ~/.icewm. Поскольку после уста­
новки их там нет, то копируем в ~/.icewm умолчальные настройки из
/usr/share/icewm, файлы keys, menu, preferences, toolar и winoptions.
В начале читаем описания настроек IceWM, первое старое, но базовые
принципы не изменились
docstore.mik.ua/manuals/ru/icewm/icewm­ru.html#toc6
quickcode.chat.ru/icewm/icewm­ru.html
mydebianblog.blogspot.com/2006/10/icewm.html.
avreg.net/howto_icewm.htm
konishchevdmitry.blogspot.com/2008/07/icewm.html
vectorlinux.osuosl.org/docs/vl50/vlfaq/icewm.htmt.
Естественно что самая подробная документация на самом icewm.org, но да­
же там автор, прекрасный программер, но бооольшой лентяй :­) ее не обновляет
уже бог знает сколько времени.
Основные настройки редактируются ручками в файле preferences. Настройки
с подробными комментариями, так что разобраться в них не составляет никакого
труда. Настроить его можно как угодно, читаем комменты в preferences (если
хватит терпения :­) или ищем поиском в нем (что гораздо лучше) что именно на­
до настроить.
Вот это настраиваем сразу, так как сильнее всего пугает при первом взгляде
на IceWM
# Menus track mouse even with no mouse buttons held (меню без
# щелчка)
MenuMouseTracking=1 # 0/1
# Support win95 keyboard keys (Penguin/Meta/Win_L,R shows menu)
Win95Keys=1 # 0/1
# Support mouse wheel
UseMouseWheel=1 # 0/1
# Alt+Tab window switching
QuickSwitch=1 # 0/1

# Alt+Tab to windows on other workspaces
QuickSwitchToAllWorkspaces=1 # 0/1
# Opaque window move
OpaqueMove=0 # 0/1
# Opaque window resize
OpaqueResize=0 # 0/1

­ Настраиваем меню в menu, для примера (начинающиеся с runonce и prog в
одной строке)
menu "Графика" "folder" {
runonce "Geeqie - Просмотрщик изображений"
"/usr/share/pixmaps/geeqie.png" "geeqie" geeqie
separator
prog "Screengrab - Скриншот"
"/usr/share/pixmaps/FBReader/rtf.png" screengrab
}

где runonce не позволяет запускать вторую копию уже запущенной
программы.
­ Настраиваем тулбар с выпадающим меню в toolbar (начинающиеся с prog в
одной строке)
prog "xterm" "xterm" xterm
prog "juffed - Редактор" "/usr/share/pixmaps/juffed.png" juffed
prog "Worker - Файловый менеджер" "/usr/share/pixmaps/WorkerIcon16.xpm" worker
prog "firefox" "/usr/lib/firefox-4.0b6/chrome/icons/default/default16.png" firefox
menu "Система" "folder" {
prog "Htop-root - Менеджер процессов" "/usr/share/pixmaps/htop.png" roxterm --tab
--tab-name=htop -e sudo htop
prog "Аumix - Регулятор громкости" "/usr/share/aumix/aumix.xpm" aumix
}

­ Настраиваем автозагрузку при старте IceWM в startup, как пример
#!/bin/bash
killall icewmtray &
sleep 1
compton &
devilspie &
sleep 2
wmdrawer -c /home/ed/.wmdrawer/wmdrawerrc &
sleep 1
/opt/scripts/running-worker worker &
sleep 2
roxterm &
sleep 3
xdotool search --class ROXTerm windowminimize
copyq &

xneur &
sleep 3
perWindowLayoutD &
gkrellm &
lxpanelx &
exit

где sleep необходимые задержки перед выполнением команд. В данном
примере icewm настроен на использовании панели lxpanelx вместо встроенной
в него панели, которую невозможно расположить по бокам экрана, lxpanelx
дает такую возможность. Обратите внимание на задержки sleep, без них
автозагрузка будет некорректно работать, и на killall icewmtray &, без чего
невозможно использовать встроенный в lxpanelx трей, поскольку может быть
запущен только один трей, вне зависимости от того, какой панели он
принадлежит. Делаем startup исполняемым.
­ Одна из изюминок icewm возможность достаточно широко управлять
параметрами окон, такими как их расположение на экране и многое другое.
Настройка параметров окон производится в файле ~/.icewm/winoptions.
Пример winoptions
# This is an example for IceWM's window options file.
#
# Place your variants in /etc/icewm or in $HOME/.icewm
# since modifications to this file will be discarded when you
# (re)install icewm.
# Настройки для случая использования IceWM с lxpanelx и wmdrawer
wmdrawer.dTitleBar: 0
wmdrawer.dBorder: 0
wmdrawer.layer: OnTop
wmdrawer.ignoreWinList: 1
Conky.Conky.ignoreWinList: 1
panel.lxpanelx.ignoreWinList: 1
# geometry
regexxer.geometry: +300+150
evince.geometry: 1100x1020+250+10
xterm.geometry: 1200x700+320+120
xterm.icon: xterm
rxvt.icon: xterm
nxterm.icon: xterm
AWTapp.icon: java
# workaround for XV window repositioning problems
xv.nonICCCMconfigureRequest: 1
XClock.ignoreNoFocusHint: 1
MainWindow.licq.allWorkspaces: 1
MainWindow.licq.ignoreQuickSwitch: 1
MainWindow.licq.ignoreWinList: 1
MainWindow.licq.layer: Below

Как видно из примера, в winoptions указывается тип окна, параметр
управления и далее через двоеточие значение параметра управления.
Тип
окна
может
иметь
следующие
значения
­
window_class.window_name.window_role.option:
argument
window_class.window_name.option: argument window_class.window_role.option:
argument window_name.window_role.option: argument window_class.option:
argument window_name.option: argument window_role.option: argument.
Значения узнаются при помощи утилиты xprop: class и name в строке
WM_CLASS = "name", "class", role в строке WM_WINDOW_ROLE = "window role".
Если какое то из значений class, name или role содержит точку, она экранируется
следующим образом ­ the\.class.the\.name.option: argument. Значения координат
окна можно узнать при помощи xwininfo.
Подробное описание параметров управления окнами в winoptions есть на
сайте icewm — www.icewm.org/manual/icewm­14.html#winoptions. Ниже
приведены некоторые наиболее широко используемые параметры управления
окнами.
Строковые параметры:
icon — Название иконки.
geometry — Положение окна. Обязателен unix подобный способ описания: [=][{xX}]
[{+-}{+-}].
Числовые параметры:
workspace — назначить приложению рабочий сстол при запуске(начинается с 0)
Параметры, имеющие фиксированный набор значений:
layer:
Desktop — Рабочий стол. Может быть только один.
Below — Слой под Normak.
Normal — Обычный
OnTop — Верхний.
Menu — слой для меню
tray:
Ignore — Не добавлять иконку в трей.
Minimized — Добавить иконку, убирать из панели задач, когда окно свёрнуто
Exclusive — Добавить иконку в трей и не показывать на панели задач.
Логические параметры:
llWorkspaces — если значение 1, приложение будет видено на всех рабочих столах
ignoreWinList — если значение 1, приложение не будет показываться в списке
приложений
ignoreTaskBar — если значение 1, приложение не будет показываться на панели задач
ignoreQuickSwitch — если значение 1, приложение не будет переключаться по Alt+Tab.
fMove — если значение 0, приложение не будет двигаться.
fResize — если значение 0, приложение не будет изменять размер.
fClose — Iесли значение 0, приложение не будет закрываться.
fMinimize — если значение 0, приложение не будет сворачиваться.
fMaximize — если значение 0, приложение не будет разворачиваться на весь экран.
fHide — если значение 0, приложение не будет скрытым
dTitleBar — если значение 0, приложение не будет иметь верхний бар.
dSysMenu -если значение 0, приложение не будет иметь меню.

dBorder — если значение 0, приложение не будет отображать границу.
dClose — если значение 0, приложение не будет отображать кнопку закрытия.
dMinimize — если значение 0, приложение не будет отображать кнопку свернуть
dMaximize — если значение 0, приложение не будет отображать кнопку развернуть.
dDepth
ignorePositionHint
doNotFocus
startFullscreen
startMinimized
startMaximized
startMaximizedVert
startMaximizedHorz
nonICCCMconfigureRequest
noFocusOnMap

­ Настраиваем шорткеи в ~/.icewm/keys. Для примера
#
#
#
#
#
#
#
#
#
#
#

This is an example for IceWM's hotkey definition file.
Place your variants in /etc/icewm or in $HOME/.icewm
since modifications to this file will be discarded when you
(re)install icewm.
A list of all valid keyboard symbols can be found in
/usr/include/X11/keysym.h, keysymdefs.h, XF86keysym.h, ...
You'll have to omit XK_ prefixs and to replace XF86XK_ prefixes by
XF86. Valid modifiers are Alt, Ctrl, Shift, Meta, Super and Hyper.

key "Shift+Space"
key "Ctrl+9"
key "Ctrl+0"
#key "Alt+Ctrl+9"
#key "Alt+Ctrl+0"

/usr/bin/xkill
amixer set 'Master' 1amixer set 'Master' 1+
amixer set 'PCM' 1amixer set 'PCM' 1+

Для наладки и просто посмотреть что получилось удобно запускать нужный
WM в том же сеансе что и уже запущенный WM через Xnest ­ xorg в отдельном
окне
Xnest :20 & xterm -display :20

откуда из xterm запускать нужный WM. Для повторного запуска надо удалить
файлы /tmp/.X20­lock и /tmp/.X11­unix/X20.
B. Темы IceWM

Тем айса вагон и маленькая тележка, сейчас они находятся в основном на
box­look.org (немного тем а­ля WinXP есть на lxp.sourceforge.net), но не сказать
что их там очень много, поэтому архив с некоторыми темами выложен на dropbox

и wuala, включать его как вложение накладно, архив слишком объемный.
Сами темы находятся в ~/.icewm/themes/папка с темами, для своих скачан­
ных тем разумеется. Настройка темы осуществляется как правкой файла
default.theme так и правкой соответствующих рисунков. Сами рисунки, состав­
ляющие схему, не описаны в default.theme, их назначение жестко задается назва­
нием рисунка. Подробно описано здесь ­ www.icewm.org/themes. Для первона­
чальной настройки темы смотрим на эти параметры
DesktopBackgroundImage="background.jpg" ­ картинка фона

и задание шрифтов
# Font Specification
TitleFontNameXft
=
MenuFontNameXft
MinimizedWindowFontNameXft
ActiveButtonFontNameXft
NormalButtonFontNameXft
ToolButtonFontNameXft
NormalWorkspaceFontNameXft
ActiveWorkspaceFontNameXft
QuickSwitchFontNameXft
ListBoxFontNameXft
StatusFontNameXft
ToolTipFontNameXft
ActiveTaskBarFontNameXft
NormalTaskBarFontNameXft
ClockFontNameXft
=
InputFontNameXft
=

sans-serif:size=14:bold
=
sans-serif:size=14:bold
=
sans-serif:size=14
=
sans-serif:size=14:bold
=
sans-serif:size=14
=
sans-serif:size=14
=
sans-serif:size=14
=
sans-serif:size=14:bold
=
sans-serif:size=14
=
sans-serif:size=14
=
sans-serif:size=14
=
sans-serif:size=14
=
sans-serif:size=14:bold
=
sans-serif:size=14
sans-serif:size=14
sans-serif:size=14

названия остальных параметров интуитивно понятны. Пример настройки
IceWM во вложении icewm.tbz.
Немного об оптимизации тем IceWM. Темы для него есть самые разные, от
простейших текстовых до навороченных с переходами, переливами, закругления­
ми и прочими красивыми плюшками. Все это очень хорошо, но на самых наворо­
ченных схемах все эти красивости могут тормозить. В основном тормоза связаны
с использованием в темах метода gradient, который позволяет изменять размеры
и обеспечивает плавный переход от одного рисунка к другому. В default.theme в
этом случае присутствует строчка типа такой
Gradients="menubg.xpm taskbuttonactive.xpm menusel.xpm dialogbg.xpm
workspacebuttonactive.xpm taskbuttonbg.xpm taskbuttonminimized.xpm"

Что в этом случае можно сделать, убрать (закомментировать) саму эту строч­
ку в default.theme и подогнать размеры рисунков темы под друга друга и под ваш
монитор . Причем ширину рисунков лучше делать кратные 4, т.е шириной 4,8
пикселей, вместо размеров в 1 пиксель, это убыстряет отрисовку. Надо чтобы раз­
меры элементов темы, описанные в default.theme типа высоты заголовка окна
TitleBarHeight=26 соответствовали размеру рисунка. Некоторая заминка может
быть связана с шириной рисунков меню, в этом случае меряем с точностью до
пикселя ширину корневого меню и делаем рисунки меню точно такой же, до пик­

селя, ширины. Увеличивает скорость отрисовки элементов темы оптимальный
выбор метода отрисовки, самый быстрые это pixmap и flat, определяется в
default.theme строчкой типа Look= pixmap.
Еще больше оптимизировать тему можно удалением некоторых ее элемен­
тов, если не используем какие то свои рисунки для часиков в трее, то можно уда­
лить папку ledclock, если вполне достаточно стандартных иконок папок и файлов
по умолчанию то не нужна папка icons, если не используете нотификацию почты
в трее (допустим в трее и так уже висит почтовик со своей нотификацией, к тому
же нотификацию на gmail в айсе настроить нельзя) то удаляем папку mailbox,
если вполне хватает системных шрифтов и курсоров то не нужны папки fonts
(естественно надо в этом случае переопределить шрифты на системные в
default.theme) и cursor. Также можно удалить файлы dframe* и frame*, отвечаю­
щие за отрисовку окантовки окна и заменить их простым заданием цвета окан­
товки и ее ширины в default.theme. В папке taskbar за глаза хватает следующих
рисунков ­ desktop.xpm
icewm.xpm, taskbarbg.xpm
taskbuttonactive.xpm,
taskbuttonbg.xpm, taskbuttonminimized.xpm.
Вообще говоря темы зачастую перегружены какими то старыми версиями
рисунков и прочими ненужными файлами, которые автор поленился удалить,
вычищаем и их.
3 - Настройка openbox

Копируем умолчальные настройки, файлы в /etc/xdg/openbox в
/home/user/.config/openbox. Файл rc.xml служит для настройки внешнего вида
окон, их поведения и способов управления ими. Кроме того, в файле определяют­
ся необходимые пользователю сочетания клавиш. Файл menu.xml определяет со­
держимое различных меню. Любые меню (в том числе и вложенные) могут иметь
идентификаторы, что позволяет вызывать их различными сочетаниями клавиш.
Скрипт autostart исполняется во время загрузки оконного менеджера. Таким об­
разом можно инициализировать переменные окружения и запускать дополни­
тельные приложения. Настраивается или ручной правкой конфигов или через
гуи, сам openbox через obconf, меню через obmenu, темы через obtheme и/или
menumaker.
Lxpanel настраивается конфигами в /home/user/.config/lxpanel/default.
Умолчальные конфиги в /usr/share/lxpanel/profile/default. Tint 2 настраивается
через гуй tint2conf. Для работы tint 2conf делаем симлинк из /sbin/killall5 в
/usr/bin/pidof.
Почти исчерпывающая инструкция по настройке openbox вот здесь
wiki.debian.org/ru/Openbox или здесь wiki.archlinux.org/index.php/Openbox или на
забугорном вот здесь – urukrama.wordpress.com.
4 - Настройка E16

Многие параметры Е16 можно настроить через гуй настроек, который
описывать нет нужды, в нем и так все понятно. Но некоторые параметры
настраиваются только правкой конфигов. О них сказано ниже.
­ настройка шрифтов
Настраиваются в конфиге ~/.e16/fonts.xft.cfg, например
font-default

"xft:Arial-14.5"

и аналогично для остальных.
Многие темы используют свои шрифты, зачастую без поддержки русского,
в этом случае или снимаем галку в гуе настроек «Использовать шрифты из темы
оформления» или вручную правим файл ~/.e16/e_config—0.0.cfg, устанавливаем
параметр theme.use_theme_font_cfg = 0. После этого удаляем все файлы в
~/.e16/cached/cfg и перезапускаем Е16.
­ настройка привязки клавиш клаиатуры и мыши.
Настройка привязки клавиш клавиатуры проще всего произвести при
помощи Е16keyedit.
Настройки привязки клавиш мыши осуществляется правкой конфига
~/.e16/bindings.cfg
Пример такой привязки
Aclass BUTTONBINDINGS normal
MouseDown
A 1 wop * mo ptr
MouseDown
SA 1 wop = mo ptr
MouseDouble A 1 wop * shade
MouseDown
A 2 wop * sz ptr
MouseDouble A 2 wop * th available
MouseDown
A 3 menus show winops.menu
Aclass DESKBINDINGS normal
Tooltip Clicking your mouse on the desktop will perform
Tooltip the following actions
MouseDown
- 1 menus show file.menu
Tooltip Display User Menus
MouseDown
C 1 menus show enlightenment.menu
Tooltip Display Enlightenment Menu
MouseDown
4 1 menus show settings.menu
Tooltip Display Settings Menu
MouseDown
- 2 menus show windowlist
Tooltip Display Enlightenment Menu
MouseDown
A 2 menus show windowlist
Tooltip Display Task List Menu
MouseDown
C 2 menus show deskmenu
Tooltip Display Desktop Menu
MouseDown
S 2 menus show groupmenu
Tooltip Display Group Menu
MouseDown
- 3 menus show settings.menu
Tooltip Display Settings Menu
MouseDown
* 4 desk prev
Tooltip Go Back a Desktop
MouseDown
* 5 desk next
Tooltip Go Forward a Desktop
- настройка меню

Осуществляется правкой конфигов в ~/.e16/menus. Корневое меню
приложений в файле ~/.e16/menus/file.menu. Пример этого файла:
"User Menus"
"Интернет" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/internet.menu"
"Мультимедиа" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/multimedia.menu"

"Видео" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/video.menu"
"Офис" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/ofiice.menu"
"Графика" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/graphics.menu"
"Игры" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/game.menu"
"Разработка" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/develop.menu"
"--------------------" NULL exec "/opt/scripts/nul"
"Система" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/system.menu"
"Настройка" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/tuning.menu"
"Архивация" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/archive.menu"
"Утилиты" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/utility.menu"
"Мониторинг" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/monitor.menu"
"--------------------" NULL exec "/opt/scripts/nul"
"Выход" "/home/ed/.e16/menus/icons/folder_16x16-blue.xpm" menu "menus_apps/exit.menu"

Как видно из него вызываются соответствующие файлы меню в
~/.e16/menus_apps с иконками в ~/.e16/icons.
­ настройка автозапуска приложений
Осуществляется правкой конфигов в ~/.e16/Init(Start)(Stop)/startup. Файл
должен быть исполняемым. Пример такого файла:
#!/bin/bash
numlockx &
tint2 &
sleep 1
devilspie &
sleep 2
mytetra &
sleep 2
stardict &
sleep 3
copyq &
xneur &
worker.sh &
sleep 1
roxterm &
sleep 5
conky &
sleep 1
xdotool search --class ROXTerm windowminimize
xdotool search --class Worker windowminimize
wmdrawer -c /home/ed/.wmdrawer/wmdrawerrc &
exit

­ настройки курсоров
Зачастую темы Е16 имеют свои курсоры и если хочется использовать не их,
а курсоры, определенные в Х11, то можно просто переименовать файл
~/.e16/тема/cursors.cfg во что нибудь другое.
Подробная справка по настройке Е16 ­ wiki.zenerves.net/index.php/E16_All
Как создавать и модернизировать темы для Е16 можно почитать тут —
etherdoxproject.com. Сами темы можно взять здесь — themes.effx.us/previews

5 - Настройка E17,18

Тут писать вообще то нечего, настройка осуществляется через простейший
гуй, как настроить меню и некоторые другие вещи можно прочитать здесь
sda00.blogspot.com и здесь radist­elvin.blogspot.com/search/label/enlightenment
Есть подробный цикл публикаций о E17 на
rus­linux.net/nlib.php?name=/MyLDP/gui/E17/e17­index.html а также здесь ­
pclinuxos.su/index.php/vneshni­vid/enlightenment­e17
Вообще есть rus­linux.net/main.php?name=x­win.ko#6.4., где можно найти
многое о менеджерах окон и их настройке.
Поскольку стандартные настройки переключения клавиатур в E17 не дей­
ствуют (по крайней мере в его версии на момент написания), то вносим в автоза­
грузку E17.
setxkbmap -option "grp:ctrl_shift_toggle,grp_led:scroll"

Темы для E17 — e17­stuff.org. Настройки Е18 во многом повторяют настройки
Е17.
6 - Настройка композита

Естественно заменить один оконный менеджер другим просто нельзя, но
можно использовать некоторые эффекты (тени окон, эффекты меню) со своим
оконным менеджером при помощи хcompmg или compton (отличие compton от
xcompmgr смотрим в его доках), также композит существенно убыстряет
переключение между окнами приложений и вообще работу всего интерфейса.
Как именно хорошо описано в wiki.archlinux.org/index.php/Xcompmgr. Обратите
внимание на настройку xorg.conf. Xcompmgr requires the following: Xorg must be
installed, configured and running. Composite must be enabled via graphics drivers,
AIGLX, or Xgl. Xcompmgr процессор практически не нагружает, если, конечно, не
повключать все эффекты подряд и радостно наблюдать за тормозами . Вообще то
использовать Xcompmgr для каких то других эффектов кроме теней под окнами
лучше не стоит, на других эффектах в зависимости от компа он может тормозить
как буратино.
Для использования и оптимизации хcompmg добавляем в секцию Section
"Device" xorg.conf
Option
Option

"RenderAccel" "true"
"AllowGLXWithComposite" "true"

и добавляем в конец xorg.conf
Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection

С какими параметрами запускать и какие эффекты как использовать смот­
рим как всегда xcompmgr —help и курим man xcompmgr, аналогично для compton.
Но лучше не использовать все эффекты подряд а ограничиться

простейшими типа теней под окнами ­ xcompmgr -с, иначе может тормозить.
Для включения композита при загрузке IceWM в /etc/X11/xinit/xinitrc.icewm
заменяем
exec /usr/bin/icewm-session

на
/usr/bin/xcompmgr -c &
exec /usr/bin/icewm-session

или вставляем запуск xcompmgr в автозагрузку оконного менеджера (startup в
IceWM), аналогично в других оконных менеджерах.
Быстрое включение и отключение композита можно сделать скриптом.
Скрипт кладется в /usr/local/bin и прописывается в меню и/или забиндивается
на какую то клавишу.
#!/bin/bash
#
# Start a composition manager.
# (xcompmgr in this case)
function comphelp () {
echo "Composition Manager:"
echo " (re)start: COMP"
echo " stop:
COMP -s"
echo " query:
COMP -q"
echo " returns 1 if composition manager is running, else 0"
exit
}
function checkcomp () {
( ps nc -C xcompmgr &>/dev/null ) && exit 1
exit 0
}
function stopcomp () {
( ps nc -C xcompmgr &>/dev/null ) && killall xcompmgr
}
function startcomp () {
stopcomp
# Example settings only. Replace with your own.
hsetroot -solid "#FFFBF0" &
xcompmgr -cC &
exit
}
case "$1x" in
"x") startcomp;;
"-qx") checkcomp;;
"-sx") stopcomp; exit;;
*) comphelp;;
esac

Можно использовать xcompmgr только для отрисовки окон, без каких либо
эффектов, в этом случае значительно уменьшается время переключения между

окнами и скорость работа интерфейса. В этом случае xcompmgr запускается без
любых ключей.

IX - Настройки отдельных программ
worker
Вход в гуй настроек по кнопочке "C" в левом верхнем углу. Настройка worker
в связке с roxterm и juffed, позволяющая использовать worker одновременно и в
root и в user mode, позволяющая также легко собирать пакеты задача долгая и
нудная, поэтому во вложении worker.tbz приведен пример такой настройки. Есте­
ственно меняем разрешение файлов на свои. Может потребоваться изменить что
то несущественное в файлах, типа комментариев, и уже затем изменить разреше­
ние.
О выборе шрифтов в worker, по сути у него единственный выбор из ttf шриф­
тов это sans­serif, значение которого определяется в файле ~/.fonts.conf. Как его
можно изменить смотрим чуть выше в разделе 'Настройка шрифтов' .
Worker везде очень активно использует правую кнопку, и в панели файлов и
в кнопках и везде где только можно, так что если чего то в нем не хватает, жмем
правую кнопку и скорее всего нужное появится :­)
gxneur (xneur)

У него есть такие возможности как самообучение и автодополнение, кото­
рые лучше выключить в силу несовершенства алгоритма их реализации. Если их
включить, то можно наткнуться на такую «особенность», что все двух­
трехбуквенные слова или предлоги будут автоматом переводить на забугорный,
то есть напечатанное по русски «но» будет автоматом переводиться в «yj». Если
все таки включили эти возможности и напоролись на такие «особенности», то
надо очистить содержимое файлов ~/.xneur/pattern и ~/.xneur/dictionary и
выключить все таки эти возможности в настройках gxneur.
Также лучше выключить «Проверять похожие слова» и «Исправление
опечаток», использование этих опций вызывает довольно странные проблемы
при наборе текста в различных офисах.
cairo-dock
Если появляется черный фон панели вместо прозрачного, включаем в на­
стройках "Система" ­ "Эмулировать композитность с поддельной прозрачностью".
В icewm для такой эмуляции обязательно должна быть установлена картинка на
рабочий стол, иначе появляется черный фон в cairo­dock.
При запущенном композитном менеджере типа xcompmgr или compton
можно запускать cairo­dock с поддержкой openGL ­ cairo­dock ­o. Работает
быстрее, но и больше жрет памяти.
Чтобы не запускать из cairo­dock множество копий одной и той же
программы, если она уже запущена, в общем случае делаем небольшой скрипт
#!/bin/bash
#
# Скрипт проверки запущена ли программа и если "да" то сделать ее окно
# активным, если "нет" то запустить
#
APP=`basename $1`
FULLAPP="$*"

HOSTNAME=`hostname`
# пробуем найти уже запущенный экземпляр программы
# и вывести ее окно на передний план
wmctrl -l -x | grep -i $APP | while read RUNNING
do
WINDOW=${RUNNING#*${HOSTNAME} }
wmctrl -a $WINDOW
exit 1
done
# запускаем программу, если она еще не запущена
if [ $? -eq 0 ]
then
$FULLAPP
fi

для worker и juffed скрипт будет выглядеть несколько по иному
#!/bin/bash
#
# Скрипт проверки запущена ли программа и если "да" то сделать ее окно
# активным, если "нет" то запустить
# модификация для worker и juffed
#
APP=`basename $1`
FULLAPP="$*"
HOSTNAME=`hostname`
# пробуем найти уже запущенный экземпляр программы
# и вывести ее окно на передний план
wmctrl -l -x | grep -i $APP | while read RUNNING
do
WINDOW=${RUNNING#*${HOSTNAME} }
wmctrl -a $1
exit 1
done
# запускаем программу, если она еще не запущена
if [ $? -eq 0 ]
then
$FULLAPP
fi

В оба скрипта в качестве параметра передается имя программы, а сам вызов
скрипта осуществляется в настройках соответствующего значка запуска cairo­
dock.
Как пример скрипт запуска ночнушки firefox
#!/bin/bash
#

# Скрипт проверки запущена ли программа и если "да" то сделать ее окно
# активным, если "нет" то запустить
#
APP=`basename "Nightly"`
FULLAPP="firefox"
HOSTNAME=`hostname`
# пробуем найти уже запущенный экземпляр программы
# и вывести ее окно на передний план
wmctrl -l -x | grep -i $APP | while read RUNNING
do
WINDOW=${RUNNING#*${HOSTNAME} }
wmctrl -a $WINDOW
exit 1
done
# запускаем программу, если она еще не запущена
if [ $? -eq 0 ]
then
$FULLAPP
fi

Пример настроек во вложении cairo­dock.tbz. Естественно меняем разреше­
ние файлов на свои.
wmdrawer
Настройки wmdrawer находятся в файле ~/.wmdrawer/wmdrawerrc. Ниже
приведен пример настройки wmdrawer с прозрачным окном, выпадающим от
наведения на него мышки.
# Config file example for wmdrawer
[general]
# Dock's icon [optional]
dock_icon
logo-icewm-yellow-full.xpm
direction
0
icons_expand 0
transparency 1
btns_size
64
tooltips 0
show_on_hover 1
hide_on_out
1
hide_timeout 100
windowed_mode 1
[images_paths]
/usr/share/pixmaps
/usr/local/share/pixmaps/
/home/ed/.wmdrawer/pixmap
# A first column with 5 buttons
# Each button must be defined with this syntax:
# (tooltip) (image) (command)
[column]
(Syst) (Syst.xpm)
()
(Worker)
(worker.xpm) (/opt/scripts/running-worker worker)
(RoxTerm)
(roxterm.xpm)
(roxterm --tab -n mksh)

(Juffed) (juffed.xpm)
(/opt/scripts/running-one-program-sudo sudo juffed)
(Htop)
(preferences-desktop.xpm)
(roxterm --tab -n htop -e sudo htop)
(Clear) (edit-clear.xpm) (roxterm --tab -n clear-trash-cache-tmp -e sudo /opt/scripts/clear-cache-trash-tmp-other)
# A second column with 5 buttons
[column]
(Inet) (Inet.xpm)
()
(Qupzilla)
(qupzilla.xpm) (qupzilla)
(Quiterss)
(quiterss.xpm) (/opt/scripts/running-one-program nice -n 19 quiterss)
(Thunderbird)
(thunderbird.xpm)
(/opt/scripts/running-one-program thunderbird)
(qBitTorrent) (qbittorrent.xpm)
(qbittorrent)
(mplayer-flash)
(mplayer-flash.xpm)
(roxterm --tab -n youtube -e /opt/scripts/mplayer-flash5)
[column]
(Mult) (Mult.xpm)
()
(Guayadeque)
(guayadeque.xpm)
(guayadeque)
(FBReader)
(FBReader.xpm)
(/opt/scripts/running-one-program FBReader)
(SmTube)
(smtube.xpm)
(/opt/scripts/running-one-program smtube)
(PyRadio)
(preferences-desktop-text-to-speech.xpm)
(roxterm
--tab
-n
/opt/scripts/roxterm-command-in-new-tab pyradio)

pyradio

-e

[column]
(Other) (Other.xpm)
()
(cigarette) (cigarette2.xpm) (roxterm --tab -n Курево -e mksh -c 'mcedit -S am_skins_blue.ini
/mnt/sda9/TEMP/LINUX/Курево/сегодня; mksh')
(ToDo)
(todo.xpm)
(sudo juffed /home/ed/TODO)
(Guide)
(mytetra.xpm)
(/opt/scripts/running-one-program mytetra)
(Очистка и архивация)(luckybackup.xpm)
(/opt/scripts/running-one-program-sudo
sudo
luckybackup)

gsmartcontrol
В настройках надо выставить путь к smartctl ­ /usr/sbin/smartctl
luckybackup
Для сохранения предыдущих копий файлов ставим в параметрах задачи зна­
чение "Snapshot to keep" больше нуля, сколько хотим сохранить предыдущих ко­
пий. Сохраненные предыдущие копии находятся в папке .luckybackup­snaphots.

psensor
Определяем установленные сенсоры, запускаем от рута
/usr/sbin/sensors-detect

conky
О коньках в инете написано едва ли ни меньше чем о systemd.. :­), поэтому
нет смысла писать о них что то еще, можно только привести маленький совет ­ не
использовать offset для позиционирования, от него при изменении порядка цифр
коньки начинают некрасиво прыгать, вместо offset надо использовать абсолютное
позиционирование при помощи goto. Ниже приведен пример простейшей
настройки conky в файле ~/.conkyrc
# Conky, a system monitor, based on torsmo

#
# Параметры отображения информации
#
update_interval 2.0
double_buffer yes
no_buffers yes
out_to_console no
out_to_stderr no
default_color yellow
#
# Параметры окна conky
#
alignment br
use_xft yes
xftfont DejaVu Sans Mono:size=12
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
own_window yes
gap_x 0
gap_y 0
minimum_size 1850
#
#
# Отображаемая информация
#
TEXT
${goto 0}${hwmon 0 temp 1}°C|${hddtemp /dev/sda}°C${goto 1670} ${execi 1800
~/.conky/weather/weather.sh}${offset -5} °C
${goto 0}$cpu%|$mem${offset -17}|$swap${goto 1680}${time %a%e %b}${offset 5}-$
{offset 5}${time %H:%M}

Для работы таких коньков необходимо прописать в /etc/rc.d/rc.local
hddtemp -d /dev/sd*

где звездочка это винт для наблюдения и настроить lm­sensors путем вызова от
рута sensors­detect
wine

Запускаем в терминале winecfg и настраиваем.
Сглаживание шрифтов в wine (скрипт) ­ www.wine­reviews.net/wine­
reviews/tips­n­tricks/how­to­enable­font­anti­aliasing­in­wine.html (сам скрипт ­
files.polosatus.ru/winefontssmoothing.sh)
Если
есть
винды
делаем
симлинк
из
WINDOWS/Fonts
в
/home/user/.wine/drive_c/windows.
Далее добавляем при помощи winetricks необходимые либы винды.
Для запуска программ с параметрами, например для вызова из worker с
именем файла, делаем скриптик наподобие этого
env WINEPREFIX="/home/ed/.wine" wine \
"C:\Program Files\Tracker Software\PDF-XChange Viewer\pdf-viewer\PDFXCview.exe" \
"$(winepath -w "$@")"

Небольшая но емкая хаутушка по wine — здесь zenway.ru/page/wine­howto и
здесь linux­sam.blogspot.ru/2008/07/wine.html
Для простоты настройки wine можно установить PlayOnLinux со
slackbuilds.org.
Как
его
использовать
читаем
здесь
­
www.linuxcenter.kz/page/ustanovka­i­nastroika­playonlinux­v­linux
google-chrome
Добавляем в самый верх /opt/google/chrome/google­chrome
cd /opt/google/chrome
и делаем симлинк с него в /usr/local/bin.
К хрому полно плагинов, которые выбираем на вкус и цвет :­), но есть пре­
красный плагин, позволяющий сохранить страничку со всем содержимым (кар­
тинками, скриптами итп) в одном html­файле ­ SingleFile и SingleFile Core.
Некоторые плагины хрома при обновлении выключаются и если обновления
не очень нужны (как правило это так и есть :­) и лень каждый раз включать пла­
гины, то убираем автообновление ­ делаем неисполняемым файл
/etc/cron.daily/google­chrome.
Для сохранения зрения от изысков веб­дизайнеров и убыстрения работы со­
здаем файл /home/user/.config/google­chrome/Default/User StyleSheets/Custom.css
и пишем в него
* { text-align: justify !important; }
* { line-height: 1.40 !important; }
* { font-family: Liberation Sans !important; }
*{
border-radius: 0 !important;
box-shadow: none !important;
}

Естественно это только пример своего css, тут уж на вкус и цвет :­)
Для более точной настройки размеров шрифтов, прописываем в
/home/user/.config/google­chrome/Default/Preferences что типа этого , размеры
естественно ставим свои
"webkit": {
"webprefs": {
"default_fixed_font_size": 21,
"default_font_size": 24,
"fixed_font_family": "Liberation Sans",
"minimum_font_size": 21,
"serif_font_family": "Liberation Sans"
}

firefox
По аналогии с хромом для убережения своего зрения ликвидируем изыски
веб­дизайнеров, пишем в файл (естественно это только пример своего css)
/home/ed/.mozilla/firefox/*.default/chrome/userContent.css
* { text-align: justify !important; }
* { line-height: 1.25 !important; }

* { font-family: Liberation Sans !important; }
*{
border-radius: 0 !important;
box-shadow: none !important;
}

Также более точно определяем размер минимального шрифта, поскольку в
гуи настроек фокса слишком большой шаг между возможными значениями тако­
го размера, для этого правим в файле /home/user/.mozilla/firefox/*.default/prefs.js
значения следующих параметров, опять же ниже только пример значений, они
подбираются по вкусу
user_pref("font.minimum-size.x-cyrillic", 21);
user_pref("font.minimum-size.x-western", 21);

Плагинов к фоксу немеряно, у каждого свой набор, но для любителей ЖЖ
есть плагин deepestsender­deepestsender.mozdev.org.
Также могут понадобится flashvideoreplacer, проигрывание флеша с
youtube.com через xine, и downloadhelper для скачивания видео.
Естественно приведены расширения помимо стандартных adblock, umht и
кучи всего другого :­)
Для использования самых новых версий фокса понадобится расширение
Nihtly Tester Tools, которое приспосабливает расширения от старых версий к вер­
сии новой.
Для использования firefox в связке с кэширующим DNS сервером dnsmasq
устанавливаем
в
0
значения
network.dnsCacheExpiration
и
network.dnsCacheEntries в about:config.. Для корректного копирования кирилли­
цы из адресной строки firefox (которая есть например в вики) устанавливаем в
false значение network.standard­url.escape­utf8.
Для подключения дополнительный протоколов типа magnet временно уста­
навливаем в about:config параметр network.protocol­handler.expose­all в false, жам­
каем какую то magnet ссылку, выбираем приложение, ставим галку в диалоге вы­
бора «по умолчанию», возвращаем значение параметра
network.protocol­
handler.expose­all в true.
qupzilla
Также как и для хрома и фокса создаем свой собственный стиль
отображения страниц в ~/ed/.qupzilla/my.css
* { text-align: justify !important; }
* { line-height: 1.30 !important; }
* { font-family:Liberastika !important; }
*{
border-radius: 0 !important;
box-shadow: none !important;
}

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

dillo

Для включению куков создаем файл /home/user/.dillo/cookierc и пишем в
него DEFAULT ACCEPT.
Поскольку dillo в основном используется для просмотра локальных файлов
нет смысла в ухищрениях уэбдизайнеров и лучше смотреть сохраненные
странички в нормальном виде (впрочем это касается и браузеров для просмотра
инета :­), поэтому создаем файл /home/user/.dillo/style.css и пишем в него
body {background-color: white !important}
body {color: black !important}
:link {color: blue !important}
*{
font-family : LiberationSans ! important;
font-size : 20px ! important;
}

Для проигрывания браузерного флеша с youtube.com через mplayer из
любого браузера можно использовать youtube­dl со slackbuilds.org и следующий
скрипт:
#!/bin/sh
x=$(xclip -o -sel c)
cookies_file=`mktemp /tmp/youtube-cookies.XXXXXX`
rm $cookies_file
url="`youtube-dl --cookies=$cookies_file -g --max-quality 18 $x`"
mplayer -cookies -cookies-file $cookies_file -cache 1024 $url

урл копируется в буфер обмена и запускается скрипт.
licq

Для корректного подсоединения может понадобится установить порт под­
ключения через login.icq.com.
libreoffice, juffed
Ненужные плагины замедляют запуск и саму работу с прогами, поэтому уби­
раем
лишние
плагины,
для
libreoffice
создаем
папку
/opt/libreoffice3.4/share/extensions­old
копируем
в
нее
содержимое
/opt/libreoffice3.4/share/extensions, затем в /opt/libreoffice3.4/share/extensions
удаляем папки с лишними плагинами. По аналогии удаляем ненужные плагины
в juffed (плагины в usr/share/juffed/plugins).
Разумеется кроме ненужных есть и нужные плагины :­), для офисов есть к
примеру плагин ooo2gd для работы с google docs (не сказать что он очень удобен,
но может быть полезен) — extensions.services.openoffice.org/project/ooo2gd.
Есть
прекрасный
плагин
проверки
орфографии

http://www.informatic.ru/libre­beta. На момент написания он еще находится в
стадии бета­тестирования, но уже великолепно работает. Естественно все другие
плагины проверки орфографии при его использовании надо отключить в
настройках офиса.
Для juffed будет удобно добавить в настройках (Инструменты – Настройки ­

Типы файлов) подсветку различных типов конфигурационных файлов (*.conf,
*rc, *.ini, *.cfg, PKGBUILD).
clipit
В нем есть интересная особенность, "Automatically paste selected item", кото­
рая позволяет прямую вставку в нужное окно, без "вставить" в этом окне, только
выбором нужного пункта в меню clipit, но она некорректно работает со всеми
офисами, clipit в этом случае впадает в ступор и помогает только его убиение
через htop и перезапуск, так что лучше этой возможностью не пользоваться и
убираем поэтому ее в настройках.
FBReader - для читалки критичен хороший шрифт, есть масса serif, но наверное
лучший
это
handbookpscyr
из
пакета
pscyr
с
pier.botik.ru/~znamensk/ftp.vsu.ru/font­packs/pscyr. Этот шрифт разновидность
Baltica, но на больших размерах смотрится лучше ее.
mplayer

Пример основного конфига ~/.mplayer/config
[default]
# Видеодрайвер
vo=xv,noslices
#vo=gl2
# Аудиодрайверы ( в порядке перебора)
ao=alsa,oss
#mixer-channel=Master
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Обязательно выключать для
фильмов!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Аудио эквалайзер
# af=equalizer=6:4:2:0:0:0:0:3:5:8
# Аудио экстрастерео
af=extrastereo=2.00
# Пропуск кадров
framedrop=true
# Постобработка (%)
autoq=100
# Кэш
cache=2048
# Кодовая таблица субтитров
subcp=cp1251
#Пропускает фильтр loop (он же deblocking) во время декодирования H.264.
lavdopts=skiploopfilter=nonref

#Перестраивает индекс, если необходимо
idx=1
# Имя файла в заголовке окна
#use-filename-title=on
# Не показывать субтитры
noautosub="yes"
nosub="yes"
# Включает возможность делать скриншоты (s - один скриншот, S - старт/стоп
серии скриншотов)
# Сохраняются в текущей директории.
vf=screenshot
###################################ed#################
######################
#
#Постепенно подстраивает A/V синхронизацию на основе измерений задержки
аудио.
#autosync=30

[gnome-mplayer]
vo=gl2
ao=alsa
alang=Russian,rus,ru
msglevel=all=5
slang=Russian,rus,ru
af=equalizer=6:4:2:0:0:0:0:3:5:8

Можно также настроить свои клавиши управления в ~/.mplayer/input.conf.
Пример такой настройки приведен ниже.
1 contrast -1
2 contrast 1
3 brightness -1
4 brightness 1
5 hue -1
6 hue 1
7 saturation -1
8 saturation 1
9 volume -1
0 volume 1
= gamma 1
- gamma -1
# MOUSE_BTN0 osd_show_progression
MOUSE_BTN0 nothing

MOUSE_BTN1 pause
MOUSE_BTN2 vo_fullscreen
f vo_fullscreen
t vo_ontop
i osd_show_property_text "${filename}"
p osd_show_progression
a switch_audio
o osd
g frame_step
d frame_drop
# s screenshot 0
# m menu main
[ speed_mult 0.95
# scale playback speed
] speed_mult 1.05
{ speed_mult 0.5
} speed_mult 1.5
BS speed_set 1.0
v switch_vsync
/ audio_delay 0.100
# this changes audio/video sync
. audio_delay -0.100
# m use_master
RIGHT seek +5
LEFT seek -5
DOWN seek -60
UP seek +60
PGUP seek 600
PGDWN seek -600
.
d frame_drop
D step_property deinterlace

Чтобы не запоминать множество опций проще создать пару тройку скриптов
со стандартными опциями размытия (резкости) типа таких
k=`echo $1|sed s/' '/'-'/g`
mv -T "$1" $k
# Запуск mplayer c фильтрами резкости для нерезких фильмов
# unsharp=lc3*3:1.5.0.0.0 регулируется значение 1.5, чем больше тем резче
# mplayer -af equalizer=6:4:2:0:0:0:0:3:5:8 -vf eq2,pp=l5,unsharp=lc3*3:1.5.0.0.0,hue $k
mplayer -vf eq2,pp=l5,unsharp=lc3*3:0.5.0.0.0,hue $k

и
k=`echo $1|sed s/' '/'-'/g`
mv -T "$1" $k
# Запуск mplayer c фильтрами размытия для шумных и резких фильмов (осторожно сильное потребление процессора)
# hqdn3d убрать шум
# smartblur=1:0.4:0 размытие (0.4 сила размытия, чем больше тем выше)
# Образец
# mplayer -vf eq2,hue,pp=l5,hqdn3d,smartblur=1:0.7:0 $1

mplayer -vf hqdn3d,eq2,hue,smartblur=1:0.3:0 $k

Для быстрого запуска программ KDE удобно сделать предзагрузку компо­
нент кед, включив запуск kdeinit4 в автозагрузку WM.
Некоторые авторы делают в новых версиях cвоих прог полностью или ча­
стично несовместимые настройки со старыми версиями, из­за чего прога начина­
ет глючить и работать вовсе не по привычному. Тогда полностью удаляем
настройки старой версии и настраиваем прогу по новой.
Теперь можно удалить лишние пакеты, которые вам не нужны и висящие
пакеты, которых нет ни у кого в зависимостях. Свой список пакетов приведен во
вложении packages.tbz.
В финале архивируем раздел со слакой чем угодно на другой винт или
раздел. Впрочем еще лучше архивировать отдельные директории (/bin, / boot,
/etc, /home, /lib, /opt, /root, /sbin, /usr, /var , остальные архивировать не нужно)
на другой винт или раздел, поскольку можно быстро и просто восстановить
только нужное.

X - Обслуживание
Слака, как и любая система, требует мониторинга и обслуживания, такого
как очистка системы от всякого хлама, бэкапы и некоторых других вешей.
1 - Мониторинг
Контроль общих параметров осуществляется psensor, контроль
температуры винтов посредством hddtemp, контроль состояния винтов через
gsmartcontrol и whdd.
Некоторые наиболее важные параметры SMART:
Raw_Read_Error_Rate — количество ошибок чтения. Ненулевое значение долго
сильно насторожить, а большие значение и вовсе говорят о скором выходе диска
из строя. Известно, что на дисках Seagate, Samsung (семейства F1 и более новые)
и Fujitsu 2,5″ большое значение в этом поле является нормальным. Для
остальных же дисков в идеале значение должно быть равно нулю;
Spin_Up_Time — время раскрутки диска. Измеряется в миллисекундах. Чем

меньше — тем лучше. Большие значения говорят о низкой отзывчивости;
Start_Stop_Count — количество циклом запуска/остановки шпинделя;
Reallocated_Sector_Ct

— количество перераспределённых секторов. Большое
значение говорит о большом количестве ошибок диска;
Seek_Error_Rate — количество ошибок позиционирования. Большое значение

говорит о плохом состоянии диска;
Power_On_Hours — количество наработанных часов во включённом состоянии. По

нему можно узнать сколько проработал диск во включённом состоянии.
Довольно полезно, например, если покупать ноутбук с ветрины и хочется узнать
долго ли он там стоял;
Power_Cycle_Count — количество включений/выключений диска;
Spin_Retry_Count — количество попыток повторной раскрутки. Большое значение

говорит о плохом состоянии диска;
Temperature_Celsius — температура диска в градусах Цельсия. При слишком

большой температури диски могут быстрее выйти из строя;
Reallocated_Event_Count — количество операций перераспределения секторов;
Offline_Uncorrectable — количество неисправных секторов. Большое значение

говорит о повреждённой поверхности.

2 - Очистка системы

Всякий хлам удаляется при помощи bleachbit простейшим скриптиком, кото­
рый засовывается в меню IceWM
#! /bin/bash
bleachbit
sudo bleachbit

естественно сам bleachbit должен быть прописан в /etc/sudoers. Надо очень
аккуратно настроить bleachbit для запуска от рута, при таком запуске bleachbit
может удалить любой файл в системе, и если вы ее приведете таким образом в
нерабочее состоянии, то вы о такой возможности знали.. ­)
В процессе работы может возникнуть необходимость очистить память, свап и
кэши, чтобы не тормозило. Также делается простейшим скриптиком,запускае­
мым от рута, естественно скриптик прописывается в /etc/sudoers. Чтобы очистил­
ся свап, закрываем программы, которые его в этот момент могут использовать.
#!/bin/bash
#
# Скрипт очистки корзины, кэша google chrome, кэша изображений, сборок в
/tmp
#
renice 19 $$ > /dev/null
echo "Сколько было свободно на диске до очистки"
df -h /
echo ""
echo "Начинаем очистку"
rm -rf /.trash
mkdir /.trash
chown ed:users /.trash
echo "Корзина очищена"
rm -rf /home/ed/.cache/google-chrome/*
echo "Кэш google-chrome очищен"
rm -rf /home/ed/.mozilla/firefox/k3pcop68.default/Cache/*
echo "Кэш firefox очищен"
rm -rf /tmp/SBo
rm -rf /tmp/compile-am
rm -rf /tmp/temp-packages19
echo "Результаты компиляций очищены"
rm -rf /tmp/.avfs*
rm -rf /tmp/.com.google*
rm -rf /tmp/package*
rm -rf /tmp/qtsingleapp*
#/usr/sbin/tmpwatch -v --atime 1 /tmp

#echo "Другие временные файлы очищены"
echo
echo
echo
df -h
echo
echo
echo
free
echo

"/tmp очищен"
""
"Сколько стало свободно на диске после очистки"
/
""
""
"Сколько было свободной памяти"
""

# Чистим pagecache:
echo "Сихронизация и очиска системных кэшей"
sync
echo 1 | sudo tee -a /proc/sys/vm/drop_caches
#Чистим dentrie и inode кэши:
sync
echo 2 | sudo tee -a /proc/sys/vm/drop_caches
#Чистим pagecache, dentrie и inode кэши:
sync
echo 3 | sudo tee -a /proc/sys/vm/drop_caches
echo "Синхронизация и очистка системных кэшей выполнена"
echo "Очищаем свап"
# Подправить свой раздел со свапом
/sbin/swapoff /dev/sda5
/sbin/swapon /dev/sda5
echo "Очистка свапа завершена"
echo ""
echo "Сколько стало свободной памяти"
free -m
echo "Все очистки завершены"

Скрипт прописывается в меню IceWM вот так (prog в одной строке)
prog "Очистить корзину, /tmp, все кэши и свап" "/usr/share/pixmaps/xchat.png" roxterm
--tab --tab-name=clear-trash-cache-tmp -e sudo скрипт

Также весьма полезно периодически чистить ручками /home от конфигов
удаленных прог, неиспользуемых тем, курсоров и иконок и прочего мусора, кото­
рый не удаляет bleachbit. Такая очистка повышает быстродействие системы.
Если понаставляли недавно для пробы и интереса всякого мусора, открыва­
ем в файл­менегере папку /var/log/packages, сортируем ее по времени и удаляем
этот хлам.

3 - Бэкапы

Полезность бэкапов своих файлов и системных настроек звучит везде посто­
янно как мантра, но что это на самом деле правда, как правило понимаешь толь­
ко после того как сам получишь граблями по лбу :­) Согласно пословице «Умный
учится на своих ошибках, дурак на своих», даже если не принимать во внимание
сами ошибки и связанные с ними хлопоты, то лучше выглядеть умным, по
крайней мере в своих глазах и, хотя бы поэтому, делать бэкапы все же крайне
рекомендуется.
Сначала о бэкапе системы, одна ее часть это бэкапы настроек, другая полный
бэкап всей системы.
Бэкапы настроек в /etc, /home, /root, /var делаем ежедневно вручную или по
cron при помощи luckybackup от рута со включенными snapshot (чтобы сохранить
разные версии). Бэкапы делаем куда нибудь на другой раздел, а еще лучше на
другой винт и/или флешку. Периодически архивируем и скидываем бэкапы на
любое файлохранилище в инете (amazon cloud drive или любое другое).
Бэкап системы можно сделать partimage (partclone), но они делают образ си­
стемы в одном файле и не получится восстановить из него на меньший раздел
чем оригинальный,. Поэтому лучше использовать qt 4­fsarchiver, с его возможно­
стью сделать как образ системы в одном файле так и архивировать каждую си­
стемную директорию (/bin, / boot, /
etc, /home, /lib, /opt, /root,
/sbin,
/usr, /var , остальные архивировать не нужно) в свой файл с выбранной степенью
сжатия. Архивацию и восстановление директорий можно производить даже на
действующей системе, которая используется в этот момент. Самый быстрый
метод сжатия lzo, сжимает примерно в 2­2.5 раза, но зато работает очень быстро.
Бэкапы пользовательских файлов, тут уж на вкус и цвет, важно лишь пользо­
ваться всеми методами, как делать бэкапы куда нибудь в инет (dropbox, wuala,
google docs) при помощи указанных выше соответствующих прог так и делать ло­
кальные бэкапы при помощи luckybackup на другой винт (раздел) и/или на
флешку, причем делать такие бэкапы каждый день. Ну и естественно включать
создание резервных файлов во всех программах,который умеют это делать, место
для таких резервных файлов лучше конечно выбирать на другом винте (разделе).
Немного об облаках, как широко распространенном сегодня месте
хранения бэкапов. Есть облака имеющие свои linux клиенты, это dropbox.com,
wuala.com,spideroak.com, для других, как google docs (drive), есть сторонние кли­
енты типа SuperFlexibleSynchronizer — superflexible.com, еще для одних типа Ян­
декс.Диск (help.yandex.ru/disk/?id=1124655#programs) есть доступ по webdav при
помощи Konqueror, Nautilus или davfs2 cо slackbuilds.org (как именно хорошо
описано в документации в сорцах и в unihub.ru/resources/38). Если вы
используете davfs2 через какой то гуевый файл менеджер, задайте gui_optimize=1
в /etc/davfs2.conf.
В davfs2 на яндекс диске есть одна не очень понятная особенность,
монтирование через fstab или вообще не работает или работает через раз
непонятным образом, поэтому лучше включить монтирование яндекс диска
напрямую
в
/etc/rc.d/rc.local
(соответственно
отмонтирование/etc/rc.d/rc.local_shutdown) следующим образом:
/etc/rc.d/rc.local
mount -t davfs https://webdav.yandex.ru /ваша.папка/

/etc/rc.d/rc.local_shutdown
umount /ваша.папка/

Также для Яндекс.Диск есть консольный клиент для Linux, брать его здесь —
repo.yandex.ru/yandex­disk,
как
с
ним
работать
вот
здесь

habrahabr.ru/company/yandex/blog/191446 .
Есть также облака с хорошим web­интерфейсом типа adrive.com (50 Гб) или
Amazon Cloude Drive — amazon.com/clouddrive, тут уж на вкус и цвет.
Можно также подключить SkyDrive, используя рекомендации отсюда —
habrahabr.ru/post/179213

4 - Дефрагментация

Можно сколько угодно говорить, что она не нужна, но на самом деле законы
физики никто не отменял и она таки нужна. Впрочем это легко проверить на
практике — достаточно сделать «дефрагментацию», описанную ниже, и
убедиться в повышении скорости работы даже на глаз.
Самый простой и самый эффективный «дефрагментатор» это создание
файловой системы. Далее на «свежую» файловую систему восстанавливается
нужное из заранее созданного архива.
В простейшем случае достаточно скопировать корень «дефрагментируемой»
системы куда нибудь на другой раздел, создать заново файловую систему на
дефрагментируемом разделе и восстановить на него корень в друuого раздела.
Применимо для случая, если нет хардлинков ( но, как правило, их и нет :).
Копирование и восстановление в этом случае можно произвести хоть с помощью
mc, предварительно выполнив telinit 1 для перехода на первый уровень. Не надо
копировать директории /dev, /lost+found, /media, /mnt, /proc, /srv, /sys, при
восстановлении их придется создать ручками, как и соответствующие
директории в /media и /mnt.
Строго классический способ, учитывающий все нюансы и возможные
грабли, это такое же создание новой файловой системы и восстановление из
архива, но архив в этом случае создается с помощью tar. Загрузка при этом
производится с другой системы (например с livecd).
mkdir /mnt/{old,new}
mount /dev/$OLD /mnt/old
mount /dev/$NEW /mnt/new
cd /mnt/old
tar cf - . | (cd /mnt/new; tar xvf -)
создание на (old) новой файловой системы
umount /mnt/old
mkfs.ext3 /dev/$OLD
mount /dev/$OLD /mnt/old
cd /mnt/new
tar cf - . | (cd /mnt/old; tar xvf -)
umount /mnt/new /mnt/old
reboot

5 - Другое
Обновление кэша иконок и шрифтов

Оно делается при каждой загрузке, но некоторые проги (типа zim) весьма
вольно обращаются с иконками и шрифтами, в частности zim при деинсталляции
корежит кэш иконок. Для таких случаев может быть полезен простейший
скриптик, который обновляет кэши иконок и шрифтов (запускать от рута)
echo "Старт Создание кэша иконок и шрифтов"
#обновление кэша иконок в своей папке
for d in ~/.icons/*; do gtk-update-icon-cache -f $d; done
#обновление кэша иконок в системе
for d in /usr/share/icons/*; do sudo gtk-update-icon-cache -f $d; done
#обновление кэша шрифтов
fc-cache -fv
#/home/user/.fonts заменяем на свою папку шрифтов в хомяке
fc-cache -fv /home/user/.fonts
echo "Окончание Создания кэша иконок и шрифтов"

Оптимизация SQLite

Базы SQLite имеют обыкновение распухать от ненужного, поэтому оптими­
зируем их скриптиком (полезно для ff, кед, гнома и гуглехрома)
#!/bin/bash
find ~/ -size +100k -type f -print0 | \
while read -d '' FILE; do
abs_file_name=$(readlink -f "$FILE")
headfile=`head -c 15 "$abs_file_name"`;
if [ "$headfile" = "SQLite format 3" ]; then
file_size_do=`du -b "$abs_file_name"|cut -f1`;
sqlite3 "$abs_file_name" "VACUUM; REINDEX;" > /dev/null 2>&1
file_size_posle=`du -b "$abs_file_name"|cut -f1`;
echo "$abs_file_name";
echo "Размер ДО $file_size_do";
echo "Размер ПОСЛЕ $file_size_posle";
echo -n "Процент "
echo "scale=2; ($file_size_posle/$file_size_do)*100"|bc -l
fi
done
sleep 2
exit 0

Выходим из иксов (Ctrl­Alt­Backspace), запускаем скрипт
optimizsqlite.sh > ~/report-optimizsqlite.txt

перезагружаемся и смотрим результаты оптимизации в ~/report­optimizsqlite.txt.

Линки
Сайты Slackware

www.slackware.com
docs.slackware.com/ru:start
slackworld.berlios.de/links.html – множество линков на документацию и пакеты
www.slackware.ru
www.slackguide.com
humanreadable.nfshost.com/sdeg/index.htm#toc
optimization.hardlinux.ru – сайт об оптимизации linux
docs.slackware.com/ru:start
Очень интересный форк слаки для русских и украинских пользователей. Это
оригинальная слака с прекрасной локализацией и множеством необходимых
пакетов, которые в оригинальной слаке приходится собирать самому.
deepstyle.org.ua/index­x.php
forum.lafox.net/index.php?showforum=35
Готовые пакеты и slackbuilds

slackbuilds.org
www.wuala.com/SergMarkov19/Slackbuilds – слакбилды для некоторых программ,
которые есть в этом описании, но для которых нет слакбилдов на slackbuilds.org
slacky.eu
connie.slackware.com/~alien/slackbuilds
rlworkman.net/pkgs
slackers.it
packages.zenwalk.org/?v=current
Поиск пакетов, в том числе по аналогии

slakfinder.org
slak.homelinux.org
packages.slackware.com
packages.slackverse.org
www.z01.eu/slak
www.teoxonline.com/utils/sse
slakfinder.frattocchie.it/slak
pkgs.org
packages.ubuntu.com
Документация

docs.slackware.com/ru:start
slackbook.org (англ)
www.opennet.ru/docs/RUS/slackware (рус)
jack.kiev.ua/docs/slackbook (рус)
help.ubuntu.ru/wiki/главная

wiki.archlinux.org/index.php/Main_Page_(Русский)
Патчи к ядру

ck.kolivas.org/patches
ck­hack.blogspot.com
algo.ing.unimo.it/people/paolo/disk_sched/patches
pf.natalenko.name
git.zen­kernel.org/zen­stable
Программы

Qt­Apps.org
GTK­Apps.org
KDE­Apps.org
KDE­Files.org
GnomeFiles.org
Java­Apps.org
Wine­Apps.org
CLI­Apps.org
Qt­Prop.org
Server­Apps.org
apps.ownCloud.com
Форумы

linuxforum.ru
unixforum.org
www.slackware.ru
www.linuxquestions.org (англ)
alt.os.linux.slackware
Оформление

themes.effx.us
E17­Stuff.org
exchange.enlightenment.org
opendesktop.org
KDE­Look.org
GNOME­Look.org
Xfce­Look.org
Box­Look.org A
Beryl­Themes.org
Compiz­Themes.org
www.iconarchive.com
EDE­Look.org
Debian­Art.org
Gentoo­Art.org

SUSE­Art.org
Ubuntu­Art.org
Kubuntu­Art.org
LinuxMint­Art.org
Arch­Stuff.org Art
Frugalware­Art.org
Fedora­Art.org
Mandriva­Art.org
VLC­Addons.org
Темы Icewm

Неоптимизированные
www.box.net/shared/j87dcxouvy2g5cd1zi81
Оптимизированные
www.box.net/shared/1g1u4eguyemtucdm8n4h
www.box.net/shared/yycg8kr6tlsqmjl3axvh
www.box.net/shared/71r6sxvtp91v44kklxlu
www.box.net/shared/ot0co3pp4bhldpz71tgq
www.box.net/shared/t859tdjnak8omvv5z2jm
Более новые версии оптимизированных для разрешения 1920x1080 тем на
www.wuala.com/SergMarkov19/Guide­files. Вполне возможно что они подойдут и
для других разрешений.
Для оптимизированных тем удаленные части тем находятся в папке
тема/remove

Вложения
Вложения в pdf содержат примеры настройки системы и программ. Файлы
вложений (архивы tar.bz2):
- worker.tbz — примеры настройки связки worker — roxterm — juffed. Приведен
также пример файла /etc/sudoers, необходимый для этой связки, но нельзя
заменять этим файлом свой /etc/sudoers, можно лишь скопировать значения в
свой файл sudoers, заменив в нем
ed ALL=NOPASSWD:

на
user ALL=NOPASSWD:

где user Ваш пользователь.
Также в архиве скрипты, по большей части необходимые для сборки
пакетов слаки, скрипты размещены в /opt/scripts.
Скрипты рассчитаны на использование легкого шелла mksh, но без всякой
переделки могут быть использованы и со стандартным шеллом bash, необходимо
лишь заменить вызовы mksh на вызовы bash. Также аналогичные замены
вызовов надо сделать в настройках roxterm и worker (проще заменить в редакторе
вызовы в файле ../.worker/config).
­ icewm.tbz — пример настройки IceWM
­ e16.tbz — пример настройки E16
- cairo-dock.tbz — пример настройки cairo­dock
- program.tbz — примеры настроек некоторых часто применяемых программ.

­ packages.tbz — список пакетов, исходя из программ, приведенных в разделе
«Создание пакетов базового набора программ»

Предложения и замечания на sergmarkov1960@gmail.com (с)