dobra: #!/usr/bin/perl-5.8 permanent speichern?

Hallo,

Ich bin nicht sicher, ob ich mit meiner Frage hier richtig bin oder ob sie in's Perl-Forum gehört...

Die Standard Perl-Version auf meinem Server ist 5.6
Ich benötige aber 5.8 die auch mit #!/usr/bin/perl-5.8 zur Verfügung steht.

Mein Problem ist jetzt, dass meine Shop-Software diese Zeile - wenn ich sie manuell ändere - bei jedem Aktualisieren wieder mit #!/usr/bin/perl überschreibt.

Von meinem Softwaresupport habe ich keine Antwort erhalten, wie ich das lösen könnte.

Weiß vielleicht jemand hier Rat?

Vielen Dank im Voraus
dobra

  1. Hi dobra!

    Du willst also die Zeile #!/usr/bin/perl durch #!/usr/bin/perl-5.8 in diversen Scriptdateien ersetzen.
    Unter Linux geht dies mit Bordmitteln, unter Windows wirst du ein kleines Programm dafür schreiben müssen (in C(++/#), Java, VB, Delphi oder einer anderen Programmiersprache deiner Wahl).

    (Wichtig: Immer vorher ein Backup des Script - Verzeichnisses erstellen, falls irgendwas schief geht.)

    Linux: find {absoluterPfadScriptVerzeichnis, BSP /srv/www/cgi-bin} -type f -name '*.{scriptEndung, BSP pl}' -exec sed -i "s/^#!/usr/bin/perl/#!/usr/bin/perl-5.8/" {} ;

    Was tut das? Es findet alle Dateien im Verzeichnis absoluterPfadScriptVerzeichnis, die der Form *.scriptEndung entsprechen und wendet auf die gefundenen Dateien die Regel an, dass der erste im Inhalt am Zeilenbeginn stehende String #!/usr/bin/perl ersetzt wird durch #!/usr/bin/perl-5.8.

    Viele Grüsse,
    Richard

    1. hallo,

      Du willst also die Zeile #!/usr/bin/perl durch #!/usr/bin/perl-5.8 in diversen Scriptdateien ersetzen.
      Unter Linux geht dies mit Bordmitteln, unter Windows wirst du ein kleines Programm dafür schreiben müssen

      Unter Windows ist diese shebang sowieso ungültig, da es diesen Pfad gar nicht geben kann. Werden Scripts mit dieser shebang trotzdem ausgeführt, so liegt das an "ScriptInterpreterSource registry".

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Unter Windows ist diese shebang sowieso ungültig, da es diesen Pfad gar nicht geben kann.

        Moment, das ist nicht ganz richtig. Zutreffend ist, dass Win32-Systeme mit der Shebang grundsätzlich nichts anzufangen wissen, was dazu führt, dass Perl-Scripte von Haus aus nicht ausführbar sind. Falsch ist allerdings, dass oben stehende Shebang ungültig ist, weil es den Pfad nicht gibt. Wird ein solches Script nämlich im CGI-Kontext unter Zuhilfenahme eines lokal installierten Webservers ausgeführt, ist auch unter Windows die Shebang eine mögliche Information für die Serversoftware, wo es den Perlinterpreter findet. Und die genannte Shebang ist unter Win32 theoretisch möglich.

        Siechfred

        --
        Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
        1. hallo,

          die genannte Shebang ist unter Win32 theoretisch möglich.

          Meines Wissens nicht. Sie wäre möglich in ungefähr dieser Form:
             #!C:/usr/bin/perl-5.8

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Hallo Christoph!

            Meines Wissens nicht. Sie wäre möglich in ungefähr dieser Form:
               #!C:/usr/bin/perl-5.8

            Wir hatten uns doch über Perlhühner unterhalten...

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            Nichts ist unmöglich? Doch!
            Heute schon gegökt?
      2. Hi Christoph!

        Unter Windows ist diese shebang sowieso ungültig, da es diesen Pfad gar nicht geben kann.

        Unabhängig von der unten folgenden Diskussion gebe ich zunächst zu, dass meine Kenntnisse auf Windows Serversystemen eher beschränkt sind. ABER: nicht immer ist die "Entwicklungsumgebung" auf die "Produktivumgebung", so dass der OP durchaus ein Windows-Admin sein kann, der seinen (Linux-)Webserver halt mit ftp und/oder Admin Werkzeugen bedient/wartet.
        Deshalb könnte es durchaus sein, dass der OP die Skripte gerne unter der "geliebten, bekannten" Windowsumgebung vor dem upload modifizieren würde...

        Grüsse,
        Richard

  2. hallo,

    Die Standard Perl-Version auf meinem Server ist 5.6

    Ist ein bißchen alt. Allerdings gibt es Provider, die mehrere Perl-Versionen parallel anbieten und es dem "user" freistellen, welche er benutzen will. Du solltest dich zunächst informieren, wie denn die Server-Konstruktion aussieht.

    Ich benötige aber 5.8 die auch mit #!/usr/bin/perl-5.8 zur Verfügung steht.

    In der shebang auch noch die Perl-Version anzugeben ist nicht sehr günstig, aber natürlich möglich.

    Mein Problem ist jetzt, dass meine Shop-Software diese Zeile - wenn ich sie manuell ändere - bei jedem Aktualisieren wieder mit #!/usr/bin/perl überschreibt.

    Vermutlich ist das sogar korrekt. /usr/bin/perl ist in sehr vielen Fällen sowieso nur ein Systemlink auf den Perl-Interpreter, und der muß nicht einmal im selben Verzeichnis liegen.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|