Per installare un nuovo servizio su una macchina Gentoo è molto conveniente utilizzare il packet manager di cui è dotata, ovvero emerge.
Potrebbe succedere, però, che la versione del servizio richiesta sia più datata rispetto a quella presente nei repository ufficiali di emerge, ergo è necessario scaricare i sorgenti dell'applicativo e successivamente compilarli mediante gcc.
Nella fattispecie, il servizio oggetto del presente post è MySQL, che dovrà essere avviato automaticamente al boot del sistema operativo.
Generalmente MySQL mette a disposizione uno script di avvio per le distro più diffuse, da posizionare all'interno della directory /etc/init.d.
Purtroppo la versione di MySQL che ho scaricato non conteneva al suo interno uno script di startup per Gentoo e per quindi ho dovuto escogitare una specie di workaround.
Mi spiego meglio: affinchè il comando rc-update add mysqld boot possa funzionare, è necessario che lo script in questione (mysqld) contenga del codice specifico da dare in pasto al binario /sbin/runscript. Infatti, è proprio grazie ad esso che il SO riconosce lo script e lo lancia durante lo specifico runlevel.
La cosa fuorviante è che, nonostante mysqld non contenesse all'interno la chiamata al binario /sbin/runscript (essendo un semplice script bash) il comando rc-update non ha restituito alcun errore.
Infatti, un semplice rc-update mi ha mostrato il servizio correttamente assegnato al runlevel:
mysqld | boot
Per capirci qualcosa in più ho deciso di abilitare il logging del demone rc, editando dil file /etc/rc.conf:
rc_logger="YES"
Dopo il riavvio della macchina ho quindi analizzato il file /var/log/rc.log, il quale non ha mostrato nessun tentativo di avvio per mysqld. Ed è stato proprio in questo momento che ho capito dove stava il problema: mysqld era uno script bash e non runscript.
Per farla breve, il workaround di cui vi ho accennato precedentemente è il seguente:
1) all'interno della directory /etc/local.d ho creato lo script mysqld.start, il cui contenuto è:
#!/bin/sh
/etc/init.d/mysqld start
2) ho convertito il suddetto script in eseguibile, mediante il comando:
server local.d # chmod +x mysqld.start
A questo punto, in virtù del fatto che Gentoo durante la fase di boot esegue tutti gli script presenti all'interno di /etc/local.d, ho finalmente ottenuto l'avvio automatico di MySQL.
E' tutto.
Alla prossima.