Блог аб праграмаванні

Фішкі і сакрэты напісання кода

OpenBSD - зборка E17-cvs (ці яшчэ адна маленькая перамога розуму)

Автор: ROOT .
Апублікавана 28 жніўня 2009

http://sda00.blogspot.com/ 3

Памятаецца лёт 15 назад камерцыйныя Unix можна было параўнаць з трактарамі Caterpillar - вылізаны, зіхатлівы, новенькі трактар: моцы - нямерана, рык грозны і аўтарытэт подавляющ. Linux - ну што там Лінукс, студентіком Танненбаума напісаны? Хто пра яго ведаў - заікаліся, што, маўляў, гэта таксама трактар, ржавенькій, але трактар (тыпу, бясплатна і для народа). Шчасліўчыкі, якія дапалі да "фірмового" абсталяванні з камерцыйнымі Unix, пры гэтых словах падлы пад крэсла ад рогату, тыя, хто разбіраўся з HP-UX, не марнавалі сіл нават на тое, каб пакруціць пальцам у скроні. Дзякуючы бліскучаму маркетынгу і абсалютна наплявальніцкай пазіцыі да пытанняў капірайтаў, MS упэўнена "глынала" дэсктопы расейцаў і розумы распрацоўнікаў, выпальваючы напалмам астраўкі NetWare, OS/2 і іншых цікавейшых "насельнікаў" кампутарных "шруб". Народ ужо мацюкаўся пры поглядзе на патрабаванні MS да жалеза, але... "Рабіць няма чаго... Баяры, патужыўшы пра Васпана і царэўне маладой, у спальню да яе ўвайшлі натоўпам..." (і нават не заікайцеся пра нонешнем "падзенні нораваў").

Навошта гэта я тут так руйнуюся? А вы ўявіце сабе трошкі якая праржавела мешанку танка з трактарам (жаночага паў), у якога замест седушкі кіроўцы тырчыць абгрызак трубы. Вертыкальна. Каб адразу і па самыя гланды ўсім, хто захоча прітопіть "газулю" ў падлогу адразу пасля ўсталёўкі generic сістэмы. Прадставілі? Вось гэта і ёсць OpenBSD. Калі няўмелай дзіцячай рукой на "пысе" гэтай пачвары намаляваць вочкі і ўхмылку "рыбкі" з малюначка "No Blow - No Go!" - то менавіта так і будзе выглядаць праўдзівы знак гэтай Восі.

FAQ: 2 "Выбар любой аперацыйнай сістэмы залежыць ад адказу на пытанне: "Ці можна зрабіць нейкую працу менавіта так, як Вам жадаецца?" І адказаць на гэта пытанне Вы павінны самастойна."

