Solution 1 :
Utilisez systemctl edit smb.service
pour mettre à jour les dépendances.
After=dirsrv.target
- S'assurera que le smb.service est démarré après dirsrv.target.
Pour plus de robustesse (ce qui en vaudra la peine si vous bricolez avec ce genre de choses), vous pouvez également inclure certains des éléments suivants :
Requires=dirsrv.target
- Activez dirsrv.target lorsque smb.service est activé. Provoquera l'échec de smb.service si dirsrv.target échoue.
Wants=dirsrv.target
- Activez dirsrv.target lorsque smb.service est activé. N'entraînera pas l'échec de smb.service si dirsrv.target échoue.
BindsTo=dirsrv.target
- Si dirsrv.target est désactivé, désactivez smb.service.
Source :http://www.freedesktop.org/software/systemd/man/systemd.unit.html
systemd-ui
fournit une interface graphique pour systemd. Donne une bonne vue de l'état de systemd mais vous devrez toujours utiliser un éditeur de texte pour modifier les fichiers d'unité.
Solution 2 :
Faites deux choses :
-
Modifiez le
/lib/systemd/system/smb.service
fichier unit, pour spécifier la dépendance. Le[unit]
section contient unAfter=
ligne qui spécifie quels services/cibles doivent être atteints avant celui-ci.After=syslog.target network.target nmb.service winbind.service
Changez-le en :
After=dirsrv.target syslog.target network.target nmb.service winbind.service
-
Signalez cette dépendance à Fedora en tant que bogue, afin qu'elle puisse être intégrée dans les futures versions.
Solution 3 :
vous devrez peut-être modifier ou inclure une ligne avec le Requires
directive dans le [Unit]
partie du /usr/lib/systemd/system/smb.service
fichier.
Requires=dirsrv.target
et
After=dirsrv.target
Solution 4 :
Il existe deux alternatives à la modification du fichier de service en /usr/lib/systemd/system
(voir Exemple 2. Modification des paramètres du fournisseur) :
-
Copiez le fichier dans
/etc/systemd/system
et effectuez les modifications sur la copie. Ce fichier remplacera complètement le fichier en/usr/lib
. -
Créer le fichier
/etc/systemd/system/smb.service.d/local.conf
. Le contenu du fichier devrait ressembler à l'exemple ci-dessous. Cela remplace de manière sélective les options "Requiert" et "Après" dans le fichier de service fourni par le fournisseur.
Chacun d'entre eux (y compris la modification du fichier dans /usr/lib
) présente des avantages et des inconvénients. Le meilleur choix peut dépendre du service et de la nature des modifications.
Bien que cela puisse fonctionner, il ne suffit pas d'ajouter uniquement l'option "Après" (voir Options de la section [Unité]). "Après" contrôle l'ordre, mais pas les dépendances. Si dirsrv.target
n'est pas démarré d'une autre manière, spécifier une commande ne la démarrera pas. L'utilisation de l'option "Requires" ou "Wants" forcera dirsrv.target
à démarrer.
[Unit]
Requires=dirsrv.target
After=dirsrv.target
NB :Je ne sais pas si cette approche était disponible lorsque cette question a été posée à l'origine.