[gelöst] Init-Script disabled by default

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
crhn
Beiträge: 67
Registriert: 30.04.2011 12:24:27
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] Init-Script disabled by default

Beitrag von crhn » 22.12.2011 22:39:15

Hallo,

Ich kann meinen Wunsch nicht so ganz in klare Worte fassen, versuch das aber trotzdem mal:

Wenn man über apt-get install einen Service installiert der auch ein Init-Script anlegt wird selbiges ja beim Booten automatisch ausgeführt. Ich hätte jetzt gern, dass das per Default nicht gestartet wird. Geht sowas?
Ich weiß zwar, dass ich das händisch mit update-rc.d nach der Installation deaktivieren kann, fände das aber schöner wenn das umgekehrt wäre. Also nach der Installation wird der Service beim booten nicht gestartet, es sei denn ich aktiver ihn über update-rc.d per Hand (wie bei Gentoo).

Gruß,
crhn
Zuletzt geändert von crhn am 23.12.2011 20:53:44, insgesamt 2-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Init-Script disabled by default

Beitrag von rendegast » 23.12.2011 06:04:31

Vielleicht kannst Du über apt.conf ein Skript einbinden,
daß nach Installation eines Paketes auf neue Dienste in /etc/init.d/ prüft und diese erstmal deaktiviert
(zBsp durch Umwandlung von gesetzten Sxx-Links in Kxx-Links)
und einen gegebenenfalls gestarteten Dienst direkt wieder stoppt.
Möglicher Showstopper dabei: Nicht immer ist bei einer Paket / /etc/init.d/Dienst-Kombination "Paket"="Dienst".
Bsp.
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";
DPkg::Post-Invoke:: "apt-get clean"; (mein Aufräumer)
'man apt.conf' gibt noch "DPkg::Pre-Invoke::"
post-invoke wird nach einem kompletten Arbeitsdurchgang aufgerufen, nicht für jedes Paket.
Ihm wird also IMO kein Paketname mehr als Option übergeben.
Ein dort eingesetztes Wrapper-Skript sollte also damit umgehen können.
Beachte auch:
Pre-Invoke, Post-Invoke
Dies ist eine Liste von Shell-Befehlen, die vor/nach dem Aufruf von dpkg(1) ausgeführt
werden. Wie options muss dies in Listenschreibweise angegeben werden. Die Befehle werden
der Reihenfolge nach mit /bin/sh aufgerufen, sollte einer fehlschlagen, wird APT
abgebrochen.

Andere denkbare Möglichkeit wäre, dem Debconf (/usr/sbin/dpkg-reconfigure) beizubringen,
neben dem /var/lib/dpkg/info/Paket.postinst noch weitere eigene Skripte abzuarbeiten,
das könnte aber in üblen Hacks enden.

Die /etc/init.d/ sind ja nicht immer aktiviert resp. auf Ausführung geschaltet,
verlangen manchmal zBsp. erst nach expliziter Freigabe, meist über eine Option in /etc/default/Paket.
Diese Paketeigenschaft über eine wish-Bugmeldung zu ändern gebe ich wenig Chancen,
da dies das gewohnte Verhalten für die bisherigen Benutzer des jeweiligen Paketes ändern würde,
und Maintainer sowas meist ablehnend gegenüberstehen dürften -- aber wer weiß.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
crhn
Beiträge: 67
Registriert: 30.04.2011 12:24:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Init-Script disabled by default

Beitrag von crhn » 23.12.2011 20:50:51

Danke für die ausführliche Antwort.
rendegast hat geschrieben:Vielleicht kannst Du über apt.conf ein Skript einbinden,
daß nach Installation eines Paketes auf neue Dienste in /etc/init.d/ prüft und diese erstmal deaktiviert
Da hab ich auch schon dran gedacht. Ich wusste nur nicht wie ich das komfortabel nach apt laufen lassen kann, aber über apt.conf ist das ja recht einfach. Ich werd das so mal probieren, da es sich nur um ein Desktop System handelt ist's auch nicht so schlimm wenn ich was zerschieß.
Ich hatte ja gehofft, dass es irgendwo ne Flag gibt das sich einfach setzen lässt. Selbst sowas basteln kommt mir immer nen bisschen unsauber vor und befriedigt mich nicht ganz :roll:
rendegast hat geschrieben:Diese Paketeigenschaft über eine wish-Bugmeldung zu ändern gebe ich wenig Chancen,
da dies das gewohnte Verhalten für die bisherigen Benutzer des jeweiligen Paketes ändern würde
Das würde mich am allermeisten verwirren...

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: [gelöst] Init-Script disabled by default

Beitrag von cosmac » 24.12.2011 13:31:37

hi,

