Daten|teiler
Kopieren als Kulturtechnik

PowerShell in openSUSE Leap 42.2 installieren

12. März 2017 von Christian Imhorst

PowerShell gibt es schon länger für Linux-Systeme, allerdings nur für Ubuntu und CentOS. Wobei die Installation unter Fedora mit dem CentOS-Paket auch geklappt hat. Seit Version 6.0.0-alpha.17 ist die PowerShell auch für weiter Distributionen verfügbar, auch für openSUSE, allerdings nur für Version 13.2 und nicht für Leap.

Wenn man der Anleitung auf GitHub für openSUSE folgt, kann man das RPM-Paket zwar installieren, erhält aber beim Start der PowerShell eine Fehlermeldung:

$ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
$ sudo zypper install https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.17/powershell-6.0.0_alpha.17-1.suse.13.2.x86_64.rpm
$ powershell
Failed to initialize CoreCLR, HRESULT: 0x80131500

Auf einem standardmäßig eingerichtetem openSUSE Leap 42.2 scheint der PowerShell etwas zu fehlen, vermutlich eine bestimmte Bibliothek. Mit folgendem Befehl kann man herausfinden, welche das sein könnte:

$ sudo find /opt/microsoft/powershell/6.0.0-alpha.17/ -name '*.so' -type f -print | xargs ldd | grep 'not found'
...
      liblldb.so.3.5.0 => not found
      libicuuc.so.53.1 => not found
      libicui18n.so.53.1 => not found
      liblttng-ust.so.0 => not found

Jetzt kennt man zwar die Probleme, kann aber bei der Beschaffung der Programme auf weitere Hindernisse stoßen. Denn das Programm icu, von dem man die Bibliothek libicuuc.so in der Version 53.1 benötigt, gibt es in den Repositories von Leap nur die Version 52.1, was zu niedrig ist.

$ zypper info icu
...
Informationen zu Paket icu:
---------------------------
Repository         : openSUSE-Leap-42.2-Oss                                   
Name               : icu                                       
Version            : 52.1-11.5                                 
Arch               : x86_64                                    
Anbieter           : openSUSE
Installierte Größe : 541,4 KiB                                 
Installiert        : Ja                                        
Status             : aktuell                                   
Zusammenfassung    : International Components for Unicode      
Beschreibung       :                                           
    ICU is a set of C and C++ libraries that provides robust and
    full-featured Unicode and locale support. The library provides calendar
    support, conversions for many character sets, language sensitive
    collation, date and time formatting, support for many locales, message
    catalogs and resources, message formatting, normalization, number and
    currency formatting, time zone support, transliteration, and word,
    line, and sentence breaking, etc.
 
    This subpackage contains the runtime programs for interacting with ICU.

Nach einer kurzen Suche auf software.opensuse.org findet man die Version 53.1 in einem Repo für Tumbleweed für die Sprache R. Für die Installation von PowerShell wird es vorübergehend hinzugefügt:

$ sudo zypper ar http://download.opensuse.org/repositories/devel:/languages:/R:/released/openSUSE_Tumbleweed/ R
$ sudo zypper refresh
$ sudo zypper install icu-53.1-70.1.x86_64 lttng-ust

Nach der Installation wird das Repository wieder entfernt und das Paket icu mit Zypper gegen ein Downgrade auf die alte Version gesperrt. Genau das versucht Zypper nämlich, sobald das Repo, in dem die Version 53.1 enthalten war, fehlt:

$ sudo zypper rr http://download.opensuse.org/repositories/devel:/languages:/R:/released/openSUSE_Tumbleweed/ R
$ sudo zypper addlock icu
$ sudo zypper refresh
$ sudo zypper update

Mit der aktuellen Version von icu kann man jetzt PowerShell unter openSUSE Leap ausführen.

PowerShell und openSUSE

Have a lot of fun!

Geschrieben in Gnu/Linux, OpenSuse, Powershell

Einen Kommentar schreiben

Bitte beachten: Du kannst den Text mit den Tags <strong></strong>, <em></em> und
<code></code> formatieren. Der Kommentar wird moderiert und es mag einige Zeit vergehen,
bis er erscheint. Du brauchst deinen Kommentar also kein weiteres Mal abschicken.