Primum non facere! - czyli nie rób u kogoś w systemie burd*

Nie pamiętam już jak długo jestem czynnym uczestnikiem różnego rodzaju forów internetowych dotyczących linuksa. W niektórych uczestniczę w istocie czynnie, inne jedynie przeglądam. Na jednych byłem, na innych jestem teraz. I... i bardzo bym chciał, by tym doradzającym przyświecała tytułowa, łacińska zasada. Medyczna przede wszystkim, ale chyba wszyscy winni sobie ją wziąć do serca i stosować w dowolnej dziedzinie, w której chcą komuś radzić.
Do napisania mnie tego felietonu zainspirowały mnie farmazony znalezione w pewnym wątku na pewnym forum. Kompletny brak zrozumienia podstaw używanego przez siebie systemu, kompletny brak zrozumienia jego odmienności od innego, spowodował, że dobrą :) poradą stało się dostarczenie systemowi repozytorium dla innego systemu. W tym przypadku jest to tzw. nieoficjalne repozytorium dla Archa, które ktoś proponuje używać w Manjaro, ale problem dotyczy również repozytoriów/paczek Ubuntu w Debianie (czy odwrotnie) itp. Można tych przykładów mnożyć.
Zatem po pierwsze rozwiązanie takie jest totalną głupotą! I nie ma tu żadnego znaczenia, że coś takiego "u mnie działa" itp. Proponowanie zaś komuś zastosowania czegoś takiego jest natomiast przykładem skrajnej nieodpowiedzialności radzącego. Przy okazji pokazuje, że doradzający :) ma absolutnie małą wiedzę o systemie/-ach, a że zwykle taki człowiek jest stałym bywalcem jakiegoś forum, niejednokrotnie pełniąc tam jeszcze jakąś funkcję (np. moderatora), to osoby mało obeznane w systemie, dopiero co zaczynające z nim przygodę, traktują taką poradę jako wyrocznię. Cóż - równie dobrze i skutecznie można byłoby doradzić: skasuj sobie system, sformatuj dysk itp. oczywiście w jakiejś formie konsolowego polecenia, którego ów dopiero startujący raczej nie zrozumie.
Dlaczego jestem tak kategoryczny? Bo inaczej być nie może.
Skoro odnoszę się do tandemu Arch i Manjaro, to na tym przykładzie pokażę na czym głupota takich porad polega.
Przede wszystkim należy sobie uświadomić jedną rzecz: wbrew idiotyzmom wciskanym przez światłych znawców systemów linuksowych - Manjaro to nie jest "Arch z ludzką twarzą". To nie jest "Arch dla każdego". To nie jest... i tu można wymienić cokolwiek, co wskazywałoby na to, że Manjaro "jest" Arch Linuksem. Nie jest. Podobnie jak Ubuntu nie jest Debianem. Fakt, że Manjaro używa paczek z Archa nie stanowi o tym, że jest Archem. Pomijając różne kwestie, z omawianego punktu widzenia istotne jest, że Manjaro oferuje paczki Archa przesunięte w czasie w stosunku do momentu, w którym pokazują się one w Archu. Niekiedy ten czas jest krótszy, niekiedy dłuższy - nie ma to znaczenia. Grunt, że stabilne wydanie Manjaro jest wobec stabilnego repozytorium Archa przesunięte w czasie.
Repozytoria nieoficjalne dla Archa - jeśli są prawidłowo zarządzane - są przygotowywane z myślą o Archu. Oznacza to, że są one budowane na podstawie paczek w wersjach, w jakich w danym momencie znajdują się one w repozytoriach Archa. Ba, w niektórych przypadkach repozytoria te prowadzone są zarówno w sposób kompatybilny z repozytorium stabilnym, jak i testowym.
Kiedyś już wspominałem przy innej okazji, że PKGBUILDy niezmiernie rzadko zawierają informacje o zależnościach w konkretnej wersji. Najczęściej posługują się jedynie nazwą paczki, albowiem zakładają, że system jest aktualizowany w całości i w sposób ciągły. Ba, zakładają, że instalacja jakiegoś oprogramowania również połączona jest z aktualizacją systemu. W przeciwnym przypadku dochodzi do tzw. częściowej aktualizacji, która nie jest w Archu (przez pacmana) wspierana. Innymi słowy, jeśli np. zależnością kate jest ktexteditor, to ta aplikacja jedynie wie, że ma korzystać z frameworka o owej drugiej nazwie. Nic więcej. Jednocześnie pierwsza paczka jest budowana w oparciu o drugą paczkę, która występuje w określonej wersji. Ba, w tym przypadku nawet plik, który buduje tę aplikację ma zadeklarowane w jakiej wersji ma znajdować się framework, na którym jest oparta i zbudowana. W konsekwencji może to powodować, że w systemie, w którym dostarczymy kate zbudowane na określonej wersji ktexteditor paczka będzie działać, ale wyłącznie wówczas, gdy znajdująca się w systemie ktexteditor odpowiada tej wersji, na której została zbudowana kate. Możemy sobie teraz wyobrazić, że owe kate będzie wykorzystywane jeszcze przez następną aplikację, a ta jeszcze przez następną itd.
Przypuśćmy zatem, że takie kate zainstalowaliśmy sobie w Manjaro z nieoficjalnego repozytorium dla Archa. W Manjaro jest oczywiście ktexteditor, ale może on być w innej wersji niż ta, na której zostało zbudowane kate znajdujące się w owym nieoficjalnym repozytorium. W efekcie kate może działać w Manjaro (co będzie przypadkiem, a nie regułą), ale może wcale nie działać. Dodatkowo jeśli dostarczymy systemowi repozytorium, to niezależnie od jakiegokolwiek aurhelpera, będzie ono miało priorytet przed wszystkimi paczkami, jakie zbudowane mamy w systemie z AUR. Prawidłowo wykonana aktualizacja systemu doprowadzi zatem również do aktualizacji tych paczek (i pomijam sens instalacji paczek z AUR w Manjaro). Jeśli nie dokonamy tego od razu, to notyfikator tego typu jak zawarty w pamac za chwilę nas powiadomi.
Czy już wystarczy dla zrozumienia proponowanej głupoty?
Pół biedy jeśli instalowana paczka jest "na samej górze" zależności, jest aplikacją, której nie wykorzystuje jakakolwiek inna paczka itd. W tym przypadku po prostu aplikacja nie będzie działać prawidłowo, a najczęściej po prostu się nie uruchomi. Jeśli jednak dostarczając systemowi obce repozytorium, dostarczymy również w niewłaściwej w tym systemie wersji zależności jakiejś innej paczki, to do destabilizacji systemu bardzo niedaleko.
Czy doprawdy tak trudno przyjąć sobie za nienaruszalną zasadę: primum non facere? I nawet jeśli jakieś rozwiązanie "u mnie działa", to jeśli nie jest ono zgodne z danym systemem, to po prostu wstrzymać się z idiotycznymi poradami: zainstaluj sobie obce dla systemu repozytorium.
I proszę wybaczyć - nie wytrzymałem, bowiem głupoty znieść nie mogę.

PS: I by nie było niedopowiedzeń. Powyższy tekst w żadnym przypadku nie jest jakąkolwiek krytyką Manjaro. Arch i Manjaro to tylko przykład. Równie dobrze mógłby dotyczyć jakichkolwiek innych dwu dystrybucji, w których można "skrzyżować" repozytoria. Przynajmniej na pierwszy rzut oka. Tekst jest - jak w tytule - o niefrasobliwości porad na forach. Dopisek zaś dla osób, które tego nie zrozumiały.

Komentarze

Popularne posty z tego bloga

Brak możliwości aktualizacji lub instalacji pakietów - zablokowana baza

Radzimy sobie z: GPG: odbiór z serwera kluczy nie powiódł się: brak dirmngr

Ukryte sztuczki Firefox