Archivi tag: rc-update

Gentoo e MySQL all’avvio

Per installare un nuovo servizio su una macchina Gentoo è molto conveniente utilizzare il packet manager di cui è dotata, ovvero emerge.

gentoo-logo.jpg

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 scrip 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 scrip 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 scrip in questione (mysqld) contenga del codice specifico da dare in pasto al binario /sbin/runscrip. Infatti, è proprio grazie ad esso che il SO riconosce lo scrip e lo lancia durante lo specifico runlevel.

La cosa fuorviante è che, nonostante mysqld non contenesse all’interno la chiamata al binario /sbin/runscrip (essendo un semplice scrip 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 il 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 scrip bash e non runscrip.

Per farla breve, il workaround di cui vi ho accennato precedentemente è il seguente:

1) all’interno della directory /etc/local.d ho creato lo scrip mysqld.start, il cui contenuto è:

#!/bin/sh
 /etc/init.d/mysqld start

2) ho convertito il suddetto scrip 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 scrip presenti all’interno di /etc/local.d, ho finalmente ottenuto l’avvio automatico di MySQL.

E’ tutto.

Alla prossima.