20090113

sulci jabber bot on debian lenny. «Unbound value Cryptokit.hash_string»


как полагается, скачал исходники из svn, дал команду make.
по мере возникающих ошибок доустанавливал требуемые пакеты.
пока дело не упёрлось в:
ocamlfind ocamlopt -package cryptokit,xml -c sasl.ml
File "sasl.ml", line 27, characters 10-31:
Unbound value Cryptokit.hash_string
make[3]: *** [sasl.cmi] Error 2

розыски уводят в логи jabber-конференций аж 2005-го года.
и нигде, нигде не написано хоть что-то внятное по поводу решения проблемы.
я абсолютно не знаком с ocaml-ом. но методом курения бамбука и научного тыка пришёл к такому выводу:
когда сборка доходит до этого самого cryptokit-а, а пакет libcryptokit-ocaml-dev не установлен, в каталоге site-lib создаётся каталог cryptokit. вот из-за наличия этого каталога сборка и обламывается.
не знаю, что именно там происходит в ocaml-овых глубинах, но, если заглянуть в файл site-lib/cryptokit/META, можно увидеть строку
version = "1.4"

кто и почему решил, что у cryptokit-а есть версия 1.4 — неизвестно. на сайте, куда отсылают (в sulci/README) за cryptokit-ом: http://caml.inria.fr/distrib/bazar-ocaml/ , самая последняя на данный момент версия — 1.3. google тоже ничего про версию 1.4 не знает.

резюмирую.
надо либо удалить каталог site-lib/cryptokit и сделать (на всякий пожарный) make clean.
либо до сборки установить libcryptokit-ocaml-dev.

кстати, вот минимальный набор пакетов, после которых sulci (у меня) благополучно собирается:
libocamlnet-ocaml-dev ocaml-ulex libssl-ocaml-dev libcryptokit-ocaml-dev libgdbm-dev libsqlite3-ocaml-dev

по зависимостям (вроде бы) устанавливается и всё остальное, что необходимо. по крайней мере всё, что перечислено в sulci/README.

20080921

ssh туннель — по-простому

что-то уж очень сложные и заумные руководства попадаются, когда ищешь, как создать туннель с помощью ssh.
ya@inner.host:~$ ssh -f -N -R 2345:inner.host:22 user@outer.host
процесс будет висеть в бэкграунде. можно разлогиниваться. главное, машину не выключать.
пользоваться так:
user@outer.host:~$ ssh -p 2345 ya@localhost
ya@localhost's password: — вбиваем пароль для ya@inner.host и попадаем на inner.host
все. вот и вся инструкция. дальше — лишь пояснения и дополнения.

смысл обозначений:
inner.host — машина за nat-ом
ya — ваша учетка на этом inner.host-е.
outer.host — машина, имеющая внешний ip
user — ваша учетка на этом outer.host-е.

p.s. кусочек «inner.host:22» — это способ достучаться до собственного sshd непосредственно с inner.host-а. если sshd слушает на порту 1000 — «inner.host:1000».
кусочек «inner.host:22» вполне можно заменить и на «localhost:22», и на «127.0.0.1:22».

p.p.s. на машине inner.host можно поставить «сторожа», присматривающего за процессом ssh. это потребует настройки беспарольной аутентификации (описана в сети многократно, поэтому опускаю).
ya@inner.host:~$ crontab -e
и добавляем пару строк:
C='ssh -f -N -R 2345:inner.host:22 user@outer.host'
*/10 * * * * pgrep -f "$C" &>/dev/null || $C
проверка на «живость» будет происходить каждые 10 минут.

20080821

позиционирование окна rdesktop в xmonad.

недавно поставил «на попробовать»
патч на rdesktop:
--- rdesktop-1.6.0/xwin.c       2008-05-11 10:14:38.000000000 +0400
+++ rdesktop-1.6.0.xmonad/xwin.c 2008-08-20 17:03:43.000000000 +0400
@@ -2052,11 +2052,11 @@
sizehints = XAllocSizeHints();
if (sizehints)
{
- sizehints->flags = PMinSize | PMaxSize;
+ sizehints->flags = PMinSize;
if (g_pos)
sizehints->flags |= PPosition;
- sizehints->min_width = sizehints->max_width = g_width;
- sizehints->min_height = sizehints->max_height = g_height;
+ sizehints->min_width = g_width;
+ sizehints->min_height = g_height;
XSetWMNormalHints(g_display, g_wnd, sizehints);
XFree(sizehints);
}
@@ -2118,9 +2118,9 @@
sizehints = XAllocSizeHints();
if (sizehints)
{
- sizehints->flags = PMinSize | PMaxSize;
- sizehints->min_width = sizehints->max_width = g_width;
- sizehints->min_height = sizehints->max_height = g_height;
+ sizehints->flags = PMinSize;
+ sizehints->min_width = g_width;
+ sizehints->min_height = g_height;
XSetWMNormalHints(g_display, g_wnd, sizehints);
XFree(sizehints);
}

смысл — не указывать в свойствах окна максимальные размеры, из-за наличия которых xmonad не решается по-нормальному окно спозиционировать.

20080820

virtualbox, не привязанный к X-сессии

понадобилось мне, чтобы vm, запущенная в virtualbox-е, не была привязана к x-сессии.
т.е., чтоб я спокойно мог иксы вырубать, а vm работала бы как ни в чем не бывало.
есть такая возможность.
VBoxHeadless -s <имя vm> >&/dev/null &
потом к ней можно коннектиться по протоколу rdp(например, rdesktop-ом). хоть с локальной машины, хоть удаленно.
вот только то ли чего-то там ребята не додумали (разработчики или майнтайнеры пакета), то ли это специфично для гостевой vm с windows(других в данный момент нет, не проверял), но...
вырубается, собака, когда завершаю X-сессию.
быстренько созрел план эксперимента. эксперимент проведен. результат его оказался успешным. вот так надо запускать машину:
DISPLAY= VBoxHeadless -s <имя vm> >&/dev/null &
смысл — передача пустой переменной окружения DISPLAY. и будет вам счастье.
а какие мелкие/крупные грабли вам удалось победить/обойти при общении с virtualbox-ом?

20080809

меняется все…

и даже дизайн на http://sourceforge.net
ничего так, освежились немножко.

20080808

less в длинном конфигурационном файле

в /etc порою встречаются просто безразмерные файлы конфигурации.
большая часть строк — это просто комментарии.
чтобы сделать виднее незакомментированные строки, пришла в голову такая вот простенькая поисковая строка:
^[^#].*

подсвечивается все содержимое незакомментированных строк. естественно, работают и
n
и
shift+n

20080806

mysql command-line tool в mandriva

вот почему completion в mysql в mandriva не работает:
$ grep -B 1 rehash /etc/my.cnf
[mysql]
no-auto-rehash

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