Articolo che anticipa una seconda parte dedicata al rifacimento dello script che si occupa di modificare lo stato di Home Mode del sistema tado°. Ho deciso di abbandonare la via di Bash e portare il tutto su Python sfruttando delle librerie che mi permettono di far comunicare agilmente il mio FRITZ!Box con tado° (basandomi sulla presenza in casa di dispositivi conosciuti). RaspberryOS propone nativamente la vecchia 2.7 ormai abbondantemente deprecata, e quella 3.5 un po’ ferma al palo. Ho quindi fatto il necessario salto per mettermi un po’ più al passo con i tempi, ti spiego brevemente come.
Prima di partire
Come da tradizione del blog, appoggio delicatamente qui il solito messaggio promozional-farmaceutico per evitare brutti scherzi o lamentele postume:
Prima di partire, il solito consiglio: occhio sempre a quello che tocchi e che rimuovi, effettua dei backup del tuo sistema per sicurezza. Potrai così tornare indietro in caso di problemi.
Se non sai come effettuare il backup e il ripristino del tuo RPi, ne ho parlato in questo articolo: raspiBackup: backup senza la necessità di togliere la scheda SD (in alternativa, c’è sempre RPi: backup della scheda SD (Windows / macOS)).
Cominciamo: collegati via SSH al tuo RPi e fai partire un aggiornamento completo del sistema operativo e dei pacchetti attualmente installati a bordo, ti basterà lanciare due comandi:
sudo apt-get update sudo apt-get full-upgrade
Il tempo impiegato dipende dallo stato di aggiornamento del tuo RPi (più è indietro e più dovrà scaricare e installare dati), dalla velocità della linea Internet e della scheda SD che monti, porta pazienza, potrebbe volerci un po’ (nota a margine: tieni il tuo sistema aggiornato, falla diventare un’operazione di routine).
Python: aggiornamento
Premetto: io ho usato la versione 3.8.12 con la quale lavoro anche nei repository GitHub con le Actions, nulla ti vieta però di scegliere una versione differente e più aggiornata tra quelle disponibili nello spazio FTP di Python: python.org/ftp/python. I comandi da lanciare su terminale sono i seguenti, puoi tranquillamente fare copia-incolla in blocco e lanciare il tutto direttamente (occhio solo all’eventuale cambio di versione di Python se non vuoi usare la versione 3.8.12):
sudo apt install rustc sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libopenjp2-7 libtiff5 libffi-dev libjpeg-dev bluetooth libbluetooth-dev -y sudo pip3 install pybluez wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz tar xzvf Python-3.8.12.tgz cd Python-3.8.12/ ./configure --enable-optimizations make -j 8 sudo make install
L’operazione durerà parecchi minuti, porta pazienza e non interrompere mai alcun processo a meno che tu non sia realmente costretto.
Al termine, l’installazione di Python aggiornata si troverà in /usr/local/bin/
(quindi /usr/local/bin/python3.8
). Tu ora dovresti poter fare pulizia delle cartelle usate, quindi:
sudo rm -r Python-3.8.12 rm Python-3.8.12.tar.xz
L’aggiornamento – salvo rogne – è completato e disponibile adesso sulla tua macchina (ti anticipo che potrebbe accadere anche qualche errore critico ma non impattante durante la compilazione). Questo non rimuoverà in nessun caso le vecchie versioni di Python. Ti metto qui un piccolo paragrafo bonus dedicato agli alias di sistema che ti consentiranno di richiamare facilmente Python e Pip senza necessità di specificarne la versione in coda (python3.8
e pip3
, per capirci).
Bonus: nano ~/.bashrc
Il file .bashrc
è un file di script che viene eseguito quando un utente accede alla macchina Linux (RPi compreso). Il file contiene generalmente una serie di configurazioni per la sessione terminale e ciò include l’impostazione o l’abilitazione di colori, autocompletamento, cronologia della shell, alias di comando e altro. In riferimento proprio agli alias, possiamo usare questo file per specificare che python
e pip
sono entrambi comandi che portano alle relative versioni aggiornate sul tuo Raspberry OS.
Lancia quindi il comando nano ~/.bashrc
, spostati in fondo al file e aggiungi queste righe:
alias python='/usr/local/bin/python3.8' alias pip=pip3
Se vuoi essere certo che la nuova versione di Python si trovi nella /usr/local/bin
, puoi sempre eseguire un whereis python3.8
, questo ti porterà quasi certamente a qualcosa di simile:
Salva il file, esci ed eseguilo per ricaricare il tutto: source ~/.bashrc
. Lanciando ora un python --version
dovresti ottenere in risposta la versione che hai appena aggiornato. Puoi anche decidere che a un certo punto la versione appena installata diventi quella predefinita di sistema, per farlo ti toccherà lanciare un:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
#StaySafe
Immagine di copertina: Artturi Jalli on Unsplash
Ringraziamenti:
indomus.it/guide/aggiornare-python-su-raspbian-alla-3-8-x-o-superiori-e-ripristinare-home-assistant-core
learn.sparkfun.com/tutorials/python-programming-tutorial-getting-started-with-the-raspberry-pi/configure-your-pi
itheo.tech/install-python-38-on-a-raspberry-pi
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)