Wie kommt dieses Programm auf meinem Rechner …

Manchmal sitzt man an Terminal und schaut sich mit htop die Auslastung des Rechners an. Dabei fallen einem so manche neue Programme auf die man bisher noch nicht entdeckt hat. Im nachfolgenden Fall das Programm beam.smp.

Interessant sind nun zwei Dinge, erstens was macht das Programm überhaupt und zweitens wer hat das veranlasst das dieses Programm installiert ist, dauernd läuft und damit Speicherplatz und Rechnerzeit frisst?

Ermitteln welches Debian/Ubuntu Paket das Programm installiert hat ist einfach:

# dpkg -S beam.smp
erlang-base: /usr/lib/erlang/erts-6.2/bin/beam.smp

Nun kann mit dem Paketnamen erlang-base die Paketinformation abgerufen werden.

# aptitude show erlang-base
Paket: erlang-base
Zustand: Installiert
Automatisch installiert: nein
Version: 1:17.3-dfsg-4
Priorität: optional
Bereich: interpreters
Verwalter: Debian Erlang Packagers <pkg-erlang-devel@lists.alioth.debian.org> Architektur: amd64
Unkomprimierte Größe: 13,4 M
Hängt ab von: procps, adduser, libc6 (>= 2.14), libsystemd0, libtinfo5, zlib1g (>= 1:1.2.2), init-system-helpers (>= 1.18~)
Empfiehlt: libsctp1 (>= 1.0.16+dfsg), erlang-crypto (= 1:17.3-dfsg-4), erlang-syntax-tools (= 1:17.3-dfsg-4)
Schlägt vor: erlang-tools (= 1:17.3-dfsg-4), erlang, erlang-manpages, erlang-doc
Kollidiert mit: erlang (< 1:17.3-dfsg-4), erlang (< 1:17.3-dfsg-4), erlang-base-hipe, erlang-base-hipe, erlang-doc (> 1:17.3-dfsg-999), erlang-doc (> 1:17.3-dfsg-999), erlang-doc (<
1:17.3-dfsg), erlang-doc (< 1:17.3-dfsg), erlang-doc-html (< 1:13.b.4), erlang-doc-html (< 1:13.b.4), erlang-manpages (<= 1:11.b.1-2), erlang-manpages (<= 1:11.b.1-2),
erlang-base
Ersetzt: erlang (< 1:17.3-dfsg-4), erlang (< 1:17.3-dfsg-4), erlang-base-hipe, erlang-base-hipe, erlang-dev (< 1:17.3-dfsg-4), erlang-dev (< 1:17.3-dfsg-4), erlang-doc (>
1:17.3-dfsg-999), erlang-doc (> 1:17.3-dfsg-999), erlang-doc (< 1:17.3-dfsg), erlang-doc (< 1:17.3-dfsg), erlang-doc-html (< 1:13.b.4), erlang-doc-html (< 1:13.b.4),
erlang-examples (< 1:17.3-dfsg-4), erlang-examples (< 1:17.3-dfsg-4), erlang-manpages (<= 1:11.b.1-2), erlang-manpages (<= 1:11.b.1-2), erlang-mode (< 1:12.b.1-dfsg-2),
erlang-mode (< 1:12.b.1-dfsg-2), erlang-nox (< 1:17.3-dfsg-4), erlang-nox (< 1:17.3-dfsg-4), erlang-src (< 1:17.3-dfsg-4), erlang-src (< 1:17.3-dfsg-4), erlang-x11 (<
1:17.3-dfsg-4), erlang-x11 (< 1:17.3-dfsg-4)
Liefert: erlang-abi-15.b, erlang-abi-17.0
Beschreibung: Virtuelle Maschine für Erlang/OTP und Basisanwendungen
Dieses Paket enthält eine Erlang/OTP-Laufzeitumgebung. Sie wurde ohne HiPE-Unterstützung konfiguriert und erstellt (sie kompiliert nur zu Byte-Code). Das Paket enthält ferner einen
minimalen Satz an Erlang-Anwendungen:
compiler - kompiliert Erlang-Quelltexte zu Byte-Code;
erts - die Erlang-Laufzeitsystemanwendung;
kernel - Programm-Code zum Starten des Erlang-Laufzeitsystems;
ose - Code für das Betriebssystems Enea OSE;
sasl - die Systemarchitektur unterstützende Bibliotheksanwendung;
stdlib - Module zur Änderung von Listen, Zeichenketten, Dateien, usw.
Homepage: http://www.erlang.org/

Markierungen: devel::interpreter, role::program, uitoolkit::nurses

