slitaz-doc-wiki-data view pages/ru/scratchbook/base-apps.txt @ rev 2

Add pages/ru folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:11:48 2011 +0000 (2011-02-26)
parents
children
line source
1 ======Базовые приложения======
3 Установка и настройка основных приложений и библиотек.
6 =====Введение=====
8 В этой главе описывается сборка и настройка основных библиотек и консольных приложений SliTaz.
11 ===Назначаем переменную окружения ($fs)===
13 В переменных окружения не указывается путь к папке, а только ее имя. Пропишем в переменную '$fs' путь к корневой файловой системе (rootfs). Для этого войдем в рабочую папку SliTaz/ и выполним:
15 <code># export fs=$PWD/rootfs</code>
17 А для проверки введем такую команду:
19 <code># echo $fs</code>
22 =====bc-1.06 — консольный калькулятор=====
24 Приложение bc ([[http://www.gnu.org/software/bc/|www.gnu.org/software/bc/]]) — это маленький калькулятор. При его компиляции также собирается dc, но последний не будет устанавливаться в SliTaz. Что интересно — dc также входит в состав BusyBox. Если вы захотите включить dc отдельно, потребуется удалить соответствующую ссылку на BusyBox, если она существует. Мы будем использовать папку //_pkg// (package) для установки и утилиту strip для сокращения размеров исполняемых файлов, а затем скопируем полученные утилиты в нужную папку.
26 <code>
27 # cd src
28 # wget http://ftp.gnu.org/pub/gnu/bc/bc-1.06.tar.gz
29 # tar xzfv bc-1.06.tar.gz
30 # cd bc-1.06
31 # ./configure --prefix=/usr --infodir=/usr/share/info \
32 --mandir=/usr/share/man
33 # make
34 # make DESTDIR=$PWD/_pkg install
35 # strip -vs _pkg/usr/bin/*
36 # cp -avi _pkg/usr/bin/bc $fs/usr/bin
37 </code>
40 ===Библиотеки===
42 Выполнение команды ldd на bc выведет:
44 <file>
45 libc.so.6 => /lib/libc.so.6 (0x40029000)
46 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
47 </file>
50 =====zlib-1.2.3 — библиотеки сжатия=====
52 Пакет zlib ([[http://www.zlib.net/|www.zlib.net]]) обеспечивает функции сжатия и распаковки, используемые, среди прочего, SSH-сервером Dropbear и X-сервером:
54 <code>
55 # cd ..
56 # wget http://www.gzip.org/zlib/zlib-1.2.3.tar.bz2
57 # tar xjfv zlib-1.2.3.tar.bz2
58 # cd zlib-1.2.3
59 # ./configure --shared --prefix=/usr
60 # make
61 # strip -vs libz.so*
62 # cp -av libz.so* $fs/usr/lib
63 </code>
66 =====pcre-7.4 — Perl-совместимые регулярные выражения=====
68 Пакет pcre ([[http://www.pcre.org/|www.pcre.org]]) содержит библиотеки функций для Perl-совместимых регулярных выражений, которые использует, например, веб-сервер Lighttpd:
70 <code>
71 # cd ..
72 # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.gz
73 # tar xzfv pcre-7.4.tar.gz
74 # cd pcre-7.4
75 # ./configure --prefix=/usr
76 # make
77 # make DESTDIR=$PWD/_pkg install
78 # strip -vs _pkg/usr/bin/*
79 # strip -vs _pkg/usr/lib/*
80 # cp -av _pkg/usr/bin/* $fs/usr/bin
81 # cp -av _pkg/usr/lib/*.so* $fs/usr/lib
82 </code>
85 =====e2fsprogs-1.39 — управление файловыми системами=====
87 Пакет e3fsprogs ([[http://e2fsprogs.sourceforge.net/|e2fsprogs.sourceforge.net]]) имеет в своем составе утилиты для управления файловыми системами ext2 и ext3. Мы не будем брать их все, потому что нам понадобится место для других программ. Также мы будем использовать fsck из BusyBox:
89 <code>
90 # cd ..
91 # wget http://puzzle.dl.sourceforge.net/sourceforge/e2fsprogs/e2fsprogs-1.39.tar.gz
92 # tar xzf e2fsprogs-1.39.tar.gz
93 # cd e2fsprogs-1.39
94 # ./configure --prefix=/usr --with-root-prefix="" \
95 --enable-elf-shlibs --disable-evms --sysconfdir=/etc \
96 --infodir=/usr/share/info --mandir=/usr/share/man
97 # make
98 # make DESTDIR=$PWD/_pkg install
99 # strip -vs _pkg/sbin/*
100 # strip -vs _pkg/lib/*
101 # strip -vs _pkg/usr/bin/*
102 # strip -vs _pkg/usr/sbin/*
103 # strip -vs _pkg/usr/lib/*
104 </code>
106 Далее установим полученные утилиты, файлы настроек и библиотеки в папку rootfs. При использовании fsck будьте осторожны и не сотрите ссылку на BusyBox:
108 <code>
109 # cp -i _pkg/sbin/{badblocks,blkid,dumpe2fs,e2fsck,e2image} $fs/sbin
110 # cp -i _pkg/sbin/{e2label,findfs,logsave,mke2fs,mkfs.*} $fs/sbin
111 # cp -i _pkg/sbin/{resize2fs,tune2fs} $fs/sbin
112 # cp -a _pkg/lib/* $fs/lib
113 # rm -rf $fs/lib/libss*
114 # cp -a _pkg/etc/* $fs/etc
115 # cp -a _pkg/usr/bin/* $fs/usr/bin
116 # cp -a _pkg/usr/sbin/* $fs/usr/sbin
117 # cp -ad _pkg/usr/lib/*.so $fs/usr/lib
118 # rm -rf $fs/usr/lib/libss*
119 </code>
121 Также можно скопировать файлы для русской раскладки:
123 <code>
124 # mkdir $fs/usr/share/locale
125 # cp -a _pkg/usr/share/locale/ru $fs/usr/share/locale
126 </code>
129 =====Dropbear-0.50 — легкий сервер и клиент SSH=====
131 Dropbear ([[http://matt.ucc.asn.au/dropbear/dropbear.html|matt.ucc.asn.au/dropbear/dropbear.html]]) — это маленький надежный клиент/сервер c поддержкой SSH 2. Dropbear совместим с OpenSSH и использует //~/.ssh/authorized_keys// для управления общими ключами. Dropbear также предоставляет собственную версию scp, для чего его нужно компилировать с опцией "make scp":
133 <code>
134 # cd ..
135 # wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.50.tar.gz
136 # tar xzf dropbear-0.50.tar.gz
137 # cd dropbear-0.50
138 # ./configure --prefix=/usr
139 # make
140 # make scp
141 # make DESTDIR=$PWD/_pkg install
142 # strip -v scp
143 # strip -v _pkg/usr/bin/*
144 # strip -v _pkg/usr/sbin/*
145 </code>
147 Установим клиент и его утилиты в ///usr/bin//, а сервер — в ///usr/sbin//:
149 <code>
150 # cp scp $fs/usr/bin
151 # cp -a _pkg/usr/bin/* $fs/usr/bin
152 # cp -a _pkg/usr/sbin/* $fs/usr/sbin
153 </code>
156 ===Библиотеки===
158 <file>
159 libutil.so.1 => /lib/libutil.so.1 (0x40025000)
160 libz.so.1 => /usr/lib/libz.so.1 (0x40028000)
161 libcrypt.so.1 => /lib/libcrypt.so.1 (0x4003b000)
162 libc.so.6 => /lib/libc.so.6 (0x40068000)
163 /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
164 </file>
166 Скопируем библиотеку //libutil.so.1// в //$fs/lib//, если она там еще не находится. Другие библиотеки должны присутствовать при создании основы системы:
168 <code># cp -a /lib/libutil* $fs/lib</code>
171 ===Настройка Dropbear===
173 Пользовательские конфигурационные файлы //authorized_keys// и //known_hosts// находятся в //~/.ssh//. Эта папка и файл //known_hosts// создаются автоматически, когда пользователь впервые запускает dbclient. Системные конфигурационные файлы для Dropbear расположены в ///etc/dropbear//:
175 <code># mkdir $fs/etc/dropbear</code>
177 Вы должны сгенерировать ключи безопасности, перед тем как запустить сервер Dropbear в Slitaz. Можно использовать dropbearkey со следующими опциями:
179 <code>
180 # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
181 # dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
182 </code>
184 Запустить SSH-сервер в SliTaz можно следующей командой:
186 <code># /etc/init.d/dropbear start</code>
189 =====lighttpd-1.4.18 — веб-сервер HTTP=====
191 Lighttpd ([[http://www.lighttpd.net/|www.lighttpd.net]]) — легкий, безопасный и мощный веб-сервер. Эта программа активно развивается и легко настраивается. Она поддерживает виртуальные хосты, CGI-скрипты и интеллектуальное управление процессором:
193 <code>
194 # cd ..
195 # wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.gz
196 # tar xzf lighttpd-1.4.18.tar.gz
197 # cd lighttpd-1.4.18
198 # ./configure -enable-shared --disable-ipv6 --prefix=/usr \
199 --libdir=/usr/lib/lighttpd --mandir=/usr/share/man
200 # make
201 # make DESTDIR=$PWD/_pkg install
202 # strip -vs _pkg/usr/bin/*
203 # strip -vs _pkg/usr/sbin/*
204 # strip -vs _pkg/usr/lib/lighttpd/*
205 </code>
207 Установим сервер и собранные библиотеки, а затем скопируем некоторые модули (9):
209 <code>
210 # cp _pkg/usr/bin/* $fs/usr/bin
211 # cp _pkg/usr/sbin/* $fs/usr/sbin
212 # mkdir $fs/usr/lib/lighttpd
213 </code>
215 Модули:
217 <code>
218 # cp _pkg/usr/lib/lighttpd/mod_access.so $fs/usr/lib/lighttpd
219 # cp _pkg/usr/lib/lighttpd/mod_accesslog.so $fs/usr/lib/lighttpd
220 # cp _pkg/usr/lib/lighttpd/mod_alias.so $fs/usr/lib/lighttpd
221 # cp _pkg/usr/lib/lighttpd/mod_auth.so $fs/usr/lib/lighttpd
222 # cp _pkg/usr/lib/lighttpd/mod_cgi.so $fs/usr/lib/lighttpd
223 # cp _pkg/usr/lib/lighttpd/mod_compress.so $fs/usr/lib/lighttpd
224 # cp _pkg/usr/lib/lighttpd/mod_rewrite.so $fs/usr/lib/lighttpd
225 # cp _pkg/usr/lib/lighttpd/mod_status.so $fs/usr/lib/lighttpd
226 # cp _pkg/usr/lib/lighttpd/mod_userdir.so $fs/usr/lib/lighttpd
227 </code>
230 ===Библиотеки===
232 У нас уже должна быть библиотека //libsdl.so.2//; если же нет, скопируем ее:
234 <code># cp -a /lib/libdl* $fs/lib</code>
237 ===/var/www — корневая папка обслуживаемых документов===
239 ///var/www// — это корневая папка документов, обслуживаемых по умолчанию. Получить доступ к ней можно, перейдя по ссылке [[http://localhost/]]. Эта папка содержит index.html, который автоматически выводится по запросу. Создадим папку ///var/www// и посмотрим, что там внутри:
241 <code># mkdir -p $fs/var/www</code>
244 ===lighttpd.conf — файл конфигурации Lighttpd===
246 Основной файл настроек Lighttpd расположен в папке ///etc/lighttpd// и называется //lighttpd.conf//. Этот же файл, входящий в состав SliTaz, прост для понимания, можете в этом убедиться, прочитав его. Другие примеры этого файла вы найдете на сайте Lighttpd, а пример его конфигурации — в папке ///doc// в архиве Lighttpd:
248 <code># cp -a ../slitaz-tools-1.1/etc/lighttpd $fs/etc</code>
250 Создадим папку, содержащую log-файлы:
252 <code># mkdir $fs/var/log/lighttpd</code>
255 ===Пользователь и группа www===
257 Добавим к веб-серверу пользователя и группу, это увеличит безопасность, кроме того, нет надобности запускать его от имени root. Соответствующий пользователь в SliTaz по умолчанию — www, это имя вы можете изменить в файле //lighttpd.conf//. Приложение //adduser// из BusyBox имеет некоторые ограничения, так что добавим пользователя www вручную. Мы также изменим права доступа к папке с log-файлами веб-сервера:
259 <code>
260 # echo "www:x:80:80:www:/var/www:/bin/sh" >> $fs/etc/passwd
261 # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow
262 # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow-
263 # chroot $fs /bin/ash
264 /# addgroup -g 80 www
265 /# chown www.www /var/log/lighttpd
266 # exit
267 </code>
269 Чтобы запустить веб-сервер, можно использовать скрипт ///etc/init.d/lighttpd// из SliTaz tools, набрав: ///etc/init.d/lighttpd start//. Запуск сервера можно автоматизировать при загрузке системы, создав ссылку ///etc/init.d/lighttpd//, указывающую на ///etc/rc.d/60lighttpd//.
272 =====iptables-1.3.7 — файрволл для Linux=====
274 Netfilter ([[http://www.netfilter.org/|www.netfilter.org]]) — это модуль, обеспечивающий функции файрволла для ядра Linux, разделяемые Интернет-соединения (NAT) и архивирование сетевого трафика. Команда //iptables// позволяет конфигурировать Netfilter, используя //iptables-restore// и //iptable-save// для сохранения и восстановления конфигурации Netfilter:
276 <code>
277 # cd ..
278 # wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2
279 # tar xjf iptables-1.3.7.tar.bz2
280 # cd iptables-1.3.7
281 # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \
282 LIBDIR=/lib MANDIR=/usr/share/man
283 # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \
284 LIBDIR=/lib MANDIR=/usr/share/man \
285 DESTDIR=$PWD/_pkg install
286 # strip _pkg/sbin/*
287 # strip _pkg/lib/iptables/*
288 </code>
290 Установим приложения и библиотеки по маске iptables*, достаточные для базового файрволла:
292 <code>
293 # cp -a _pkg/sbin/iptables* $fs/sbin
294 # mkdir $fs/lib/iptables
295 # cp -a _pkg/lib/iptables/{libipt_standard.so,libipt_conntrack.so} \
296 $fs/lib/iptables
297 # cp -a _pkg/lib/iptables/{libipt_tcp.so,libipt_udp.so} $fs/lib/iptables
298 </code>
300 Чтобы удовлетворить зависимости iptables, скопируем библиотеки libnsl*:
302 <code>
303 # cp -va /lib/libnsl* $fs/lib/tls
304 # strip $fs/lib/libnsl*
305 </code>
308 =====sqlite-3.5.1 — маленький движок баз данных SQL=====
310 Этот пакет предоставляет sqlite3 ([[http://www.sqlite.org/|www.sqlite.org]]) и библиотеки //sqlite3.so*//. SQLite быстр и эффективен, и при этом напрямую интегрируется в программы, использующие файлы баз данных:
312 <code>
313 # cd ..
314 # wget http://www.sqlite.org/sqlite-3.5.1.tar.gz
315 # tar xzf sqlite-3.5.1.tar.gz
316 # cd sqlite-3.5.1
317 # ./configure --prefix=/usr --disable-tcl
318 # make
319 # make DESTDIR=$PWD/_pkg install
320 # strip _pkg/usr/lib/*.so*
321 # strip _pkg/usr/bin/*
322 </code>
324 Установим sqlite3 и его библиотеки в папку rootfs:
326 <code>
327 # cp -a _pkg/usr/lib/*.so* $fs/usr/lib
328 # cp -a _pkg/usr/bin/* $fs/usr/bin
329 </code>
332 =====cdrkit-1.1.5 — утилиты для управления CD-ROM и ISO-образами=====
334 cdrkit ([[http://www.cdrkit.org/|www.cdrkit.org]]) имеет в своем составе средства управлениями CD-ROM. По умолчанию SliTaz устанавливает //wodim// для прожига дисков и //genisoimage// для создания ISO-образов. Компиляция осуществляется немного по-другому (через cmake), но это не должно вызвать проблем:
336 <code>
337 # cd ..
338 # wget http://cdrkit.org/releases/cdrkit-1.1.5.tar.gz
339 # tar xzf cdrkit-1.1.5.tar.gz
340 # cd cdrkit-1.1.5
341 # make
342 # make install PREFIX=$PWD/_pkg/usr
343 # strip -v _pkg/usr/bin/*
344 # strip -v _pkg/usr/sbin/*
345 # cp _pkg/usr/bin/genisoimage $fs/usr/bin
346 # cp _pkg/usr/bin/wodim $fs/usr/bin
347 </code>
349 Скопируем библиотеку //libcap.so.1//, которая необходима //wodim//:
351 <code># cp -a /lib/libcap.so* $fs/lib</code>
354 =====cpio-2.8 — архиватор=====
356 cpio ([[http://www.gnu.org/software/cpio/|www.gnu.org/software/cpio/]]) предоставляет средства для управления cpio-архивами. Этот формат используется при создании пакетов SliTaz и образа initramfs для CD-ROM. Кстати, BusyBox содержит свою версию cpio, которая только распаковывает архивы:
358 <code>
359 # cd ..
360 # wget ftp://sunsite.cnlab-switch.ch/mirror/gnu/cpio/cpio-2.8.tar.gz
361 # tar xzf cpio-2.8.tar.gz
362 # cd cpio-2.8
363 # ./configure --prefix=/usr --bindir=/bin \
364 --libexecdir=/usr/bin --mandir=/usr/share/man \
365 --infodir=/usr/share/info
366 # make
367 # make DESTDIR=$PWD/_pkg install
368 # strip -v _pkg/bin/*
369 # strip -v _pkg/usr/bin/*
370 </code>
372 Установим cpio в папку ///bin//, а rmt — в ///usr/bin//. Также можно установить для него русскую локализацию:
374 <code>
375 # cp -a _pkg/bin/* $fs/bin
376 # cp -a _pkg/usr/bin/* $fs/usr/bin
377 # cp -a _pkg/usr/share/locale/ru $fs/usr/share/locale
378 </code>
381 =====microperl-5.8.8 — микрокопия Perl=====
383 Microperl — это крохотная версия Perl, использующая большинство важнейших функций этого языка. Более подробную информацию вы найдете в архиве с исходниками программы и в файле //README.micro//. Мы используем маленькую утилиту //sed// на файле конфигурации, которая осуществляет поиск модулей microperl в ///usr/lib/perl5//. После этого создадим ссылку на скрипт //#! /usr/bin/perl//:
385 <code>
386 # wget http://ftp.funet.fi/pub/CPAN/src/perl-5.8.8.tar.gz
387 # tar xzf perl-5.8.8.tar.gz
388 # cd perl-5.8.8
389 # sed -i s/'usr\/local'/'usr'/ uconfig.sh
390 # sed -i s/'perl5\/5.9'/'perl5'/ uconfig.sh
391 # sed -i s/'unknown'/'i486-pc-linux-gnu'/ uconfig.sh
392 # make -f Makefile.micro regen_uconfig
393 # make -f Makefile.micro
394 # strip microperl
395 # cp microperl $fs/usr/bin
396 # chroot $fs /bin/ash
397 /# cd /usr/bin
398 /# ln -s microperl perl
399 /# exit
400 </code>
403 =====module-init-tools-3.2 — утилиты для управления модулями ядра=====
405 Пакет [[http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/|module-init-tools]] с сайта kernel.org включает modprobe, insmod, rmmod и lsmod. Мы выбрали именно эти утилиты, поскольку мы можем компилировать modutils/modprobe с поддержкой сжатых модулей (.gz) для экономии места. Для этого мы используем опцию <nowiki>--enable-zlib</nowiki>, а затем выполняем очистку и копирование исполняемых файлов. Мы не берем все собранные программы, а только то, что нам нужно — depmod, insmod, modinfo, modprobe и rmmod (помещаем их в ///sbin//), а также lsmod, который кладем в ///bin//:
407 <code>
408 # cd ..
409 # wget http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
410 # tar xjf module-init-tools-3.2.tar.bz2
411 # cd module-init-tools-3.2
412 # ./configure --enable-zlib --prefix=/usr --sbindir=/sbin --bindir=/bin \
413 --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man
414 # make
415 # make DESTDIR=$PWD/_pkg install
416 # strip -v _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod}
417 # strip -v _pkg/bin/lsmod
418 # cp -i _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod} $fs/sbin
419 # cp -i _pkg/bin/lsmod $fs/bin
420 # cd ..
421 </code>
424 =====Копируем модули ядра=====
426 Копируем файлы из linux-2.6.20/_pkg:
428 <code># cp -a linux-2.6.20/_pkg/lib/* $fs/lib</code>
431 ===Сжимаем модули ядра===
433 Осуществляем сжатие модулей, что освободит нам около половины занятого места. Начнем с перехода в папку rootfs, после чего поищем в ней все файлы с расширением .ko и осуществим их сжатие. То же самое можно проделать и через скрипт //gzmodtaz.sh// из SliTaz tools:
435 <code># cd $fs</code>
437 Используя gztazmod.sh:
439 <code>
440 # cp -v ../src/slitaz-tools-1.1/utils/gztazmod.sh sbin
441 # ./sbin/gztazmod.sh lib/modules/2.6.20-slitaz
442 </code>
444 Или вручную:
446 <code>
447 # cd lib/modules/2.6.20-slitaz
448 # find . -name "*.ko" -exec gzip '{}' \;
449 # sed 's/\.ko/.ko.gz/g' modules.dep > tmp.dep
450 # rm modules.dep
451 # mv tmp.dep modules.dep
452 </code>
455 =====Собираем initramfs и ISO-образ=====
457 Для создания нового ISO-образа можно использовать утилиту //mktaziso// из состава [[ru: cookbook:slitaz-tools|Slitaz tools]]. Или же можно создать новый образ initramfs, скопировать его в папку ///boot// в корневой папке CD-ROM (rootcd) и в конце собрать ISO-образ командой genisoimage:
459 <code>
460 # cd $fs
461 # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz
462 # cd ..
463 # cp rootfs.gz rootcd/boot
464 # genisoimage -R -o slitaz-test.iso -b boot/isolinux/isolinux.bin \
465 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
466 -V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd
467 </code>
469 Тестируем ISO-образ:
471 <code># qemu -cdrom slitaz-test.iso</code>
474 ===Следующая глава===
476 Следующая глава называется [[ru:scratchbook:base-ncurses|"Базовые приложения ncurses"]]. В ней рассказывается об установке и настройке библиотек и приложений ncurses.
478 ----
479 Статью перевел [[http://forum.slitaz.org/index.php/profile/1273/Cyril|Cyril]]