Gentoo e MySQL all'avvio

Creato il 06 maggio 2013 da Nightfly

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.


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :