Passa al contenuto principale

· 2 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Eggs è nato più o meno nel corso del 2016 sulle ceneri di software precedenti.

Sono stati anni, dal punto di vista lavorativo, intensi.

Ho lavorato, quando ho potuto sino a dieci/dodici ore al giorno, ormai da sette anni. Se una cosa mi è mancata dal mio pensionamento non è stata certo l'informatica ed il mio lavoro.

Eggs sta avendo un certo successo - non molto, considerando che è sostanzialmente uno dei pochi software di rimasterizzazione rimasti - e senz'altro l'unico capace di gestire distribuzioni differenti: nel nostro caso Debian e derivate (incluse Devuan ed Ubuntu) ed Arch e derivate (inclusa manjaro, garuda, crystal, etc),

Di tanto in tanto arriva qualche proposta di estendere le sue capacità a gentoo, a fedora o altre.

Sono circa tre giorni che mi "diverto" - alla lunga diventa palloso - a rinfrescare le distribuzioni che ho rimasterizzato e messo su sourceforge.

Diciamo pure, che - a patto di perderci un minimo di tempo - è possibile ricreare tutto lo scibile delle derivate Debian e praticamente abbiamo la stessa situazione nella famiglia Arch.

Ho rimasterizzato blendOS che mi sembra un buon sistema, in grado di essere compatibile con altre distribuzioni e ne ho creato uno proprio fringuello aggiungendo alla mia macchina di sviluppo colibri - in versione Arch - il software distrobox per la gestione dei container.

Insomma, le strade percorribili sono state percorse: in lungo ed in largo.

Che fare?

Qua la domanda è per me e per voi cari lettori, che mi suggerite e - come potete eventualmente supportarmi nello sviluppo?

Io al momento sono orientato a sondare la possibilità di supportare fedora, che sarebbe una aggiunta rilevante pensando alla miriade di derivate.

E voi cosa ne pensate?

Potete commentare anche qua sotto. Grazie!

un punto morto

· 3 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Oggi per la Chiesa è la festa dell'Assunta, «La Vergine Maria, completato il corso della sua vita terrena, fu assunta alla gloria celeste in anima e corpo».

Per indolenza, a Roma, il popolino - ovvero tutti - celebrano il "Ferragosto" ovvero le ferie di Augusto imperatore e, di norma vanno molto il pollo con i peperoni ed il cocomero.

In spiaggia e meno.

Ho preso qualche giorno di vacanza anche io, allontanandomi un po' dalla tastiera e dall'Italia. La vacanza ha funzionato, mi ha ricaricato come non mai e nel giorno di ferragosto ho rilasciato una nuova versione di eggs, rifatto numerose ISO ed iniziato questo scritto che sto completando ben tre giorni dopo.

Risolto il problema con calamares

Per qualche ragione, io non me ne ero mai accorto, calamares - con le mie configurazioni - ha iniziato a non mostrarmi più le opzioni per installare il sistema su una partizione pre-esistente.

Se ne è reso conto però Emer Chen che sta realizzando il suo LDS ed ha affrontato il problema, prima suggerendomi di utilizzare la versione di calamares compilata da SparkLinux, quindi facendomi notare che - sostituendo in /etc/calamares/modules i moduli originali di Debian a quelli di eggs, il problema sparisce.

Dopo qualche tentativo, ed anche più in effetti, ho riscontrato che il problema sorgeva dalla mancanza del file di configurazione welcome.conf che, non essendo modificato da eggs, non veniva copiato su /etc/calamares/modules.

calamares replace partition

Quindi, ieri ho rilasciato una versione di eggs v9.5.17 che risolve questo noioso problema e, naturalmente sto iniziando a rifare - per l'ennesima volta - le principali ISO.

Fedora, SuSE e le altre

Da quando ho iniziato eggs il mio sogno era di riunire sotto un unico programma di rimasterizzazione tutte o quasi le principali distribuzioni Linux.

Naturalmente la fatica di realizzare il programma mi ha portato dapprima a completare la parte Debian/Devuan/Ubuntu, quindi estenderla - ormai da un anno - al mondo Arch e compatibili.

Attualmente sto ricevendo richieste in tal senso, specialmente per fedora.

La mia intenzione è estendere eggs a fedora e successivamente a SuSE, ma necessito di collaborazione e, se possibile, di sponsorizzazioni.

L'Assunzione

Mi spiego meglio, parafrasando la festività.

Sinora con eggs sono andato avanti esclusivamente con le mie proprie risorse: ovverò investo in esso tutte le mie conoscenze, la quasi totalità del mio tempo ed anche - diciamo così - mi autofinanzio per hardware e sito.

Diciamo che una sponsorizzazione darebbe un maggior senso a questo lavoro - piuttosto impegnativo - nonchè garantirebbe anche una maggiore autostima.

Poi, se non altro, renderebbe più sopportabile a mia moglie la mia smodata passione per l'opensource e l'informatica!

assunzione

· 5 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Mi è venuto in mente la favola di Alice di Lewis Carrol nella mia avventura con blendOS.

Se, immeritatamente, mi spetta il ruolo di Alice estasiato di fronte a tante novità, dovremmo pure incontrare diversi personaggi, dal bianconiglio, al cappellaio pazzo.

Durante la navigazione tra i tanti siti di sviluppo e Linux, un giorno di fine aprile mi imbattei in una curiosa novità: una distribuzione che raccoglieva tutte le altre e le faceva coesistere al suo interno.

Risultò alla fine che, tale distribuzione denominata blendOS era basata - comunque - su Arch linux, nonostante il creatore fosse un riferimento in ambito Ubuntu.

All'epoca dei fatti era appena uscita la versione 2, denominata Avial, che dovrebbe essere un piatto indiano di cui l'unica notizia certa che ho è che si mangia.

Poi è uscito Bhatura, ad inizio giugno. Anche qua sempre di un piatto indiano si tratta, questa volta di un pane.

Considerando che anche akshara una parte importante del sistema deve il nome ad un piatto indiano, l'unica certezza che mi rimane è che l'autore deve essere un ragazzo indiano di buon appetito.

L'inizio della storia

Mi avventurai allora ad inseguire la farfalla nella speranza di catturarla ed esporla - ancora viva - in una versione installabile.

La faccenda era difficile però, l'animale aveva un carattere immutabile e, per riprodursi ricostruiva se stessa sostanzialmente da zero.

Ma io volevo dimostrare la capacità del mio programma e, comunque la volevo catturare.

Il primo incontro, fu con lo stesso autore che mi suggerì che l'hook blend sulla live non era necessario ma poi, prese l'orologio e grindando: ho da fare, ho da fare... Ed improvvisamente sparì.

Ebbi nuove notizie, sul bianconiglio solo dopo qualche tempo, avevo già trovato il modo di riprodurre la farfalla a modo mio, quando per destino o per celia incontrai il Cappellaio Matto.

Costui viveva in Olanda nella regione dei pazzi e, si narrava facesse di professione il maestro, aveva più o meno la mia stessa età, qualche anno in meno,

Viveva, quindi nel suo castello tra chroot e tanto altro, in compagnia del suo compare, tale asterisco da Bologna, giovine dotto ed intrarprendente.

Mi fu di grande aiuto durante le mie sperimentazioni, ma come in tutte le favole arrivò il blackout: tre giorni senza corrente elettrica per di più con la temperatura che superava i 40° C.

Desistetti al momento, sperando di vedere presto la nuova versione e cominciai a girovagare.

Fringuelli che producevano colibri

Dopo un po' di tempo di queste frequentazioni, Alice cominciò ad indagare il bandolo della matassa e, prima fece alcuni tentativi mal riusciti, poi fece un fringuello che covò un colibri.

