Řešení 1:
Použijte systemctl edit smb.service
pro aktualizaci závislostí.
After=dirsrv.target
- Zajistí spuštění služby smb.service po dirsrv.target.
Pro robustnost (která bude stát za to, pokud si s tím pohráváte) můžete také zahrnout některé z následujících:
Requires=dirsrv.target
- Aktivovat dirsrv.target, když je aktivována smb.service. Způsobí selhání služby smb.service, pokud selže dirsrv.target.
Wants=dirsrv.target
- Aktivovat dirsrv.target, když je aktivována smb.service. Nezpůsobí selhání smb.service, pokud selže dirsrv.target.
BindsTo=dirsrv.target
- Pokud je dirsrv.target deaktivován, deaktivujte smb.service.
Zdroj:http://www.freedesktop.org/software/systemd/man/systemd.unit.html
systemd-ui
poskytuje GUI pro systemd. Poskytuje dobrý přehled o stavu systemd, ale k úpravě souborů jednotek budete stále muset použít textový editor.
Řešení 2:
Udělejte dvě věci:
-
Upravte
/lib/systemd/system/smb.service
unit file, k určení závislosti.[unit]
sekce obsahujeAfter=
řádek, který určuje, jaké služby/cíle by měly být dosaženy před tímto.After=syslog.target network.target nmb.service winbind.service
Změňte jej na:
After=dirsrv.target syslog.target network.target nmb.service winbind.service
-
Nahlaste tuto závislost zpět Fedoře jako chybu, aby mohla být začleněna do budoucích verzí.
Řešení 3:
možná budete muset změnit nebo zahrnout řádek s Requires
direktivě [Unit]
části /usr/lib/systemd/system/smb.service
soubor.
Requires=dirsrv.target
a
After=dirsrv.target
Řešení 4:
Existují dvě alternativy k úpravě souboru služby v /usr/lib/systemd/system
(viz příklad 2. Přepsání nastavení dodavatele):
-
Zkopírujte soubor do
/etc/systemd/system
a proveďte úpravy na kopii. Tento soubor zcela přepíše soubor v/usr/lib
. -
Vytvořte soubor
/etc/systemd/system/smb.service.d/local.conf
. Obsah souboru by měl být podobný příkladu níže. To selektivně přepíše možnosti „Vyžaduje“ a „Po“ v souboru služby poskytované dodavatelem.
Každý z nich (včetně úpravy souboru v /usr/lib
) nabízí výhody i nevýhody. Nejlepší volba může záviset na službě a povaze úprav.
I když to může fungovat, nestačí přidat pouze možnost „Po“ (viz část [Jednotka] Možnosti). "Po" řídí pořadí, ale ne závislosti. Pokud dirsrv.target
není spuštěn jiným způsobem, zadáním příkazu se nespustí. Použití možnosti "Vyžaduje" nebo "Chce" vynutí dirsrv.target
začít.
[Unit]
Requires=dirsrv.target
After=dirsrv.target
Pozn.:Nevím, zda byl tento přístup k dispozici, když byla tato otázka původně položena.