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 50 e 71 (in 21 versioni)
Versione 50 del 14/12/2022 13.24.37
Dimensione: 9052
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 cercare di riparare un sistema al quale non è possibile accedere normalmente (es.: in caso di problemi con '''[[AmministrazioneSistema/Grub|GRUB]]''');
 * per accedere rapidamente ad un altro sistema presente sulla stessa macchina senza lasciare quello già avviato.
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 19: Linea 21:
{{{#!wiki note
Con chroot non è possibile l'apertura simultanea di più sistemi. Pertanto montare un solo sistema per volta.
= 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.


 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 23: Linea 39:
{{{#!wiki tip
Il chroot permette di 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.
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 27: Linea 43:
<<Anchor(preliminari)>>
= Operazioni preliminari =
<<Anchor(config)>>
= Operazioni configurazione =
Linea 30: Linea 46:
 0. Avviare la '''Live''' di '''Ubuntu''' oppure l'altro sistema GNU/Linux presente nel computer. [importare requests?]
https://docs.python-requests.org/en/latest/
Linea 32: Linea 49:
 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|dischi o partizioni separate]]|partizioni separate]] per `/boot`, `/home`, `var` ecc.
pip install requests
Linea 36: Linea 51:
<<Anchor(accesso)>>
= Accesso al sistema =
python -c "import requests"
Linea 39: Linea 53:
{{{#!wiki important
Di seguito verranno mostrati comandi con nomi fittizi delle partizioni. Sostituirli con quelli reali, individuati in [[#preliminari|fase preliminare]].
<<Anchor(utilizzo)>>
= Utilizzo =

Per disattivare l'ambiente virtuale:{{{
deactivate
Linea 43: Linea 60:
 0. Di seguito sono riportati esempi di comandi per montare la partizione sulla quale risiede il sistema a cui si desidera accedere: sistemi installati su partizioni con con file system ''ext4'' o ''[[AmministrazioneSistema/Filesystem/Btrfs|btrfs]]'', con l'eventuale partizione '''EFI''' installata su `/dev/sda2` con file system ''fat32''. Utilizzare, con le opportune modifiche, soltanto il comando relativo al sistema a cui si desidera accedere.
   * Per montare la partizione `/dev/sda1` con file system ''ext4'' digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t ext4 /dev/sda1 /mnt
}}}
   * Per montare la partizione `/dev/sdc1` con file system ''btrfs'' creato con due [[Hardware/DispositiviPartizioni/Btrfs/Introduzione#Presentazione_subvolume|subvolumi]] (impostazione predefinita dall'installer di '''Ubuntu''') digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t btrfs -o subvol=@ /dev/sdc1 /mnt
}}}
  * Per montare la partizione `/dev/sdc1` con file system ''btrfs'' digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mount -t btrfs /dev/sdc1 /mnt
}}}
 
 Montare l'eventuale partizione '''EFI''' con il comando:{{{
sudo mount -t vfat /dev/sda2 /mnt/boot/efi/
}}}
 <<Anchor(punto4)>>
 0. Montare le directory `dev`, `proc`, `sys`, `run` con i comandi:{{{
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
}}}
 In alternativa è possibile eseguire l'unico 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 68: Linea 64:


 <<Anchor(norete)>>
 0. Effettuare un '''chroot''' sul sistema 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 75: 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 81: 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 87: Linea 75:
 0. Smontare tutti i dispositivi con i seguenti comandi:{{{
cd ~
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/
}}}
 In alternativa è possibile eseguire l'unico comando:{{{
cd ~ && for i in /dev /proc /sys /run /; do sudo umount -l /mnt$i; done
}}}
 0. Se presente, smontare l'eventuale partizione '''EFI''' con il comando:{{{
sudo umount /dev/sda1 /mnt/boot/efi/
}}}
 sostituendo eventualmente `/dev/sda1` con la partizione EFI effettiva presente nel proprio sistema.

In caso di configurazioni particolari occorre utilizzare comandi specifici per smontare le partizioni (passaggio 2). A tal proposito, di seguito sono riportati alcuni esempi di comandi per smontare la partizione sulla quale risiede il sistema su cui si è operato, da utilizzare con le opportune modifiche in base al proprio caso.
 * Per smontare la partizione `/dev/sda1`:{{{
sudo umount /dev/sda1 /mnt
}}}
 * Per smontare la partizione `/dev/sdc1` con file system ''btrfs'' con due subvolumi:{{{
sudo umount -t btrfs -o subvol=@ /dev/sdc1 /mnt
}}}
 * Per smontare la partizione `/dev/sdc1` con file system ''btrfs'':{{{
sudo umount -t btrfs /dev/sdc1 /mnt
}}}

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

= Risoluzione problemi =

== Connessione ai repository ignorata ==

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
Ignorato:4 https://downloads.sourceforge.net/project/ubuntuzilla/mozilla/apt all InRelease
Ignorato:5 http://it.archive.ubuntu.com/ubuntu jammy-backports InRelease


W: Impossibile recuperare http://it.archive.ubuntu.com/ubuntu/dists/jammy/InRelease Risoluzione di "it.archive.ubuntu.com" temporaneamente non riuscita
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 al [[#punto4|punto 4]].
 0. Montare separatamente la directory `/etc/resolv.conf`, digitando il seguente comando:{{{
sudo mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
}}}
 0. Completare la procedura dal [[#norete|punto 5]].
Linea 159: 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 166: 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