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.serviceunit 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.serviceCambialo 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/systemed 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.