Über den Sinn dieses Paket sagt das leider noch nichts aus. Eine Auskunft über das Mutterpaket liefert aber folgendes.

aptitude show erlang
Paket: erlang
Zustand: nicht installiert
Version: 1:17.3-dfsg-4
Priorität: optional
Bereich: interpreters
Verwalter: Debian Erlang Packagers <pkg-erlang-devel@lists.alioth.debian.org> Architektur: all
Unkomprimierte Größe: 51,2 k
Hängt ab von: erlang-base | erlang-base-hipe, erlang-dev, erlang-asn1, erlang-common-test, erlang-corba, erlang-crypto, erlang-debugger, erlang-dialyzer, erlang-diameter, erlang-edoc,
erlang-eldap, erlang-erl-docgen, erlang-et, erlang-eunit, erlang-gs, erlang-ic, erlang-inets, erlang-megaco, erlang-mnesia, erlang-observer, erlang-odbc, erlang-os-mon,
erlang-parsetools, erlang-percept, erlang-public-key, erlang-reltool, erlang-runtime-tools, erlang-snmp, erlang-ssh, erlang-ssl, erlang-syntax-tools, erlang-test-server,
erlang-tools, erlang-typer, erlang-webtool, erlang-wx, erlang-xmerl
Empfiehlt: erlang-jinterface, erlang-ic-java, erlang-mode, erlang-src, erlang-examples
Schlägt vor: erlang-manpages, erlang-doc
Beschreibung: Simultane, verteilte und funktionelle Echtzeitsprache
Die quelloffene, funktionale Programmiersprache Erlang wurde am Ericsson Computer Science Laboratory konzipiert.

Einige der Hauptmöglichkeiten von Erlang sind:
* Klare, deklaratorische Syntax und weitgehend frei von Nebeneffekten;
* Eingebaute Unterstützung für Echtzeit-, simultane und verteilte Programmierung;
* Für die Entwicklung von robusten und fortlaufend verarbeiteten Programmen konzipiert;
* Dynamische Ersetzung von Code zur Laufzeit.

Die Erlang-Veröffentlichung enthält auch OTP (Open Telecom Platform), das einen reichen Satz an Bibliotheken und Anwendungen liefert.

Dieses Pseudopaket installiert Laufzeit, Anwendungen, Quelltext und Code-Beispiele für Erlang/OTP sowie den Erlang-Bearbeitungsmodus für Emacs.
Homepage: http://www.erlang.org/

Markierungen: devel::TODO, devel::interpreter

Nun Gut, es handelt sich also um einen sicheren Interpreter für etwas das fortlaufend arbeiten soll. Das Was? und Warum? bleiben hier aber immer noch unbeantwortet.

Ermitteln wir mal warum dieses Paket eigentlich installiert wurde.

# aptitude why erlang-base
i cinnamon-core Hängt ab von cinnamon (>= 2.2)
i A cinnamon Hängt ab von libjs-jquery
i A libjs-jquery Empfiehlt javascript-common
i A javascript-common Schlägt vor apache2 (>= 2.4.6~) | lighttpd | httpd
i A yaws Liefert httpd
i A yaws Hängt ab von erlang-yaws (>= 1.98-4)
i A erlang-yaws Hängt ab von erlang-base (>= 1:17.1-dfsg) | erlang-base-hipe (>= 1:17.1-dfsg)

Ah, das sind die richtigen Hinweise, es handelt sich um ein Paket das vom cinnamon-core dem Desktop Manager, über die libjs-jquery, javascript-common und schliesslich als httpd (Webserver) in Form von yaws installiert worden. Wie angezeigt, täten es genauso gut apache2, lighttpd oder httpd. Hier wurde bei der Installation automatisch yaws ausgewählt, da der Dienst vielleicht besonders klein und Resources sparend oder wie oben erwähnt besonders sicher ist. Oder was auch immer …

Ein nahtloser Austausch der httpd Funktionalität wird mit dem Kommando:

# aptitude install lighttpd yaws-

erreicht.

Das besondere daran ist das nachfolgende – Minuszeichen hinter dem zu ersetzenden Paketnamen. Es ist damit der Neuinstallation des Paketes lighttpd nicht im Weg und es wird trotzdem eine komplette Deinstallation von allen abhängigen Paketen vermieden. Wäre das im diesen Fall erfolgt, hätte das den Desktop Manager (cinnamon-core) betroffen, was nahezu erstmal das halbe System deinstallieren hätte.

Das das Paket aber nur empfohlen wird, kann es potentiell auch entfernt werden hier würde ein

# aptitude remove javascript-common

die Sache bei der Wurzel packen und das System davon maximal befreien.