Il colibri era - in origine - una leggera macchina Debian di chissà quale versione, forse buster - ma buster già in età matura.

Col tempo il colibri aveva preso ad essere anche una piccola macchina Arch con pressapoco le stesse caratteristiche: nodejs, code e tutto l'occorrente per produrre penguins-eggs, solo su una distribuzione diversa.

Le due macchine si somigliavano molto però, i programmi erano praticamente gli stessi e, di solito, prima si creava la versione Debian, poi si testava su Arch ma anche viceversa.

Era un continuo saltare tra i due colibri ed il rilascio avveniva - dopo le iniziali difficoltà - pressochè in contemporanea.

La nascita del fringuello

Il fringuello nacque semplicemente da un Arch colibri a cui fu aggiunto distrobox e poco altro:

sudo pacman -Syu podman distrobox

distrobox-create -n debian12 -i debian:12

distrobox enter debian12

sudo apt install bzip2 git nano tar xz-utils

Scaricare ed installare nodejs19 da nodesource, quindi:

sudo npm i pnpm -g

git clone https://github.com/pieroproietti/penguins-eggs

cd penguins-eggs

pnpm i

pnpm deb

e strano a dirsi, la versione esportata riusci a fare l'uovo sul vecchio colibri Debian!

Se non è una meraviglia questa!

La seconda cosa che fece il fringuello

Dopo aver fatto un uovo di colibri, naturalmente il fringuello pensò bene a riprodursi!

Era tempo di ferie e di tempo non ce ne era poi molto, per cui manco cambiò lo sfondo del desktop, giusto il nome per distinguersi.

Creato l'uovo e reinstallato il fringuello, naturalmente ci si rese conto che aveva perso però l'anima Debian12, ma era rimasta tutta l'impalcatura di distrobox.

Sarebbe stato possibile naturalmente creare un clone e portarsi dietro tutto, ma... Per la prossima volta!

il clone prima del viaggio

L'aereo partiva alle 15:00, lui - era anziano - s'era svegliato alle 6:00, già tardi per le sue abitudini.

