Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "andreas-xavier/prova4"
Differenze tra le versioni 58 e 71 (in 13 versioni)
Versione 58 del 14/12/2022 18.32.41
Dimensione: 8356
Commento:
Versione 71 del 20/03/2023 12.20.42
Dimensione: 3592
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 7: Linea 7:
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=636196"; rilasci="14.04 16.04 18.04 20.04 22.04")>> <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=636196"; rilasci="22.04")>>
Linea 11: Linea 11:
Questa guida contiene le informazioni per accedere ad una installazione di Ubuntu attraverso '''chroot''' ('''Ch'''ange '''root'''). Quest'ultima è un'utilità dei sistemi [[https://it.wikipedia.org/wiki/Unix-like|unix-like]] in grado di cambiare root directory apparente, così da creare un nuovo ambiente logicamente separato dalla root del sistema principale. Di seguito sono esposte le istruzioni per creare un '''Ambiente Virtuale di Python''' ('''Python Virtual Environment''') su Ubuntu e derivate.
Linea 13: Linea 13:
In altre parole, con il '''chroot''' è possibile accedere ad un secondo sistema presente nel computer e utilizzarlo tramite [[AmministrazioneSistema/Terminale|riga di comando]]. Si potrà quindi eseguire qualunque azione sul sistema avviato da chroot operando da terminale aperto da un altro sistema '''GNU/Linux''' oppure da sessione '''[[Installazione#Creazione_e_avvio_del_supporto_di_installazione|live]]'''. Gli ambienti virtuali sono una funzionalità utile per isolare le dipendenze e le configurazioni dei progetti. Un ambiente virtuale è una cartella che contiene una copia personale di Python, assieme a tutti i pacchetti installati e relative configurazioni. Ciò comporta diversi vantaggi, fra cui:
 * ogni progetto può avere la sua versione di Python e di pacchetti specifici, senza interferire né sugli altri progetti
 * è possibile lavorare a progetti che usano versioni differenti di Python, di applicazioni, librerie ecc.
 * [facilità per importare/esportare, distribuire progetti]
 * [maggiore sicurezza per pacchetti installati dall'utente o dal sistema.]
Linea 15: Linea 19:
Il '''chroot''' può avere diverse applicazioni. Ad esempio può rivelarsi utile:
 * per riparare un sistema al quale è impossibile accedere, quando non è sufficiente montare il file system ed eseguire semplici modifiche ai file, ma occorre svolgere operazioni avanzate come l'esecuzione di programmi dal sistema danneggiato (un tipico esempio è il [[AmministrazioneSistema/Grub/Ripristino|ripristino di GRUB).
 * per accedere rapidamente ad un altro sistema presente sulla stessa macchina senza lasciare quello già avviato.
 * in alcuni casi, come alternativa alla [[Virtualizzazione|virtualizzazione]] (es: per eseguire una versione di un programma incompatibile con il sistema in uso).
Questa guida contiene soltanto le informazioni di base. Per approfondire si raccomanda la consultazione della documentazione di Python (fare riferimento a [[#Ulteriori_risorse|questo paragrafo]].
Linea 20: Linea 21:
Altre caratteristiche varie del '''chroot''' sono le seguenti:
 * Richiede che i due sistemi siano della medesima architettura (è utile tenerlo a mente in caso di utilizzo da sessione ''live'').
 * Viene adoperato il kernel del sistema di partenza (non di quello a cui si effettua l'accesso).
 * Non è possibile l'apertura simultanea di più sistemi con chroot.
 * È possibile operare anche tra distribuzioni GNU/Linux differenti (ad esempio, è possibile utilizzare Fedora o Arch operando da terminale per accedere ad un Ubuntu e viceversa). Ovviamente, una volta entrati in sessione chroot, bisognerà utilizzare i comandi specifici della distribuzione su cui si è eseguito l'accesso.
= Creazione =
Linea 26: Linea 23:
<<Anchor(preliminari)>>
= Operazioni preliminari =
Per creare l'ambiente virtuale è possibile utilizzare il modulo '''venv''', una strumento integrato in Python, che si occupa di creare in una cartella prescelta tutti gli eseguibili necessari per i pacchetti di cui un progetto Python necessiterebbe.
Linea 29: Linea 25:
 0. Avviare la '''Live''' di '''Ubuntu''' oppure l'altro sistema GNU/Linux presente nel computer.
Linea 31: Linea 26:
 0. [[Hardware/DispositiviPartizioni/IndividuarePartizioni#df|Individuare]] il file system e tutte le partizione su cui è installato il sistema e prenderne nota.<<BR>>Infatti, a seconda delle operazioni che si desidera eseguire, potrebbe essere necessario individuare:
  * Partizione [[AmministrazioneSistema/Uefi|EFI]], se presente.
  * Eventuali [[Hardware/DispositiviPartizioni/SpostareHomePartizioneSeparata|partizioni separate]] per `/boot`, `/home`, `/var` ecc.

{{{#!wiki important
Di seguito verranno mostrati comandi con nomi fittizi delle partizioni. Sostituirli con quelli reali, individuati in [[#preliminari|fase preliminare]].
 0. Per aggiungere il modulo `venv`, [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://python3-venv|python3-venv]].
 0. Per creare una cartella di destinazione digitando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
python3 -m venv nome_della_directory
}}}
 sostituendo `nome_della_directory` con il nome desiderato.
 0. Attivare l'ambiente virtuale con il comando:{{{
source nome_della_directory/bin/activate
}}}
 sostituendo `nome_della_directory` con il nome desiderato.
 {{{#!wiki important
Benché sia possibile creare un ambiente virtuale in qualsiasi posizione, si consiglia la propria '''Home'''.
Linea 39: Linea 39:
<<Anchor(accesso)>>
= Accesso al sistema =

 0. Prima di accedere al sistema occorre [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|montare]] la relativa partizione (o più d'una, se necessario). Digitare nel [[AmministrazioneSistema/Terminale|terminale]] uno dei comandi descritti successivamente.
  * Per partizioni con file system ''ext4'':{{{
sudo mount -t ext4 /dev/sda2 /mnt
}}}
  * Per partizioni con file system ''btrfs'' con due [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]] (impostazione predefinita di Ubuntu):{{{
sudo mount -t btrfs -o subvol=@ /dev/sda3 /mnt
}}}
  * Per partizioni con file system ''btrfs'':{{{
sudo mount -t btrfs /dev/sda3 /mnt
Una volta attivato, la shell in uso punterà alla cartella creata. Se ad esempio si crea la cartella `il_mio_progetto` verrà restituito un output simile al seguente:{{{
(il_mio_progetto) $
Linea 53: Linea 43:
 0. Se presente, montare l'eventuale partizione '''EFI''' (saltare questo passaggio se non necessario). A tal fine digitare:{{{
sudo mount -t vfat /dev/sda2 /mnt/boot/efi/
<<Anchor(config)>>
= Operazioni configurazione =

[importare requests?]
https://docs.python-requests.org/en/latest/

pip install requests

python -c "import requests"

<<Anchor(utilizzo)>>
= Utilizzo =

Per disattivare l'ambiente virtuale:{{{
deactivate
Linea 57: Linea 60:
 <<Anchor(mount)>>
 0. Montare in `/mnt` anche le directory virtuali `/dev`, `/proc`, `/sys` e `/run` con il comando:{{{
for i in dev proc sys run; do sudo mount --bind /$i /mnt/$i; done
Per visualizzare quale ambiente virtuale è in uso:{{{
which python
Linea 62: Linea 64:
 0. Effettuare il '''chroot''' sul sistema montato digitando: {{{
sudo chroot /mnt
Per visualizzare tutti i pacchetti installati ed esportare un file di elenco, spostarsi nella cartella del virtual env e digitare:{{{
pip3 freeze > requirements.txt
Linea 66: Linea 68:
Arrivati a questo punto, all'interno dell'ambiente '''chroot''' sarà possibile effettuare qualsiasi operazione sull'altro sistema tramite [[AmministrazioneSistema/Terminale|terminale]] (ad esempio installare/rimuovere/aggiornare pacchetti, modificare o eliminare file, ripristinarne il corretto avvio ecc.).

{{{#!wiki important
Quando è in uso chroot si ottiene l'accesso come [[AmministrazioneSistema/PrivilegiDiAmministrazione|root]]. Quindi prestare particolare attenzione ai comandi che vengono eseguiti. Si ricorda che non occorre anteporre `sudo` a nessun comando.
Per esportare un ambiente virtuale venv, spostare il file requirements.txt nella directory del nuovo progetto, quindi digitare:{{{
pip3 install -r requirements.txt.
Linea 72: Linea 72:
<<Anchor(abbandono)>>
= Uscita dal sistema =

 0. Uscire dal '''chroot''' premendo la combinazione di tasti '''Ctrl+D''' o con il comando:{{{
exit
Per rimuovere completamente un virtual environment digitare:{{{
rm -r venv/
Linea 78: Linea 75:
 0. Se necessario, tornare in `~`:{{{
cd ~
}}}
 0. Smontare tutte le directory virtuali con il comando:{{{
for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
}}}
 0. Se presente, smontare anche l'eventuale partizione '''EFI''' (saltare il passaggio se non necessario):{{{
sudo umount /dev/sda2 /mnt/boot/efi/
}}}
 0. Smontare infine la partizione di sistema sulla quale si è operato, digitando uno dei seguenti comandi.
  * Per partizioni con file system ''ext4'':{{{
sudo umount /dev/sda1 /mnt
}}}
  * Per partizioni con file system ''btrfs'' con due [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]] (impostazione predefinita di '''Ubuntu'''):{{{
sudo umount -t btrfs -o subvol=@ /dev/sda3 /mnt
}}}
  * Per partizioni con file system ''btrfs'':{{{
sudo umount -t btrfs /dev/sda3 /mnt
}}}

Per accedere normalmente all'altro sistema riavviare come di consueto il computer oppure terminare la sessione ''Live''.

= Risoluzione problemi =

== Connessione ai repository non riuscita ==

Se provando ad aggiornare il sistema appare un output simile al seguente:{{{
root@notebook:/# apt update
Ignorato:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Ignorato:2 http://it.archive.ubuntu.com/ubuntu jammy InRelease
Ignorato:3 http://it.archive.ubuntu.com/ubuntu jammy-updates InRelease


W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita
W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita

}}}
digitare il seguente comando:{{{
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
}}}
e riprovare l'aggiornamento.

== Assenza connessione alla rete ==

In rari casi potrebbe capitare che il '''chroot''' non riesca a navigare in rete. Per verificare se è causato dal non funzionamento della connessione, digitare il comando:{{{
ping -c 4 ubuntu.com
}}}
Un output simile al seguente indica il non funzionamento della connessione alla rete:{{{
ping: ubuntu.com: Nome o servizio sconosciuto
}}}

Per aggirare il problema eseguire la seguente procedura:

 0. [[#abbandono|Uscire]] dal '''chroot'''.
 0. Ripetere la procedura di [[#accesso|accesso]] al '''chroot''' fino a questo [[#mount|passaggio]].
 0. Montare separatamente la directory `/etc/resolv.conf`, digitando il seguente comando:{{{
sudo mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
}}}
 0. Eseguire il '''chroot''' come descritto nel passaggio successivo.
Linea 140: Linea 78:
 * [[https://en.wikipedia.org/wiki/Chroot|Pagina enciclopedica]]
 * [[https://wiki.debian.org/it/chroot|Wiki di Debian]]
 * [[Programmazione/DebootstrapChroot|Guida a debootstrap]]
 * [[AmministrazioneSistema/ComandiBase#Gestione_del_filesystem|Comandi per montare partizioni]]
 * [[AmministrazioneSistema/Grub|Guide su GRUB]]
 * [[https://docs.python.org/3/library/venv.html|Creation of virtual environments]] (documentazione ufficiale Python)
 * [[https://docs.python.org/3/library/venv.html|venv]]
 * [[https://virtualenv.pypa.io/en/stable/index.html|virtualenv]]
 * [[Programmazione/Python|Guida Python]]
Linea 147: Linea 84:
##CategoryAmministrazione
##----
##CategoryProgrammazione


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Guida verificata con Ubuntu: 22.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Di seguito sono esposte le istruzioni per creare un Ambiente Virtuale di Python (Python Virtual Environment) su Ubuntu e derivate.

Gli ambienti virtuali sono una funzionalità utile per isolare le dipendenze e le configurazioni dei progetti. Un ambiente virtuale è una cartella che contiene una copia personale di Python, assieme a tutti i pacchetti installati e relative configurazioni. Ciò comporta diversi vantaggi, fra cui:

  • ogni progetto può avere la sua versione di Python e di pacchetti specifici, senza interferire né sugli altri progetti
  • è possibile lavorare a progetti che usano versioni differenti di Python, di applicazioni, librerie ecc.
  • [facilità per importare/esportare, distribuire progetti]
  • [maggiore sicurezza per pacchetti installati dall'utente o dal sistema.]

Questa guida contiene soltanto le informazioni di base. Per approfondire si raccomanda la consultazione della documentazione di Python (fare riferimento a questo paragrafo.

Creazione

Per creare l'ambiente virtuale è possibile utilizzare il modulo venv, una strumento integrato in Python, che si occupa di creare in una cartella prescelta tutti gli eseguibili necessari per i pacchetti di cui un progetto Python necessiterebbe.

  1. Per aggiungere il modulo venv, installare il pacchetto python3-venv.

  2. Per creare una cartella di destinazione digitando nel terminale:

    python3 -m venv nome_della_directory

    sostituendo nome_della_directory con il nome desiderato.

  3. Attivare l'ambiente virtuale con il comando:

    source nome_della_directory/bin/activate

    sostituendo nome_della_directory con il nome desiderato.

    Benché sia possibile creare un ambiente virtuale in qualsiasi posizione, si consiglia la propria Home.

Una volta attivato, la shell in uso punterà alla cartella creata. Se ad esempio si crea la cartella il_mio_progetto verrà restituito un output simile al seguente:

(il_mio_progetto) $

Operazioni configurazione

[importare requests?] https://docs.python-requests.org/en/latest/

pip install requests

python -c "import requests"

Utilizzo

Per disattivare l'ambiente virtuale:

deactivate

Per visualizzare quale ambiente virtuale è in uso:

which python

Per visualizzare tutti i pacchetti installati ed esportare un file di elenco, spostarsi nella cartella del virtual env e digitare:

pip3 freeze > requirements.txt

Per esportare un ambiente virtuale venv, spostare il file requirements.txt nella directory del nuovo progetto, quindi digitare:

pip3 install -r requirements.txt.

Per rimuovere completamente un virtual environment digitare:

rm -r venv/

Ulteriori risorse


CategoryHomepage CategoryNuoviDocumenti