От Майкрософт се не само се опитват, но изглежда и успяват да въведат лошите си практики и при Linux, неспазвайки никакви правила. Наскоро публикуваният .deb пакет на Open R за Linux дистрибуциите Debian и Ubuntu, който представлява отворен вариант на R езика, нанася системни промени, които са абсолютно недопустими и могат да доведат до големи проблеми в операционната система.
Ако Linux се слави със своята стабилност, то това вече не е така след като до него има допир Microsoft. И докато потребителите на Windows са свикнали с подобно поведение и с всевъзможните проблеми, които им биват сервирани ежедневно, то при Linux това е нещо ново и не бива да бъде допускано при никакви обстоятелства.
Norbert Prenning е решил да изпробва новия пакет на Microsoft или както самият той казва – по-скоро се е престрашил и разказва колко е шокиран от некомпетентността на Microsoft при пакетирането. Той вижда, че от Microsoft правят недопустими грешки в пакетирането на пакета и заменят системни файлове, създавайки символични връзки, които няма да работят.
Първо Prenning обръща внимание върху конфигурационния скрипт postinstall, който се изпълнява след инсталацията на пакета. Той премахва /bin/sh, а след това създава символични връзки към /bin/bash на мястото на /bin/sh. Създаването на насилствена ln -s връзка няма да работи, при положение че стандартния пакет на R е инсталиран. Отделно, ако в системата няма /bin/bash, то /bin/sh остава премахнат и тогава потребителят получава неработеща операционна система.
CODE: Избери всички
#!/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/${VERSION}"
echo $VERSION
ln -s "${INSTALL_PREFIX}/lib64/R/bin/R" /usr/bin/R
ln -s "${INSTALL_PREFIX}/lib64/R/bin/Rscript" /usr/bin/Rscript
rm /bin/sh
ln -s /bin/bash /bin/sh
В prerm скрипта за премахване на пакета Prenning открива и други скандални грешки. В случаите когато вече има инсталиран R, скриптът за инсталация не успява да си свърши работата и завършва с грешка. При премахването на пакета пък биват премахнати и оригиналните файлове на R в /usr/bin/R и /usr/bin/Rscript и това премахване се случва без никаква проверка дали това е R, инсталиран от пакета или е оригиналният R:
CODE: Избери всички
#!/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/Rscript
rm -rf "${INSTALL_PREFIX}/lib64/R/backup"
Prenning препоръчва на Microsoft да прочетат повече за dpkg-divert и правилното пакетиране при .deb-базираните Linux дистрибуции като един бърз преглед на ръководството ще им даде достатъчно ясна представа как трябва да създават пакетите си. След това той е публикувал проблема във форумите на Open R и след известно време от Microsoft за изкарали пакет, при който тези проблеми са отстранени.
Въпреки това този случай е много тревожен, защото Microsoft тепърва навлизат в света на отворения код и докато на своя земя могат да провеждат всякакви експерименти със свикналите на това потребители, то това не бива да бъде допускано да се случва и при Linux. При всички положения е добре Linux потребителите да избягват софутер, който е на Microsoft или се разпространява от тях, за да могат да бъдат сигурни, че системите им ще продължат да работят коректно както винаги досега.