Si prese cura di cancellare il cancellabile per non farlo ingrassare troppo e, specificatamente:

  • penguins-eggs/dist
  • penguins-eggs/node_modules`
  • penguins-eggs/tmp

sudo rm penguins-eggs/dist -rf

rm penguins-eggs/node_modules -rf

sudo rm penguins-eggs/tmp -rf

E provò a fare il clone:

sudo eggs produce --clone --max

Gli riuscì un uccelletto poco più grande 2,2 GB, giusto 600 MB di Debian e provò quindi ad installarlo, poi a creare nuovamente penguins-eggs per Debian.

Lo installò di nuovo e, bastò ricordarsi che per il clone, gli user sono gli stessi del genitore e, quindi, nel nostro caso: artisan/evolution e root/evolution.

Una volta eseguito il login:

distrobox enter debian12

cd penguins-eggs

pnpm i

pnpm deb

E tutto funzionò perfettamente!

Pose il risultato fringuello-clone fra le pagine sourceforge di penguins' eggs per Arch.

Se volete e potete, poteste scaricarvi il fringuello e compilarvi penguins-eggs sia per Arch che per Debian.

Buon lavoro e buona vita a tutti.

· 4 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

To re-build the blendOS ISOs, I started with the documentation on blendOS Docs, and then experimented, finding a way to use blendOS to recreate itself by removing the akshara hook.

Reasoning with Ray Vermey, I was told - and must agree - that using this method:

"yes but then you take away one of Blends biggist reasons to exist :-)"

and, therefore, using Ray's suggestions, I began to inquire about a more "orthodox" version.

This is the original Ray Vermey way.

Do this from a CLI in blendOs, NOT in a container:

mkdir arch-chroot

sudo pacstrap -K arch-chroot base linux linux-firmware

when that finishes, remount arch-chroot binded:

sudo mount --bind arch-chroot arch-chroot

then:

sudo arch-chroot arch-chroot

pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

Wait a bit, expecially at the end. Then:

pacman -S python-click nano

useradd -m -G wheel -s /bin/bash apprentice

use visudo to edit /etc/sudoers:

export EDITOR=nano; visudo

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

passwd apprentice

su - apprentice

cd

mkdir blendos/build -p

cd blendos/build

Installing assemble

blendOS uses its own system, Assemble, for managing code and builds. It's quite similar to repo in the realm of Android development.

TEMP_ASSEMBLE_DIR="$(mktemp -d)"

git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"

sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin

rm -rf "${TEMP_ASSEMBLE_DIR}"

You may now proceed to building blendOS.

Initialize an Assemble repository

assemble init 'https://github.com/blend-os/manifests' 'main'

assemble sync

edit /etc/pacman.conf, and add the line:

[blend]
Server = https://pkg-repo.blendos.co/$repo/os/$arch

then:

sudo pacman -Syu

Prepare the system packages

source build/envsetup.sh

breakfast | tee breakfast.log

informazioni

I refreshed the instructions again, follow last indication of Ray. It seem to work like a charm. Just discarted the following part:

sudo pacman -S rsync reflector
sudo reflector -c Netherlands -f 10 > mymirror
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo cp mymirror /etc/pacman.d/mirrorlist

then, add line add SigLevel = Never to /etc/pacman.conf under all active repositories:

sudo nano /etc/pacman.conf

Build an ISO

sudo brunch

I did the actual blendOS-gnome-2023.07.15-x86_64.iso on penguins' eggs sourceforge page, starting from a blendOS-xfce-2023.07.15-x86_64.iso I previusly did before, and installed. You can found both on sf.

This image blendOS-lxqt-2023.07.17-x86_64.iso, was made with this way.

ray-installing

Also this blendOS-ray-gnome-2023.07.16-x86_64.iso was made in the same way to confirm the process and check waydroid.

Mastering other versions

Once we have made our gnome version, we can create the others: plasma, xfce, cinnamon, etc. For the purpose I first move the ISO made outside the system, also to recover space, then:

cd blendos/build
source build/envsetup.sh
sudo brunch

Conclusions

I did all the procedure - many, many times - it work nicelly.

Actually following this procedure - just cut and copy commands - I was able to build blendOS from blendOS itself, from my Arch develop machine (colibri) and from a simple CLI Arch installation (naked).

To be honest I like more to remove hook akshara, build the ISO and then reintroduce it. I feel it more simple and I think this is a value more than a problem, but - of course - the authors know better than me.

informazioni

With penguins-eggs, I'm using that way: remaster the system without akshara and reintroduce the akshara during installation with calamares or krill, just using theme blendos.

In short, using eggs, I do this:

  • remove akshara from /etc/mkinitcpio.conf;
  • rebuild initramfs-linux-zen.img: sudo mkinitcopio -g /boot/initramfs-linux-zen.img;
  • reboot;
  • add chaotic aur, just follow instructions on their site.
  • install penguins-eggs: sudo pacman -Syu penguins-eggs
  • configure it: sudo eggs dad -d
  • add calamares: sudo eggs calamares --install
  • eggs wardrobe get
  • sudo eggs produce --theme blendos

· 2 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Ho un problema invalidante con le ultime versioni di Arch Linux con l'installer grafico calamares:

il pacchetto icu International Components for Unicode viene utilizzato da calamares

In particolare la versione attuale: icu@73.2-1 non viene utilizzata da calamares che cerca la precendete icu@73.1

Ho provato a sistemare con un link simbolico ma continua a non funzionare, probabilmente con le prossime versioni il problema rientrerà da solo, per il momento - purtroppo - calamares su Arch non mi funziona.

E per un programma di rimasterizzazione è un grandissimo problema.

Krill

Ad ogni modo è ancora possibile installare Arch utilizzando krill, l'installer CLI integrato in penguins-eggs. Naturalmente occorre tener presente che krill eseguirà una installazione distruttiva, ovvero cancellerà il disco sul quale avete deciso si installare.

Per installare con krill, basterà:

  • aprire una finestra di terminale
  • digitare il comando: sudo eggs install
  • seguire le istruzioni.

Soluzioni?

  • rimuovendo dai settings.conf di Calamares le chiamate al modulo user l'installer funziona, ma rinunciare alla creazione dell'utente sembra una rinuncia piuttosto pesante:

  • ho provato a ricompilare calamares, va bene per quanto riguarda icu ed il modulo user si carica, ma calamares si pianta sul modulo mount;

  • ho provato ad utilizzare la versione 7.3.1 niente da fare, il modulo user non funziona e cerca la 72!!!

Se qualcuno è a conoscenza di una soluzione, può indicarla nei commenti. Grazie

calamares-eggs

E così dopo aver pensato le uova di pinguino per far riprodurre i pinguini, ci è toccato passare alle uova di calamaro per far riprodurre i calamari. D'altra parte i pinguini qualcosa devono pur mangiare!

Non sò ancora come organizzarmi con il pacchetto, al momento ho semplicemente creato lo stesso in eggs-pkgbuilds

Però va!

installing blendos with calamares.png

installig gnome

installig gnome dark

· 4 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

I wrote something about blendOS in this previous post, now I'm trying to build blendOS image, following official blendOS Documentation and particularly this pages:

We build a container named blenOS-build and inside it

sudo pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

blendOS uses its own system, Assemble, for managing code and builds. It's quite similar to repo in the realm of Android development.

TEMP_ASSEMBLE_DIR="$(mktemp -d)"
git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"
sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin
rm -rf "${TEMP_ASSEMBLE_DIR}"

Building an image

To continue we must install python-pip and with pip module click:

sudo pacman -S python-click

Create the directories

You will need to create a directory where Assemble will pull blendOS's sources and build them.

mkdir -p ~/blendOS/build

This directory should not be pushed anywhere, as it's simply used for storing blendOS's code.

Initialize an Assemble repository

You may now initialize an Assemble repo to download blendOS's sources.

cd ~/blendOS/build
assemble init 'https://github.com/blend-os/manifests' 'main'

Sync/download the sources locally To start the download of the sources, type the following:

assemble sync

By default, assemble uses all of the available cores on the system being used to build blendOS. However, you may change that behaviour by passing the -j argument. For example, use -j 4 to use only 4 of the available cores.

Prepare the system packages

After the source downloads, ensure you’re in the root of the source code (cd ~/blendOS/build), then type:

source build/envsetup.sh
breakfast | tee breakfast.log

This is the complete log of the command: breakfast.log

I tried to build iso too, giving from the same container the command:

sudo brunch

This is the complete log of the command: sudo brunch

On a blendOS without akshara hook

After trying to use a normal Arch system as the parent, encountering the same problems as above, I wanted to try using an installed blendOS system, however, made "mutable" by removing the akshara hook.

In this case, finally, even without the need to install python-pip and the click module, everything seemed to proceed properly, reaching the conclusion of the procedure.

sudo pacman -S git archiso base-devel xorriso python python-psutil squashfs-tools

TEMP_ASSEMBLE_DIR="$(mktemp -d)"

git clone https://github.com/blend-os/assemble "${TEMP_ASSEMBLE_DIR}/assemble"

sudo cp "${TEMP_ASSEMBLE_DIR}/assemble/assemble" /usr/local/bin

rm -rf "${TEMP_ASSEMBLE_DIR}"

mkdir -p ~/blendOS/build

cd ~/blendOS/build

assemble init 'https://github.com/blend-os/manifests' 'main'

assemble sync

source build/envsetup.sh

breakfast

all-packages-ok

creating ISO

At this point I gave the sudo brunch command and chose gnome as the iso to be created and it too ran correctly.

sudo brunch

blendos-gnome-ok

booting resulting ISO

Every fairy tale has a happy ending, for ours what can we say: evidently there is still something to be fixed.

The iso installs, but the system--once installed--fails to boot!

cant-boot.png

but that's the way it is and fairy tales if they don't end well you have to continue them and so I decided to do another test of my new image.

gnome-iso-installed.png

Everything seems to be running smoothly!

I am uploading this image to the penguins' eggs sourceforge page, created by the - let's say so orthodox - method among the images previously created with eggs.

You can distinguish it simply by the lack of the egg-of- prefix.

Conclusions

in the coming days I will try to better understand this operation, at the moment I see that by removing the akshara hook the system becomes "mutable" and can be remastered with penguins-eggs.

The difference between the two methodologies is that with eggs one builds one's system, then reproduces it, while using manifest one first designs the system then builds it.

In some ways eggs is less rigorous but more fun.

Note

You can comment in this page too, using you github account.

· 2 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Sabato scorso, ieri in effetti, mi sono imbattuto nella repository packages di chaotic-aur ed ho notato la possibilità di richiedere l'inclusione di penguins-eggs sulla repository stessa per facilitarne l'installazione agli utenti Arch.

Da qualche tempo avevo scoperto la possibilità di includere chaotic-aur tra le repository di pacman e la utilizzavo con piacere per calamares, mi risparmiava non poco tempo di compilazione rispetto a yay, ma mai avevo osato persino "sperare" che penguins-eggs potesse essere accettato così velocemente.

Installazione di chaotic-aur per Arch

La procedura è ben descritta sul sito di chaotic, qui la replico:

First, install the primary key - it can then be used to install our keyring and mirrorlist.

 pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
pacman-key --lsign-key FBA220DFC880C036
pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'

Append (adding to the end of the file) to /etc/pacman.conf:

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

Installazione di penguins-eggs su Arch

A questo punto per installare penguins-eggs basterà il canonico:

sudo pacman -Sy penguins-eggs

immagini ISO scaricabili

Sono disponibili su sourceforge le nuove iso naked e colibri di Arch.

Entrambe sono installabili con krill: sudo eggs install o calamares.

La versione colibri è stata creata con l'opzione '--release' grazie alla quale sia penguins-eggs che calamares vengono rimossi ad installazione avvenuta.

Naturalmente grazie alla presenza della repositoty chaotic-aur è possibile reinstallare sia penguins-eggs che calamares con un semplice comando pacman.

Ringraziamenti

Ringrazio sentitamente il team di chaotic-aur per l'attenzione e vi invito ad apporre un like sulla loro repository git e, perchè no, ad approfittane.

· Lettura di 1 minuto
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Il 1° aprile 2016, ormai una vita fa, arrivò la possibilità di andare in pensione.

Ci tenevo a fare qualcosa di mio, a provarci, a non appendere la tastiera al chiodo.

La pensione arrivò dal lavoro, ma la famiglia per un certo periodo reclamò immediatamente il resto. Diciamo che l'inizio della storia risale ad un anno o due anni dopo - e peraltro a rate - dopo aver dovuto smettere una collaborazione per mancanza di tempo, con gli anni che inevitabilmente passano - come per tutti.

Scrivere penguins-eggs è stata una bella avventura, anche se probabilmente non mi ha portato da nessuna parte se non dentro me stesso.

Solo qualche conoscenza, belle persone e semplicemente non arrugginire.

Tempo di bilanci?

No, una sorta di malinconia, mi sembra che questo progetto stenti, non decolli.

Ai miei occhi è interessante, ma ogni giorno trovo altro...

Mi vengono in mente in questo momento: blendOS, Arkane Linux, VanillaOS, CrystalLinux, Rhino Linux, etc.

E' un mondo che riverbera.

Bolle, come il pomodoro con la carne e, dopo tanto sobollire, diventerà qualcosa di diverso.

· 2 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

exclude.list

Escludere dei file dalla riproduzione è sempre stato previsto da eggs, grazie agli strumenti ereditati da refracta-snapshot. Quello che non avevo sinora capito è che eggs aveva perso questa capacità nel momento stesso in cui avevo scelto di non copiare più il file system originale per creare il file system live ma di procedere con il file system originale montato --bind ed overlay per permettere le variazioni.

La tecnica permette di risparmiare veramente tanto tempo e tanto spazio sul disco, ma - quello che non avevo notato - ha ed aveva pure un impatto sul funzionamento della exclude.list che era pensata, per l'appunto, per escludere i file dalla copia fatta con rsync.

Nella mia beata ignoranza, l'avevo presa così com'era e la chiamavo ogni volta per mksqushfs. Non sortiva - ovviamente - effetto alcuna, ma fondamentalmente utilizzando poco eggs per casi reali, non mi ero ancora reso conto del problema.

Qualche giorno fa ho ricevuto una issue su github:

Hi, I am running encrypted linuxmint-21.1 on btrfs filesystem and using also swapfile. Swapfile 4GB needs its own subvolume, which is mount under folder "/swap". I added "/swap" to "/usr/local/share/penguins-eggs/exclude.list" but It is added to the ISO (~8GB) instead. It seems the exclude.list is not observed for building the squashfs (?!)

ed ho voluto provare a riprodurre il problema.

Esisteva il problema - certo che esisteva - come avevo fatto a non accorgermene per così tanto tempo?

La soluzione

Una volta compreso che l'exclude.list originale era scritto per rsync e, quindi, non è funzionante, l'ho proprio eliminato del tutto e sono ripartito da capo.

Ho ripreso l'ultima versione dell'exclude.list originale di refracta-snapshot e l'ho trasformatp per essere utilizzatp con mksquashfs.

Ed a questo punto, sono lieto di annunciare che adesso sì, funziona benissimo ed è estendibile ed adattabile alle vostre necessità.

Morale

Uno sviluppatore non può mai lavorare da solo - come un poeta - ha bisogno di compagnia!

ha bisogno di Pace, 
ha bisogno di Luce,
ha bisogno di un altra città',
ma un poeta è un poeta,
anche quando cammina,
sulla strada sospeso a metà!

· 4 minuti di lettura
Piero Proietti
Deutsch English Español  Français Italiano Polska  Portuguese  Български  Русский  Українська  やまと  中国  فارسی 

Questo articolo è una libera traduzione dell'articolo how to add giscus comments to docusaurus su dev.to.

Ho anche seguito dal blog di thedaxshepherd.net il post Docu-Adding-Comments.

Durante la stesura, inoltre, mi sono reso conto che è possibile recuperare numerosi esempi direttamente da github, facendo una ricerca sui tag docusauros e giscus.

La pagina è praticamente finita e sono stati attivati i commenti via Giscus, manca tuttavia qualche ritocco.

Quello che mi ha fatto veramente impazzire è stata la mancata installazione del pacchetto @docusaurus/theme-common da effettuarsi con pnpm i @docusaurus/theme-common- Detta così sembrerebbe semplice arrivarci, purtroppo m'è costata quasi una settimana - ben spesa però - ma posso dirlo solo adesso che ho risolto!

Scopo

Questo post è una descrizione passo per passo di come aggiungere Giscus, un sistema di commenti alimentato da GitHub Discussion, ad un sito statico generato con Docusaurus.

Setup Giscus

Configuriamo Giscus e colleghiamolo alle discussioni di github.

Abilitare GitHub discussion

Create una repository Github nel vostro account dove i commenti possano essere memorizzati nella sessione Discussion.

Nella pagina principale della repository creata andate su Settings. Sotto la sezione "Features", cliccate su "Set up discussions".

Modificate il template in "Start a new discussion" e cliccate su "Start discussion".

Abilitate Giscus

Configurate Giscus nel vostro account GitHub.

Nella sezione "Repository access" aggiungete solo il repository creato nel passo precedente per essere accessibile a giscus e fare clic su "Save"

Get repository API key

Accedere con l'account GitHub in GraphQL API Explorer.

Utilizzare la seguente query per ottenere l'id del repository creato, le categorie di discussione con i relativi dettagli (ad esempio, id e nome).

Nota Sostituire proprietario e nome con il nome del proprio account GitHub e il nome del repository creato.

query { 
repository(owner: "pieroproietti", name:"penguins-blog"){
id
discussionCategories(first:10) {
edges {
node {
id
name
}
}
}
}
}

L'oggetto json risultante dovrebbe essere simile a questo:

{
"data": {
"repository": {
"id": "R_kgDOJOjGXA",
"discussionCategories": {
"edges": [
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2L",
"name": "Announcements"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2M",
"name": "General"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2O",
"name": "Ideas"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2Q",
"name": "Polls"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2N",
"name": "Q&A"
}
},
{
"node": {
"id": "DIC_kwDOJOjGXM4CWX2P",
"name": "Show and tell"
}
}
]
}
}
}
}

Create Giscus component

  • Installate il pacchetto @giscus/react:
pnpm i @giscus/react
  • Creiamo il componente Giscus, ad esempio sotto /src/components/GiscusComponent come di seguito:
import React from 'react';
import Giscus from "@giscus/react";
import { useColorMode } from '@docusaurus/theme-common';

export default function GiscusComponent() {
const { colorMode } = useColorMode();

return (
<Giscus
repo="pieroproietti/penguins-blog"
repoId="R_kgDOJOjGXA"
category="General"
categoryId="DIC_kwDOJOjGXM4CWX2M" // E.g. id of "General"
mapping="url" // Important! To map comments to URL
term="Welcome to @giscus/react component!"
strict="0"
reactionsEnabled="1"
emitMetadata="1"
inputPosition="top"
theme={colorMode}
lang="en"
loading="lazy"
crossorigin="anonymous"
async
/>
);
}

Creazione del componente BlogPostItem

  • creazione del componente BlogPostItem per impacchettare i post del blog con il sistema di commenti di Giscus:
pnpm run swizzle @docusaurus/theme-classic BlogPostItem --

e scegliere wrap.

Questo creerà un componente BlogPostItem sotto src/theme.

A questo punto, modificate index.js come di seguito:

import React from 'react';
import { useBlogPost } from '@docusaurus/theme-common/internal'
import BlogPostItem from '@theme-original/BlogPostItem';
import GiscusComponent from '@site/src/components/GiscusComponent';
import useIsBrowser from '@docusaurus/useIsBrowser';

export default function BlogPostItemWrapper(props) {
const { metadata, isBlogPostPage } = useBlogPost()
const isBrowser = useIsBrowser();

const { frontMatter, slug, title } = metadata
const { enableComments } = frontMatter

return (
<>
<BlogPostItem {...props} />
{(enableComments && isBlogPostPage) && (
<GiscusComponent />
)}
</>
);
}

Nota l'Hook useBlogPost() viene utilizzato nel componente BlogPostItem per rendere configurabile l'attivazione dei commenti per post del blog. Il valore chiave enableComments: true deve essere aggiunto al file .md del post del blog per attivare i commenti. Ad esempio:

---
authors: pieroproietti
slug: add-giscus-docusaurus
title: add giscus a docusaurus
lang: it
enableComments: true
---

A fine lavoro, sarà attivata la funzione di commento del post corrente su questa pagina, che potrà essere utilizzata come dimostrazione. Sentitevi liberi di premere il pulsante "Mi piace" se avete trovato utile questo post, o di postare la vostra domanda nei commenti se ne avete una.