Soluzione 1:
Usa systemctl edit smb.service
per aggiornare le dipendenze.
After=dirsrv.target
- Garantirà che smb.service venga avviato dopo dirsrv.target.
Per robustezza, (che varrà la pena se stai armeggiando con queste cose) potresti anche voler includere alcuni dei seguenti:
Requires=dirsrv.target
- Attiva dirsrv.target quando smb.service è attivato. Farà fallire smb.service se dirsrv.target fallisce.
Wants=dirsrv.target
- Attiva dirsrv.target quando smb.service è attivato. Non causerà il fallimento di smb.service se dirsrv.target fallisce.
BindsTo=dirsrv.target
- Se dirsrv.target è disattivato, disattivare smb.service.
Fonte:http://www.freedesktop.org/software/systemd/man/systemd.unit.html
systemd-ui
fornisce una GUI per systemd. Offre una buona visuale dello stato di systemd ma dovrai comunque utilizzare un editor di testo per modificare i file unit.
Soluzione 2:
Fai due cose:
-
Modifica il
/lib/systemd/system/smb.service
unit file, per specificare la dipendenza. Il[unit]
contiene unAfter=
riga che specifica quali servizi/target devono essere raggiunti prima di questo.After=syslog.target network.target nmb.service winbind.service
Cambialo in:
After=dirsrv.target syslog.target network.target nmb.service winbind.service
-
Segnala questa dipendenza a Fedora come un bug, in modo che possa essere incorporata nelle versioni future.
Soluzione 3:
potresti dover modificare o includere una riga con Requires
direttiva nel [Unit]
sezione del /usr/lib/systemd/system/smb.service
file.
Requires=dirsrv.target
e
After=dirsrv.target
Soluzione 4:
Ci sono due alternative alla modifica del file di servizio in /usr/lib/systemd/system
(vedi Esempio 2. Override delle impostazioni del fornitore):
-
Copia il file in
/etc/systemd/system
ed eseguire le modifiche sulla copia. Questo file sovrascriverà completamente il file in/usr/lib
. -
Crea il file
/etc/systemd/system/smb.service.d/local.conf
. Il contenuto del file dovrebbe essere simile all'esempio seguente. Ciò sovrascrive in modo selettivo le opzioni "Richiede" e "Dopo" nel file di servizio fornito dal fornitore.
Ognuno di questi (inclusa la modifica del file in /usr/lib
) offre vantaggi e svantaggi. La scelta migliore può dipendere dal servizio e dalla natura delle modifiche.
Anche se può funzionare, non è sufficiente aggiungere solo l'opzione "Dopo" (vedi Opzioni della sezione [Unità]). "Dopo" controlla l'ordine, ma non le dipendenze. Se dirsrv.target
non viene avviato in altro modo, specificando un ordine non verrà avviato. L'uso dell'opzione "Richiede" o "Richiede" forzerà dirsrv.target
da avviare.
[Unit]
Requires=dirsrv.target
After=dirsrv.target
NB:non so se questo approccio fosse disponibile quando questa domanda è stata originariamente posta.