Regressionen in Version 10.2.1

Regressionen in Version 10.2.1

Postby hbuhrmester » 12.11.2015, 22:54

Das Skript DownloadUpdates.sh aus Version 10.2.1 enthält im Vergleich zu Version 10.2 zwei Regressionen:
  1. Die Unterscheidung zwischen Linux und Mac OS X fehlt.
  2. Doppelte Anführungszeichen um den Parameter "$0" fehlen.

Das readlink aus Mac OS X unterstützt die Option -f nicht. Deshalb wurde im ursprünglichen Code die Unterscheidung zwischen Linux und *BSD/Darwin eingeführt. Jetzt fehlt diese Unterscheidung.

https://stackoverflow.com/questions/105 ... f-on-a-mac

Eine Alternative für Mac OS X wäre greadlink = GNU readlink, das über die MacPorts installiert werden kann. Das wurde auch in diesem Forum schon einmal diskutiert. Allerdings müsste man erst testen, ob greadlink installiert ist, und ansonsten das normale BSD readlink verwenden.

viewtopic.php?f=9&t=4343

Das readlink auch FreeBSD dagegen kennt die Option -f. Es ist ein anderes Programm, verhält sich aber wie GNU readlink.

https://www.freebsd.org/cgi/man.cgi?query=readlink

Mit readlink kann man den vollständigen Installationspfad des Skripts herausfinden. Dieser kann auch Leerzeichen enthalten. Deshalb sollte der Parameter "$0" in doppelte Anführungszeichen eingeschlossen werden. Auch das Ergebnis von readlink sollte wiederum in doppelte Anführungszeichen eingeschlossen werden. Im ursprünglichen Code war das wenigstens halb richtig. Jetzt fehlen die Anführungszeichen ganz.

Es kann ja sein, dass es in einfachen Fällen trotzdem funktioniert, zum Beispiel wenn der Pfad eben keine Leerzeichen enthält. Aber die ganze Geschichte mit readlink hatte doch den Sinn, den Pfad zu normalisieren, sodass er immer zuverlässig aufgelöst werden kann, egal wie man das Skript aufruft: aus einem anderen Verzeichnis heraus, mit symbolischen Links, oder wenn der Pfad Leerzeichen enthält.

Zum Beispiel habe ich einen Ordner:

Code: Select all
~/tmp/WSUS Offline Update/wsusoffline1021/sh


Wenn ich versuche, das Skript direkt aus dem Homeverzeichnis aufzurufen, schlägt es kläglich fehl:

Code: Select all
~$ tmp/WSUS\ Offline\ Update/wsusoffline1021/sh/DownloadUpdates.sh
basename: extra operand `Update/wsusoffline1021/sh/DownloadUpdates.sh'
Try `basename --help' for more information.
readlink: extra operand `Offline'
Try `readlink --help' for more information.
tmp/WSUS Offline Update/wsusoffline1021/sh/DownloadUpdates.sh: line 73: /commonparts.inc: No such file or directory
commonparts.inc fehlt


Ich hatte selber einmal eine Lösung vorgeschlagen, die meiner Meinung nach immer noch funktioniert, und in der alle Variablen richtig in Anführungszeichen gesetzt wurden. Aber dieser Vorschlag wurde leider ignoriert.

viewtopic.php?f=9&t=4469

Wenn ihr diesen Header unbedingt haben wollt, warum probiert ihr nicht etwas einfaches wie:

Code: Select all
header="
#########################################################################
###         WSUS Offline Update Downloader for Linux systems          ###
###                             v. 10.2.1                             ###
###                                                                   ###
###   http://www.wsusoffline.net/                                     ###
###   Authors: Tobias Breitling, Stefan Joehnke, Walter Schiessberg   ###
###   maintained by H. Hullen                                         ###
#########################################################################
"

echo "$header"
hbuhrmester
 
Posts: 525
Joined: 11.10.2013, 20:59

Return to Linux

Who is online

Users browsing this forum: No registered users and 6 guests

cron