воскресенье, 22 июля 2007 г.

выходные, хоть на горе, но на море.

Пятница вечер, договариваемся ехать. Часть народа стартует на закупки, договариваемся, что в 7 часов выезд. Ставлю будильник на 6 утра, что бы успеть с утра пожрать, слазить в душь. Хрен! Как назло на будилнике села батарейка, проснулся без 5 семь от звонка с вопросом для поиска рифмы. За 10 минут одеваюсь, делаю глоток чая и бегу на стоянку за машиной. По ходу пьессы выясняется, что не я один, такой соня и впринципе мог бы поесть. Ну и фиг с ним. Разпихиваем шмотки, мангалы, палатки, и лодки по багажникам. Договариваемся ехать "через Балахну" :-) Эта договоренность - отдельная история, нао было находится на месте. Но ржачь был шо пиздец. Старт, ранее утро, дорога полупустая, тапка в полу, кайф. Погода правда не больно жаркая, да и бог с ней. Красота на платине. Немного поблуждали, при выборе места. Тут, надо сказать, я поймал себя на мысле, что че-то я разхрабрился, по лесу гонял, не особо осторожничая. :-) Выбрали место. Начали разгружаться ставить паладки, девченки режут салаты. Сгоняли за дровами. Две сосенки поваленые, сухинькие. Подумал, что для таких случаев надо прикупить миниатюрную бензопилу, а то руки от пиления досихпор болят.

Дальше пошло развлечения, игра в домино, катание на лодке, пожирание жареного мяса, ну пифка помаленьку.

Приехала еще часть компании, привезли мелкого ребятенка. Забавный малый. Позабавил всех. Потом потихоньку начало темнеть, ребятенка уложили спать, подбросили дровишек в огонь и с чайком сидели прикалывались по поводу и безповода. Ночью, правда немного подмерз. С утра опохмелились чайком и продолжили активный отдых, постепенно собираясь домой. Стартанули, правда пробка уже была на платине. Ну и как пологается Заволжье и Балахна тоже тошнились потихоньку. Половину пятого, влетели в город, в 5ть уже поставил машину. Пару банок пива домой, душь и сон. Так сказать, отдых после выходных.

Отдых на горьковском море

понедельник, 9 июля 2007 г.

Сборка package под FreeBSD. Управление пакетами.

Сборка package под FreeBSD.


Возникла у меня необходимость, собрать пакет Emacs 22 под систему которая у меня на буке установлена. К сожалению в портах только версия 21. Давно я собирался разобраться с тем, как собрать бинарный пакет под FreeBSD. Дело в том, что порты обнавляются не регулярно, гибкость при configure не всеобемлющая да и зачастую встречаются приложения, которых в портах просто нет.

И так, рассказываю, что я делал по шагам.

Сначала, получаем Emacs из cvs репозитория.

$ ./configure --help

Дальше запускаем скрипт конфигурирования с необходимыми нам параметрами:

$ ./configure --prefix=/usr/local

собираем приложение:

$ make all

Дальше смотрим в Makefile переменную которая отвечает за каталог в который будет установлено приложение, в нашем случае это prefix.

Создаем временый каталог, в который установим приложение.

$ mkdir /var/tmp/emacs_inst
$ make prefix=/var/tmp/emacs_inst

Теперь, у нас собрано приложение, которое должно быть установлено в /usr/local и помещено в каталог /var/tmp/emacs_inst

Внутренности данного каталога выглядит примерно так:


drwxr-xr-x 2 root wheel 512 20 июн 13:01 bin
drwxr-xr-x 3 root wheel 512 20 июн 13:01 libexec
drwxr-xr-x 5 root wheel 512 20 июн 13:00 share
drwxr-xr-x 3 root wheel 512 20 июн 13:01 var

Далее нам небходимо создать файлы +COMMENT, +DESC, +CONTENTS, +MTREE_DIRS.

+COMMENT - это файл с крадким описанием пакета.

+DESC - развернутая характеристика пакета.

+CONTENTS - это развернутая характеристика пакета, он содержит

  • имя пакета, номер его версии и ревизии.

  • принадлежность группе пакетов.

  • корневой каталог, в который будут инсталлированы компоненты пакета.

  • Путь к каталогу, в котором сейчас находится пакет. В моем случае /var/tmp/emacs_inst

  • Пакеты, необходимые для собираемого приложения.

  • Файлы, входящие в собираемый пакет.



Вот начало моего +CONTENTS:


@comment PKG_FORMAT_REVISION:1.1
@name emacs-22.1.50
@comment ORIGIN:editors/emacs
@cwd /usr/local
@srcdir /var/tmp/emacs_inst
share/emacs/22.1.50/etc/BABYL
share/emacs/22.1.50/etc/CENSORSHIP
share/emacs/22.1.50/etc/COOKIES
share/emacs/22.1.50/etc/COPYING
share/emacs/22.1.50/etc/DEBUG

Как перечислить все файлы из данного каталога при помощи find и sed я думаю вы разберетесь.

Далее читаем /usr/src/etc/mtree/README. И создаем файл +MTREE_DIRS:

$ mtree -cdin -k uname,gname,mode -p /var/tmp/emacs_inst >MTREE_DIRS

Теперь мы имеем полный набор для создания пакета. Рекомендую прочитать man для pkg_create.

$ pkg_create -j -c +COMMENT -d +DESC -f +CONTENTS -m +MTREE_DIRS emacs-22.1.50

-j если вы хотите получить tbz, пакет, упакованный bzip. Если нужен gzip ставим -z. В итоге получаем emacs-22.1.50.tbz.
Теперь можно безопастно установить pkg_add emacs-22.1.50.tbz.