LINUX.ORG.RU

LFS + checkinstall


0

0

Хочу собрать себе снова LFS, но уж больно неудобно что пакеты обновлять почти нереально. В обычных случая я использую checkinstall, но в данном случае это неприемлемо - в LFS не ставится не одного менеджера пакетов. Какой лучше всего поставить, и на каком этапе? А то честное слово - каждый раз при обновлении софта грузится с CD и делать dd if=/mnt/hda7/images/LFS5.img of=/dev/hda1 и ставить после этого весь софт с нуля запарило :(. Может есть и другие альтернативные варианты обновления (не installog или checkinstall)?

★★★★★
Ответ на: комментарий от anonymous

А вот пример установки прог, используя pkgtool для управления пакетами:

"...Ну и напоследок метод который лично мне нравится больше всего - так сказать "административный" способ. Идея в том чтобы отмечать устанавливаемые файлы каким-нибудь флажком - например принадлежностью к какой-нибудь группе. Для этого создаете дополнительную группу с произвольным именем (например, groupadd creators), и добавляете в нее пользователя root (usermod -G $(groups|sed s/" "/,/g),creators root # groups выдает группы, к которым принадлежит root, в виде списка с пробелами в качестве разделителей, поэтому sed-ом заменяем пробел на запятую и добавляем creators). Компилируем как обычно, а команду make install выполняем под группой creators - sudo sg creators "make install". Затем ищем все файлы, принадлежащие группе creators, и переносим их в какую-нибудь из директорий, где и собираем пакет. Вот небольшой bash-скрипт под названием createpkg, который автоматизирует эту задачу:

#!/bin/sh
CREATORS=creators
#group name, change it to your tastes
sg $CREATORS "${1:-make install}";
#pass installation command as first argument, by default it is "make install"
flist=$(find /usr /lib /bin /sbin /var /etc -group $CREATORS)
#find installed components under /usr /lib /bin /sbin /var /etc
mkdir -p /tmp/poligon
cp -dRP $flist /tmp/poligon
#create temporary dir and copy components there recursivly (R) ,preserving links (d) and path (P)
idir=$(pwd)
cd /tmp/poligon
/sbin/makepkg Slack_Pack.tgz
#make pakage with arbitrary name
cp Slack_Pack.tgz ${idir}.tgz
#copy it to one level above current directory, name it with directory name + .tgz
cd $idir
rm -rf $flist
rm -rf /tmp/poligon
#clear all

Использовать его следующим образом - в директории с исходниками, после того как компиляция завершилась, набираете sudo createpkg (если для установки программы требуется команда отличная от make install - что, впрочем, случается не часто, например make client-install, то скармливаете ее в качестве параметра - createpkg "make client-install"). В итоге, рядом с директорией с исходниками появляется пакет с тем же именем и расширением .tgz (заметьте что этот скрипт удаляет установленные файлы и поэтому вам придется еще выполнить installpkg). Поскольку инсталляция происходит в "настоящие" каталоги (т.е. в те где программные файлы и будут расположены после установки), то недостатки этого метода те-же, что и у buildpkg в нормальном режиме. Достоинство, вобщем-то, только одно - простота и прозрачность.

Ну и в заключение еще один совет - если есть возможность достать готовый бинарный пакет, заточенный под ваш дистрибутив, то воспользуйтесь им. Компилирование чужих программ (чем должны заниматься или их разработчики или maintainer-ы дистрибутива) не прибавляет вам ни знаний, ни навыков, а только отнимает время. К рассказам о том, что "После перекомпиляции программы X, она стала работать в n раз быстрее и жрать в m раз меньше ресурсов" следует относится как к рассказам бывалых рыбаков и охотников. Оптимизация работы программы в таких случаях связана обычно с отключением определенной функциональности, и вы не можете гарантировать, что именно эта функциональность не понадобится вам сейчас или через некоторое время.

CopyLeft geekkoo"

anonymous
()
Ответ на: комментарий от anonymous

В LFS-хинтах описан хороший метод - установка всего софта от пользователя.

Кратко: хотим установить софтину xxx. Заводим юзера xxx без пароля.Добавляем его в группу install.

su xxx ./configure && make && make install exit

соотв права на директории должны быть прописаны.

Далее менеджмент пакетов элементарен:

find / -user xxx -exec rm -rf {} \;

большинство софта ставится под юзером без проблем.Там где есть траблы - смотрите хинт.

anonymous
()

не проще-ли вам использовать генту?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.