LINUX.ORG.RU
ФорумTalks

[use cases] действия перед установкой или удалением


0

1

вопрос - какие реально необходимые действия могут выполняться в скриптах пакетного менеджера перед инсталляцией или перед удалением пакета? для прединсталляционных приходит на ум разве что добавление пользователя, что вполне себе нахрен не нужно, и вполне может быть выполнено после установки пакета. а что еще?

★★★★★

Всякие манипуляции с СУБД считаются? То же добавление пользователей, таблиц?

Hoodoo ★★★★★
()

Ещё я бы не отказался, пожалуй, для чисто «десктопных» приложений запроса на изменение конфигов xdg. Поставил viewnior, предложилось сделать его основным приложением для открывания изображений вместо gimp. Удаляешь - предложилось выбрать другое основное приложение.

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

все это спокойно выполняется и после фактической установки. интересуют именно надобности выполнения каких-либо действий перед распаковкой файлов в систему

ananas ★★★★★
() автор топика

Судя по арчу перед удалением: чистится info, для haskell unregister.sh, могут удалятся файлы, сгенерированные при установке, видимо дабы потом можно было спокойно удалить директорию (+ пользователи), могут демоны останавливаться.

Перед установкой ничего существенного не нашлось.

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

Если делать после нужно дополнительно проверять директории на пустоту, а так можно рассчитывать на сам пакетный менеджер (в смысле базовый функционал, а не костыли).

А если стартующий скрипт удален, сложнее остановить службу...

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

n01r ★★
()

Создание каталогов, создание БД, проверка требований....

Jetty ★★★★★
()

Для части пакетов - проверка наличия необходимых опций сборки ядра, переменных окружения, etc.

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

Для части пакетов - проверка наличия необходимых опций сборки ядра, переменных окружения, etc.

спокойно выполняется после

ananas ★★★★★
() автор топика

для библиотек вызовы ldconfig, для приложений--апдейты меню, установка разрешений для общих файлов, настройка cron, удаление всяких кешей и тд

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

тоже вполне может после удаления делаться, насколько я понимаю

Может это и неправильно, но, как сейчас посмотрел для haskell-пакетов `unregister.sh' входит в поставку => нужно запускать перед (вроде не принципиально: думается, что nix осилил бы и без костылей).

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

для библиотек вызовы ldconfig, для приложений--апдейты меню, установка разрешений для общих файлов, настройка cron, удаление всяких кешей и тд

это все - постинсталляция

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

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

ananas ★★★★★
() автор топика

Перед установкой: удаление/перемещение в новое место старых конфигов/симлинков/информации, если выполняется обновление.

Перед удалением: остановка демона, разрегистрация в какой-то системной службе, чтобы в момент удаления и после него обращений через эту службу уже не поступало.

AITap ★★★★★
()

А что, самому посмотреть в содержимое пакета, не судьба? В rpm, по крайней мере все видно без микроскопа.

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

А что, самому посмотреть в содержимое пакета, не судьба?

какого пакета? список приведешь?

ananas ★★★★★
() автор топика

Для пакетов с кастомизацией (например, ставить документацию или нет, создавать пользователей или нет) полезно. Например, если пользователь поставил соответствующую галку, можно сменить source у пакета со статики на гитовый репозиторий и собрать из сырцов.

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

После такой проверки может выяснится, что дальнейшая установка пакета не имеет смысла. И тогда раз файлы ещё не были распакованы легко отменить установку и вернуть всё как было. После установки в систему уже внесены изменения и их сложнее отменить, к тому же получится, что пакетный менеджер совершил лишнюю работу, когда мог просто прервать установку ещё до её начала вместо того чтобы сносить только что установленный пакет.

Ну а ещё вот такой пример - установка дополнительного модуля для какой-то системной службы. Эта служба автоматически следит за определённом каталогом и загружает оттуда модули как только они там появляются. В этом случае её следует остановить перед распаковкой (иначе модуль в нужном каталоге может появится раньше, чем в ФС появятся другие нужные ему файлы), а потом запустить. Это конечно лишь пример. В общем случае можно сказать так- перед распаковкой файлов может быть нужно остановить какой-то процесс, которому не нравится полуустановленные пакеты.

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

Ну вот, первый попавшийся, валяется у меня mrtg-2.10.15-1.i386.rpm, захожу в него с помощью mc, захожу в каталог #rpm/INFO/SCRIPTS и вижу 3 скрипта:
ALL, POSTIN, POSTUN
Смотрю содержимое ALL:
postinstall scriptlet (using /bin/sh):
/sbin/service crond condrestart 2>&1 > /dev/null || :
postuninstall scriptlet (using /bin/sh):
/sbin/service crond condrestart 2>&1 > /dev/null || :
# Add a trigger to remove the system crontab version of our tasks.

Ну и остальные тоже не пустые.

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

post, не pre. а интересуют именно случаи, когда необходимо произвести какие-либо действия перед установкой

ananas ★★★★★
() автор топика

ananas> для прединсталляционных приходит на ум разве что добавление пользователя,

Сохранение измененных конфигов, если это апдейт, а не новая установка.

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

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

а охота выяснить - есть ли какие-то крайне специфичные случаи, когда требовалось бы выполнить некоторые действия перед установкой или удалением.

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

rpm-4.3.3-33_nonptl.el4_8.1.i386.rpm

Содержит PREIN

if [ -f /var/lib/rpm/packages.rpm ]; then
echo "
You have (unsupported)
/var/lib/rpm/packages.rpm db1 format installed package headers
Please install rpm-4.0.4 first, and do
rpm --rebuilddb
to convert your database from db1 to db3 format.
"
exit 1
fi
/usr/sbin/groupadd -g 37 rpm > /dev/null 2>&1
/usr/sbin/useradd -r -d /var/lib/rpm -u 37 -g 37 rpm -s /sbin/nologin > /dev/null 2>&1
exit 0

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

Почему бы тебе не порыться в preinstall скриптах самому?

debian
$ ls  -Srl /var/lib/dpkg/info/*preinst | tail

-rwxr-xr-x 1 root root  11768 Apr 10  2010 /var/lib/dpkg/info/bash.preinst
-rwxr-xr-x 1 root root  14526 Jan 23  2011 /var/lib/dpkg/info/libc6.preinst
-rwxr-xr-x 1 root root  20916 Nov 23  2010 /var/lib/dpkg/info/xkb-data.preinst
-rwxr-xr-x 1 root root  20934 Oct  2  2010 /var/lib/dpkg/info/xbase-clients.preinst
-rwxr-xr-x 1 root root  20951 Feb 18  2011 /var/lib/dpkg/info/xserver-xorg-core.preinst
-rwxr-xr-x 1 root root  21539 Oct  2  2010 /var/lib/dpkg/info/xserver-xorg.preinst
-rwxr-xr-x 1 root root  21635 Oct  2  2010 /var/lib/dpkg/info/xutils.preinst
-rwxr-xr-x 1 root root  21993 Oct  2  2010 /var/lib/dpkg/info/x11-common.preinst
-rwxr-xr-x 1 root root  34526 Feb 18  2011 /var/lib/dpkg/info/tex-common.preinst
-rwxr-xr-x 1 root root 128752 Jul 29 12:14 /var/lib/dpkg/info/openssh-client.preinst

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