Archiv der Kategorie: Linux

Bash und source

Vor kurzem hatten ein Kollege und ich mit einem seltsamen Phänomen in einem Bash-Skript zu kämpfen.

Wir hatten zwei Skripte skript.sh und konfig.sh.

skript.sh:

#!/bin/bash
variable="abc"
if [ -e konfig.sh ]
then
    source konfig.sh
fi

konfig.sh:

#!/bin/bash
variable="def"

Als wir aber nun skript.sh ausführten, hatte die Variable variable aber den Wert xyz.

Nach einigem Rumprobieren und Investigieren stellte sich heraus, dass es auf dem System noch eine zweite Datei mit dem Namen konfig.sh gab – und zwar in einem Verzeichnis, das in der PATH-Variable enthalten war.

Der source-Befehl schaut zuerst in den Verzeichnissen der PATH-Variable nach der Datei konfig.sh. bevor es im lokalen Verzeichnis sucht. Weil aber konfig.sh nicht als ausführbar markiert war, konnte man es nicht per which finden, was die Problemfindung etwas erschwerte.

Die Konsequenz war, das skript.sh wie folgt zu ändern:

#!/bin/bash
variable="abc"
if [ -e ./konfig.sh ]
then
    source ./konfig.sh
fi

Rolling Release für Ubuntu?

Dieser Artikel von mir ist bereits am 23.01.2013 auf ikhaya.ubuntuusers.de erschienen. Er steht unter der Lizenz Creative Commons BY-NC-SA 2.0.


12.04 – 12.10 – 13.04 – 13.10. Die Versionsnummern der letzten und der nächsten Ubuntuversionen zeigen ein eingängiges Schema. Alle sechs Monate wird eine Version veröffentlicht.

Ab 14.04 könnte sich das aber ändern. Wie in einem Google+ Hangout mitgeteilt wurde, gibt es bei Canonical – der Firma hinter Ubuntu – Diskussionen, ob man auf einen zweijährigen Rhythmus umstellen sollte. Zwischen diesen LTS-Veröffentlichungen (Long Term Support) würde dafür Ubuntu als Rolling Release gepflegt werden.

Der Status Quo

Derzeit ist Ubuntu release-basiert. Canonical gibt alle sechs Monate eine Ubuntuversion heraus, die dann für 18 Monate bzw. 5 Jahre mit Fehlerbereinigungen und Sicherheitsupdates versorgt werden. Wenn aber von einer Software eine komplett neue Version erscheint, fließt diese Version nicht in die schon veröffentlichten Versionen ein. So wird z.B. 12.04 immer nur LibreOffice 3.5.x beinhalten aber nie 3.6 oder höher.

Dieser Ansatz bietet einige Vorteile – vor allem für Firmen. Je länger eine Ubuntuversion existiert, desto stabiler werden ihre Programme, da immer mehr Fehler behoben werden. Außerdem kann man sich immer sicher sein, dass ein Programm sich nach einem Update genauso verhält wie zuvor.

Jedoch kommt ein Nutzer nicht in den Genuss von Verbesserungen in neueren Programmversionen. So gibt es z.B. in 12.04 noch nicht den GIMP-Einfenstermodus. Außerdem gibt es Nutzer, die das halbjährliche Update auf eine neue Ubuntuversion stört.

Der Rolling-Release-Ansatz

„Rolling Release“ („fortlaufende Veröffentlichung“) ist ein Ansatz, der schon von anderen Linux-Distributionen erfolgreich umgesetzt wird. Debian Sid, ArchLinux und Gentoo sind Beispiele. Neue Programmversionen, aber auch Fehlerkorrekturen und Sicherheitsupdates werden so schnell wie möglich an den Nutzer der Distribution weitergereicht. Natürlich werden die Updates vorher vom Distributor getestet. Der Nutzer ist also immer auf dem neuesten Stand.

Im Falle von Ubuntu denkt Canonical darüber nach, eine Rolling-Release-Version anzubieten und alle zwei Jahre eine LTS-Version herauszubringen, die dann nach dem bekannten Ansatz gepflegt wird. Dieser Ansatz wäre dem Nutzerverhalten von Debian ähnlich. Dort gibt es Debian Sid als Rolling Release und Debian Stable als release-basierte Version für den Desktop.

Die Vorteile liegen auf der Hand. Nutzer, die auf Stabilität achten, nutzten die LTS-Veröffentlichungen und müssten sich nicht umgewöhnen. Nutzer, die immer auf dem neuesten Stand bleiben wollen, installierten sich einmal die Rolling-Release-Version von Ubuntu und müssten sich um nichts mehr kümmern; Kernel und Treiber würden z.B. immer auf dem neuesten Stand sein und so die Installation auf neuer Hardware erleichtern.

Nachteile gibt es aber auch. Starke Veränderungen (z.B. in Bedienkonzepten) können Nutzer irritieren und Programme, die plötzlich ihre Daten in völlig anderen Dateiformaten ablegen, brechen Kompatibilitäten. Auch die Gefahr, dass bei einem normalen Programmupdate etwas kaputt geht, könnte steigen.

Das alles ist aber im Moment noch ein Gedankenspiel, entschieden ist noch nichts. Die Umstellung böte jedoch Chancen, flexibler auf Neuerungen zu reagieren und versierte Nutzer zu Ubuntu zu bringen, die das bisherige Releasemodell als zu konservativ empfanden. Andererseits könnten Nutzer mit diesem Modell unzufrieden sein, außerdem gäbe es nur noch alle zwei Jahre eine Releaseparty.

Die Diskussion läuft.

Quellen: heise.de und arstechnica.com

Ralink RT2500 Treiber-Bug

Bei der Installation von Debian Testing (Jessie) auf einem Rechner mit einer Ralink-WLAN-Karte hatte ich das Problem, dass nach einer bestimmten Zeit einfach die WLAN-Verbindung zum Router abbrach. Das Neuladen des Treibers half.

Das Problem äußert sich durch folgende Fehlermeldung:

phy0 -> rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 0.

Das Problem ist ein Bug im Treiber rt2500pci. Nach einer bestimmten Zeit ohne Netzwerkverkehr wird der Stromsparmodus der WLAN-Karte aktiviert, den der Treiber nicht mehr deaktivieren kann.

Ein Workaround ist das Anlegen einer Datei in /etc/udev/rules.d/ mit folgendem Inhalt:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="rt2500pci", KERNEL=="wlan*", RUN="/sbin/iw $name set power_save off"

Der Dateiname muss auf „.rules“ enden, damit udev die Regel anwendet.