Edit: OT; funktioniert hier nur, weil bei Updates sowieso neu gebootet wird (und selbst dann nicht im Sinne des OP).

ich hab' das Übel praktisch mit der Wurzel ausgerottet und in der /etc/inittab die Einträge für /etc/init.d/rcS und /etc/init.d/rc durch was eigenes ersetzt. Das sind die einzigen Änderungen, der ganze restliche init-Mechanismus bleibt unverändert und wird einfach nicht benutzt. Damit wird das gestartet, was in meinem Start-Script steht, nicht mehr und nicht weniger und irgendwelche Updates dürfen ungstört machen, was sie wollen. Leider muss man etwas mehr Aufwand treiben, damit es auch bei Bootloader-Updates keine Tränen gibt.

Damit man auch ein Original-Debian starten kann, sucht mein rcS in /proc/cmdline nach einem magischen Boot-Parameter, und wenn der fehlt, macht es ein "exec /etc/init.d/rcS". Das braucht man vor allem für den Vergleich, um wieviel schneller die eigene init-Mechanik ist :)
Zuletzt geändert von cosmac am 26.12.2011 16:33:32, insgesamt 2-mal geändert.
Beware of programmers who carry screwdrivers.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] Init-Script disabled by default

Beitrag von rendegast » 24.12.2011 14:45:34

Aber was ist mit diesen Kandidaten
(Auszug, Startbefehle könnten auch dingsbums-codiert sein oder über zwei Zeilen gehen.):

Code: Alles auswählen

$ egrep "/etc/init.d/.*start" /var/lib/dpkg/info/*postinst | sort
/var/lib/dpkg/info/acpid.postinst:              /etc/init.d/acpid start || exit $?
/var/lib/dpkg/info/arpalert.postinst:           /etc/init.d/arpalert start || exit $?
/var/lib/dpkg/info/autofs5.postinst:            /etc/init.d/autofs start || exit $?
/var/lib/dpkg/info/binfmt-support.postinst:             /etc/init.d/binfmt-support start || true
/var/lib/dpkg/info/clamav-freshclam.postinst:          IFACE="$intrface" /etc/init.d/clamav-freshclam start || true
/var/lib/dpkg/info/clamav-freshclam.postinst:      /etc/init.d/clamav-freshclam start
/var/lib/dpkg/info/console-common.postinst:             /etc/init.d/keymap.sh start || exit $?
/var/lib/dpkg/info/console-tools.postinst:              /etc/init.d/console-screen.sh start || exit $?
/var/lib/dpkg/info/cups.postinst:               /etc/init.d/cups start || exit $?
/var/lib/dpkg/info/dbus.postinst:               /etc/init.d/dbus start || exit $?
/var/lib/dpkg/info/dovecot-common.postinst:             /etc/init.d/dovecot start || exit $?
/var/lib/dpkg/info/dovecot-imapd.postinst:              /etc/init.d/dovecot restart
/var/lib/dpkg/info/ebtables.postinst:           /etc/init.d/ebtables start || exit $?
/var/lib/dpkg/info/fcron.postinst:              /etc/init.d/fcron start || exit $?
/var/lib/dpkg/info/fetchmail.postinst:          /etc/init.d/fetchmail start || true
/var/lib/dpkg/info/fuse-utils.postinst:         /etc/init.d/fuse start || exit $?
/var/lib/dpkg/info/haveged.postinst:            /etc/init.d/haveged start || exit $?
/var/lib/dpkg/info/initscripts.postinst:#               /etc/init.d/mountkernfs.sh start
/var/lib/dpkg/info/libc6.postinst:                          echo "You will need to start these manually by running \`/etc/init.d/<service> start'"
/var/lib/dpkg/info/lighttpd.postinst:           /etc/init.d/lighttpd start || exit $?
/var/lib/dpkg/info/openssh-server.postinst:                     /etc/init.d/ssh restart
/var/lib/dpkg/info/procps.postinst:             /etc/init.d/procps start || exit $?
/var/lib/dpkg/info/rsync.postinst:        /etc/init.d/rsync restart
/var/lib/dpkg/info/samba.postinst:              /etc/init.d/samba start || exit $?
/var/lib/dpkg/info/sysfsutils.postinst:         /etc/init.d/sysfsutils start || exit $?
/var/lib/dpkg/info/udev.postinst:    [ -x /etc/init.d/$script ] && invoke-rc.d $script restart || true
/var/lib/dpkg/info/winbind.postinst:            /etc/init.d/winbind start || exit $?
/var/lib/dpkg/info/x11-common.postinst:         /etc/init.d/x11-common start || exit $?
/var/lib/dpkg/info/xen-utils-common.postinst:           /etc/init.d/xend start || exit $?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten