[Linux] postinst-скрипт в deb

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
Ответить
Аватара пользователя
Вторник
Сообщения: 228
Зарегистрирован: 16 май 2017, 08:36

[Linux] postinst-скрипт в deb

Сообщение Вторник » 25 дек 2018, 06:40

Посмотрел я postinst. А там - мама не горюй. Вопросы есть к каждой строке:

Код: Выделить всё

chmod 777 -R /opt/kkmserver/Settings
777? Зачем?

Код: Выделить всё

gpasswd -a ${SUDO_USER:-$USER} dialout
dialout? Зачем?

Код: Выделить всё

sudo chmod 777 /etc/bash.bashrc
Опять 777. Да и sudo ещё. Зачем sudo? Его в дебиане и нет по умолчанию.

Код: Выделить всё

echo "export PATH=\$PATH:/opt/kkmserver" >> /etc/bash.bashrc
Я бы заменил на что-то вроде такого:

echo бла-бла > /etc/profilre.d/kkmserver.sh

Код: Выделить всё

bash /opt/kkmserver/Settings/RegisterLinux.sh > /opt/kkmserver/Settings/RegisterLinux.txt &
Зачем здесь bash? Зачем &? Почему экзешник лежит в каталоге Settings?

Аватара пользователя
Вторник
Сообщения: 228
Зарегистрирован: 16 май 2017, 08:36

Re: [Linux] postinst-скрипт в deb

Сообщение Вторник » 25 дек 2018, 06:58

В RegisterLinux.sh вижу:

Код: Выделить всё

sudo apt-get install -y liblttng-ust0
sudo apt-get install -y libcurl3
sudo apt-get install -y libssl1.0.0
sudo apt-get install -y libkrb5-3
sudo apt-get install -y zlib1g
sudo apt-get install -y libc6-dev
sudo apt-get install -y libgdiplus
Опять sudo? Ну да ладно. Вы устанавливаете пакеты, которые являются зависимостями, после установки вашего пакета. Так оно не работает. RegisterLinux.sh никогда не будет вызван потому, что инсталляция будет прервана из-за ошибок с зависимостями:

Код: Выделить всё

root@114178cdf496:/# dpkg -i KkmServer.deb
(Reading database ... 7044 files and directories currently installed.)
Preparing to unpack KkmServer.deb ...
Unpacking kkmserver (2.1.25.14) over (2.1.25.14) ...
dpkg: dependency problems prevent configuration of kkmserver:
 kkmserver depends on liblttng-ust0; however:
  Package liblttng-ust0 is not installed.
 kkmserver depends on libcurl3; however:
  Package libcurl3 is not installed.
 kkmserver depends on libssl1.0.0; however:
  Package libssl1.0.0 is not installed.
 kkmserver depends on libkrb5-3; however:
  Package libkrb5-3 is not installed.
 kkmserver depends on libc6-dev; however:
  Package libc6-dev is not installed.
 kkmserver depends on libgdiplus; however:
  Package libgdiplus is not installed.

dpkg: error processing package kkmserver (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 kkmserver

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: [Linux] postinst-скрипт в deb

Сообщение Audim » 25 дек 2018, 18:39

>chmod 777 -R /opt/kkmserver/Settings
>777? Зачем?
На некоторых дистрибутивах это файл ставится без прав на изменение, а менять его должна программа

>dialout? Зачем?
Для доступа к COM-портам

>echo бла-бла > /etc/profilre.d/kkmserver.sh
И такой файл будет применяться в профиле? попробую.....

>Зачем здесь bash? Зачем &? Почему экзешник лежит в каталоге Settings?
Именно за тем чтоб выполнилось в отдельном потоке

Аватара пользователя
Вторник
Сообщения: 228
Зарегистрирован: 16 май 2017, 08:36

Re: [Linux] postinst-скрипт в deb

Сообщение Вторник » 25 дек 2018, 22:10

> >chmod 777 -R /opt/kkmserver/Settings
> >777? Зачем?
> На некоторых дистрибутивах это файл ставится без прав на изменение, а менять его должна программа

777 - это rwxrwxrwx. Вы даёте все права всем пользователям. Создайте группу kkmserver и пользователя kkmserver. Владение всеми своими файлами отдайте им. Права на файлы с данными поставьте 660, на экзешники - 770. И объявите, что администратор должен включить в группу kkmserver всех, кто на этом сервере нуждаются в KkmServer.

> >dialout? Зачем?
> Для доступа к COM-портам

Это понятно. Но на этой машине может не быть ККТ, подключенного через USB. Предлагаю поступить так же, как написано выше. Есть USB ККТ, пусть админ в dialout добавит.

Кстати, я вроде где-то читал, что в некоторых дистрах группа другая, кажется uucp. Но это не точно.

> >echo бла-бла > /etc/profilre.d/kkmserver.sh
> И такой файл будет применяться в профиле?

Да, будет (подробнее). Перезагрузка, кстати, не нужна. Достаточно разлогиниться.

> >Зачем здесь bash? Зачем &? Почему экзешник лежит в каталоге Settings?
> Именно за тем чтоб выполнилось в отдельном потоке

Про это я написал здесь.

А зачем вам отдельный поток?

Ответить