Agresywny instalator Microsoftu przyłapany na psuciu Debiana: słowa krytyki pomogły

Microsoft nigdy nie był znany z dobrej współpracy jegooprogramowania z innymi systemami. Nie tylko zresztą o współpracęchodzi – każdy, kto instalował Windowsa na dysku zawierającyminne systemy dobrze wie, że instalator Microsoftu nawet nie próbujezachować stanu aktualnego, jego sekwencja rozruchu nie przewidujeżadnych innych systemów na dysku. Tym razem jednak firma z Redmondposunęła się jeszcze dalej. Jej instalator oprogramowania naLinuksa nie tylko popełniał błędy techniczne, ale też usuwałsystemowy interpreter powłoki sh.

Agresywny instalator Microsoftu przyłapany na psuciu Debiana: słowa krytyki pomogły

15.06.2018 09:18

O czym myśleli programiści pisząc ten skrypt instalacyjny, tegochyba nikt nie zgadnie. Pierwszy konsekwencje ich pomysłów zauważyłmatematyk Norbert Preining, który postanowił na swojej maszynie zDebianem zainstalować Microsoft Open R 3.5, otwartą implementacjęjęzyka R. R jest ogromnie popularnym narzędziem do obliczeństatystycznych i wizualizacji wyników, a oferowana przez Microsoftdystrybucja wyróżnia się większą wydajnością od wersji GNU imechanizmami gwarantującymi lepszą powtarzalność wyników.

Ze stron Microsoftu pobraćmożna Open R w wersjach na Windowsa, Ubuntu, RHEL-a, SLES-a imacOS-a. W rzeczywistości wszystkie wersje linuksowe są takie same.Nie są to paczki DEB czy RPM, lecz prostu tarball (.tar.gz) zeskryptem instalacyjnym. I właśnie o ten skrypt instalacyjny jestcała afera.

#!/bin/bash #TODO: Avoid hard code VERSION number in all scripts VERSION=echo $DPKG_MAINTSCRIPT_PACKAGE | sed 's/[[:alpha:]|(|[:space:]]//g' | sed 's/\-*//' | awk -F. '{print $1 "." $2 "." $3}' INSTALL_PREFIX="/opt/microsoft/ropen/$" echo \(VERSION ln -s "\)/lib64/R/bin/R" /usr/bin/R ln -s "$/lib64/R/bin/Rscript" /usr/bin/Rscript rm /bin/sh ln -s /bin/bash /bin/sh

Po pierwsze, jak łatwo zauważyć w przedstawionych przezPreininga fragmentachkodu, skrypt instalatora zakończy pracę z błędem, jeśli wsystemie zainstalowana jest już inna, standardowa wersja R –linkowanie symboliczne nie pozwala na nadpisywanie istniejącychplików.

Po drugie, skrypt ordynarnie usuwa domyślny interpreter powłokish, a następnie (czyżby nagle ktoś sobie przypomniał, jak działalinkowanie?) zastępuje go linkiem do interpretera bash.

#!/bin/bash VERSION=echo $DPKG_MAINTSCRIPT_PACKAGE | sed 's/[[:alpha:]|(|[:space:]]//g' | sed 's/\-*//' | awk -F. '{print $1 "." $2 "." $3}' INSTALL_PREFIX="/opt/microsoft/ropen/\({VERSION}/" rm /usr/bin/R rm /usr/bin/Rscrip trm -rf "\)/lib64/R/backup"

Po trzecie, skrypt przeznaczono do deinstalacji Open R ot takkasuje sobie linki, nie sprawdzając gdzie one faktycznie wskazują.

Matematyk zasugerował, aby w Microsofcie poczytali sobie omechanizmie dpkg-divertw Debianie, pozwalającym poprawnie instalować w systemie różnewersje plików, jak również o samym budowaniu pakietów. To cobowiem zaprezentowano w skrypcie jest zdaniem Preininga takądemonstracją niekompetencji, że można tylko założyć, żezostało zrobione celowo.

Zawstydzające słowa przyniosły skutek. W ciągu dwóch dni odupublicznienia sprawy, Microsoft wydałpoprawione wersje, które zachowują się poprawnie. To wciąż tylkotarballe, ale zakładamy, że dla użytkowników Open R nie będzieto stanowiło problemu. Ważne jest to, że po zainstalowaniuinterpretera tego języka nie kończą z popsutym systemem.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (88)