Як гэта ні парадаксальна - чымсьці гэта сістэма прыцягвае. Можа, тым, што патрабуе спачатку "каханні, ласкі і ўвагі", а вось потым "на ўсё гатовы я...". Па вялікім рахунку адзінае, што рэальна раз'юшвае - гэта адсутнасць звычайных драйвераў на відэа, з-за чаго праца ў іксах ператвараецца ў кашмар (угу, ваша Галя - пешчаная!). Не ганяў пакуль тэстаў для параўнання з Linux-2.6.23 (SLUB), але штосьці падказвае, што наша "пачвара" нават з уключаным softupdate апынецца аўтсайдарам. Бо мэты ў праекта некалькі іншыя. У частку кута пастаўлена бяспека сістэмы, што накладвае парой даволі адчувальныя абмежаванні на працэс аптымізацыі софту пад гэту платформу. У прыватнасці, я ставіў як i386 на Athlon64 і для паспяховай кампіляцыі 'ecore' прыйшлося выразаць выкарыстанне mmx інструкцый. Зараз па парадку (усё, што апісана ніжэй - асабліва маё IMHO і ні ў якім разе не прэтэндуе на "праўду ў апошняй інстанцыі"):

  1. Таварыш, памятай, OpenBSD - не Unix і POSIX 2 несумяшчальная! Ткі пазабываў? Не бяда! Адсутнасць функцыі strfmon() і хэдера monetary.h хутка адновяць гэты прабел.
  2. "Люстэркі" афіцыйнага рэпазітара жахлівыя. Перш грашыў на свае налады. Потым паставіў [dc]Master Fanout Site (Canada)[/dc] - зарабіла. Такое адчуванне, што шматлікія файлы на люстэрках "абрэзаны", недапампаваны. Цешыўся рана. Дзе "затычка" - пакуль не разабраўся, але "рэцэпт" наступны: цягнем wget-ом і потым ставім са "шрубы". Інакш стоміцеся выразаць partial усталёўкі (даволі забаўная дарэчы фішка, потым падумаю, як яе выкарыстоўваць).
  3. Не шукайце iocharset у опцыях mount-а. Яго там няма. Запіс у openbsd-misc mailinglist (ад студзеня 2006-го гады) 2:
  4. "At the moment, there is no way to specify a particular charset when

    mounting filesystems. This is being worked on, however (at least for

    cd9660, udf and ntfs filesystems).

    Miod"

    Моцна. Выклікае. Цікава, колькі малп неабходна, каб укруціць у патрон лямпачку? Не. Не так. Колькі часу неабходна адной малпе, каб прарабіць гэта практыкаванне, не расхерачів пры гэтым згаданую лямпачку да свінняў сабачым? "Дак бо Пост, Матухна, чакаем-з, да першай зоркі..."

  5. Няма падтрымкі ніводнай журналіруемой файлавай сістэмы 2.
  6. А зараз дазвольце выкаціць спісочек. Гэта - поўны top. У фоксе адкрыта 15 укладак, на адной з якіх пішацца гэта нота. У Enlightenment-е загружана 55 модуляў. mpd + emphasis. Чаму emphasis жарэ 68.07% ад рэштак проца - гутарка асобны і будзе ён зразумелы і цікавы, мабыць, толькі распрацоўнікам. dbus запушчаны асабліва дзеля спартовай цікавасці. wget цягне пакет openoffice з офсайта. Лепота...
  7. load averages: 1.45, 1.46, 1.56 18:37:50
    43 processes: 3 running, 38 idle, 1 zombie, 1 on processor
    CPU states: 38.4% user, 0.0% nice, 60.8% system, 0.2% interrupt, 0.6% idle
    Memory: Real: 216M/360M act/tot Free: 641M Swap: 0K/1537M used/tot
    PID USERNAME PRI NICE SIZE RES STATE WAIT TIME CPU COMMAND
    27809 sda 63 0 10M 17M run - 162:13 68.07% emphasis
    13285 sda 2 0 34M 44M sleep poll 24:01 13.13% enlightenment
    22761 sda 45 0 18M 76M run - 13:51 7.23% Xorg
    11287 sda 32 0 77M 110M run - 11:03 3.32% firefox-bin
    10391 sda 2 0 1216K 4176K sleep poll 2:54 0.93% mpd
    13510 root 2 0 492K 768K sleep select 5:24 0.00% pptp
    26634 sda 2 0 936K 3784K sleep poll 1:07 0.00% mpd
    24992 sda 2 0 7204K 27M sleep poll 0:34 0.00% SciTE
    15922 root 2 0 1024K 1552K sleep select 0:23 0.00% ppp
    6781 root 2 0 368K 932K sleep select 0:16 0.00% pptp
    24611 root 2 0 892K 1868K sleep select 0:08 0.00% ppp
    23415 sda 2 0 2684K 2784K sleep poll 0:06 0.00% mpd
    26339 sda 2 0 2096K 5096K sleep poll 0:03 0.00% enlightenment_fm
    28451 sda 2 0 480K 1556K sleep select 0:03 0.00% wget
    10225 sda 2 0 1568K 4176K sleep select 0:02 0.00% xterm
    9292 sda 2 0 1628K 4156K sleep select 0:01 0.00% xterm
    15626 _syslogd 2 0 404K 872K sleep poll 0:00 0.00% syslogd
    30207 sda 2 0 1164K 3040K sleep poll 0:00 0.00% gconfd-2
    20833 sda 10 0 996K 1952K idle wait 0:00 0.00% bash
    25807 root 2 0 332K 740K idle netio 0:00 0.00% syslogd
    14280 sda 10 0 1060K 1892K idle wait 0:00 0.00% bash
    17142 sda 28 0 752K 1628K onproc - 0:00 0.00% top
    6089 root 2 0 516K 732K sleep select 0:00 0.00% pptp
    13630 sda 10 0 908K 1804K idle wait 0:00 0.00% bash
    1266 root 2 0 480K 828K idle select 0:00 0.00% cron
    23036 _dbus 2 0 612K 1228K idle poll 0:00 0.00% dbus-daemon
    23716 sda 10 0 688K 1340K idle wait 0:00 0.00% bash
    24928 sda 18 0 540K 504K idle pause 0:00 0.00% sh
    3816 sda 18 0 480K 476K idle pause 0:00 0.00% sh
    13991 sda 18 0 504K 592K idle pause 0:00 0.00% sh
    18563 sda 2 0 636K 1332K idle poll 0:00 0.00% dbus-daemon
    15497 sda 2 0 556K 1136K idle poll 0:00 0.00% dbus-launch
    1 root 10 0 388K 340K idle wait 0:00 0.00% init
    9994 sda 10 0 456K 1124K idle wait 0:00 0.00% xinit
    26534 root 2 0 360K 692K idle select 0:00 0.00% inetd
    3810 root 3 0 336K 768K idle ttyin 0:00 0.00% getty
    24959 root 3 0 420K 768K idle ttyin 0:00 0.00% getty
    18100 root 3 0 296K 760K idle ttyin 0:00 0.00% getty
    15889 root 3 0 224K 756K idle ttyin 0:00 0.00% getty
    19607 sda 18 0 408K 440K idle pause 0:00 0.00% sh
    26715 sda 2 0 1708K 1008K idle netio 0:00 0.00% Xorg
    13956 root 2 0 568K 1156K idle select 0:00 0.00% sshd
  8. Базавую сістэму ставіў усю, акрамя SMP ядры (не карыстаю SMP на дэсктопе з прынцыпу). Доўга секся ў Tetris (на 9-ом узроўні мяне падкасілі - непарадак). Настальгаваў. Угледзеў у пакетах quake і quake2. Змахнуў скупую слязу і доўга думаў пра ўсіх, хто не жадае з'яўленні nVidia драйвераў для OpenBSD. У выніку спіс усталяваных пакетаў выглядае на сёння вось так:
  9. ~ pkg_info | awk -F\ '{print $1}'
    ORBit2-2.14.7
    aalib-1.2p2
    apr-1.2.9
    apr-util-1.2.8
    aspell-0.50.5p4
    atk-1.18.0p0
    autoconf-2.59p1
    autoconf-2.61p1
    automake-1.9.6p2
    bash-3.2.17
    bison-2.1p0
    boehm-gc-7.0
    bzip2-1.0.4
    cairo-1.4.10
    cdparanoia-3.a9.8p0
    cdrtools-2.01p0
    chmlib-0.39
    curl-7.16.2
    db-4.2.52p11
    dbus-1.0.2p1
    dbus-glib-0.73p0
    dbus-python-0.80.1
    desktop-file-utils-0.12p0
    docbook-4.4
    docbook-dsssl-1.72
    dvd+rw-tools-5.21.4.10.8p0
    e16keyedit-0.2
    enlightenment-0.16.7.2p2
    esound-0.2.34p0v0
    evince-0.8.1
    faac-1.24
    faad-2.0p6
    fam-2.7.0p2
    fetchmail-6.3.8
    ffmpeg-20070501p0
    findutils-4.1p0
    flac-1.1.2p1
    gconf2-2.18.0.1
    gettext-0.14.6p0
    ghostscript-8.54p1
    ghostscript-fonts-8.11p0
    giblib-1.2.4p3
    gimp-2.2.17
    glib-1.2.10p1
    glib2-2.12.12p1
    glitz-0.5.6
    gmake-3.80p1
    gmpc-0.15.1
    gmpc-lyrics-0.15.0
    gnome-icon-theme-2.18.0p0
    gnome-keyring-0.8.1
    gnome-mime-data-2.18.0
    gnome-vfs2-2.18.1p0
    gtk+-1.2.10p6
    gtk+2-2.10.13
    gtkspell-2.0.5p4
    hicolor-icon-theme-0.10p0
    imlib-1.9.14p5
    imlib2-1.3.0p0
    iodbc-3.52.4p0
    iso8879-1986
    jasper-1.900.1
    javaPathHelper-0.3
    jbigkit-1.6p1
    jpeg-6bp3
    ladspa-1.12p0
    lame-3.96.1p2
    lcms-1.15
    libIDL-0.8.8
    liba52-0.7.4p2
    libao-0.8.8
    libart-2.3.19p1
    libaudiofile-0.2.6p0
    libbonobo-2.18.0
    libbonoboui-2.18.0
    libcroco-0.6.1
    libdnet-1.10p2
    libdv-0.104p1
    libdvdnav-20051102p2
    libexif-0.6.16
    libgadu-20060411
    libgcrypt-1.2.0p1
    libglade2-2.6.1
    libgnome-2.18.0
    libgnomecanvas-2.14.0p0
    libgnomeprint-2.18.0
    libgnomeprintui-2.18.0
    libgnomeui-2.18.1p0
    libgpg-error-1.1p0
    libgsf-1.14.3p2
    libiconv-1.9.2p3
    libid3tag-0.15.1bp0
    libidn-0.6.1
    libltdl-1.5.22p2
    libmad-0.15.1bp1
    libmikmod-3.1.10p4
    libmng-1.0.9p1
    libmpcdec-1.2.4
    libmpd-0.14.0
    libmspack-20040308a
    libogg-1.1.3
    librsvg-2.16.1p0
    libsamplerate-0.1.2p0
    libshout-2.2.2p0
    libslang-1.4.9p3
    libsndfile-1.0.11p0
    libtheora-1.0alpha7
    libtool-1.5.22p13
    libungif-4.1.4p1
    libunicode-0.4p1
    libutf-2.0
    libutf8-0.8p0
    libvorbis-1.2.0
    libwmf-0.2.8.3p3
    libwpd-0.8.9p0
    libxml-2.6.29
    libxslt-1.1.21
    lzo-1.08p1
    mc-4.6.1p1
    meanwhile-1.0.2p0
    metaauto-0.7
    mozilla-firefox-2.0.0.6
    mpc-0.12.1
    mpd-0.13.0p1
    mplayer-1.0pre8p14-sdl
    msmtp-1.4.12p0
    mutt-1.5.16p0
    nasm-0.98.38p0
    neon-0.26.2
    nmap-4.20
    nspr-4.6.7
    nss-3.11.7
    openoffice-2.2.1p0
    p5-Text-Iconv-1.4
    p7zip-4.47
    p7zip-rar-4.47
    pango-1.16.4
    pcre-7.1
    pidgin-2.0.1p0-gtkspell
    png-1.2.18
    poppler-0.5.4p1
    popt-1.7p0
    pptp-1.7.1
    procmail-3.22p2
    pstree-2.27
    py-Numeric-23.1p1
    py-cairo-1.4.0
    py-gobject-2.13.1
    py-gtk2-2.10.4
    py-iconvcodec-1.1.2p0
    python-2.4.4p4
    python-expat-2.4.4p4
    qdbm-1.8.75
    quake-20000101p3-sdl
    quake2-0.3p3
    rxvt-2.7.10p2
    scintilla-1.74
    scite-1.74
    screen-4.0.3p0
    scrollkeeper-0.3.14p3
    sdl-1.2.9p7-sun
    shared-mime-info-0.21p0
    silc-toolkit-1.0.2p1
    speex-1.2beta2
    sqlite3-3.4.1
    startup-notification-0.9
    subversion-1.4.4
    t1lib-5.1.0p0
    taglib-1.4p1
    teTeX_base-3.0p9
    teTeX_base-fmt-3.0p0
    teTeX_texmf-3.0p1
    texi2html-1.64
    tiff-3.8.2p0
    toolame-0.2lp1
    unzip-5.52
    vim-7.1.33-no_x11
    w3m-0.5.2-image
    wget-1.10.2p0
    wxWidgets-gtk2-2.6.3p0
    x264-20070325p1
    xchm-1.13
    xcompmgr-1.1.1p2
    xcyrillic-2.0p0
    xine-lib-1.1.7p0
    xine-ui-0.99.5
    xvidcore-1.0.3p0
    yasm-0.6.1
    zip-2.32

    Жыць можна. З зыходнікаў быў пастаўлены толькі апошні gettext (0.17). Плюс дабіў бібліятэкі amr* і хутка вазьмуся за пересборку xine-lib, ffmpeg і mplayer, бо што мы маем у пакетах - у кошерных хатах нават свінням не падаюць. Прычым ffmpeg і mplayer яшчэ можна неяк карыстаць, а вось xine... Xine прыйшлося паставіць для зборкі Enlightenment-а прыхапкам. Вынікі:

    ~ > df -h
    Filesystem Size Used Avail Capacity Mounted on
    /dev/wd2a 9.8G 2.1G 7.3G 22% /
    /dev/wd2d 19.2G 10.2G 8.0G 56% /home
    /dev/wd2j 31.0G 28.1G 2.8G 91% /mnt/sdb3

    /dev/wd2j - ёсць не што іншае, як Fat-опомойка cо сціплай аудіоколлекціей. Паглядзім на порна, што заняло 56% ад /home?

    ~ > find /home/sda/source -maxdepth 1 -type d -exec du -sh {} \; | sort -rn
    367M /home/sda/source/e17themes
    9.0G /home/sda/source
    6.5G /home/sda/source/books
    2.2G /home/sda/source/compile

    і заадно на нашы сціплыя вынікі:

    ~ > du -sh /opt/e17
    67.9M /opt/e17
  10. Вялікай неспадзеўкай апынулася адсутнасць mime.types файла ў /etc. Яно ёсць у /var/www/conf/mime.types, ёсць у /etc/mutt/mime.types (калі вы кахаеце mutt таксама, як кахаю яго я). З абодвух файлаў можна скампанаваць годны ўвагі вынік пасля апрацоўкі напільнікам. Паколькі скрыпт ставіць усе кампаненты ў /opt/e17 (ды і выдаляць потым прасцей. грукнуў каталог і спі спакойна), то кінуў сімлінк на mime.types і ў /opt/e17/etc.
  11. Скрыпт ноне гарантавана здольны на i386/x86-64 архітэктуры сабраць вам наступныя "смачнасці" (і ўпэўнены, што гэта не мяжа, паколькі не тэставаў для ўсяго, што ляжыць у E-cvs):
  12. EFL (Enlightenment Foundation Libraries):

    eet edb evas ecore embryo imlib2 efreet edje epeg epsilon esmart emotion engrave ewl etk exml enhance imlib2_loaders etk_extra e_dbus

    EFL 'applications':

    e edje_viewer entrance exhibit estickies examine e_utils express elicit iconbar imlib2_tools emphasis expedite extrackt scrot rage

    EFL 'e_modules' (апроч стандартных):

    alarm bling cpu calendar deskshow efm_nav efm_path emu flame forecasts mail net news photo rain screenshot slideshow snow taskbar tclock uptime weather winselector wlan

    У сувязі з нейкай спецыфікай OpenBSD архітэктуры наступныя модулі патрабуюць лёгкай рыхтоўкі:

    cpu, mem, battery, net, wlan, temperature (грубіянска кажучы - усё, што маюць справу непасрэдна з жалезам)

  13. Пасля даводкі секцый скрыпту па зборцы да розуму атрымалася звесці колькасць патчаў зыходнікаў да мінімуму (для ўсталёўваных кампанентаў натуральна). Паколькі ў html перакладаць гультаявата - гледзіце лепш у скрыпце:
  14. # OpenBSD patchset
    case $(uname) in
    OpenBSD)
    echo "Starting OpenBSD patchset..."
    cd $e17_cvs_local_location
    if [ "`grep \#include\ \ ./e17/libs/imlib2/src/modules/loaders/loader_png.c`" != "" ] ; then

    cat ./e17/libs/imlib2/src/modules/loaders/loader_png.c | sed 's/\#include\ \/\#include\ \<\/usr\/local\/include\/libpng\/png\.h\>/' > ./loader_png.c.patched

    cp ./loader_png.c.patched ./e17/libs/imlib2/src/modules/loaders/loader_png.c fi if [ "`grep _POSIX_HOST_NAME_MAX ./e17/apps/e/src/bin/e.h`" = "" ] ; then echo '#ifndef _POSIX_HOST_NAME_MAX' > ./e.h.patched echo '#define _POSIX_HOST_NAME_MAX 255' >> ./e.h.patched echo '#endif' >> ./e.h.patched cat ./e17/apps/e/src/bin/e.h >> ./e.h.patched cp ./e.h.patched ./e17/apps/e/src/bin/e.h fi if [ "`grep inttypes.h ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c`" = "" ] ; then echo '#include
    ' > ./evas_convert_main.c.patched cat ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c >> ./evas_convert_main.c.patched cp ./evas_convert_main.c.patched ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c fi echo "OpenBSD patchset is DONE. Press Enter." read a1 ;; esac

    Як бачны з прыведзенага вышэй - гэта ёсць не што іншае як выдаткі autotools у чыстым выглядзе. Увогуле, усё апынулася не так ужо і страшна. Як толькі rootshell.be будзе даступны (сайтык дарэчы з нядаўніх пор пераехаў на OpenBSD платформу) - выкладу скрыпт version="0.7.0.1". Каму "ў Парыж па справе тэрмінова" - мыльце, закіну.

    Hint: калі досведу замала, а паспрабаваць ткі хоцца - пампуйце заадно і дыск Frenzy - ён выратуе бацькоў дэмакратыі ў крытычныя дні. Звычайна хапае boot -s на промпте :).

  15. Let It Be! Just Let It Be!

І малюсенькая рада на развітанне, калі дазволіце: адключыце Java і Java-Script у наладах браўзара...

Оставьте комментарий!

Пользователь