LINUX.ORG.RU

Debian installer

 , ,


0

1

В /var/lib/dpkg/info создал файлы .template .postinst, добавил их в файл status

В debian-installer все добавилось успешно.

Как устанавливать пакеты через apt-get в скрипте .postinst?

.template

Template: debian-installer/myconf/title
Type: text
Description: Configure Operating System

Template: myconf/select_modules
Type: select
Choices: ${choices}
Description: Select configuration

.postinst

#!/bin/sh
set -e

. /usr/share/debconf/confmodule

PACKLISTFILE=/usr/share/myconf/package-list

question=$(/bin/cat $PACKLISTFILE | /usr/bin/tr -s '\n' ',')

db_settitle debian-installer/myconf/title

db_subst myconf/select_modules choices $question

db_input critical myconf/select_modules || true
db_go

db_get myconf/select_modules || true
selectpack=$RET

*** ???Установка выбранного пакет??? ***



Последнее исправление: qshiroe (всего исправлений: 1)

debian installer

тут не причем

Как устанавливать пакеты через apt-get в скрипте .postinst?

Сдавайся с поднятыми руками. Что ты делаешь и почему не добавить пакет в зависимости?

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

всем этим делом вроде как debconf управляет?

Пакет выбирается из списка, а сам лежит в репозитории, то есть нужно выбрать имя пакета, а потом apt-get-ом вытянуть его из репы

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

то есть нужно выбрать имя пакета, а потом apt-get-ом вытянуть его из репы

на основании чего? почему не хватает существующих механизмов?

чтобы тебя простимулировать — не верю, что из postinst можно дернуть что-нибудь, блокирующее базу dpkg, в том чисое и установку пакета через apt/dpkg. так что колись, что тебе реально надо?

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

чтобы во время установки дебиан-подобного дистра появилось окно со списком пакетов, выбираешь пакет, он его ставит в систему, т.к это окно единственное которое показывается пользователя, все остальное убрано с помощью preseed файла

qshiroe
() автор топика
Ответ на: комментарий от t184256

в общем то логику работы я с его исходников и вытянул, просто останется не понятным один момент, как он ставит пакеты, есть предположение что он делает chroot на /target, а потом просто ставит все aptitud-ом с флагом -y чтобы не было подтверждения установки

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

а потом просто ставит все aptitud-ом с флагом -y чтобы не было подтверждения установки

мало. у dpkg ЕМНИП нет флага для такой стрельбы в ногу.

просто останется не понятным один момент, как он ставит пакеты

какая тебе разница, он делает это максимально правильно и абсолютно не важно как. твоя задача — наделать своих tasks, не?

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

если добавлять пакеты в tasksel (*.desc) то пропадает возможность динамический обновлять список пакетов, постоянно пересобирать пакет tasksel не очень хорошая идея

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

если добавлять пакеты в tasksel (*.desc) то пропадает возможность динамический обновлять список пакетов

4.2. зачем вообще добавлять твои desc в пакет tasksel?

постоянно пересобирать пакет tasksel не очень хорошая идея

когда у тебя в руках молоток, все кажется гвоздем. не пересобирай пакет tasksel.

P.S. они, кстати, не в tasksel-data?

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от qshiroe

Положить в /usr/lib/tasksel, или куда там их надо. Можно опакетить в отдельный пакет. Можно не опакетить. Нелогично?

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

хм... а можно подробнее, просто если он просто ищет в папке список пакетов, то это решит проблему

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

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

t184256 ★★★★★
()

Решение!

.template

Template: debian-installer/myconf/title
Type: text
Description: Configure Operating System

Template: myconf/select_modules
Type: select
Choices: ${choices}
Description: Select configuration

.postinst

#!/bin/sh
set -e

. /lib/chroot-setup.sh
. /usr/share/debconf/confmodule

CHROOT_PATH=/target
CHROOT="chroot $CHROOT_PATH"
PACKLISTFILE=/usr/share/myconf/package-list
question=$(/bin/cat $PACKLISTFILE | /usr/bin/tr -s '\n' ',')

arch=$(uname -m)
export LD_LIBRARY_PATH=/lib:/usr/lib:/lib/$arch-linux-gnu:/usr/lib/$arch-linux-gnu:/target/lib:/target/usr/lib:/target/lib/$arch-linux-gnu:/target/usr/lib/$arch-linux-gnu
export PATH="$PATH:/target/bin:/target/usr/bin:/target/sbin:/target/usr/sbin"

chroot_setup

DEBCONF_READFD=0
export DEBCONF_READFD
DEBCONF_WRITEFD=3
export DEBCONF_WRITEFD
DEBIAN_FRONTEND=passthrough
export DEBIAN_FRONTEND

trap chroot_cleanup EXIT


db_settitle debian-installer/myconf/title
db_subst myconf/select_modules choices $question

db_input high myconf/select_modules
db_go

db_get myconf/select_modules
$CHROOT /usr/bin/debconf-apt-progress -- apt-get -y $RET
exit 0

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