From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Astafiev To: devel@altlinux.ru Message-Id: <20011126093551.6d234204.andrei@tvcell.ru> X-Mailer: Sylpheed version 0.6.4 (GTK+ 1.2.10; i586-alt-linux) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Subject: [devel] minimal system Sender: devel-admin@linux.iplabs.ru Errors-To: devel-admin@linux.iplabs.ru X-BeenThere: devel@linux.iplabs.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: devel@linux.iplabs.ru List-Help: List-Post: List-Subscribe: , List-Id: ALT Linux Team Developers mailing list List-Unsubscribe: , List-Archive: X-Original-Date: Mon, 26 Nov 2001 09:35:51 +0300 Date: Mon, 26 Nov 2001 09:35:51 +0300 Archived-At: List-Archive: List-Post: долго думал, куда постить, и решил сначала отправить сюда. надеюсь получить некоторые комментарии и после обсуждения сделать более приемлимый вариант описания моих действий по созданию минимального дистрибутива на основе Сизифа. по ходу описания приведено несколько ошибок и несколько идеологических вопросов. в субботу 23 ноября 2001 я принес домой полную копию Sisyphus, сделал на машине # apt-get dist-upgrade обновление системы прошло нормально. далее я попробовал сделать минимальную систему на основе Sisyphus-20011123. задача эта, конечно, в основном теоретическая, т.к. есть много дистрибутивов помещающихся на дискетке. меня интересовало, что можно выжать в плане минимализма из Sisyphus. за основу был взят пакет basesystem-sisyphus. систему ставил на раздел достаточно большого размера с файловой системой reiserfs. первым шагом были отобраны пакеты, от которых зависит basesystem и необходимые для них. basesystem потянул за собой еще 92 пакета. я еще добавил mingetty, bdflush (по умолчанию используются в inittab, но нет зависимости), passwd (не знаю с помощью чего другого можно менять пароли), libreiserfs и reiserfs-utils (что поделаешь, файловая система-то не ext2 :). итого система установилась на 108Мб. теперь опишу разные способы установки. 1. уставновка сразу всех необходимых пакетов, отобранных предварительно. монтируем целевой раздел: # mount /dev/hde7 /mnt/test создаем структуру каталогов, куда будет помещаться база данных rpm, иначе пакеты устанавливаться не будут. # mkdir -p /mnt/test/var/lib/rpm в каталоге, где лежат все пакеты, подается команда: # rpm -i --root /mnt/test *.rpm при выполнении этой операции на экране появились следующие сообщения: warning: group tty does not exist - using root warning: created %_tmppath directory /var/tmp /var/tmp/rpm-tmp.48947: cd: /usr/lib/perl5: No such file or directory chown: `root.utmp': invalid user chown: `root.utmp': invalid user Cannot find a boot loader, you may have to see why detectloader has problems or specify via the command line. rebuilding database /var/lib/rpm таким образом в системе были установлены 93 пакета. добавив 5 недостающих пакетов, о которых говорилось ранее, и произведя несколько нехитрых действий, о которых расскажу чуть позже, я получил работающую систему. # du -s /mnt/test 108M /mnt/test 2. меня заинтересовали сообщения, выдаваемые rpm при установке, и я решил установить систему аккуратно по пакету. почистил тестовый раздел и снова сделал структуру каталогов для базы данных rpm. # rm -rf /mnt/test/*; mkdir -p /mnt/test/var/lib/rpm # rpm --initdb --root /mnt/test пакеты я устанавливал командой: # rpm -i --root /mnt/test название_пакета.rpm в порядке их следования по тексту (по ходу я буду давать некоторые комментарии и задавать вопросы). сначала я установил некоторые независимые пакеты (лицензии, файл релиза) и библиотеки. altlinux-release-Sisyphus-alt20011123.noarch.rpm common-licenses-1.1-alt1.noarch.rpm glibc-core-2.2.4-alt3.i586.rpm libdb1-1.85-alt1.i586.rpm libdb2-2.4.14-alt1.i586.rpm libdb3-3.3.11-alt2.i586.rpm libpam-0.75-alt11.i586.rpm libpopt-1.7-alt2.i586.rpm libpwdb-0.61.1-alt1.i586.rpm libreadline-4.2-alt5.i586.rpm libshadow-20000902-alt3.i586.rpm libshhopt-1.1.6-alt1.i586.rpm libtermcap-2.0.8-ipl21mdk.i586.rpm zlib-1.1.3-ipl13mdk.i586.rpm с некоторыми библиотеками были приключения. пакет libgpm-1.19.4-alt1.i586.rpm отказался ставиться, сославшись на необходимость libncurses.so.5, а libncurses-5.2-ipl3mdk.i586.rpm соответственно на libgpm.so.1. это легко лечится, # rpm -i --root /mnt/test libgpm-1.19.4-alt1.i586.rpm \ libncurses-5.2-ipl3mdk.i586.rpm но выглядит по-моему все равно не очень хорошо. итак в систему были добавлены libgpm-1.19.4-alt1.i586.rpm libncurses-5.2-ipl3mdk.i586.rpm далее были установлены: bzlib-1.0.1-alt2.i586.rpm bzip2-1.0.1-alt2.i586.rpm bash-2.05-alt4.i586.rpm gzip-1.3.2-alt1.i586.rpm info-install-4.0-ipl17mdk.i586.rpm tar-1.13.25-alt1.i586.rpm при установке последнего появилось сообщение, которое было отмечено при установке сразу всех пакетов. warning: created %_tmppath directory /var/tmp что подвигло меня, к установке пакета filesystem, создающего директории для размещения файлов в дистрибутивах от ALTLinux. оказалось, что он зависит от пакета setup, в котором содержатся стандартные файлы. смысл этой зависимости я не понял, но в системе они появились, естественно в следующем порядке: setup-2.1.9-ipl21mdk.i586.rpm filesystem-2.1.6-alt5.i586.rpm далее "немного каши перловой". при установке perl-base предустановочный скрипт делает 'cd /usr/lib/perl5', не проверяя существования сего каталога, что выливается в: /var/tmp/rpm-tmp.48947: cd: /usr/lib/perl5: No such file or directory тем не менее perl-base, некое его мандрейковское расширение и еще несколько пакетов появляются в системе. perl-base-5.6.1-alt12.i586.rpm perl-MDK-Common-1.0.2-alt2.i586.rpm hwclock-2.14-alt1.i586.rpm chkconfig-1.2.19-ipl1mdk.i586.rpm crontabs-1.7-ipl10mdk.noarch.rpm etcskel-1.65-ipl4mdk.noarch.rpm gawk-3.1.0-alt1.i586.rpm getopt-1.1.2-alt1.i586.rpm glib-1.2.10-alt2.i586.rpm mktemp-1.4-alt1.i586.rpm net-tools-1.60-alt1.i586.rpm psmisc-20.1-alt1.i586.rpm rootfiles-alt-alt3.noarch.rpm sash-3.4-ipl5mdk.i586.rpm sed-3.02-ipl10mdk.i586.rpm which-2.13-alt1.i586.rpm попробовал установить vim-minimal, но его постустановочный скрипт выдал сообщение об ошибке. /var/tmp/rpm-tmp.50528: ln: command not found error: execution of %post scriptlet from vim-minimal-6.0-alt1.026 failed, exit status 127 это навело на мысль о том, что возможно скрипты, связанные с установкой и удалением пакетов тоже проверять на предмет зависимостей. бред? усложнение? с одной стороны там пишутся простейшие команды, которые бывают в системе. но случаи-то бывают разные :) до появления команды ln я удалил из системы vim-minimal. далее я начал устанавливать пакеты с утилитами. diffutils-2.7-ipl22mdk.i586.rpm fileutils-4.1-alt2.i586.rpm vim-minimal-6.0-alt1.026.i586.rpm grep-2.4.2-ipl5mdk.i586.rpm textutils-2.0.14-alt1.i586.rpm sh-utils-2.0.11-alt2.i586.rpm procps-2.0.7-ipl5mdk.i586.rpm о двух комплектах утилит есть, что сказать отдельно. findutils при установке требует библиотеку libe2p.so.2, которая входит в libe2fs. у меня нет файловой системы ext2, так зачем же мне соответствующая библиотека. заглянув немного вперед, я, конечно, понял, что без этой библиотеки мне все равно не обойтись, т.к. она требуется для mkinitrd. но если, например, я сам собираю в системе ядро и включаю поддержку файловой системы загрузочного раздела в него, то уже даже необходимость mkinitrd ставится под сомнение. с другой стороны, конечно, концепция дистрибутива (в данном случае касаемо mkinitrd) стоит значительно выше моих личных идей по его применению. итак, были установлены: libe2fs-1.24a-alt1.i586.rpm findutils-4.1.7-alt1.i586.rpm теперь об util-linux. этот пакет был разделен на несколько пакетов, хотя собираются они все равно из одного архива. мне не понятно, для чего было сделано данное разделение и по какому принципу отбирались утилиты, которые были вынесены. единственный критерий, по которому можно разнести пакеты с утилитами, приходящий мне в голову, это наличие каждой конкретной утилиты в fhs. по такому приципу можно было бы разбить, скажем, все или некоторые пакеты с утилитами на lalala-utils и lalala-fhs-utils. может быть имело бы смысл некоторые утилиты действительно внести в отдельные пакеты... кроме того, в requires пакета util-linux указаны пакеты с вынесенными из него утилитами hwclock, getopt, kbdrate, agetty, cfdisk, fdisk, sfdisk, но при этом пропущены(?) losetup и mount. также интересным фактом для меня оказалось то, что requires не содержит контроля версий, т.е. в системе util-linux может иметь версию X.XXa, kbdrate - X.XYb, а fdisk - X.ZZc. на данный момент установить util-linux без нарушения завивисимостей нельзя, так как agetty зависит от login, а тот в свою очередь от pam. ок, будем разбираться с пакетами, отвечающими за авторизацию. установить pam сразу не представляется возможным, так как в нем прописана зависимость на cracklib-dicts, причем модуль, работающий с cracklib вынесен в pam-cracklib. получается, что имеет место быть весьма странная зависимость или разделение пакетов. имхо, зависимость на cracklib-dicts должен иметь pam-cracklib и в него должно быть вынесено из pam все, что относится к cracklib, если это возможно и пока еще не сделано. в противном случае не совсем понятен вынос в отдельный пакет модуля pam_cracklib.so. вот. cracklib-2.7-ipl13mdk.i586.rpm cracklib-2.7-dicts-ipl13mdk.i586.rpm pam-0.75-alt11.i586.rpm pam-cracklib-0.75-alt11.i586.rpm pam_passwdqc-0.4-alt2.i586.rpm pam_mktemp-0.1-alt2.i586.rpm pam_userpass-0.5-alt2.i586.rpm pam-config-1.0-alt1.noarch.rpm login-0.60-alt8.i586.rpm agetty-2.11j-alt1.i586.rpm cfdisk-2.11j-alt1.i586.rpm fdisk-2.11j-alt1.i586.rpm kdbrate-2.11j-alt1.i586.rpm losetup-2.11j-alt1.i586.rpm mount-2.11j-alt1.i586.rpm sfdisk-2.11j-alt1.i586.rpm util-linux-2.11j-alt1.i586.rpm SysVinit-2.83-alt1.i586.rpm modutils-2.4.12-alt1.i586.rpm initscripts-5.49-ipl31mdk.i586.rpm при установке последнего пакета появилось: chown: `root.utmp': invalid user chown: `root.utmp': invalid user такие пользователь и группа в системе есть :) e2fsprogs-1.24a-alt1.i586.rpm mkinitrd-2.7.1-alt6.noarch.rpm bootloader-utils-0.1-alt2.noarch.rpm kernel24-up-2.4.15-alt0.61.i586.rpm вполне естественно, что эта операция закончилась предупреждением о том, что не этом разделе у меня нет загрузчика опреционной системы (мне хватает lilo на другом разделе). Cannot find a boot loader, you may have to see why detectloader has problems or specify via the command line. еще немного об авторизации. при установке shadow-utils не создаются файлы shadow и gshadow, хотя могли бы при помощи скрипта на основе информации из passwd и group. shadow-change-20000902-alt3.i586.rpm shadow-check-20000902-alt3.i586.rpm shadow-convert-20000902-alt3.i586.rpm shadow-edit-20000902-alt3.i586.rpm shadow-groups-20000902-alt3.i586.rpm shadow-log-20000902-alt3.i586.rpm shadow-utils-20000902-alt3.i586.rpm ncurses-5.2-ipl3mdk.i586.rpm dev-3.0.6-ipl5mdk.i586.rpm установка файлов устройств привело к вот такому эффекту: rpmdb: /mnt/test/var/lib/rpm/Providename: No such file or directory rpmdb: /mnt/test/var/lib/rpm/Conflictname: No such file or directory rpmdb: /mnt/test/var/lib/rpm/Providename: No such file or directory rpmdb: /mnt/test/var/lib/rpm/Name: No such file or directory rpmdb: /mnt/test/var/lib/rpm/Providename: No such file or directory rpmdb: /mnt/test/var/lib/rpm/Conflictname: No such file or directory error: db3 error(-30998) from db->close: DB_INCOMPLETE: Cache flush was unable to complete rpmdb: Non-empty page 32 in unused hash bucket 24 rpmdb: Non-invalid page 3 on free list error: db3 error(-30985) from db->verify: DB_VERIFY_BAD: Database verification failed общий вывод занял примерно 50kb. такие сообщения за время моих тестов появлялись с разной периодичностью при установке разных пакетов, но насколько я заметил, только после установки dev и только при использовании ключа --root. c dev подобные сообщения появляются всегда как при установке, так и при удалении. перестроение базы непосредственно перед установкой этого пакета не помогает. замечено также, что глюк в основном проявляется на пакетах с больших количеством файлов. если устанавливать все пакеты сразу, то все работает нормально. однако, при попытке удаления, скажем, пакета dev снова появляются аналогичные сообщения. пробуем установить rpm и видим, что он зависит от glibc, а не от glibc-core. это ошибка или rpm действительно рассчитывает на что-то большее чем библиотеки из glibc? обидно, прииходится поставить почти все пакеты, входящие в glibc, а это почти 40Мб. glibc-gconv-modules-2.2.4-alt3.i586.rpm glibc-i18ndata-2.2.4-alt3.i586.rpm glibc-locales-2.2.4-alt3.i586.rpm glibc-nss-2.2.4-alt3.i586.rpm glibc-timezones-2.2.4-alt3.i586.rpm glibc-utils-2.2.4-alt3.i586.rpm iconv-2.2.4-alt3.i586.rpm glibc-2.2.4-alt3.i586.rpm librpm-4.0.3-alt0.9.i586.rpm rpm-4.0.3-alt0.9.i586.rpm basesystem-sisyphus-alt1.noarch.rpm оказывается, что эта система еще не является вполне рабочей. нужно еще установить библиотеки и утилиты для работы используемой на данном разделе файловой системы (в данном случае reiserfs), mingetty, bdflush (используемые по умолчанию в inittab) и passwd. bdflush-1.5-ipl17mdk.i586.rpm mingetty-0.9.4-ipl17mdk.i586.rpm passwd-0.64.1-ipl4mdk.i586.rpm libreiserfs-3.x.0h-ipl3.i586.rpm reiserfs-utils-3.x.0h-ipl3.i586.rpm -- andrei at tvcell d0t ru _______________________________________________ Devel mailing list Devel@linux.iplabs.ru http://www.logic.ru/mailman/listinfo/devel