[Slackbuilds-users] Slackbuilds: doinst.sh and douninst.sh

Tim Dickson dickson.tim at googlemail.com
Fri Jul 19 10:58:33 UTC 2024


On 19/07/2024 09:24, Alessandro Baggi wrote:
>
>
> Il 19/07/24 02:38, Willy Sudiarto Raharjo ha scritto:
>>
>> if you notice on postgresql.SlackBuild, we have this commands:
>>
>> mkdir -p $PKG/var/lib/pgsql/$PG_VERSION/data
>> chown -R postgres:postgres $PKG/var/lib/pgsql
>>
>> without having postgres user and group, this would fail and the 
>> files/directories will not have correct permission for the application
>
> Hi Willy,
>
> in this way, yes if user will not be created the chown command will 
> fail, but at this point why not put the chown,user/group creation 
> commands in doinst.sh and remove the statement that requires postgres 
> user/group?
>
> I think it is more genuine. For example I build my packages inside a 
> VM, then I install on my workstation. Here, on my workstation (and on 
> other machines where I will install postgresql package) without the 
> user/group creation postgresql "cannot be used" as configured so I'm 
> forced to create them manually, plus configuring 
> rc.local/rc.local_shutdown, while this should be done during package 
> installation.
>
> For example, I have an automated build script to compile all needed 
> slackbuilds. If I add a new package that requires a specific 
> user/group definition the automated script will be stopped by that 
> requirement but if provided inside doinst.sh the automation will work. 
> From my point of view if an operation needs to be done many times, the 
> right solution is automate it (this is one big advantages of IT).
>
> Another thing that could be inserted in the doinst.sh (for services 
> that require to start on boot) is populating rc.local with the correct 
> statement (if ..... /etc/rc.d/rc.service start...fi) with the caution 
> to not rewrite the same "starts statements" if already defined (maybe 
> used in upgrading the package)
>
> In the current state the package installation is not complete because 
> it misses some points:
>
> 1. User/group privileges configuration that are required by the 
> software to run (as shipped in the slackbuild)
> 2. Configuring and prepare the system to start/stop the service (if 
> enabled) during boot/reboot/shutdown process
> 3. A clean process during package uninstall that clean created 
> user/group, start/stop system configuration in rc.local/rc.local_shutdown
>
> My 2 cents,
>
> Alessandro.
>
>

Although I agree it would be more convenient if users/groups and 
rc.local/rc.local_shutdown entries were done automatically (I have a 
printer driver which would benefit), these extra actions can be 
automated outside of the slackbuild script itself.
You mentioned you have a build script. You can add the user/group 
creation in that.
for example, in one of my scripts I have

#lets create required avahi user and group if needed
   if [ `cat /etc/group|grep avahi|wc -l`x = "0x" ]; then
     groupadd -g 214 avahi
   fi
   if [ `cat /etc/passwd|grep avahi|wc -l`x = "0x" ]; then
     useradd -u 214 -g 214 -c "Avahi User" -d /dev/null -s /bin/false avahi
   fi

You would also need an install script to do the same. (and the 
startup/shutdown stuff as well)
I use such a script for the avahi and epson-inkjet-printer-escpr2 
packages. one needs user and group, and they both need 
auto-startup/shutdown entries. denyhosts is another which should be 
started from rc.inet2 so it is running before sshd starts, but after the 
network is up.

As there are so many "special case" packages, it is usually left for the 
admin to externally script their preferred handling, and keep the doinst 
scripts as minimal as possible.

Unless there is consensus on a approach that is not invasive eg. is 
optional; such as a env variable which could be set if this stuff was 
wanted to be run on install,
eg:
SBOAUTOMATE=yes; export SBOAUTOMATE
then in the doinst.sh
if [ "x$SBOAUTOMATE" = "xyes" ]; then
    #do extra setup tasks automatically
    #....
fi

it's not likely to get much traction.

regards, Tim

-- 
This email has been checked for viruses by AVG antivirus software.
www.avg.com


More information about the SlackBuilds-users mailing list