Dienste dauerhaft deaktivieren mit update-rc.d

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
puntarenas
Beiträge: 712
Registriert: 28.05.2005 15:07:05

Dienste dauerhaft deaktivieren mit update-rc.d

Beitrag von puntarenas » 22.01.2006 09:02:04

Guten Morgen,

nachdem mein System allzu rund läuft, habe ich mich einfach mal in eine Problematik hineingesteigert, die mich seit längerem ein wenig ärgert. Es hat funktioniert, seit kurzem treibt mich das Problem in den Wahnsinn, ich kann nicht mehr, bitte helft mir!

Ich habe mich bereits mehrfach hingesetzt und per "update-rc.d -f <dienst> remove" nach und nach alle von mir nicht ausdrücklich gewünschten Dienste deaktiviert.

Was mich kirre macht, nach einem Upgrade des entsprechenden Pakets werden die Symlinks wieder hergestellt und der Dienst startet erneut bei jedem Systemstart.

Gibt es denn keine Möglichkeit, daß Debian meine Modifikationen respektiert? Als Beispiel nenne ich einfach mal bittorrent. Ich nutze bittorrent gelegentlich manuell, um freien Projekten ein wenig Bandbreite zu ersparen. Ich benötige bittorrent aber definitiv nicht als Systemdienst. Dennoch setzt sich Debian stets über meine Änderung hinweg und erstellt die Symlinks zum Autostart neu.

Ich bin nahe daran mir ein Script zu basteln, daß alles was nicht auf der Whitelist steht konsequent nach /dev/null verschiebt, aber das kann ja wirklich nicht die Lösung sein.

Gruß
puntarenas

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 22.01.2006 09:09:34

hi

apt-get install rcconf ...
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
I.C.Wiener
Beiträge: 674
Registriert: 19.08.2003 18:45:35

Beitrag von I.C.Wiener » 22.01.2006 10:07:23

Aus der Manpage:
Rcconf gets a list of services from /etc/init.d and looks in the /etc/rc?.d directories to determine whether each service is on or off.
Wenn nun aber das Upgrade die Links wieder erstellt, dann erkennt sie rcconf doch auch wieder als "on". Erscheint mir Witzlos.
Wobei man mit rcconf eine bessere Übersicht hat um zu kontrollieren, welche Dienste sich wieder aktiviert haben.

MfG
Who is... LAIN?

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 22.01.2006 10:11:57

> Wenn nun aber das Upgrade die Links wieder erstellt, dann erkennt sie rcconf doch auch wieder als "on".

nö... ist bei mir noch nie passiert das sich nach einem upgrade der zustand ändert.
Kann mich natürlich auch irren ...

aber ich denke mal die maintainer achten darauf (/var/lib/rcconf/services)... oder ?
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Benutzeravatar
I.C.Wiener
Beiträge: 674
Registriert: 19.08.2003 18:45:35

Beitrag von I.C.Wiener » 22.01.2006 10:21:01

Dass sich Dienste nach einem Upgrade aufeinmal wieder starten, habe ich auch schon mitbekommen. Ob das die Eusnahme ist, weiß ich nicht, da ich es noch nie richtig beobachtet habe, ob es auch schon Upgrades gab, nach denen der Dienst deaktiviert blieb. Mir fehlt also die Gegenprobe. ;)

Sollten sich die Dienste aber wieder in rc*.d eintragen, kann rcconf das wohl auch nciht verhindern. Es merkt sich ja nicht, was es beim letzten Mal gemacht hat. Es kennt nur den Momentanstand. So lese ich das aus der Manpage raus.

MfG
Who is... LAIN?

Benutzeravatar
puntarenas
Beiträge: 712
Registriert: 28.05.2005 15:07:05

Beitrag von puntarenas » 23.01.2006 11:14:54

Zunächst einmal vielen Dank, rcconf hatte ich schon einmal kurz auf meinem System, habe es aber falsch eingeschätzt. Tatsächlich ist es ein sehr nettes Tool, auch wenn mir einige Dinge noch nicht so ganz klar sind.

Zunächst einmal habe ich mit "update-rcconf-guide" die Beschreibungen zu den einzelnen Diensten aktualisiert. rcconf zeigt diese dann auch brav an, allerdings haben sich die Maintainer teilweise äußertst vielsagende Beschreibungen wie "blablubb - blablubb executes the blablubb command". einfallen lassen, meine Hochachtung :D

Zu meiner Verwunderung zeigte rcconf jedoch nur einen kleinen Teil der unter init.d vorhandenen Dienste an. Mein Beispiel von oben, bittorrent, tauchte somit nicht in der Liste auf.

