суббота, 31 октября 2009 г.

OpenBSD - штрихи к портрету (misc.)

/*

Страна замечательная, томики законов сразу рассылают в публичные дома, чтобы любой желающий мог повертеть на ..ю за символическую сумму.
/ЛОР/

сильнее всего мешает отсутствие поддержки multibyte encoding (utf8), что уже реализовано в NetBSD и FreeBSD. ждём-с, а пока каждый "строит коммунизм в отдельно взятой стране". ничего сложного. рассмотрим на примере терминала Eterm:

1) ставим "vim" и "w3m" (это наши будущие редактор и просмотрщик файлов/каталогов по умолчанию)

2) собсно обозначаем наши благие намерения:

> echo 'export PAGER=/usr/local/bin/w3m' >> ~/.profile
> echo 'export EDITOR=/usr/local/bin/vim' >> ~/.profile

w3m нам нужен хотя бы для просмотра (в Eterm) примонтированных партиций, поскольку команда ":edit ++enc=utf-8" в vim-е прекрасно работает с файлами, но сбоит на каталогах. EFM (Enlightenment File Manager) справляется с отображением UTF-8 на ура (особенно если evas собран с fribidi). после определения переменной PAGER это значение используется и для просмотра man-ов, что гораздо удобнее, чем дефолт ("more").

3) отучаем "mc" использовать "mcview" (рихтуем "~/.mc/ini"):

use_internal_View=0

тут же можно избавиться и от "mcedit", заменив его на $EDITOR

use_internal_edit=0

4) читаем "каноны":

http://www.openbsd.ru/docs/howto-cyrillic.html

5) делаем alias для запуска Eterm в нужной нам конфигурации:

alias eterm="Eterm -F -*-fixed-medium-r-normal-*-15-*-*-*-*-*-koi8-r"

после чего вызываем терминал по только что указанному "паттерну":

> eterm

6) опционально читаем "man w3m" и учимся эффективно использовать этот замечательный консольный браузер.

к этому моменту имеем полностью русифицированную рабочую систему, осталось лишь навести лоск в соответствии с личными предпочтениями (используем Enlightenment-DR17). рихтуем "/etc/enlightenment/sysactions.conf":

action: halt /sbin/halt -p
action: reboot /sbin/reboot
action: suspend /usr/sbin/zzz
action: hibernate /usr/sbin/zzz
user: $USER allow: *

с suspend и hibernate поосторожнее, может и не заработать. ставим из пакетов всё, что относится к "xdg*" и добавляем в "~/.profile" требуемые переменные:

export XDG_CACHE_HOME=$HOME/.cache
export XDG_CONFIG_DIRS=/etc/xdg
export XDG_CONFIG_HOME=$HOME/.config
export XDG_DATA_DIRS=/usr/share:/usr/local/share:/usr/X11R6/share
export XDG_DATA_HOME=$HOME/.local/share

после чего не мудрствуя лукаво копируем из openSuSE весь каталог "/etc/xdg/menu" (кто самый смелый - может рисовать xml-ные "менюшки" руками, автор - слабак, не осилил...). теперь мы имеем нормальное XDG/FDO Applications-menu. мелочь - а приятно.

последний штрих - не стоит менять настройки окружения root-а. как показывает практика успешная миграция на OpenBSD-current (это когда тащим cvs-ом исходники и компиляем всё сами) возможна только при буквальном соблюдении "канонов". т.е. если вы не имеете желания разбираться, какого буя сборка падает при "gcc version 4.2.4", но всё путём для "gcc version 3.3.5 (propolice)" - то не трогайте рутовое окружение (а падает оно патамучта gcc4 из пакетов имеет Thread model: posix и "_atomic_lock.c" из "libpthread" да и прочие аналогичные вещи ещё никто не рихтовал. у gcc3 Thread model: single).

всем - удачи!

*/

среда, 28 октября 2009 г.

OpenBSD-4.6 - продолжение праздничного банкета

/*
- стоимость дебоша уже включена в счёт, сэр!

надеюсь, что скоро будет обновление EFL для OpenBSD в портах и пакетах. пока планируется "прыгнуть" на версию "0.16.999.061", веду переписку для "прыжка" на текущий svn или, как минимум, версию "0.16.999.062" с поддержкой "lua" для "edje". иначе смысл теряется за морем лишних слов.

с версии 4.2 никаких кардинальных улучшений с "iocharset" или файловыми системами не произошло, посему воткнуть флешку с русскими именами файлов безболезненно получится только если:
1) кодировка на флешке koi8-r или 8859-5
2) вы свершили подвиг, справшись с "русификацией" OpenBSD (консольку - отдельно, иксы - отдельно и для многих приложений тоже нужен "индивидуальный подход" - весьма полезное упражнение для многих современных пользователей Linux-а...)
посему если ваши Linux партиции отформатированы в ext2/ext3 - их можно прочесть, на ext2 можно даже что-то записать. без отключения журнала можно писать и на ext3 (вы любите играть в русскую рулетку по утрам для поднятия тонуса). одним словом - благодать! только вот с ntfs неувязочка... для монтирования надо проверить в диспетчере дисков Windows, чтобы на партиции не стояла галочка "Dynamic" (а она там практически стоит всегда), иначе лучше сразу купить альбом Сосо Павлиашвили.

не менее элегантно раздаются права на примонтированные файловые системы (что-то в этом есть и здравое). идёт наследование прав точки монтирования на всю партицию. т.е. если в "/mnt/ПАПКА" был открыт доступ на запись какому-то юзверю, то после монтирования фс в "/mnt/ПАПКА" эти права будут унаследованы всей партицией. дёшево и сердито.

нещадно туплю с pgp ключами для подписи своих писем. красивого решения пока не нашёл. дано:
* мой любимый ключ шифрования для Linux gpg с Elgamal алгоритмом
* mutt
* pgp5 в поставке OpenBSD (да-да-да! есть ещё pgp2 для совсем Ъ ребят, но оно умеет только RSA), что умеет только DSS, а об Elgamal ни сном ни духом
надо:
* импортировать в pgp5 ключ из gpg и заставить его воспринимать "как родного"
* вздрючить mutt на предмет подписи/шифрования сообщений требуемым ключом
и понеслось... экспортировал ключ из gpg (asc), пихаю его в pgp - облом, Validity - invalid, Trust - complete, а надо Validity - complete, Trust - ultimate. тупо копирую pubring и secring из gpg в pgp - pgp сыпется в корку, потом каким-то макаром заставляю родить:

Do you want to unset this key as axiomatic [y/N]? y
Keyrings updated.
ASSERTION FAILED at pgpRngRead.c line 3284:
(0) not true
ASSERTION FAILED at pgpRngRead.c line 3284:
(0) not true

и писец (Сосо Павлиашвили берёт очередной аккорд). ладно, сгенерил новую пару, забросил на сервер (pgp.mit.edu), а "mutt" загибает меня в позу и требует ласки и внимания... тут уж "сам дурак", ибо mutt умный и в своей поставке имеет шаблоны для "отношений" практически со всем, что шевелится. пример:

$ pkg_info -L mutt | grep pgp

/usr/local/bin/pgpewrap
/usr/local/bin/pgpring
/usr/local/share/examples/mutt/pgp2.rc
/usr/local/share/examples/mutt/pgp5.rc
/usr/local/share/examples/mutt/pgp6.rc

вот этот-то "pgp5.rc" шаблон я и забодался искать на просторах интернетов (сколько же хламья на этих-то просторах, зачем я это всё пишу...). привожу результат (часть для pgp):

линк на pastebin.com

оно работает. вроде именно так, как и хотелось.

пришлось компильнуть microdc2 для... гхм... коротания вечеров за просмотром мультиков (imho - идиотизм разрешать/проектировать файлообменники в локальных сетях с использованием DC[++] протокола) и прикрутил PyBookReader для чтения макулатуры (после распаковки сырцов надо gmake сделать - появится поддержка fb2 формата, если установлены все зависимости). браузер - Seamonkey (тут без вариантов), редакторы - Vim + SciTE, xchat, MPlayer, ffmpeg и "жизнь налаживается".

а то всё linux да linux....

P.S. а в вашем "линуксе" Evolution gpg-sign умеет?

вторник, 27 октября 2009 г.

OpenBSD-4.6 и EFL приложения

/

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

что-то стало холодать,
значит время компилять!

сподобился вот дожить до релиза версии 4.6 самого Ъ из Ъ "юнихов" - OpenBSD - за что молитву и свечку под икону. перекрестившись на святое (In God We Trust, да и "знак червонца проступает вместо лика на доске" однако...), решился на апгрейд с ранее установленной версии 4.2. чесал репу, прикидывая как это сделать не напрягаясь. в итоге забэкапил настройки, снёс всё и "мы наш, мы новый мир построим..." с чистого так сказать листа. сразу скажу - это было правильное решение. иначе двумя вечерами на выходных не отделался бы.

в отличие от многих дистрибутивов Linux-а (и несмотря на то, что в qemu это "чудо" отказывается работать до сих пор) всё сразу завелось как должно. отсутствие конфига иксов не помешало правильному определению оборудования и установке штатных режимов. пустячок-с, а приятно (знает кто в доме хозяин и уважение сразу демонстрирует, однозначно). оформление GUI по умолчанию (fvwm) - Ъ (в OpenBSD куда ни плюнь - Ъ, за редкими исключениями типа пакетного фильтра или UKC, что лишь подтверждают мудрость - "в семье не без урода"). наверное кто-то вышел из трёхгодичного запоя и решил стать "белым и пушистым зайчиком", попутно реализовав весь накопившийся творческий потенциал вот в эдакой милой расцветочке:



видимо на ларьке было написано что "Пива НЕТ!" (али ещё чего похлеще). как человек, не отягщённый избытком серого вещества в черепушке, решил компильнуть Enlightenment-svn-current, а то пакеты в официальном репо какими были 2 года назад (опосля того, как их сваяли совместными усилиями с Laurent Fanis) - такими же и остались. нам, кабанам... процесс получился творческим, занимательным и поучительным. перипетии отмечены в дискуссии на ЛОР-е, где и приведены итоги этого безобразия в виде оформленных багрепортов. описывать все эротические сцены этой "битвы за Сталинград" ни сил ни желания нет. победа одержана, за ценой не постояли. хочется как-то отложить основные вехи и моменты, не учтённые в упомянутых хрониках. буде сие кому интересно - благо.

муторную часть подготовки необходимого окружения опустим, ибо "pkg_add blah bla мля..." наводит тоску. не помешает правда свежий gcc (version 4.2.4 на сей момент). вот с этого и начинаются приключения. каким-то макаром в систему влетел "ccache" (может и сам его "попросил" - запамятовал) - а это очень мощное подспорье, ибо печатать слово "gmake" пришлось изрядно. после чего стоит изменить порядок каталогов в $PATH, дабы натравить ccache на новую версию gcc. делаем:

> ln -s /usr/local/bin/i386-unknown-openbsd4.6-gcc-4.2.4 /usr/local/bin/gcc
> export PATH="$HOME/bin:/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/sbin:/usr/games:."
> ln -s /usr/local/bin/ccache $HOME/bin/gcc

махинации должны гарантировать следующий выхлоп:

> gcc -v
Using built-in specs.
Target: i386-unknown-openbsd4.6
Configured with: /usr/obj/i386/gcc-4.2.4/gcc-4.2.4/configure --with-gmp=/usr/local --enable-libgcj --verbose --program-transform-name=s,^,e, --disable-nls --disable-checking --with-system-zlib --disable-libmudflap --disable-libgomp --disable-tls --with-as=/usr/bin/as --with-ld=/usr/bin/ld --with-gnu-ld --with-gnu-as --enable-threads=posix --enable-wchar_t --enable-languages=c,c++,fortran,objc,java,ada --enable-cpp --with-gnu-as --with-gnu-ld --enable-shared --prefix=/usr/local --sysconfdir=/etc --mandir=/usr/local/man --infodir=/usr/local/info
Thread model: posix
gcc version 4.2.4

после этого можно "фтыкать" багрепорты и неспеша заниматься сборкой:

http://trac.enlightenment.org/e/ticket/447
http://trac.enlightenment.org/e/ticket/448
http://trac.enlightenment.org/e/ticket/449
http://trac.enlightenment.org/e/ticket/450
http://trac.enlightenment.org/e/ticket/451
http://trac.enlightenment.org/e/ticket/452

неошкуренным остался лишь довольно интимный вопрос об Entrance. тут довольно забавная ситуёвина. корячился где-то так:

1) в заголовок файла "entrance/src/client/entrance_auth.h" добавлял:

#include <xorg/shadow.h>

(хотя думаю, что это лишнее...)

2) скрипту ./configure передавал параметры:

./configure --with-random=/dev/urandom --with-auth-mode=shadow

первый - потому, что /dev/random в OpenBSD Ъёвый настолько, что "ни капли в рот, ни сантиметра в ....", а второй от безысходности (как и #include он не избавляет отцов расейской демократии от посещения вендиспансера). как всё установится в систему - рихтуем параметры работы Entrance. результат ниже:

# entrance_edit
Entrance Daemon Settings
attempts = 5
xserver = "/usr/X11R6/bin/X -quiet -nolisten tcp vt5 -dpi 96 dpms"
Entrance Client Settings
xsession = "/etc/X11/xdm/Xsession"
auth = 0
engine = 0
reboot = 1
halt = 1
theme = "default.edj"
background = ""
pointer = "/usr/local/share/entrance/images/pointer.png"
greeting-before = "Welcome to"
greeting-after = ""
date-format = "%A %B %e, %Y"
time-format = "%l:%M:%S %p"
autologin-mode = 0
autologin-user = ""
presel-mode = 1
presel-prevuser = "$USER"
user-remember = 1
user-remember-count = 5
user-count = 1
session-count = 2
default-session = "default"
default-session-title = "Default"
default-session-icon = "default.png"

изменение параметров - этой же командой рутом ("entrance_edit" другому не даёт). например:

# entrance_edit -auth=0
# entrance_edit -xserver="/usr/X11R6/bin/X -quiet -nolisten tcp vt5 -dpi 96 dpms"

по умолчанию параметр "auth" равен двум (shadow mode authentication), что служит гарантией нерабочего состояния для OpenBSD. запуск Entrance элементарен:

# echo '/usr/local/sbin/entranced' >> /etc/rc.local

для успокоения души на "/usr/local/sbin/entranced" можно вколотить суид-бит (сами решайте). наши скромные достижения:

картинка на Imagebam



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

удачи!

четверг, 8 октября 2009 г.

Heads Up!

/*
- Масяня, случилось чего?!
- Та не, так, мировая скорбь и тоска...

поэтому сегодня обновлена моя первая тема для E17 - SRV - до текущего svn-а. забыл правда прикрутить гламурный mpdule - потом, всё будет... сделал на совесть, не чета подавляющему большинству контента того-же Exchange-а, где мозгов лишь хватает на "забор перекрасить" (что впрочем тоже дело нужное, но... "не наш метод"(c)). эт всё к тому, что постарался максимально облегчить себе и другим "апгрейд" старых тем, тех, настоящих, что были на GET-E.ORG. в отдельный контрол-файл вынесены основные изменения, произошедшие с E-svn-0.16.999.050 (со смерти золотистой темы "bling"). к сожалению там не всё, ибо часть кода требует модификации существующих "групп" - не все новшества добавлялись как новые "группы"/(новый код).

заодно обновил и "2Be":
Sedation
Orange
чуток "схалявил" на систрее для недефолтных "полок" - потом доделаю, эт мелочи.


************************


ladies and gents,

you're welcome to grab the updated themes for Enlightenment-DR17:
SRV
2Be-Sedation
2Be-Orange

enjoy!