Otsikko on ehkä jossain määrin erheellinen. Minulle ei tullut paniikkia, mutta ensimmäisen päivän viiden tunnin riitely Mastodonin päivityksen kanssa nosti kylläkin ärsyyntymisen päällimmäiseksi tunteeksi. Se on urakka, joka ei ole ihan puhtaasti maallikoille tarkoitettu.
Mastodonin versioissa on toki mainittu mitä pitää päivityksissä tehdä. Se ei kuitenkaan ole varsinainen tee näin ohje, koska devaajat eivät moisia tarvitse. Tai on, jos perusta on toimiva ja ns. oikein tehty. Mutta jos muualta on jotakuinkin oppinut missä tehdään mitäkin, niin sillä ohjeistuksella useimmiten pärjää. Kunnes ei enää pärjää.
Yleensä pärjääminen loppuu kahdessa tilanteessa:
- versiovaatimukset muuttuvat
- on mennyt tekemään ominpäin jotain, johon on törmännyt netissä
Minulle tapahtui molemmat samaan aikaan. Rehellisyyden nimissä on mainittava, että en todellakaan tiedä kumpi oli muna ja kana.
Tämä on muuten vastaus siihen kumpi oli ensin. Muna oli ennen kanaa.
Roadmap ongelmiin
Olin jossain vaiheessa tuskastunut Mastodonin hitauteen versioiden ja uusien ominaisuuksien kanssa. En enää muista mitä yritin saavuttaa, mutta päätin siirtyä käyttämään nightly buildia. Se ei sitten ollutkaan ihan niin helppoa kuin luulin.
Olen hyvin amatööri, jos edes sitäkään, gitin käytössä. Ensimmäinen Mastodon-instanssini kuoli gitin takia, koska en saanut upgradetettua sitä (suomesta puuttuu terminologia, jossa päivitys version sisällä (update) ja päivitys uuteen versioon (upgrade) olisivat selkeästi erillään; siksi fingelska).
Se tapahtui aikana, jolloin AI ei ollut vielä todellisuutta. Yritin Googlella ja kaivoin digitaalista hautaa vielä syvemmäksi, kunnes se romahti ja peitti kaiken. Siihen päättyi ensimmäinen yritykseni Mastodon-ylläpitäjänä.
Mutta tuo antanee hieman taustasävyä sille miksi olin ongelmissa nightly buildin kanssa. Minulla ei ole vaadittavaa perusosaamista gitin ja GitHubin janssa. Nightly kun ei Mastodonissa ole varsinainen gitin tagi eikä mitään muutakaan sellaista, jonka tunnistaisin GitHubissa. Lisäksi sen, mikä sitten onkaan gitin terminologiassa, nimi muuttuu päivämäärittäin. Ainakin Googlen hakutulosten mukaan.
Kotitarve-adminin tuska
Sivuhuomautuksena. Mastodon on ainoa serverini, josta otan snapshotin aina ja poikkeuksetta ennen minkäänlaista update-operaatiota. Olen läksyni oppinut. Ja olen joutunut useasti myös turvautumaan snapshotista palauttamiseen, kun asiat eivät sitten edenneetkään väitetyllä tavalla.
Toinen sivuhuomautus. Mastodonissa suunnilleen kaikki ylläpidolliset toimet terminaalissa on tehty devaajien toimesta toiselle devaajalle. Soisin, että ottaisivat oppia Discoursesta. Siellä laitan tmuxin päälle, annan yhden komennon ja poistun tekemään jotain ihan muuta jonninjoutavaa. Jos asiat menevät pieleen, niin huudan apua Discoursen foorumilla ja saan apua käytännössä aina, joko kehittäjiltä tai yhteisöltä.
Mastodonissa asia ei toimi noin, ja ongelmissa olet totaalisen yksin. Eikä lyhytviesti-Mastodonissa, tai fediversessä yleisellä merkityksellä, kannata anella apua. Sitä ei saa, eikä löydä.
Menneisyydestä tähän päivään
Yritin aikoinaan nightly-fiksaatiossani ensin vaihtaa latest
versioon. Osaksi koska Mastodonini ei ollut ihan ajantasalle ja osaksi siksi, että en ihan tarkkaa tajunnut mikä latest
`edes on. Onni onnettomuudessa tietysti oli se, että olin tekemässä päivityksen suhteen oikea asiaa, vaikka en tiennyt sitä versioiden suhteen.
Build ei mennyt läpi, ja virheilmoituksia oli liikaa, joista suurinta osaa en ymmärtänyt. Tai ymmärsin suunnilleen, mutta en tiennyt miten tilanteen korjaisin.
Google ei löytänyt ratkaisua, mutta löysin scriptin, joka väitti hoitavansa updaten niin, että ollaan nightly-versiossa. Joten kokeilin sitä. Se jopa toimi.
Olin tyytyväinen. Kunnes ehkä kuukauden kuluttua ajoin päivitysscriptin uudestaan. Se ei enää toiminutkaan, ja instanssini oli polvillaan. Palautin snapshotin ja tein uuden yrityksen, mutta siirtymällä tuoreimpaan viralliseen versioon. Sen päivityksen tein Mastodonin GitHubin ohjeilla.
Sekään ei onnistunut ensimmäisellä kerralla, mutta ymmärsin, että teemat riitelivät keskenään. Olin ottanut käyttöön Mastodon BirdUI:n (anteeksi, en vaivaudu tarkistamaan oikeaa kirjoitusmuotoa). Se on kiva ulkomuotoviritys ja tekee ainakin iPadillä PWA:sta mukavamman käyttää. Sen sijaan iPhonessa Mastodonin oma PWA:na on parempi.
Koska olen käytännössä instanssini ainoa käyttäjä, niin en mieti muiden käyttäkokemuksia. Olin myös vaihtanut iPadissä Mona-appiin, joten en tehnyt BirdUI:lla sinänsä mitään. Onnistuin poistamaan sen tekemät CSS-muutokset, jonka jälkeen sain buildin tehtyä ja serverini takaisin linjoille.
Uudet ajat, uudet murheet
Aikaa kului, ehkä muutama kuukausi. En uskaltanut päivittää serveriäni. Joku mainitsi Mastodonin tulevasta quote-toiminnasta, ja että se on jo käytössä osassa instansseista, joista ainakin kahden tiesin käyttävän nightlya. Joten generoin snapshotin ja ajoin päivitysscriptin.
Toivomani succé olikin odottaen pelkäämäni katastrofi, ja suunnilleen jokainen vaihe epäonnistui. Taas kerran, koska olen instanssini de facto ainoa käyttäjä ja kello lähestyi puolta yötä, niin en pitänyt mitään kiirettä snapshot-palautuksen kanssa.
Olisi kannattanut. Pääsin nukkumaan hieman jälkeen aamuviiden.
Noin 20 minuuttia tuhlasin Googlen kanssa. En taaskaan löytänyt mitään hyödyllistä, mutta hieman viitteitä ilman ratkaisua — myöhemmin tosin selvisi, että olin etsinyt väärää asiaa, koska en ollut ymmärtänyt virheitä, tai oikeammin: en ollut ymmärtänyt sitä pahinta virhettä, joka kaatoi kaiken.
Kymmenisen minuuttia kulutin aikaa Duckduckgo:n kanssa. Tuo Bing-kopio on ihan yhtä turha kuin Bing. Toki se suojelee yksityisyyttä, mutta ei siitä vakavasti otettavaksi hakukoneeksi ole.
Laitoin myöhemmin Mastodoniin tämän:
Saatoin tuhlata eilen vettä jonkun isommankin pohjavesivaraston edestä, koska päivitin Mastodon-instanssini. Se urakka olisi nimittäin päättynyt yhden saitin häviämiseen ilman AI:ta.
Virhettä virheen perään
rbenv: version 3.4.5 is not installed (set by /home/mastodon/live/.ruby-version)
pysäytti työt samantien. Hetken aikaa ihmettelin, että miten tuon mahdollista. Se kun väittää, että rubya ei ole, ja taatusti oli.
Hieman mielikuvitusta mukaan, niin kysehän ei ollut muusta kuin että minulla oli liian vanha versio.
Googlen ja AI:n avulla sain ruby/rbenv uudempaan versioon. Se ei ihan mennyt millään apt-tempulla, enkä onnistunut omin voimin uudempaa versiota saamaan käyttöön. Joten AI operaation minulle neuvoi.
Pääsin eteenpäin, mutta vain hiukan. Kun aloin työstämään bundleja ja gemejä, niin taas nousi tie vastaan.
Unfortunately, an unexpected error occurred, and Bundler cannot continue. https://github.com/rubygems/rubygems/search?q=%2Flib%2Fx86_64-linux-gnu%2Flibjemalloc.so.2++cannot+allocate+memory+in+static+TLS+block+-+%2Fhome%2Fmastodon%2Flive%2Fvendor%2Fbundle%2Fruby%2F3.4.0%2Fgems%2Fdate-3.4.1%2Flib%2Fdate_core.so&type=Issues
Tuon Google tunnisti. Ilmeisesti jemalloc on oleellisen tärkeä muistinkäytölle, kun appi on käynnissä, mutta kun mennään build puolelle, niin käy noin. Se hyökkää paikalle, eikä tiedä mitä tekisi. Tai jotain.
Joten koko hemmetin jemalloc täytyy saada piilon, pois ja katoamaan. Tai oikeammin niin, että se tekee töitä vain silloin kuin Mastodonia käytetään. Ja nukkuu kun tehdään buildeja.
Tuotakaan en olisi saanut kuntoon pelkällä Googlen avulla. AI pyöritti minua pari kertaa turhaan, mutta loppujen lopuksi jemalloc saatiin jaloista pois.
Mutta nyt tiedän, että systemd-unitit on syytä sammuttaa buildin ajaksi. Eikä jemallocia saa päästää missään kohdassa enää mukaan siihen prosessiin. Kaikesta päätellen jopa ruby on syytä kääntää ilman jemalloc-lippua.
Samalla kun etsin eri paikkoja mistä jemalloc koko ajan hyökkäsi kampittamaan viattoman adminin, niin törmäsin myös siihen, että lock-tiedosto huuteli eri versiota kuin mitä ruby oli. Löysin sen korjaamiseen muutamankin ohjeen Googlesta — yksikään ei toiminut. Mutta kiltti AI neuvoi fiksauksen ja onnistui heti toisella yrityksellä.
Tosin heti sen jälkeen paikalle hyökkäsi bundlerin frozen mode. Se hoitui nopeasti. Paitsi että minä en olisi sitä saanut tehtyä.
Jemallockin antoi lopuksi periksi. Jotkut date_core.so
ja openssl.so
oli linkitetty siihen. Nekin sitten rakennettiin uudestaan, ilman jemallocia — siitäkään komentorimpsusta en ymmärtänyt yhtään mitään. Onneksi olen tohtoritasoa kopypastessa.
Vedin hihat ylös ja aloin rakentamaan Mastodonia tuotantokäyttöön. Taas.
Paitsi että en. Sellainen palikka kuin libvips
oli liian vanha. Sen korjaaminen oli helppoa, koska sen saa päivitettyä aptilla. Minulla oli versio 8.12.1 ja tarvitsin vähintään 8.13.
Jos kuka tahansa näistä asioista ymmärtävä on lukenut tähän asti, niin hän tietää miten tarina jatkuu.
Minä en saanut sitä päivitettyä. Serveri oli Ubuntu 22.04 ja se ei anna uudempaa kuin 8.12.1. Sen sijaan 24.04 käyttää uudempaa.
Joten Mastodon-hommat jäivät hetkeksi tauolle, kun upgradesin serverini tuoreempaan.
Kaikki muut Ubuntuni ovat aina tarjonneet kirjautumisvaiheessa päivitystä uudempaan LTS-versioon. Mutta ei tietenkään tämä.
Se kuitenkin tehdään kaikkineen näin:
❯ Näytä koodi
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt --purge autoremove -y
sudo apt install update-manager-core -y
sudo do-release-upgrade
Serverin rebootin jälkeen olisi varmaan pitänyt tarkistaa, että kaikki on reilassa — mutta kello oli jo paljon, joten jatkoin lennossa… Mastodonin rakentamiseen.
Build onnistui, serveri kuoli
Nyt oli kaikki palaset kohdallaan ja sain prosessin kuntoon. Tai ainakin melkein. Mastodon-instanssini esitti error 502:ta.
Aika monet tietävät tämän, mutta mainitaan silti. Jokainen 500-sarjan error on syvältä. Kyseessä on jokin serverin tai palvelun virhe, ja pelkällä virheilmoituksella on täysin mahdotonta etsiä minkäänlaista apua. Se on liian yleinen ja laaja.
Aloin perata logeja löytääkseni jonkun vinkin ongelmasta. Yhden löysin nopeastikin. Tietokannassa oli collation versio ongelma. Ei katastrofi, mutta syytä korjata. Siihen löytyikin ohjeet helposti. Onneksi tietokanta ei ole massiivinen, koska se operaatio voi kuulemma viedä aikaa.
Ja edelleen Mastodonini esitteli minulle error 502. Logirivejä oli niin paljon, että en hallinnut tilannetta, ja jätin logit rauhaan.
Uusi uusi versio
En löytänyt mitään järkevää syytä sille, että Mastodon oli kärsällään. Joten tein tempun, jonka olen tehnyt ennenkin: asennetaan toinen versio. Se saattaa kirjoittaa jotain sellaista uusiksi, joka korjaa ongelman.
Oli toinenkin syy. Aloitin koko prosessin siksi, että saisin maagisen graalin maljan, nightly buildin, joka antaisi minulle uuden ominaisuuden, quoten, ennen muita tavallisia kuolevaisia.
Minullahan ei ollut aivan täyttä käsitystä siitä mitä ylipäätän nightly build tarkoittaa. Googlen mukaan se on tuorein käännetty versio, ja tehdään usein päivän hommista jakeluun yöksi — siitä nimi.
Osa tekee sen tosiaan päivittäin, ja osa harvemmin.
Suurimpana vaikeutena pidettiin gitin suhteen niiden nimeämistä, koska niissä on säännönmukaisesti nimessä päivämääräosa. Sen rakentaminen johonkin skriptiin, jolla urakkaa automatisoitaisiin, voi olla työlästä. Minullehan se olisi mahdotonta.
Olin jo penkonut Mastodonin GitHubia ja tunsin olevani einen eksyksissä. Minä en tälläkään kertaa löytänyt sieltä minkäänlaista tagia tai releasea, joka olisi ollut moisen näköinenkään. Toisaalta, olen gitin ja GitHubin kanssa alle amatööritason — vaikka olnekin jo edennyt niin pitkälle, että minulla on pari omaa repoa.
En spoilaa, mutta luultavasti jokainen, joka työskentelee GitHubin ja Mastodonin kanssa ovat viimeistään nyt facepalmin partaalla.
Menin siitä missä aita on matalin (tai korkein, että pääsee kumartumatta alta) ja pyysin teennäiseltä älyttömyydeltä pakettiratkaisun Mastodonin siirtämiseksi käyttämään nightly buildia.
AI teki minulle scriptin, joka teki checkoutin mainiin jne. Mutta koska minä olin Googlesta lukenut, useammastakin lähteestä, että se hemmetin päivämäärä on siellä, niin minä selitin asian oikean laidan AI:lle. Sehän sitten teki työtä käskettyä ja rakensi scriptin, joka haki moista.
Samalla se selitti, että olipa hän/se ollut hölmö ja eihän todellakaan main ole käytössä nightleissä. Komppasi minua minkä ehti. Kielimalleihin on koodattu vahva taipumus pyrkiä pitämään käyttäjä tyytyväisenä.
Eihän sen tekemä scripti toiminut. Ollenkaan. Ja joka kerta se korjasi vinkumani virheen ja vaatimani tavoitteen mukaan, ja aina huonompaan suuntaan.
Lopulta vihelsin pelin poikki ja pyysin siltä terminaaliin komennot, joilla haetaan viimeinen virallisempi release, joka on myös latest, joka rakentaisi minulle toimintakelpoisen Mastodonin.
Tein tuon harkitusti. Se oli alkanut pyörimään ympyrää tekemistensä kanssa ja toisti samoja erheitä. Tuon ”käytöksen”, jos sitä sellaiseksi saa kutsua, katkaiseminen onnistuu vain antamalla sille uuden ja erilaisen tehtävän.
Ja kellokin alkoi olla jo paljon, ei enää vähän.
Takaisin linjoille, osaksi
Tuo temppu teki jotain, sillä sain toimivan Mastodonin. Tai sitten kyse oli asennetusta versiosta.
Kokeilin adminin hallintaa ja kaikki näytti hyvältä. Vilkaisin henkilökohtaista syötettäni, ja sielläkin kaikki oli kuten kuului.
Kun skrollailin Mastodonin syötettä, niin törmäsin postaukseen, joka ehdottomasti vaati huomiotani ja vastaustani. Mutta sitä varten olisin tarvinnut eräästä vanhasta viestistäni yhden tiedon.
Minä en pääse iPadin Mona-appista, joka hoitaa Mastodonin arkisen käytön, omaan profiiliini niin, että näkisin vanhat viestini. Tai en siis pääse helposti. Mutta pääsen helposti selainversioon (Mastodonin ja fediversumin omituisuuksia, mutta aika ajoin joutuu hyppäämään selainversioon).
Hämmästyksekseni en nähnytkään profiiliani, vaan yksinäisen Mastodonin logon. Nappasin adminin PWA:ssa auki, ja se toimi. Kirjautumattomana käyttäjänä selaimella ei toiminut.
Silloin tuli hieman masentunut olo.
Käytän iPadissä omiin hommiini appia. Se toimi. Adminin tili taasen on PWA:na, ja sekin toimi. Mutta kun avasin instanssini selaimella, niin ainoa mitä sain oli logo ja muutoin blankko sivu.
Tuo ei ole harvinainen ongelma ja Google tuntee sen. Yleensä syynä on keskeneräinen build, tai joku muu ongelma tyylitiedostojen tai javascriptien kanssa. Mutta on ollut myös kokemuksia, että se johtuu vääristä hakemisto-oikeuksista.
Kysyin tehdyltä digiälyttömyydeltä apua. Tavoilleen uskollisena ja väsymättömänä se täräytti minulle 12 eri asiaa tarkistettavaksi. Mutta sen päälinja oli, että ongelma on tiedostossa manifest.json
. Sitä kun ei löytynyt sieltä mistä AI halusi sen löytyvän.
Täynnä AI-intoa ja AI-tarmoa AI halusi minun selvittävän ja muuttavan erinäisiäkin asioita, että väärässä paikassa oleva manifest.json
ilmestyisi sen haluamaan oikeaan paikkaan. Joka välissä tehtiin aina build ns. tyhjältä pöydältä.
Mutta minä en ollut väsymätön. Tässä vaiheessa kello oli 5 aamulla. Löin paussin päälle. Minä olen instanssini ainoa aktiivinen käyttäjä ja appin kautta se toimi. Ainoa mikä ei toiminut oli webpuoli. Joten aurinko nousisi seuraavanakin aamuna, vaikka jätin työn kesken.
Seuraavat 8 tuntia
Lyhyiden aamu-unien jälkeen aloin väsyneillä silmillä penkomaan ongelmaa.
AI tarjosi lisää vaihtoehtoja diagnosointiin. Tolkuttoman useita vaihtoehtoja. Jos olisin ollut pirteämpi, niin olisin ehkä oivaltanut nopeammin, että se pyöritti noin neljää mahdollista ongelmakohtaa, mutta tarjosi erilaisia variaatioita samojen asioiden selvittämiseen.
Joka välissä tehtiin myös build.
Samaan aikaan työllistin Googlen datakeskuksia vähintää yhtä paljon. Osaksi varmistellessani mitä state-of-the-art ohjelmisto (tekoälyistä voi olla mitä mieltä haluaa, mutta ovathan ne ohjelmina kehittyneitä) kehoitti tekemään. Osaksi etsiessäni muita mahdollisia selityksiä.
AI oli vakaasti sitä mieltä, että ongelma on buildissa. Se taas juontui siitä, että web-lähteiden tasolla se oli eräällä tavalla asiantuntevimmissa yhteyksissä yleisin selitys. Ongelman tynkää oli siinä, että selityksiä ongelmasta ftontendissä näkyy vain logo, mutta silti instanssi muutoin toimii oli perin vähän ja nekin yleisellä tasolla. Joten AI oli ehdotuksissaan yhtä rajoittunut, ja yritti lähestyä samaa eri suunnista.
Jos x=y, niin
- y=x
- x=z, y=v; z=v
- x=1, y=2; y/y=x/x
ei muuksi muutu, vaikka sitä kuinka monella tavalla pyörittäisi ja edelleenkin meillä on vain x ja y.
Hakemisto-oikeuksia oli muutamassa Googlen löytämässä ratkaisussa säädelty. Silloin ajatuksena oli, että käyttäjä www-data
ei päässyt Mastodoniin, koska hakemistojen listausoikeus oli ainoastaan käyttäjällä mastodon
. Ehdotin tuota vaihtoehtoa AI:lle, joka tarttui siihen (koska käyttäjä nosti aiheen esille) ja seuraava tunti tai kaksi menikin sitten niiden parissa.
Mikään ei auttanut.
Käynnistin jopa läppärini ja Linux Mintin, vaikka normaalisti teen töitäni pitkälti iPadillä. Mutta iPadillä en saa selaimen konsolia auki.
Ihmetys oli suuri, kun ensimmäinen yritys aukaisikin frontendin. Siihen käytin selaimena Chromiumia. Toinen yritys Firefoxilla tarjosi pelkän logon.
Esittelin tuon AI:lle, joka intoa täynnä selitti ongelman tekniikkaa ja tarjosi — taas — 10 kohtaisen tavan dianosoida ongelmaa ja jopa korjata se. Ohjeet olivat toisintoja siitä mitä oli jo useampi tunti tehty.
AI:llä on tapa aina lopuksi todeta, että näiden temppujen jälkeen kaikki toimii. Mutta ei toimi. Lisäksi se aina väittää, että komennot, koodit ja scriptit ovat minun tekemiäni. Tiedän, että ohjelmalle on turha hermostua, mutta olen sitä ikäpolvea, joka on raivonnut ruudulla heiluvalle paperiklemmarillekin. Joten koen tuollaiset tarjotut reaktiot melkoisen ärsyttäviksi.
Hieman turhan kauan meni ymmärtämiseen, että Chromium näytti etusivuni oikein vain siksi, että sen kautta tulin kirjautuneena. Firefox taasen yritti esittää etusivun kirjautumattomana.
Selaimen konsolista on harvemmin apua error 500 kohdalla. Se kun edelleen tarkoittaa, että serveri ei tee mitä siltä pyydetään. Hiukan samaa, vaikka mitään samaa ei olekaan, että web-serverin error 404 ei kerro hyödyllistä asiaa sivun rakenteessa olevista asioista tai backendin toiminnasta.
Tässä kohtaa riita oli kestänyt jo 7 tuntia. Minua väsytti ja suoraan sanottuna vitutti, ja AI pyöri samaa ympyrää kehäpäätelmissään jo noin tusinatta kertaa. Tuijotin läppärin näytöltä selaimen esittämää Mastodon-logoa, ajatukset tyhjinä painoin F12 konsolia varten ja sitten F5 reloadille.
Näin tämän:
<body class="app-body theme-mastodon-bird-ui-light custom-scrollbars no-reduce-motion">
Minulla oli aikoinaan ollut käytössä Mastodon BirdUI, mutta olin poistanut sen. Kaivoin esille aikoinaan käyttämäni scriptin, jolla olin yrittänyt siirtyä nightly buildiin, koska se käyttää myös tuota teemaa. Siellä on tämä:
❯ Näytä koodi
# install mastodon-bird-ui
rm -rf ./app/javascript/styles/mastodon-bird-ui/
mkdir -p ./app/javascript/styles/mastodon-bird-ui/
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-single-column.css -O app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
wget --no-cache https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/main/layout-multiple-columns.css -O app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-single-column.scss
sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' app/javascript/styles/mastodon-bird-ui/layout-multiple-columns.scss
echo -e "@import 'contrast/variables';\n@import 'application';\n@import 'contrast/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-contrast.scss
echo -e "@import 'mastodon-light/variables';\n@import 'application';\n@import 'mastodon-light/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-light.scss
echo -e "@import 'application';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" > app/javascript/styles/mastodon-bird-ui-dark.scss
echo "mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss" >> config/themes.yml
echo "mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss" >> config/themes.yml
echo "mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss" >> config/themes.yml
Olin kuitenkin poistanut aikoinaan tuon teeman. Ja tehnyt uudestaan tämän urakan alussa rm -rf ./app/javascript/styles/mastodon-bird-ui/
koska joku vida tms. oli vinkunut konfliktista tyylitiedostoissa. Joten mitään Mastodon BirdUI:ta ei pitänyt olla missään.
Piipahdin hallinnan puolella. Minulla oli serverin oletusteemaksi laitettu Automaattinen (käytä järjestelmän teemaa)
. En tajua miksi tuo on instanssin asetuksissa kohdassa, jossa asetetaan ymmärtääkseni järjestelmän teema — ellei se sitten ole käyttäjien default, jolloin kysymys on: missä hemmetissä sitten asetetaan järjestelmän teema. Voihan se toki viitata käyttäjän ligh/dark asetuksiin, ja edelleen sama kysymys on auki: minkä teeman vaaleaa tai tummaa tilaa pitäisi käyttää.
Niin tai näin, niin vaihdoin siihen Mastodon (vaalea)
. Eikä BirdUI:ta ollut missään, ainakaan mainittuna. Palasin selaimelle ja reload: sivusto näytti etusivun kuten kuuluukin, ei enää error 500 pelkällä logolla.
Syy on siis teemassa ja tarkemmin sanottuna tyylitiedostoissa. Tilanne korjaantui oireiden suhteen sillä, että laitoin kaikille oletukseksi aidon teeman. Minulla kaikesta päätellen kummitteli mukana teema, jota ei enää ollut.
Kerroin AI:lle tilanteen ja tarjoilin sille edellä olevan scriptin kohdan. Pyysin komennot, jolla saan ne poistettua. Suoritin ne, tein buildin ja testasin: ongelma oli poistunut.
Hassusti se manifest.json
alkoi myös toimimaan (jos se koskaan rikki oli ollutkaan).
Vilkaisin kelloa. Päivän 2 työaika tämän ongelman parissa oli aika tarkkaan 8 tuntia. Olin riidellyt 12 tuntia Mastodonin kanssa, koska:
- liian vanha versio rubyssä
- liian vanha versio Ubuntussa (edelleenkään 22.04 ei ole ikivanha)
- kummitteleva teema
Entä nightly build?
Edelleenkään minulla ei ollut nightly buildia käytössä. Mutta tuon kaiken ohessa minulle oli selvinnyt, että nimeämishässäkkä päivämäärien suhteen ei edes pitänyt paikkaansa. Se voi pitää muualla, mutta ei Mastodonissa.
Se, että web-palvelinten logit usein kertovat user agentissa nightly buildin on adminin itse sinne laittama. En ihan tiedä miksi sitä halutaan kuuluttaa muille, koska instanssiin itseensä se ei liity. Sen, että ei ole varsinaisessa releasessa näkyy hallinnassa muutenkin. Kuten että minulla nyt oleva versio 4.5.0-alpha.2
kertoo suoraan kyseessä olevan nightly build (eli main) — virallisempi release (latest) on tällä hetkellä 4.4.3
.
Aiemmin kun päivittelin nightlyjen vaikeutta, niin totesin spoilerimaiseen tapaan, että osaavammilla tuli face palm siinä vaiheessa.
Jep. git checkout main
on sama kuin nightly build.
Tarinan tarkoitus
Useampaan kertaankin olen maininnut, että hakukoneilla ei löydy ratkaisuja. Eikä aina ihan ongelmiakaan. Sitten esittelen itse tekstissäni ongelmia, mutta en rautalankatason ohjeita niiden korjaamiseen.
Tuolle valinnalle on parikin syytä, tällä kertaa.
Ensimmäinen on se, että ne olivat AI:n käsialaa, joten AI kykenee toistamaan ne. Enkä ihan aina tiennyt mikä toimi ja mikä ei. Tai näin jälkikäteen — mitä niistä useista tarjotuista vaihtoehdoista olin aidosti siinä vaiheessa kokeillut. Minulla ei ole mitään halua liittää tänne 12 tunnin keskustelua.
Toinen syy on sitten se, että uskoakseni ongelmani ja niiden ratkaisut eivät kestä aikaa, tai juontuivat omista töpeistä malliin käytetään scriptiä, koska joku sen mainitsi ja moinen oli saatavilla. Versio-ongelmat tulivat vahvasti siitä, että olin Ubuntu 22.04 versiossa — tosin, Rubyyn liittyvä versio saattaa olla hyvinkin laajempi ongelma, jos/kun Mastodonin kehitys on siirtynyt tuoreempaan ja jos he eivät selitä kotitarve-admineille miten tilanne korjataan.
Laittakaa se hemmetin Discourse-foorumi pystyyn ja lakatkaa juttelemasta devaajien kesken GitHubissa. Paitsi tietysti jos halu on hidastaa Mastodon-instanssien syntyä ja laajenemista. Silloinhan ei todellakaan kannata siirtyä foorumiympäristöön.
Kolmas syy on yleisempi. Tekoälyt.
Tiedostan tekoälyjen ongelmat, niin juridiset, moraaliset kuin myös luontoon ja ympäristöön liittyvät. Mutta ensinnäkään opittua ei saa pulloon takaisin, vaikka se kiellettäisiin. Vai ajateltiinko, että biologisten aseiden tutkiminen ja jo saatu tieto häviää sillä, että tehdään sopimus- ja lakiteksti?
Toinen tuolla akselilla on se, että kun tiedostaa ja hieman osaa, niin AI toimii huomattavasti paremmin kuin hakukoneet. Toki molempia tarvitaan, mutta Googlella en tätä tilannetta olisi saanut korjattua.
Joten kun joku on taas moraalisen ylemmyydentunnon kikseissä ja tuomitsee kategorisesti AI:n käytön, niin oletko sinä seuraavalla kerralla valmis auttamaan? Jep. En uskonutkaan.
Mastodonin päivitysscripti
En ihan tiedä mikä on scriptin määritelmä, mutta minulla on tämä /home/mastodon/live
hakemistossa nimellä updater.sh
. Se on luultavasti liian monimutkainen ja tekee tarpeettomia asioita, kun joku bundle install
riittäisi, mutta silti käytän sitä. Kyllä, se on fuusio löytämistäni asioista erilaisista lähteistä.
❯ Näytä koodi
#!/usr/bin/env bash
cd /home/mastodon/live
# Pysäytä systemd
echo ">>> PYSÄYTÄ palvelut ROOTINA ennen buildia:"
echo "sudo systemctl stop mastodon-web mastodon-sidekiq mastodon-streaming"
read -p "Jatka kun palvelut on pysäytetty (Enter)... " _
# Varmista että olet halutussa versiossa
git fetch origin --tags --force --prune
#git reset --hard v4.4.3 # release
git reset --hard origin/main # ns. nightly build
# (Valinnaisesti) palauta koko styles-puu ja themes.yml alkuperäiseen tilaan tagista
# jos epäilet muihinkin tiedostoihin jääneen jäämiä:
git checkout -- config/themes.yml app/javascript/styles
# Varmista toimiva oletusteema ympäristöön
grep -q '^DEFAULT_THEME=' .env.production || echo 'DEFAULT_THEME=mastodon-light' >> .env.production
# Puhdista ja rakenna frontti kokonaan uudestaan
RAILS_ENV=production bin/rails assets:clobber || true
rm -rf public/assets public/packs vendor/bundle
# Bundler kuten lockfile vaatii
BV="$(awk 'f{print;f=0} /BUNDLED WITH/{f=1}' Gemfile.lock | tr -d '[:space:]')"; [ -z "$BV" ] && BV="2.7.1"
bundle _${BV}_ config set deployment true
bundle _${BV}_ config set without "development test"
bundle _${BV}_ install -j"$(nproc)"
# Yarn (Berry) ja precompile
corepack enable || true
corepack prepare yarn@stable --activate || true
yarn install --frozen-lockfile
RAILS_ENV=production bin/rails assets:precompile
RAILS_ENV=production bin/rails db:migrate
# Vaihda 10000 merkkiraja
sed -i 's/MAX_CHARS = 500/MAX_CHARS = 10000/' /home/mastodon/live/app/validators/status_length_validator.rb
# Tyhjennä välimuistit
RAILS_ENV=production bin/tootctl cache clear
# Bannaa temporary emailit
mkdir -p ./~temp
wget --no-cache https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf -O ./~temp/email.list
domains="$(cat ./~temp/email.list)"
domains="${domains//$'\n'/ }"
RAILS_ENV=production bin/tootctl email-domain-blocks add $domains
rm -r ./~temp
# Lopuksi käynnistä unitit
echo ">>> KÄYNNISTÄ palvelut ROOTINA ennen buildia:"
echo "sudo systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming"
Keskustele foorumilla Katiskan foorumi