Mitä tapahtuu distro upgradessa ?
Tarkoitatko jakeluversion päivitystä esim. Ubuntu 16.04 -> 18.04, vai version sisäistä normaalia päivitystä esim. komennolla sudo apt-get dist-upgrade?
Miksi siihen menee niin valtavasti aikaa ?
Jakelun päivitys versiosta toiseen on selvästi monimutkaisempi operaatio kuin puhdas asennus. En silti pitäisi Ubuntun päivitystä hitaana, verrattuna vaikkapa Windowsin päivittämiseen, jossa oikeasti menee tunteja tai pahimmillaan päiviä.
Version sisäisen päivityksen taas ei pitäisi viedä juurikaan aikaa, ellei päivitettävää ole kertynyt vuosien edestä. Esim. kuukauden välein asennettuna LTS-jakelun päivityksissä menee muutama minuutti per kerta. Riippuu toki aika paljon myös nettiyhteyden ja levyn nopeudesta.
Miksi se jokseenkin joka kerta menee puihin ?
Jakelupäivityksessä lähes kaikkien järjestelmäkomponenttien ja ohjelmien versiot vaihtuvat, ja vanhat asetukset voivat aiheuttaa ongelmia, jos ja kun kaikkea ei ole huomioitu paketoinneissa. Itse suosin tästä syystä puhdasta uudelleenasennusta, jolloin välttyy päivitykseen piileviltä bugeilta ja voi tehdä tarvittavat asetukset oikein puhtaalle alustalle.
Tavallinen version sisäinen päivitys ei muuta versioita (paitsi selaimen osalta), vaan paketteihin tulee lähinnä tietoturva- ja bugikorjauksia. Sen ei pitäisi epäonnistua juuri koskaan.
Suurin yksittäinen harmi asennuksissa on ollut php:n ja JS:n kaltaisissa paketeissa. Mitään varoittamatta uudemmasta versiosta on pudotettu jotain käskyjä pois tai parametrien järjestys on muuttunut. Tämän tuloksena on saanut käydä läpi koko webbiserverinsä etsien, mikseivät sivustot toimi, kun ne vielä eilen toimivat.
Niin, kehitys kehittyy ja ohjelmoijan on seurattava sitä. PHP:n ja muiden kielten tai sovelluskehysten osalta kannattaa pitäytyä vakaissa ja pitkään tuetuissa versioissa, jotta hyppäyksiä uuteen versioon tulee mahdollisimman harvoin.
Eikö distrojen välisiä muutoksia voisi pitää hallittuina ja harkittuina siten, että korvattaisiin osa kerrallaan ?
En itse näkisi jakelun osittaista päivittämistä kovin järkevänä, eikä se ainakaan ole helposti toteutettavissa jakelun kehittäjien kannalta. Helpompaa päivittää kertarysäyksellä koko paketti 4 - 5 vuoden välein. Jos haluat pidemmän tukiajan, kannattaa siirtyä punahattuleiriin Centosin tai kaupallisen Red Hat EL:n käyttäjäksi. Niitä tuetaan jollain tasolla 10 vuotta, missä ajassa javascript-kehityksessäkin ovat teknologiat ehtineet jo vaihtua pariin otteeseen.
Erityisesti servereissä tämä on riesa. Pitäisi tehdä klooni-kone, johom tekisi päivityksen. Jos päivitys onnistuisi, voisi sen irrottaa verkosta, muuttaa sen nimi , tehdä korjaus DHCP:lle ja vaihtaa koneet lennossa.
Kyllä. Tällainen on suositeltavaa.
Lisäys: Suosittelen tutustumaan Dockeriin ja mikropalveluihin. Niitä käyttämällä on helpompaa vakioida, ylläpitää ja päivittää palvelinasennuksia, etenkin jos eri sovellukset vaativat erilaisia versioita kirjastoista tai sovelluskehyksistä. Tämäkään ei poista sitä ongelmaa, että Dockerissa ajettavien palvelujen imaget täytyy myös pitää tietoturvan osalta ajan tasalla, ja niissäkin tulee lopulta versiohyppäyksiä, kun vanhan tuki loppuu. Imaget ovat kuitenkin parhaimmillaan hyvin yksinkertaisia verrattuna kokonaiseen jakeluun, ja niitä voi testata irrallaan samalla tai toisella tietokoneella ennen tuotantoon vientiä. Testatun imagen vaihtaminen käyttöön onnistuu sitten hyvin toteutettuna sekunneissa.