Möglicherweise habe ich mit meinen manuellen Aufrufen von "update-rc.d" irgendetwas zerschossen, jedenfalls erschien bittorrent nachdem ich nochmal all seine Symlinks gelöscht habe dann auch in der Liste bei rcconf. Ähnlich ging es mit discover, x11-common und einigen weiteren Diensten.

Jetzt habe ich also erst einmal alle Symlinks von für mich relevanten, weil definitiv unnützen Diensten (soweit ich Laie das beurteilen kann) gelöscht und kann was für mich relevant ist in rcconf an- und abschalten.

Eine Frage bleibt natürlich, was passiert wenn ein Upgrade einmal wieder neue Symlinks erzeugt. In "/var/lib/rcconf/services" wird zwar "the service number data" gespeichert, aber mir scheint es geht vielmehr darum, den Symlink nach manuellem Deaktivieren wieder mit der richtigen Startpriorität aktivieren zu können.

Gegen amoklaufende Upgrades wird rcconf wohl auch nichts tun können, schließlich wird das Tool selbst ja nicht bei jedem Systemstart aktiv, sondern nur wenn ich es aufrufe und auch dann arbeitet es nur auf Befehl.

Mein vorläufiges Fazit bleibt erst einmal betrüblich, die ganze Geschichte mit den Runlevels und Diensten ist in Debian, ääähm - nun ja, sagen wir bestenfalls semioptimal gelöst. Das können andere besser, ein kleiner Fleck auf der sonst strahlend weisen Weste.

Gruß
puntarenas

Benutzeravatar
nitronix
Beiträge: 48
Registriert: 12.03.2004 12:38:15
Wohnort: Berlin

Beitrag von nitronix » 23.01.2006 21:47:03

Hi,
schon mal "file-rc" probiert ?
Bei einem Kumpel läuft es soweit ganz gut. Es gibt nur noch eine Config-Datei und Dienste bleiben nach einem Paket-Update ebenfalls deaktiviert, wenn gewünscht.

Ciao. NitroniX

Benutzeravatar
puntarenas
Beiträge: 712
Registriert: 28.05.2005 15:07:05

Beitrag von puntarenas » 24.01.2006 18:28:30

Description: Alternative boot mechanism using a single configuration file
Klingt einerseits sehr vielversprechend, andererseits verschiebe ich diese recht grundlegende Änderung am System erst einmal, bis ich Zeit und Muse habe mich eingehend damit zu befassen.

Danke für den Tip,
puntarenas

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 24.01.2006 19:42:21

Die Paketmaintainer sollen/müssen update-rc.d verwenden (Debian Policy)
update-rc.d verändert diese Links jedoch nicht, wenn mindestens ein Link bereits existiert:
man update-rc.d hat geschrieben: If any files /etc/rcrunlevel.d/[SK]??name already exist then update-
rc.d does nothing. This is so that the system administrator can rear-
range the links, provided that they leave at least one link remaining,
without having their configuration overwritten.
Daher brauchst du also nur einen Link übrig lassen, damit deine Konfiguration durch ein Update nicht verändert wird.
rcconf berücksichtigt dies auch:

Code: Alles auswählen

root@gms1:~# find /etc -name "K??ssh*"
/etc/rc0.d/K00ssh
/etc/rc1.d/K00ssh
/etc/rc2.d/K00ssh
/etc/rc3.d/K00ssh
/etc/rc4.d/K00ssh
/etc/rc5.d/K00ssh
/etc/rc6.d/K00ssh
Gruß
gms

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Beitrag von novalix » 24.01.2006 20:10:14

hi puntarenas,

versuch doch mal folgendes:
1. du entfernst die symlinks des start-scripts, wie du es oben angegeben hast mit

Code: Alles auswählen

update-rc.d -f <dienst-der-nicht-laufen-soll> remove
2. du aenderst die startskripte des dienstes so, dass er in jedem runlevel auf kill zeigt

Code: Alles auswählen

update-rc.d <dienst-der-niemals-starten-soll> stop 0 0 1 2 3 4 5 6 .
(der punkt gehoert zur syntax)
dann kannst du mit <aufruf-zur-paketinstallation-deiner-wahl :)> --reinstall <der-test-dienst>
ausprobieren ob 's klappt.
bei diensten, die du hin und wieder haendisch starten willst, musst du dann allerdings vorher die policy wieder aendern (zb auf die defaults zuruecksetzen)

Code: Alles auswählen

update-rc.d <dienst-der-jetzt-doch-laufen-soll> defaults
das ist wohl eher 'ne sledgehammer-methode und geht bestimmt auch eleganter. aber:
"es kommt der tag, da will die saege saegen" :wink:

ciao, niels
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

Antworten