From 799c49f3e6a6cb66bbbe767bb320705e4c2fa39f Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 16 May 2022 13:16:32 -0400 Subject: [PATCH 01/51] New translations nmcli.md (Italian) --- docs/gemstones/nmcli.it.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 docs/gemstones/nmcli.it.md diff --git a/docs/gemstones/nmcli.it.md b/docs/gemstones/nmcli.it.md new file mode 100644 index 0000000000..c9a5a2780e --- /dev/null +++ b/docs/gemstones/nmcli.it.md @@ -0,0 +1,32 @@ +--- +title: nmcli - imposta connessione automatica +author: wale soyinka +--- + +# Modifica della proprietà di autoconnessione del profilo di connessione di NetworkManager + +Per prima cosa utilizzate nmcli per interrogare e visualizzare il valore corrente della proprietà autoconnect per tutte le connessioni di rete su un sistema Rocky Linux. Digita: + +``` +nmcli -f name,autoconnect connection +``` + +Per modificare il valore di una proprietà per una connessione di rete, utilizzare il sottocomando `modify` con `nmcli connection`. Ad esempio, per modificare il valore della proprietà autoconnect da `no` a `yes` per il profilo di connessione `ens3`, digitare: + +``` +sudo nmcli con mod ens3 connection.autoconnect yes +``` + +## Spiegazione dei Comandi + +``` +connection (con) : oggetto di connessione NetworkManager. +modify (mod) : modifica di una o più proprietà di un dato profilo di connessione +connection.autoconnect : L'impostazione e la proprietà (.) +-f, --fields : specificare i campi da emettere + +``` + +## Note + +Questo suggerimento mostra come modificare un profilo di connessione di NetworkManager esistente. È utile quando l'interfaccia di rete non viene attivata automaticamente dopo una nuova installazione di Rocky Linux o un aggiornamento del sistema. Spesso il motivo è che il valore della proprietà autoconnect è impostato su `no`. È possibile utilizzare il comando `nmcli` per modificare rapidamente il valore in `yes`. From c6f7f0162c47e0f7056e37e50bb1fa12f5c78be0 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 17 May 2022 03:12:56 -0400 Subject: [PATCH 02/51] New translations 8_6.md (Italian) --- docs/release_notes/8_6.it.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/release_notes/8_6.it.md b/docs/release_notes/8_6.it.md index b5f0310e36..940d8fa8b9 100644 --- a/docs/release_notes/8_6.it.md +++ b/docs/release_notes/8_6.it.md @@ -37,6 +37,10 @@ Nuovi moduli sono disponibili per: * `bind9.16` emesso in alternativa ai pacchetti regolari `bind` con un set di funzionalità avanzate. Per ulteriori informazioni su questo vedi [Servizi infrastrutturali](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/8.6_release_notes#enhancement_infrastructure-services) a monte. +### Ansible + +Ora puoi installare `ansible-core` dal repository Appstream di Rocky Linux. Se hai già installato `ansible` da un'altra sorgente, dovrai disinstallarlo per poter aggiornare ansible. + ## Nuovi Moduli * container-tools:4.0 From d1cd6a23655e3cd6263992681ffb7d7c8940a61a Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 17 May 2022 11:07:55 -0400 Subject: [PATCH 03/51] New translations 8_6.md (Italian) --- docs/release_notes/8_6.it.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release_notes/8_6.it.md b/docs/release_notes/8_6.it.md index 940d8fa8b9..0184f75690 100644 --- a/docs/release_notes/8_6.it.md +++ b/docs/release_notes/8_6.it.md @@ -74,6 +74,7 @@ Semplicemente esegui `sudo dnf -y upgrade`. * `kdump`: Attualmente, quando si usa un metodo di installazione interattivo, il discorso di `kdump` deve essere inserito per ultimo. Questo include qualsiasi piano per la crittografia del disco. In questi casi, se si prevede di disattivare `kdump`, formattare il disco con la crittografia prima di disattivarlo. * ISO minimale: quando si esegue un'installazione con la ISO minimale, si deve essere preparati alla mancanza di pacchetti, in particolare dal repository AppStream (rsyslog, policycoreutils-python-utils, ecc.). Questo è prevedibile. +* KDE e [questo bug del kernel](https://bugzilla.redhat.com/show_bug.cgi?id=2082719): se si utilizza KDE su 8.5 e si passa a 8.6, è molto probabile che si verifichino dei problemi. Il bug referenziato si occupa dell'incapacità di sbloccare lo schermo dopo il blocco. Una soluzione consiste nell'avviare il kernel più vecchio in GRUB all'avvio. Come per qualsiasi rilascio, ci sono problemi che sono già noti. Puoi vedere la lista attuale dei problemi dall'upstream [qui](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.6_release_notes/known-issues). From 5abb5cebc640730ea734521e21aefa0156183c7f Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:54:37 -0400 Subject: [PATCH 04/51] New translations 03-commands.md (Italian) --- docs/books/admin_guide/03-commands.it.md | 381 ++++++++++++----------- 1 file changed, 193 insertions(+), 188 deletions(-) diff --git a/docs/books/admin_guide/03-commands.it.md b/docs/books/admin_guide/03-commands.it.md index a81fe77e50..9eb1485074 100644 --- a/docs/books/admin_guide/03-commands.it.md +++ b/docs/books/admin_guide/03-commands.it.md @@ -463,7 +463,7 @@ Esempio: ```bash $ ls /home -. .. .. +. .. rockstar ``` Le opzioni principali del comando `ls` sono: @@ -481,7 +481,7 @@ Il comando `ls`, tuttavia, ha molte opzioni (vedi `man`): | `-d` | Visualizza le informazioni di una directory invece di elencare i suoi contenuti. | | `-g` | Visualizza UID e GID al posto dei nomi dei proprietari. | | `-h` | Visualizza le dimensioni dei file nel formato più appropriato (byte, kilobyte, megabyte, gigabyte, ...). `h` stà per Human Readable. | -| `-s` | Visualizza la dimensione in byte (tranne l'opzione`k`). | +| `-s` | Visualizza il numero di blocchi occupati dal file. Un blocco è uguale a 400K. | | `-A` | Visualizza tutti i file nella directory tranne`.` e `..`. | | `-R` | Visualizza il contenuto delle sottodirectory in modo ricorsivo. | | `-F` | Visualizza il tipo di file. Stampa un`/` per una directory, `*` per gli eseguibili, `@` per un collegamento simbolico, e niente per un file di testo. | @@ -494,16 +494,16 @@ $ ls -lia /home 78489 drwx------ 4 rockstar rockstar 4096 25 oct. 08:10 rockstar ``` -| Valore | Informazione | -| --------------- | --------------------------------------------------------------------------------------------------------------- | -| `78489` | Numero di inode. | -| `drwx------` | Tipo di file (`d`) e permessi (`rwx------`). | -| `4` | Numero di sottodirectory. (`.` e `..` incluse). Per un file di tipo link fisico: numero di collegamenti fisici. | -| `rockstar` | Proprietà dell'utente. | -| `rockstar` | Proprietà del gruppo. | -| `4096` | Dimensione in byte. | -| `25 oct. 08:10` | Ultima data di modifica. | -| `rockstar` | Il nome del file (o directory). | +| Valore | Informazione | +| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `78489` | Numero di inode. | +| `drwx------` | Tipo di file (`d`) e permessi (`rwx------`). | +| `4` | Numero di sottodirectory. (`.` e `..` incluse). Per un file di tipo link fisico: numero di collegamenti fisici. | +| `rockstar` | Proprietà dell'utente. | +| `rockstar` | Proprietà del gruppo. | +| `4096` | Per i file, mostra la dimensione del file. Per le directory, mostra il valore fisso di 4096 byte occupati dal nome del file. Per calcolare la dimensione totale di una directory, usa `du -sh rockstar/` | +| `25 oct. 08:10` | Ultima data di modifica. | +| `rockstar` | Il nome del file (o directory). | !!! Note "Nota" @@ -542,23 +542,26 @@ $ ls -Rlh /var | grep [0-9]M ... ``` +Naturalmente, si consiglia vivamente di utilizzare il comando `find`. + +```bash +$ find /var -size +1M -a -size -1024M -a -type f -exec ls -lh {} \; +``` + * Mostra i permessi di una cartella: Per scoprire i permessi di una cartella, nel nostro esempio `/etc`, il seguente comando non sarebbe appropriato: ```bash -$ ls -l /etc -total 1332 --rw-r--r--. 1 root root 44 18 nov. 17:04 adjtime +$ ls -ld /etc +drwxr-xr-x. 69 root root 4096 18 nov. 17:04 adjtime -rw-r--r--. 1 root root 1512 12 janv. 2010 aliases -rw-r--r--. 1 root root 12288 17 nov. 17:41 aliases.db drwxr-xr-x. 2 root root 4096 17 nov. 17:48 alternatives ... ``` -dal momento che elenca il contenuto della cartella e non la cartella stessa. - -Per fare ciò, useremo l'opzione `d`: +Il comando precedente visualizzerà il contenuto della cartella (all'interno) per impostazione predefinita. Per la cartella stessa, è possibile utilizzare l'opzione `-d`. ```bash $ ls -ld /etc @@ -571,7 +574,7 @@ drwxr-xr-x. 69 root root 4096 18 nov. 17:05 /etc $ ls -lhS ``` -* Visualizza la data di modifica nel formato "timestamp": +* formato ora/data con `-l`: ```bash $ ls -l --time-style="+%Y-%m-%d %m-%d %H:%M" / @@ -585,14 +588,13 @@ dr-xr-xr-x. 5 root root 1024 2014-11-23 11-23 05:29 boot Per impostazione predefinita, il comando `ls` non visualizza l'ultima barra di una cartella. In alcuni casi, come per gli script, ad esempio, è utile visualizzarla: ```bash -$ ls -dF /etc -/etc/ +$ ls /etc --hide=*.conf ``` * Nascondi alcune estensioni: ```bash -$ ls /etc --hide=*.conf +mkdir [-p] directory [directory] [...] ``` ### comando `mkdir` @@ -600,7 +602,7 @@ $ ls /etc --hide=*.conf Il comando `mkdir` crea una directory o un albero di directory. ```bash -mkdir [-p] directory [directory] [...] +$ mkdir /home/rockstar/work ``` Esempio: @@ -622,7 +624,7 @@ Altrimenti, dovrebbe essere utilizzata l'opzione `-p`. L'opzione `-p` crea le di Il comando `touch` cambia il timestamp di un file o crea un file vuoto se il file non esiste. ```bash -touch [-t date] file +$ touch /home/rockstar/myfile ``` Esempio: @@ -688,10 +690,7 @@ La fine delle opzioni è segnalata alla shell da un doppio trattino `--`. Nell'esempio: ```bash -$ >-hard-hard # To create an empty file called -hard-hard -hard-hard -[CTRL+C] To interrupt the creation of the file -$ rm -f -- -hard-hard +mv file [file ...] destination ``` Il nome del file hard-hard inizia con un `-`. Senza l'uso del `--` la shell avrebbe interpretato il `-d` in `-hard-hard` come un'opzione. @@ -701,14 +700,14 @@ Il nome del file hard-hard inizia con un `-`. Senza l'uso del `--` la shell avre Il comando `mv` muove e rinomina un file. ```bash -mv file [file ...] destination +$ mv /home/rockstar/file1 /home/rockstar/file2 +$ mv /home/rockstar/file1 /home/rockstar/file2 /tmp ``` Esempi: ```bash $ mv /home/rockstar/file1 /home/rockstar/file2 -$ mv /home/rockstar/file1 /home/rockstar/file2 /tmp ``` | Opzioni | Informazione | @@ -719,37 +718,37 @@ $ mv /home/rockstar/file1 /home/rockstar/file2 /tmp Alcuni casi concreti ti aiuteranno a capire le difficoltà che possono sorgere: ```bash -$ mv /home/rockstar/file1 /home/rockstar/file2 +$ mv /home/rockstar/file1 /home/rockstar/file2 /tmp ``` -Rinominare `file1` in `file2`, se `file2` esiste già, sarà sostituito da `file1`. +Rinomina `file1` a `file2`. Se `file2` esiste già, sostituisci il contenuto del file con `file1`. ```bash -$ mv /home/rockstar/file1 /home/rockstar/file2 /tmp +$ mv file1 /repexist/file2 ``` Muovere `file1` e `file2` nella directory `/tmp`. ```bash -$ mv file1 /repexist/file2 +$ mv file1 file2 ``` Muovere `file1` in `repexist` e rinominarlo `file2`. ```bash -$ mv file1 file2 +$ mv file1 /repexist ``` `file1` è rinominato con `file2`. ```bash -$ mv file1 /repexist +$ mv file1 /wrongrep ``` Se esiste la directory di destinazione, `file1` viene spostato in `/repexist`. ```bash -$ mv file1 /wrongrep +cp file [file ...] destination ``` Se la directory di destinazione non esiste, `file1` viene rinominato in `wrongrep` nella directory principale. @@ -759,13 +758,13 @@ Se la directory di destinazione non esiste, `file1` viene rinominato in `wrongre Il comando `cp` copia un file. ```bash -cp file [file ...] destination +$ cp -r /home/rockstar /tmp ``` Esempio: ```bash -$ cp -r /home/rockstar /tmp +cp file1 /repexist/file2 ``` | Opzioni | Informazione | @@ -777,25 +776,25 @@ $ cp -r /home/rockstar /tmp | `-s` | Crea un collegamento simbolico invece di copiare. | ```bash -cp file1 /repexist/file2 +$ cp file1 file2 ``` `file1` viene copiato in `/repexist` con il nome `file2`. ```bash -$ cp file1 file2 +$ cp file1 /repexist ``` `file1` è copiato come `file2` in questa directory. ```bash -$ cp file1 /repexist +$ cp file1 /wrongrep ``` Se esiste la directory di destinazione, `file1` viene copiato in `/repexist`. ```bash -$ cp file1 /wrongrep +file file1 [files] ``` Se la directory di destinazione non esiste, `file1` è copiato sotto il nome `wrongrep` nella directory principale. @@ -807,15 +806,15 @@ Se la directory di destinazione non esiste, `file1` è copiato sotto il nome `wr Il comando `file` visualizza il tipo di un file. ```bash -file file1 [files] +$ file /etc/passwd /etc +/etc/passwd: ASCII text +/etc: directory ``` Esempio: ```bash -$ file /etc/passwd /etc -/etc/passwd: ASCII text -/etc: directory +more file1 [files] ``` ### comando `more` @@ -823,15 +822,15 @@ $ file /etc/passwd /etc Il comando `more` visualizza il contenuto di uno o più files tramite schermo. ```bash -more file1 [files] +$ more /etc/passwd +root:x:0:0:root:/root:/bin/bash +... ``` Esempio: ```bash -$ more /etc/passwd -root:x:0:0:root:/root:/bin/bash -... +less file1 [files] ``` Usando il tasto ENTER, lo spostamento è linea per linea. Usando il tasto SPACE, lo spostamento è pagina per pagina. `/text` Ti consente di cercare la corrispondenza nel file. @@ -841,40 +840,40 @@ Usando il tasto ENTER, lo spostamento è linea per linea. Usando il t Il comando `Less` visualizza il contenuto di uno o più file. Il comando `less` è interattivo e ha i propri comandi per l'uso. ```bash -less file1 [files] +cat file1 [files] ``` I comandi specifici per `less` sono: -| Command | Action | -| ----------------- | --------------------------------------------------- | -| `h` | Aiuto. | -| `Arrows` | Sposta su, giù di una linea, o a destra e sinistra. | -| `Enter` | Sposta giù di una riga. | -| `Space` | Sposta giù di una pagina. | -| `PgUp` and `PgDn` | Sposta su o giù di una pagina. | -| `Begin` and `End` | Passa all'inizio o alla fine di un file. | -| `/text` | Cerca il testo. | -| `q` | Chiude il comando`less`. | +| Command | Action | +| ------------------------------------------------ | --------------------------------------------------- | +| h | Aiuto. | +| | Sposta su, giù di una linea, o a destra e sinistra. | +| Invio | Sposta giù di una riga. | +| Spazio | Sposta giù di una pagina. | +| `PgUp` and `PgDn` | Sposta su o giù di una pagina. | +| `Begin` and `End` | Passare alla prima e all'ultima pagina | +| `/text` | Cerca il testo. | +| q | Chiude il comando`less`. | ### comando `cat` Il comando `cat` concatena il contenuto di più file e visualizza il risultato sull'output standard. ```bash -cat file1 [files] +$ cat /etc/passwd ``` Esempio 1 - Visualizzazione del contenuto di un file in output standard: ```bash -$ cat /etc/passwd +$ cat /etc/passwd /etc/group ``` Esempio 2 - Visualizzazione del contenuto di più file in output standard: ```bash -$ cat /etc/passwd /etc/group +$ cat /etc/passwd /etc/group > usersAndGroups.txt ``` Esempio 3 - Visualizzazione del contenuto di diversi file nel file `usersAndGroups.txt`: @@ -886,13 +885,12 @@ $ cat /etc/passwd /etc/group > usersAndGroups.txt Esempio 4 - Visualizzazione della numerazione di linea: ```bash -$ cat -n /etc/profile +$ cat -b /etc/profile 1 # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) 2 # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). - 3 - 4 if [ "`id -u`" -eq 0 ]; then - 5 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - 6 else + 3 if [ "`id -u`" -eq 0 ]; then + 4 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + 5 else … ``` @@ -916,7 +914,7 @@ Il comando `tac` fa quasi il contrario del comando `cat`. Visualizza il contenut Esempio: Visualizza un file di log visualizzando prima l'ultima riga: ```bash -[root]# tac /var/log/messages | less +head [-n x] file ``` ### comando `head` @@ -924,7 +922,7 @@ Esempio: Visualizza un file di log visualizzando prima l'ultima riga: Il comando `head` visualizza l'inizio di un file. ```bash -head [-n x] file +tail [-f] [-n x] file ``` | Opzione | Osservazione | @@ -938,7 +936,10 @@ Per impostazione predefinita (senza l'opzione `-n`), il comando `head` visualizz Il comando `tail` visualizza la fine di un file. ```bash -tail [-f] [-n x] file +tail -n 3 /etc/passwd +sshd:x:74:74:Privilege-separeted sshd:/var/empty /sshd:/sbin/nologin +tcpdump::x:72:72::/:/sbin/nologin +user1:x:500:500:grp1:/home/user1:/bin/bash ``` | Opzione | Osservazione | @@ -949,10 +950,7 @@ tail [-f] [-n x] file Esempio: ```bash -tail -n 3 /etc/passwd -sshd:x:74:74:Privilege-separeted sshd:/var/empty /sshd:/sbin/nologin -tcpdump::x:72:72::/:/sbin/nologin -user1:x:500:500:grp1:/home/user1:/bin/bash +sort [-kx] [-n] [-u] [-o file] [-ty] file ``` Con l'opzione `-f`, il comando `tail` non visualizza solo il file sullo standard output ma funziona finché l'utente non lo interrompe con la sequenza CTRL + C. Questa opzione è utilizzata molto frequentemente per tracciare i file di registro (i log) in tempo reale. @@ -966,7 +964,9 @@ Il comando `sort` ordina le linee di un file. Ti consente di ordinare il risultato di un comando o del contenuto di un file in un determinato ordine, numericamente, alfabeticamente, per dimensione (KB, MB, GB) o in ordine inverso. ```bash -sort [-kx] [-n] [-u] [-o file] [-ty] file +$ sort -k3 -t: -n -r /etc/passwd +root:x:0:0:root:/root:/bin/bash +adm:x:3:4:adm:/var/adm/:/sbin/nologin ``` Esempio: @@ -977,14 +977,14 @@ root:x:0:0:root:/root:/bin/bash adm:x:3:4:adm:/var/adm/:/sbin/nologin ``` -| Opzione | Observation | -| --------- | ---------------------------------------------- | -| `-kx` | Specifica la colonna`x` per ordinare | -| `-n` | Richiede un ordinamento numerico | -| `-o file` | Salva l'ordinamento nel file specificato | -| `-ty` | Specifica il carattere separatore di campo `y` | -| `-r` | Inverte l'ordine del risultato | -| `- u` | Conserva solo risultati unici | +| Opzione | Observation | +| --------- | --------------------------------------------------------------------------------------------------------------------------- | +| `-kx` | Specifica le colonne da separare. È possibile specificare più colonne | +| `-n` | Richiede un ordinamento numerico | +| `-o file` | Salva l'ordinamento nel file specificato | +| `-ty` | Specifica il carattere separatore di campo `y` | +| `-r` | Inverte l'ordine del risultato. Usato in combinazione con l'opzione `-n` per ordinare in ordine da più grande a più piccolo | +| `- u` | Rimuovi i duplicati dopo l'ordinamento. Equivalente a `ordinare il file uniq` | Il comando `sort` ordina il file solo sullo schermo. Il file non è modificato dall'ordinamento. Per salvare l'ordinamento, usa l'opzione `-o` o un reindirizzamento dell'output `>`. @@ -993,9 +993,7 @@ Per impostazione predefinita, i numeri sono ordinati in base al loro carattere. Il comanda `sort` inverte l'ordine del risultato, con l'opzione `-r`: ```bash -$ sort -k3 -t: -n -r /etc/passwd -root:x:0:0:root:/root:/bin/bash -adm:x:3:4:adm:/var/adm/:/sbin/nologin +$ sort -R /etc/passwd ``` In questo esempio, il comando `sort` ordinerà il contenuto del file `/etc /passwd` questa volta dal Uid più grande al più piccolo. @@ -1007,7 +1005,11 @@ Alcuni esempi avanzati di utilizzazione del comando `sort`: Il comando `sort` ti consente anche di mescolare valori con l'opzione `-R`: ```bash -$ sort -R /etc/passwd +192.168.1.10 +192.168.1.200 +5.1.150.146 +208.128.150.98 +208.128.150.99 ``` * Ordinamento degli indirizzi IP @@ -1017,14 +1019,6 @@ Un amministratore di sistema si deve spesso confrontare con l'elaborazione di in Ecco un esempio con il file `dns-client.txt`: ``` -192.168.1.10 -192.168.1.200 -5.1.150.146 -208.128.150.98 -208.128.150.99 -``` - -```bash $ sort -nr dns-client.txt 208.128.150.99 208.128.150.98 @@ -1033,19 +1027,20 @@ $ sort -nr dns-client.txt 5.1.150.146 ``` -* Ordinamento file rimuovendo i duplicati - -Il comando `sort` sa come rimuovere i duplicati dall'output del file usando `-u` come opzione. - -Ecco un esempio con il file `colours.txt`: - -``` +```bash Red Green Blue Red Pink ``` + +* Ordinamento file rimuovendo i duplicati + +Il comando `sort` sa come rimuovere i duplicati dall'output del file usando `-u` come opzione. + +Ecco un esempio con il file `colours.txt`: + ``` $ sort -u colours.txt Blue @@ -1053,13 +1048,6 @@ Green Pink Red ``` - -* Ordinamento file per dimensioni - -Il comando `sort` sa riconoscere le dimensioni dei file, da comandi come `ls` con l'opzione `-h`. - -Ecco un esempio con il file `size.txt`: - ``` 1,7G 18M @@ -1073,7 +1061,13 @@ Ecco un esempio con il file `size.txt`: 4G ``` -```bash +* Ordinamento file per dimensioni + +Il comando `sort` sa riconoscere le dimensioni dei file, da comandi come `ls` con l'opzione `-h`. + +Ecco un esempio con il file `size.txt`: + +``` $ sort -hr size.txt 4,2G 4G @@ -1087,12 +1081,16 @@ $ sort -hr size.txt 69K ``` +```bash +wc [-l] [-m] [-w] file [files] +``` + ### comando `wc` Il comando `wc` conta il numero di linee, parole e/o byte in un file. ```bash -wc [-l] [-m] [-w] file [files] +find directory [-name name] [-type type] [-user login] [-date date] ``` | Option | Osservazione | @@ -1109,7 +1107,7 @@ wc [-l] [-m] [-w] file [files] Il comando `find` ricerca per file o posizione della directory. ```bash -find directory [-name name] [-type type] [-user login] [-date date] +$ find /tmp -name *.txt -exec rm -f {} \; ``` Dal momento che ci sono così tante opzioni nel comando `find`, è meglio fare riferimento a `man`. @@ -1133,9 +1131,9 @@ Il comando precedente cerca tutti i file nella directory `/tmp` con il suffisso !!! Tip "Comprendere l'opzione `-exec`" - Nell'esempio precedente, il comando `find` costruirà una stringa che rappresenta il comando da eseguire. + Nell'esempio sopra, il comando `find` costruirà una stringa che rappresenta il comando da eseguire. - Se il comando `find` trova tre file chiamati `log1.txt`, `log2.txt` e `log3.txt`, allora il comando `find` costruirà la stringa sostituendo le parentesi nella stringa `rm -f {} \;` con uno dei risultati della ricerca, e lo farà tante volte quanti sono i risultati. + Se il comando `find` trova tre file denominati `log1.txt`, `log2.txt`, e `log3.txt`, il comando `find` costruirà la stringa sostituendo nella stringa `rm -f {} \;` le parentesi graffe con uno dei risultati della ricerca, e farà questo tutte le volte che ci sono dei risultati. Questo ci darà: @@ -1144,7 +1142,7 @@ Il comando precedente cerca tutti i file nella directory `/tmp` con il suffisso ``` - Il carattere `;` è un carattere speciale di shell che deve essere protetto da `\` per evitare che venga interpretato troppo presto dal comando `find` (e non nel `-exec`). + `$ find /tmp -name *.txt -delete` fa la stessa cosa. !!! Tip "Suggerimento" @@ -1155,14 +1153,14 @@ Il comando precedente cerca tutti i file nella directory `/tmp` con il suffisso Il comando `whereis` ricerca i file relativi a un comando. ```bash -whereis [-b] [-m] [-s] command +$ whereis -b ls +ls: /bin/ls ``` Esempio: ```bash -$ whereis -b ls -ls: /bin/ls +grep [-w] [-i] [-v] "string" file ``` | Opzione | Osservazione | @@ -1176,14 +1174,14 @@ ls: /bin/ls Il comando `grep` ricerca una stringa in un file. ```bash -grep [-w] [-i] [-v] "string" file +$ grep -w "root:" /etc/passwd +root:x:0:0:root:/root:/bin/bash ``` Esempio: ```bash -$ grep -w "root:" /etc/passwd -root:x:0:0:root:/root:/bin/bash +$ grep -w "^root" /etc/passwd ``` | Opzione | Osservazione | @@ -1202,12 +1200,17 @@ $ grep -w "^root" /etc/passwd !!! Note "Nota" - Questo comando è molto potente e si raccomanda vivamente di consultare il suo manuale. Ha molti derivati. + Questo comando è molto potente e si consiglia vivamente di consultare il suo manuale. Ha molti utilizzi derivati. È possibile cercare una stringa in un albero di file con l'opzione `-R`. ```bash -grep -R "Virtual" /etc/httpd +$ find /home -name "test*" +/home/rockstar/test +/home/rockstar/test1 +/home/rockstar/test11 +/home/rockstar/tests +/home/rockstar/test362 ``` ### Meta-caratteri (wildcards) @@ -1248,17 +1251,17 @@ $ find /home -name "test[123]*" !!! Note "Nota" - Circonda sempre le parole che contengono meta-caratteri con `"` per evitare che siano sostituite dai nomi dei file che soddisfano i criteri. + Circonda sempre le parole contenenti meta-caratteri con `"` per evitare che vengano sostituite dai nomi dei file che soddisfano i criteri. !!! Warning "Attenzione" - Non confondete i meta-caratteri della shell con i meta-caratteri delle espressioni regolari. Il comando `grep` utilizza meta-caratteri di espressione regolare. + Non confondere i meta-caratteri della shell con i meta-caratteri dell'espressione regolare. Il comando `grep` usa i meta-caratteri dell'espressione regolare. ## Reindirizzamenti e pipes ### Standard input e output -Sui sistemi UNIX e Linux, ci sono tre flussi standard. Consentono ai programmi, attraverso la libreria `stdio.h`, di inviare e ricevere informazioni. +On UNIX and Linux systems, there are three standard streams. Consentono ai programmi, attraverso la libreria `stdio.h`, di inviare e ricevere informazioni. Questi flussi sono chiamati canale X o descrittore di file X. @@ -1285,16 +1288,16 @@ $ ftp -in serverftp << ftp-commands.txt Solo i comandi che richiedono l'input da tastiera saranno in grado di gestire il reindirizzamento dell'input. -Il reindirizzamento dell'ingresso può anche essere utilizzato per simulare l'interattività dell'utente. Il comando leggerà il flusso di input finché non incontrerà la parola chiave definita dopo il reindirizzamento dell'ingresso. +Input redirection can also be used to simulate user interactivity. Il comando leggerà il flusso di input finché non incontrerà la parola chiave definita dopo il reindirizzamento dell'ingresso. Questa funzione è utilizzata per i comandi interattivi negli script: ```bash -$ ftp -in serverftp << END +$ ftp -in serverftp << STOP user alice password put file bye -END +STOP ``` La parola chiave `END` può essere sostituita da qualsiasi parola. @@ -1318,10 +1321,7 @@ Il reindirizzamento dell'ingresso standard viene usato raramente perché la magg Il comando `wc` potrebbe essere usato in questo modo: ```bash -$ wc -l .bash_profile -27 .bash_profile # the number of lines is followed by the file name -$ wc -l < .bash_profile -27 # returns only the number of lines +$ date +%F > date_file ``` ### Redirezione Output @@ -1331,13 +1331,14 @@ L'output standard può essere reindirizzato ad altri file usando il carattere `> Il semplice `>` reindirizzamento sovrascrive il contenuto del file di output: ```bash -$ date +%F > date_file +$ date +%F >> date_file ``` -mentre il doppio reindirizzamento `>>` aggiunge (concatena) al contenuto del file di output. +Dove il carattere `>>` indica che il risultato del comando viene aggiunto al contenuto del file. ```bash -$ date +%F >> date_file +$ ls -R / 2> errors_file +$ ls -R / 2>> errors_file ``` In entrambi i casi, il file viene creato automaticamente quando non esiste. @@ -1345,8 +1346,7 @@ In entrambi i casi, il file viene creato automaticamente quando non esiste. L'output di errore standard può anche essere reindirizzato a un altro file. Questa volta sarà necessario specificare il numero del canale (che può essere omesso per i canali 0 e 1): ```bash -$ ls -R / 2> errors_file -$ ls -R / 2>> errors_file +$ ls -R / >> ok_file 2>> nok_file ``` ### Esempi di reindirizzamento @@ -1354,19 +1354,19 @@ $ ls -R / 2>> errors_file Reindirizzamento di 2 uscite a 2 file: ```bash -$ ls -R / >> ok_file 2>> nok_file +$ ls -R / >> log_file 2>&1 ``` Reindirizzamento delle 2 uscite a un singolo file: ```bash -$ ls -R / >> log_file 2>&1 +$ ls -R / 2>> /dev/null ``` Reindirizzamento del *stderr* a un "pozzo senza fondo" (`/dev/null`): ```bash -$ ls -R / 2>> /dev/null +$ ls -lia / | head ``` Quando entrambi i flussi di uscita vengono reindirizzati, nessuna informazione viene visualizzata sullo schermo. Per utilizzare sia il reindirizzamento dell'uscita che per mantenere il display, dovrai usare il comando `tee`. @@ -1388,31 +1388,32 @@ I comandi particolarmente utilizzati dopo una pipe sono i filtri. Mostra solo l'inizio: ```bash -$ ls -lia / | head +$ ls -lia / | tail ``` Mostra solo la fine: ```bash -$ ls -lia / | tail +$ ls -lia / | sort ``` Ordina il risultato: ```bash -$ ls -lia / | sort +$ ls -lia / | wc ``` Conta il numero di parole / caratteri: ```bash -$ ls -lia / | wc +$ ls -lia / | grep fichier ``` Cerca una stringa nel risultato: ```bash -$ ls -lia / | grep fichier +$ ls -lia / | tee fic +$ cat fic ``` ## Punti speciali @@ -1424,8 +1425,7 @@ Il comando `tee` viene utilizzato per reindirizzare l'output standard di un coma Viene combinato con la pipe `|` per ricevere come input l'output del comando da reindirizzare: ```bash -$ ls -lia / | tee fic -$ cat fic +$ ll ``` L'opzione `-a` aggiunge al file invece di sovrascriverla. @@ -1437,13 +1437,18 @@ Usare **alias** è un modo per chiedere alla shell di ricordare un determinato c Per esempio: ```bash -$ ll +$ ls -l ``` sostituirà il comando: ```bash -$ ls -l +$ alias +alias l.='ls -d .* --color=auto' +alias ll='ls -l --color=auto' +alias ls='ls --color=auto' +alias vi='vim' +alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' ``` Il comando `alias` elenca gli alias per la sessione corrente. Gli alias sono stabiliti per impostazione predefinita sulle distribuzioni Linux. Qui, gli alias per un server Rocky Linux: @@ -1469,7 +1474,7 @@ Per un uso permanente, devono essere creati nel: Particolare attenzione deve essere prestata quando si utilizzano alias che possono essere potenzialmente pericolosi! Ad esempio, un alias creato senza una conoscenza di base di amministratore: ```bash - alias cd='rm -Rf' + $ unalias ll ``` Il comando `unalias` ti consente di eliminare gli alias. @@ -1477,30 +1482,24 @@ Il comando `unalias` ti consente di eliminare gli alias. Per eliminare un singolo alias: ```bash -$ unalias ll +$ unalias -a ``` Per eliminare tutti gli alias: ```bash -$ unalias -a +$ type ls ``` Per disabilitare temporaneamente un alias, la combinazione è `\`. Ad esempio se digitiamo: -```bash -$ type ls -``` - -potrebbe restituire quanto segue: - ```bash ls is an alias to « ls -rt » ``` -Ora che questo è noto, possiamo vedere i risultati dell'utilizzo dell'alias o disabilitarlo in una volta con il carattere `\` eseguendo il seguente: +potrebbe restituire quanto segue: ```bash $ ls file* # ordine per data @@ -1509,27 +1508,7 @@ $ \ls file* # ordine per nome file1.txt file2.txt file3.txt ``` -### Aliases e funzioni utili - -* `grep` alias. - -Colora il risultato del comando `grep`: `alias grep='grep --color=auto'` - -* funzione `mcd` - -È comune creare una cartella e poi muoversi dentro di essa: `mcd() { mkdir -p "$1"; cd "$1"; }` - -* funzione `cls` - -Muove in una cartella ed elenca i suoi contenuti: `cls() { cd "$1"; ls; }` - -* funzione `backup` - -Crea una copia di backup di un file: `backup() { cp "$1"{,.bak}; }` - -* funzione `extract` - -Estrae qualsiasi tipo di archivio: +Ora che questo è noto, possiamo vedere i risultati dell'utilizzo dell'alias o disabilitarlo in una volta con il carattere `\` eseguendo il seguente: ```bash extract () { @@ -1553,14 +1532,29 @@ extract () { echo "'$1' is not a valid file" fi } - ``` -* Se `alias cmount` restituisce quanto segue: `alias cmount="mount | column -t"` +### Aliases e funzioni utili -Quindi possiamo usare `cmount` per mostrare tutti i supporti di sistema in colonne come questo: `[root]# cmount` +* `grep` alias. -che ritornerà il nostro filesystem montato nel seguente formato: +Colora il risultato del comando `grep`: `alias grep='grep --color=auto'` + +* funzione `mcd` + +È comune creare una cartella e poi muoversi dentro di essa: `mcd() { mkdir -p "$1"; cd "$1"; }` + +* funzione `cls` + +Muove in una cartella ed elenca i suoi contenuti: `cls() { cd "$1"; ls; }` + +* funzione `backup` + +Crea una copia di backup di un file: `backup() { cp "$1"{,.bak}; }` + +* funzione `extract` + +Estrae qualsiasi tipo di archivio: ```bash /dev/simfs on / type simfs (rw,relatime,usrquota,grpquota) @@ -1570,6 +1564,17 @@ none on /dev type devtmpfs (r none on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) none on /dev/shm type tmpfs (rw,relatime) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) + +``` + +* Se `alias cmount` restituisce quanto segue: `alias cmount="mount | column -t"` + +Quindi possiamo usare `cmount` per mostrare tutti i supporti di sistema in colonne come questo: `[root]# cmount` + +che ritornerà il nostro filesystem montato nel seguente formato: + +```bash +$ ls /; cd /home; ls -lia; cd / ``` ### Il carattere `;` From 681ea91d74acb3c6cfef3a1f11e43493e44e7082 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:54:59 -0400 Subject: [PATCH 05/51] New translations 13-softwares.md (Italian) --- docs/books/admin_guide/13-softwares.it.md | 548 ++++++++++++++++++++-- 1 file changed, 512 insertions(+), 36 deletions(-) diff --git a/docs/books/admin_guide/13-softwares.it.md b/docs/books/admin_guide/13-softwares.it.md index 53448115b6..34c2cffb64 100644 --- a/docs/books/admin_guide/13-softwares.it.md +++ b/docs/books/admin_guide/13-softwares.it.md @@ -1,5 +1,12 @@ --- title: Gestione del software +author: Antoine Le Morvan +contributors: Colussi Franco, Steven Spencer +tested version: 8.5 +tags: + - education + - software + - software management --- # Gestione del software @@ -8,8 +15,8 @@ title: Gestione del software Su un sistema Linux, è possibile installare il software in due modi: -* Utilizzando un pacchetto di installazione; -* Compilandolo da un file sorgente. + * Utilizzando un pacchetto di installazione; + * Compilandolo da un file sorgente. !!! Note "Nota" @@ -33,14 +40,14 @@ Il nome di un pacchetto RPM segue una nomenclatura specifica: Il comando rpm consente di installare un pacchetto. -``` +```bash rpm [-i][-U] package.rpm [-e] package ``` Esempio (per un pacchetto denominato 'package'): -``` -[root]# rpm -ivh package.rpm +```bash +rpm -ivh package.rpm ``` | Opzione | Descrizione | @@ -58,21 +65,21 @@ Il comando `rpm` consente inoltre di interrogare il database dei pacchetti sul s Esempio: -``` -[root]# rpm -qa +```bash +rpm -qa ``` Questo comando esegue una ricerca su tutti i pacchetti installati nel sistema. -``` +```bash rpm -q [-a][-i][-l] package [-f] file ``` Esempio: -``` -[root]# rpm -qil package -[root]# rpm -qf /path/to/file +```bash +rpm -qil package +rpm -qf /path/to/file ``` | Opzione | Descrizione | @@ -93,7 +100,7 @@ Esempio: Esempio: elencare gli ultimi pacchetti installati: -``` +```bash sudo rpm -qa --last | head NetworkManager-config-server-1.26.0-13.el8.noarch Mon 24 May 2021 02:34:00 PM CEST iwl2030-firmware-18.168.6.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST @@ -109,7 +116,7 @@ iwl6050-firmware-41.28.5.1-101.el8.1.noarch Mon 24 May 2021 02:33:59 PM CEST Esempio: elencare la cronologia di installazione del kernel: -``` +```bash sudo rpm -qa --last kernel kernel-4.18.0-305.el8.x86_64 Tue 25 May 2021 06:04:56 AM CEST kernel-4.18.0-240.22.1.el8.x86_64 Mon 24 May 2021 02:33:35 PM CEST @@ -117,11 +124,11 @@ kernel-4.18.0-240.22.1.el8.x86_64 Mon 24 May 2021 02:33:35 PM CEST Esempio: elencare tutti i pacchetti installati con un nome specifico utilizzando 'grep': -``` +```bash sudo dnf list installed | grep httpd -centos-logos-httpd.noarch 80.5-2.el8 @baseos -httpd.x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream -httpd-filesystem.noarch 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream +centos-logos-httpd.noarch 80.5-2.el8 @baseos +httpd.x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream +httpd-filesystem.noarch 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream httpd-tools.x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream ``` @@ -135,28 +142,119 @@ Il comando `dnf` permette la gestione dei pacchetti confrontando quelli installa ### comando `dnf` -Il comando dnf consente di installare un pacchetto specificando solo il nome breve. +Il comando `dnf` consente di installare un pacchetto specificando solo il nome breve. -``` +```bash dnf [install][remove][list all][search][info] package ``` Esempio: -``` -[root]# dnf install tree +```bash +dnf install tree ``` È richiesto solo il nome breve del pacchetto. -| Opzione | Descrizione | -| ------------------------- | ----------------------------------------- | -| `install` | Installa il pacchetto. | -| `remove` | Disinstalla il pacchetto. | -| `list all` | Elenca i pacchetti già nel repository. | -| `search` | Cerca un pacchetto nel repository. | -| `provides */command_name` | Cerca un comando. | -| `info` | Visualizza le informazioni sul pacchetto. | +| Opzione | Descrizione | +| ------------------------- | --------------------------------------------------------------------------- | +| `install` | Installa il pacchetto. | +| `remove` | Disinstalla il pacchetto. | +| `list all` | Elenca i pacchetti già nel repository. | +| `search` | Cerca un pacchetto nel repository. | +| `provides */command_name` | Cerca un comando. | +| `info` | Visualizza le informazioni sul pacchetto. | +| `autoremove` | Rimuove tutti i pacchetti installati come dipendenze, ma non più necessari. | + + +Il comando `dnf install` consente di installare il pacchetto desiderato senza preoccuparsi delle sue dipendenze, che sarà risolto direttamente da `dnf` stesso. + +```bash +dnf install nginx +Last metadata expiration check: 3:13:41 ago on Wed 23 Mar 2022 07:19:24 AM CET. +Dependencies resolved. +============================================================================================================================ + Package Architecture Version Repository Size +============================================================================================================================ +Installing: + nginx aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 543 k +Installing dependencies: + nginx-all-modules noarch 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 22 k + nginx-mod-http-image-filter aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 33 k + nginx-mod-http-perl aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 44 k + nginx-mod-http-xslt-filter aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 32 k + nginx-mod-mail aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 60 k + nginx-mod-stream aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 82 k + +Transaction Summary +============================================================================================================================ +Install 7 Packages + +Total download size: 816 k +Installed size: 2.2 M +Is this ok [y/N]: +``` + +Nel caso in cui non ricordi il nome esatto del pacchetto, puoi cercarlo con il comando `dnf nome_di_ricerca`. Come puoi vedere, c'è una sezione che contiene il nome esatto e un'altra che contiene la corrispondenza del pacchetto, tutti i quali sono evidenziati per facilitare la ricerca. + +```bash +dnf search nginx +Last metadata expiration check: 0:20:55 ago on Wed 23 Mar 2022 10:40:43 AM CET. +=============================================== Name Exactly Matched: nginx ================================================ +nginx.aarch64 : A high performance web server and reverse proxy server +============================================== Name & Summary Matched: nginx =============================================== +collectd-nginx.aarch64 : Nginx plugin for collectd +munin-nginx.noarch : NGINX support for Munin resource monitoring +nginx-all-modules.noarch : A meta package that installs all available Nginx modules +nginx-filesystem.noarch : The basic directory layout for the Nginx server +nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module +nginx-mod-http-perl.aarch64 : Nginx HTTP perl module +nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module +nginx-mod-mail.aarch64 : Nginx mail modules +nginx-mod-stream.aarch64 : Nginx stream modules +pagure-web-nginx.noarch : Nginx configuration for Pagure +pcp-pmda-nginx.aarch64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver +python3-certbot-nginx.noarch : The nginx plugin for certbot +``` + +Un altro modo per cercare un pacchetto inserendo una chiave di ricerca aggiuntiva è quello di inviare il risultato del comando `dnf` attraverso una pipe al comando grep con la chiave desiderata. + +```bash +dnf search nginx | grep mod +Last metadata expiration check: 3:44:49 ago on Wed 23 Mar 2022 06:16:47 PM CET. +nginx-all-modules.noarch : A meta package that installs all available Nginx modules +nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module +nginx-mod-http-perl.aarch64 : Nginx HTTP perl module +nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module +nginx-mod-mail.aarch64 : Nginx mail modules +nginx-mod-stream.aarch64 : Nginx stream modules +``` + + +Il comando `dnf remove` rimuove un pacchetto dal sistema e le sue dipendenze. Di seguito è riportato un estratto del comando **dnf remove httpd**. + +```bash +dnf remove httpd +Dependencies resolved. +============================================================================================================================ + Package Architecture Version Repository Size +============================================================================================================================ +Removing: + httpd aarch64 2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 8.9 M +Removing dependent packages: + mod_ssl aarch64 1:2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 274 k + php aarch64 7.4.19-1.module+el8.5.0+696+61e7c9ba @appstream 4.4 M + python3-certbot-apache noarch 1.22.0-1.el8 @epel 539 k +Removing unused dependencies: + apr aarch64 1.6.3-12.el8 @appstream 299 k + apr-util aarch64 1.6.1-6.el8.1 @appstream 224 k + apr-util-bdb aarch64 1.6.1-6.el8.1 @appstream 67 k + apr-util-openssl aarch64 1.6.1-6.el8.1 @appstream 68 k + augeas-libs aarch64 1.12.0-6.el8 @baseos 1.4 M + httpd-filesystem noarch 2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 400 + httpd-tools aarch64 2.4.37-43.module+el8.5.0+727+743c5577.1 +... +``` Il comando `dnf list` elenca tutti i pacchetti installati sul sistema e presenti nel repository. Accetta diversi parametri: @@ -168,12 +266,235 @@ Il comando `dnf list` elenca tutti i pacchetti installati sul sistema e presenti | `obsoletes` | Elenca i pacchetti resi obsoleti dalle versioni superiori disponibili. | | `recent` | Elenca i pacchetti più recenti aggiunti al repository. | +Il comando `dnf info`, come ci si può aspettare, fornisce informazioni dettagliate su un pacchetto: + +```bash +dnf info firewalld +Last metadata expiration check: 15:47:27 ago on Tue 22 Mar 2022 05:49:42 PM CET. +Installed Packages +Name : firewalld +Version : 0.9.3 +Release : 7.el8 +Architecture : noarch +Size : 2.0 M +Source : firewalld-0.9.3-7.el8.src.rpm +Repository : @System +From repo : baseos +Summary : A firewall daemon with D-Bus interface providing a dynamic firewall +URL : http://www.firewalld.org +License : GPLv2+ +Description : firewalld is a firewall service daemon that provides a dynamic customizable + : firewall with a D-Bus interface. + +Available Packages +Name : firewalld +Version : 0.9.3 +Release : 7.el8_5.1 +Architecture : noarch +Size : 501 k +Source : firewalld-0.9.3-7.el8_5.1.src.rpm +Repository : baseos +Summary : A firewall daemon with D-Bus interface providing a dynamic firewall +URL : http://www.firewalld.org +License : GPLv2+ +Description : firewalld is a firewall service daemon that provides a dynamic customizable + : firewall with a D-Bus interface. +``` + +A volte si conosce solo l'eseguibile che si desidera utilizzare, ma non il pacchetto che lo contiene, in questo caso è possibile utilizzare il comando `dnf provides */package_name` che cercherà il database per la corrispondenza desiderata. + Esempio di ricerca del comando `semanage`: +```bash +dnf provides */semanage +Last metadata expiration check: 1:12:29 ago on Wed 23 Mar 2022 10:40:43 AM CET. +libsemanage-devel-2.9-6.el8.aarch64 : Header files and libraries used to build policy manipulation tools +Repo : powertools +Matched from: +Filename : /usr/include/semanage + +policycoreutils-python-utils-2.9-16.el8.noarch : SELinux policy core python utilities +Repo : baseos +Matched from: +Filename : /usr/sbin/semanage +Filename : /usr/share/bash-completion/completions/semanage ``` -[root]# dnf provides */semanage + +Il comando `dnf autoremove` non necessita di alcun parametro. Dnf si occupa della ricerca dei pacchetti candidati per la rimozione. + +```bash +dnf autoremove +Last metadata expiration check: 0:24:40 ago on Wed 23 Mar 2022 06:16:47 PM CET. +Dependencies resolved. +Nothing to do. +Complete! ``` +### Altre utili opzioni `dnf` + +| Opzione | Osservazioni | +| ----------- | ---------------------------------------------- | +| `repolist` | Elenca i repository configurati sul sistema. | +| `grouplist` | Elenca le collezioni di pacchetti disponibili. | +| `clean` | Rimuove i file temporanei. | + +Il comando `dnf repolist` elenca i repository configurati sul sistema. Per impostazione predefinita elenca solo i repository abilitati, ma può essere utilizzato con questi parametri: + +| Parametro | Osservazioni | +| ------------ | -------------------------------------- | +| `--all` | Elenca tutti i repository. | +| `--enabled` | Default | +| `--disabled` | Elenca solo i repository disabilitati. | + +Esempio: + +```bash +dnf repolist +repo id repo name +appstream Rocky Linux 8 - AppStream +baseos Rocky Linux 8 - BaseOS +epel Extra Packages for Enterprise Linux 8 - aarch64 +epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64 +extras Rocky Linux 8 - Extras +powertools Rocky Linux 8 - PowerTools +rockyrpi Rocky Linux 8 - Rasperry Pi +``` + +E un estratto del comando con la flag `--all`. + +```bash +dnf repolist --all + +... +repo id repo name status +appstream Rocky Linux 8 - AppStream enabled +appstream-debug Rocky Linux 8 - AppStream - Source disabled +appstream-source Rocky Linux 8 - AppStream - Source disabled +baseos Rocky Linux 8 - BaseOS enabled +baseos-debug Rocky Linux 8 - BaseOS - Source disabled +baseos-source Rocky Linux 8 - BaseOS - Source disabled +devel Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE disabled +epel Extra Packages for Enterprise Linux 8 - aarch64 enabled +epel-debuginfo Extra Packages for Enterprise Linux 8 - aarch64 - Debug disabled +epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64 enabled +epel-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug disabled +epel-modular-source Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source +... +``` + +E qui sotto è un estratto dalla lista dei repository disabilitati. + +```bash +dnf repolist --disabled +repo id repo name +appstream-debug Rocky Linux 8 - AppStream - Source +appstream-source Rocky Linux 8 - AppStream - Source +baseos-debug Rocky Linux 8 - BaseOS - Source +baseos-source Rocky Linux 8 - BaseOS - Source +devel Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE +epel-debuginfo Extra Packages for Enterprise Linux 8 - aarch64 - Debug +epel-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug +epel-modular-source Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source +epel-source Extra Packages for Enterprise Linux 8 - aarch64 - Source +epel-testing Extra Packages for Enterprise Linux 8 - Testing - aarch64 +... +``` + +L'utilizzo dell'opzione `-v` migliora la lista con molte informazioni aggiuntive. Qui sotto puoi vedere parte del risultato del comando. + +```bash +dnf repolist -v + +... +Repo-id : powertools +Repo-name : Rocky Linux 8 - PowerTools +Repo-revision : 8.5 +Repo-distro-tags : [cpe:/o:rocky:rocky:8]: , , 8, L, R, c, i, k, n, o, u, x, y +Repo-updated : Wed 16 Mar 2022 10:07:49 PM CET +Repo-pkgs : 1,650 +Repo-available-pkgs: 1,107 +Repo-size : 6.4 G +Repo-mirrors : https://mirrors.rockylinux.org/mirrorlist?arch=aarch64&repo=PowerTools-8 +Repo-baseurl : http://mirror.netweaver.uk/rocky/8.5/PowerTools/aarch64/os/ (56 more) +Repo-expire : 172,800 second(s) (last: Tue 22 Mar 2022 05:49:24 PM CET) +Repo-filename : /etc/yum.repos.d/Rocky-PowerTools.repo +... +``` + +!!! info "Usare i Gruppi" + + I gruppi sono una raccolta di una serie di pacchetti (si può pensare a loro come pacchetti virtuali) che logicamente raggruppa una serie di applicazioni per realizzare uno scopo (un ambiente desktop, un server, strumenti di sviluppo, ecc.). + +Il comando `dnf grouplist` elenca tutti i gruppi disponibili. + +```bash +dnf grouplist +Last metadata expiration check: 1:52:00 ago on Wed 23 Mar 2022 02:11:43 PM CET. +Available Environment Groups: + Server with GUI + Server + Minimal Install + KDE Plasma Workspaces + Custom Operating System +Available Groups: + Container Management + .NET Core Development + RPM Development Tools + Development Tools + Headless Management + Legacy UNIX Compatibility + Network Servers + Scientific Support + Security Tools + Smart Card Support + System Tools + Fedora Packager + Xfce +``` + +Il comando `dnf groupinstall` consente di installare uno di questi gruppi. + +```bash +dnf groupinstall "Network Servers" +Last metadata expiration check: 2:33:26 ago on Wed 23 Mar 2022 02:11:43 PM CET. +Dependencies resolved. +================================================================================ + Package Architecture Version Repository Size +================================================================================ +Installing Groups: + Network Servers + +Transaction Summary +================================================================================ + +Is this ok [y/N]: +``` + +Notate che è buona pratica racchiudere il nome del gruppo tra virgolette doppie poiché senza il comando verrà eseguito correttamente solo se il nome del gruppo non contiene spazi. + +Quindi un `dnf groupinstall Network Server` produce il seguente errore. + +```bash +dnf groupinstall Network Servers +Last metadata expiration check: 3:05:45 ago on Wed 23 Mar 2022 02:11:43 PM CET. +Module or Group 'Network' is not available. +Module or Group 'Servers' is not available. +Error: Nothing to do. +``` + +Il comando corrispondente per rimuovere un gruppo è `dnf groupremove "name group"`. + +Il comando `dnf clean` pulisce tutte le cache e i file temporanei creati da `dnf`. Può essere utilizzato con i seguenti parametri. + +| Parametri | Osservazioni | +| -------------- | ------------------------------------------------------------------ | +| `all` | Rimuove tutti i file temporanei creati per i repository abilitati. | +| `dbcache` | Rimuove i file cache per i metadati del repository. | +| `expire-cache` | Rimuovere i file dei cookie locali. | +| `metadata` | Rimuove tutti i metadati dei repository. | +| `packages` | Rimuove qualsiasi pacchetto nella cache. | + + ### Come funziona DNF Il gestore DNF si basa su uno o più file di configurazione per indirizzare i repository contenenti i pacchetti RPM. @@ -182,11 +503,11 @@ Questi file si trovano in `/etc/yum.repos.d/` e devono terminare con `.repo` per Esempio: -``` +```bash /etc/yum.repos.d/Rocky-BaseOS.repo ``` -Ogni file `.repo` è costituito da almeno le seguenti informazioni, una direttiva per riga. +Ogni file `.repo` consiste almeno delle seguenti informazioni, una direttiva per riga. Esempio: @@ -204,20 +525,175 @@ Per impostazione predefinita, la direttiva `enabled` è assente, il che signific ## Il repository EPEL +### Che cos’è EPEL e come si usa? + **EPEL** (**E**xtra **P**ackages for **E**nterprise **L**inux) è un repository contenente pacchetti software aggiuntivi per Enterprise Linux, che include RedHat Enterprise Linux (RHEL), RockyLinux, CentOS, ecc. +Fornisce pacchetti che non sono inclusi nei repository RHEL ufficiali. Questi non sono inclusi perché non sono considerati necessari in un ambiente enterprise o considerati al di fuori del campo di applicazione di RHEL. Non dobbiamo dimenticare che RHEL è una distribuzione di classe enterprise, e le utility desktop o altri software specializzati possono non essere una priorità per un progetto enterpise. + ### Installazione -Scarica e installa l'rpm dal repository: +L'installazione dei file necessari può essere facilmente fatta con il pacchetto fornito di default da Rocky Linux. Se sei dietro un proxy internet: -``` -[root]# export http_proxy=http://172.16.1.10:8080 +```bash +export http_proxy=http://172.16.1.10:8080 ``` Quindi: +```bash +dnf install epel-release +``` + +Una volta installato è possibile controllare che il pacchetto sia stato installato correttamente con il comando `dnf info`. + +```bash +dnf info epel-release +Last metadata expiration check: 1:30:29 ago on Thu 24 Mar 2022 09:36:42 AM CET. +Installed Packages +Name : epel-release +Version : 8 +Release : 14.el8 +Architecture : noarch +Size : 32 k +Source : epel-release-8-14.el8.src.rpm +Repository : @System +From repo : epel +Summary : Extra Packages for Enterprise Linux repository configuration +URL : http://download.fedoraproject.org/pub/epel +License : GPLv2 +Description : This package contains the Extra Packages for Enterprise Linux + : (EPEL) repository GPG key as well as configuration for yum. +``` + +Il pacchetto, come puoi vedere dalla descrizione del pacchetto di cui sopra, non contiene eseguibili, librerie, ecc.. ma solo i file di configurazione e le chiavi GPG per la configurazione del repository. + +Un altro modo per verificare la corretta installazione è quello di interrogare il database rpm. + +```bash +rpm -qa | grep epel +epel-release-8-14.el8.noarch +``` + +Ora è necessario eseguire un aggiornamento per consentire a `dnf` di riconoscere il repository. Ti verrà chiesto di accettare le chiavi GPG dei repository. Chiaramente, è necessario rispondere SÌ per utilizzarli. + +```bash +dnf update +``` + +Una volta completato l'aggiornamento, è possibile verificare che il repository sia stato configurato correttamente con il comando `dnf repolist` che dovrebbe ora elencare i nuovi repository. + +```bash +dnf repolist +repo id repo name +... +epel Extra Packages for Enterprise Linux 8 - aarch64 +epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64 +... +``` + +I file di configurazione del repository si trovano in `/etc/yum.repos.d/`. + +``` +ll /etc/yum.repos.d/ | grep epel +-rw-r--r--. 1 root root 1485 Jan 31 17:19 epel-modular.repo +-rw-r--r--. 1 root root 1422 Jan 31 17:19 epel.repo +-rw-r--r--. 1 root root 1584 Jan 31 17:19 epel-testing-modular.repo +-rw-r--r--. 1 root root 1521 Jan 31 17:19 epel-testing.repo +``` + +E di seguito possiamo vedere il contenuto del file `epel.repo`. + +```bash +[epel] +name=Extra Packages for Enterprise Linux $releasever - $basearch +# It is much more secure to use the metalink, but if you wish to use a local mirror +# place its address here. +#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch +metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir +enabled=1 +gpgcheck=1 +countme=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 + +[epel-debuginfo] +name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug +# It is much more secure to use the metalink, but if you wish to use a local mirror +# place its address here. +#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug +metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 +gpgcheck=1 + +[epel-source] +name=Extra Packages for Enterprise Linux $releasever - $basearch - Source +# It is much more secure to use the metalink, but if you wish to use a local mirror +# place it's address here. +#baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/ +metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir +enabled=0 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 +gpgcheck=1 +``` + +### Usare EPEL + +A questo punto, una volta configurati, siamo pronti per installare i pacchetti da EPEL. Per iniziare, possiamo elencare i pacchetti disponibili nel repository con il comando: + +```bash +dnf --disablerepo="*" --enablerepo="epel" list available ``` -[root]# dnf install epel-release + +E un estratto del comando + +```bash +dnf --disablerepo="*" --enablerepo="epel" list available | less +Last metadata expiration check: 1:58:22 ago on Fri 25 Mar 2022 09:23:29 AM CET. +Available Packages +3proxy.aarch64 0.8.13-1.el8 epel +AMF-devel.noarch 1.4.23-2.el8 epel +AMF-samples.noarch 1.4.23-2.el8 epel +AusweisApp2.aarch64 1.22.3-1.el8 epel +AusweisApp2-data.noarch 1.22.3-1.el8 epel +AusweisApp2-doc.noarch 1.22.3-1.el8 epel +BackupPC.aarch64 4.4.0-1.el8 epel +BackupPC-XS.aarch64 0.62-1.el8 epel +BibTool.aarch64 2.68-1.el8 epel +CCfits.aarch64 2.5-14.el8 epel +CCfits-devel.aarch64 2.5-14.el8 epel +... ``` + +Dal comando possiamo vedere che per installare da EPEL dobbiamo forzare **dnf** a interrogare il repository richiesto con le opzioni `--disablerepo` e `--enablerepo`, questo perché altrimenti una corrispondenza trovata in altri repository opzionali (RPM Fusion, REMI, ELRepo, ecc.) potrebbe essere più recente e quindi avere la priorità. Queste opzioni non sono necessarie se hai installato EPEL come solo repository opzionale perché i pacchetti nel repository non saranno mai disponibili in quelli ufficiali. Almeno nella stessa versione! + +!!! attenzione "Considerazione sul supporto" + + Un aspetto da considerare per quanto riguarda il supporto (aggiornamenti, correzioni di bug, patch di sicurezza) è che i pacchetti EPEL non hanno alcun supporto ufficiale da RHEL e tecnicamente la loro vita potrebbe durare lo spazio di uno sviluppo di Fedora (sei mesi) e poi scomparire. Questa è una possibilità remota ma una da considerare. + +Quindi, per installare un pacchetto dai repository EPEL si utilizzerà: + +```bash +dnf --disablerepo="*" --enablerepo="epel" install nmon +Last metadata expiration check: 2:01:36 ago on Fri 25 Mar 2022 04:28:04 PM CET. +Dependencies resolved. +============================================================================================================================================================== + Package Architecture Version Repository Size +============================================================================================================================================================== +Installing: + nmon aarch64 16m-1.el8 epel 71 k + +Transaction Summary +============================================================================================================================================================== +Install 1 Package + +Total download size: 71 k +Installed size: 214 k +Is this ok [y/N]: +``` + +### Conclusione + +EPEL non è un repository ufficiale per RHEL. Ma può essere utile per amministratori e sviluppatori che lavorano con RHEL o derivate e hanno bisogno di alcune utilità preparate per RHEL da una fonte di cui possono sentirsi sicuri. From c4ab532c8e6ca53ab3a0ed3b22ccd1720ce970ff Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:55:19 -0400 Subject: [PATCH 06/51] New translations 03_rsync_demo02.md (Italian) --- docs/books/learning_rsync/03_rsync_demo02.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_rsync/03_rsync_demo02.it.md b/docs/books/learning_rsync/03_rsync_demo02.it.md index 8038c0a75d..c199291f90 100644 --- a/docs/books/learning_rsync/03_rsync_demo02.it.md +++ b/docs/books/learning_rsync/03_rsync_demo02.it.md @@ -33,7 +33,7 @@ Alcuni parametri e valori di questo file sono i seguenti, [ qui ](04_rsync_confi | auth users = li | Abilita gli utenti virtuali e definisci come viene chiamato un utente virtuale. Devi crearlo da solo | | secrets file = /etc/rsyncd_users.db | Usato per specificare la posizione del file password dell'utente virtuale, che deve terminare in .db. Il formato del contenuto del file è "Nome utente: Password", uno per riga | -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Il permesso del file password deve essere 600 From 8f3a1cde891ad7a92e2272e073bad0083511f8a2 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:55:29 -0400 Subject: [PATCH 07/51] New translations 05_rsync_authentication-free_login.md (Italian) --- .../learning_rsync/05_rsync_authentication-free_login.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_rsync/05_rsync_authentication-free_login.it.md b/docs/books/learning_rsync/05_rsync_authentication-free_login.it.md index 0ad7df3796..0d2a45e1aa 100644 --- a/docs/books/learning_rsync/05_rsync_authentication-free_login.it.md +++ b/docs/books/learning_rsync/05_rsync_authentication-free_login.it.md @@ -59,7 +59,7 @@ Last login: Tue Nov 2 21:42:44 2021 from 192.168.100.5 [testrsync@Rocky ~]$ ``` -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Il file di configurazione del server **/etc/ssh/sshd_config** dovrebbe essere aperto PubkeyAuthentication yes From 22cba2ae295a5054f6cc741429c01cc4cff08040 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:55:31 -0400 Subject: [PATCH 08/51] New translations 07_rsync_unison_use.md (Italian) --- docs/books/learning_rsync/07_rsync_unison_use.it.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/books/learning_rsync/07_rsync_unison_use.it.md b/docs/books/learning_rsync/07_rsync_unison_use.it.md index aa4b9614b7..36fa4771d2 100644 --- a/docs/books/learning_rsync/07_rsync_unison_use.it.md +++ b/docs/books/learning_rsync/07_rsync_unison_use.it.md @@ -33,7 +33,7 @@ Last login: Wed Nov 3 22:07:18 2021 from 192.168.100.5 [testrsync@Rocky ~]$ ``` -!!! tip "Attenzione" +!!! tip "Suggerimento" I file di configurazione delle due macchine **/etc/ssh/sshd_config** dovrebbero essere aperti PubkeyAuthentication yes @@ -132,16 +132,16 @@ done [root@fedora ~]# jobs -l ``` -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Per la sincronizzazione bidirezionale, gli script di entrambe le macchine devono essere avviati, altrimenti verrà segnalato un errore. -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Se vuoi avviare questo script all'avvio `[root@Rocky ~]# echo "bash /root/unison1. h &" >> /etc/rc.local` `[root@Rocky ~]# chmod +x /etc/rc.local` -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Se vuoi interrompere il processo corrispondente di questo script, puoi trovarlo con il comando `htop` e quindi **kill** From fa1805b9904c9d554375392d730ad01272e9f76b Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:55:33 -0400 Subject: [PATCH 09/51] New translations 06_rsync_inotify.md (Italian) --- docs/books/learning_rsync/06_rsync_inotify.it.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_rsync/06_rsync_inotify.it.md b/docs/books/learning_rsync/06_rsync_inotify.it.md index 79695ba152..fcfd57aa9c 100644 --- a/docs/books/learning_rsync/06_rsync_inotify.it.md +++ b/docs/books/learning_rsync/06_rsync_inotify.it.md @@ -121,7 +121,7 @@ Torna al primo terminale pts/0, le informazioni di output sono le seguenti: ## Combinazione di `inotifywait` and `rsync` -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Stiamo operando nel server Rocky Linux 8, utilizzando il protocollo SSH per la dimostrazione. @@ -147,7 +147,7 @@ $a | while read directory event file Quando si utilizza il protocollo SSH per la trasmissione della sincronizzazione dei dati, se la porta di servizio SSH della macchina di destinazione non è la 22, puoi usare un metodo simile a questo—— `b="/usr/bin/rsync -avz -e 'ssh -p [port-number]' /rsync/* testfedora@192. 68.100.5:/home/testfedora/"` -!!! tip "Attenzione!" +!!! tip "Suggerimento!" Se vuoi avviare questa script all'avvio `[root@Rocky ~]# echo "bash /root/rsync_inotify. h &" >> /etc/rc.local` From 78767ede54884290046f9d1912d5f6382e2dbad8 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 18 May 2022 05:55:47 -0400 Subject: [PATCH 10/51] New translations anacron.md (Italian) --- docs/guides/automation/anacron.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/automation/anacron.it.md b/docs/guides/automation/anacron.it.md index 5e123a78a1..e7f2a878d3 100644 --- a/docs/guides/automation/anacron.it.md +++ b/docs/guides/automation/anacron.it.md @@ -110,7 +110,7 @@ Uso dell comando `anacron`, le opzioni comunemente usate sono: | Opzioni | Descrizione | | ------- | ------------------------------------------------------------------- | | -f | Eseguire tutti i lavori, ignorando i timestamp | -| -u | Aggiorna il timestamp all'ora corrente senza eseguire alcuna azione | +| - u | Aggiorna il timestamp all'ora corrente senza eseguire alcuna azione | | -T | Verificare la validità del file di configurazione /etc/anacrontab | Per ulteriori informazioni di aiuto, [sfogliare la pagina del manuale](https://man7.org/linux/man-pages/man8/anacron.8.html) From 350ff5373ec9499485f383e3a373f24d85561fb1 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 20 May 2022 12:24:13 -0400 Subject: [PATCH 11/51] New translations 00-toc.md (Italian) --- docs/books/learning_bash/00-toc.it.md | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 docs/books/learning_bash/00-toc.it.md diff --git a/docs/books/learning_bash/00-toc.it.md b/docs/books/learning_bash/00-toc.it.md new file mode 100644 index 0000000000..da6ab8c9ae --- /dev/null +++ b/docs/books/learning_bash/00-toc.it.md @@ -0,0 +1,52 @@ +--- +title: Imparare bash con Rocky +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Imparare il Bash con Rocky + +In questa sezione, imparerete a conoscere meglio lo scripting Bash, un esercizio che ogni amministratore dovrà eseguire un giorno o l'altro. + +## Generalità + +La shell è l'interprete dei comandi di Linux. È un binario che non fa parte del kernel, ma costituisce un livello aggiuntivo, da cui il nome "shell". + +Analizza i comandi inseriti dall'utente e li esegue dal sistema. + +Esistono diverse shell, tutte accomunate da alcune caratteristiche. L'utente è libero di utilizzare quello che più gli aggrada. Alcuni esempi sono: + +* la **shell Bourne-Again**`(bash`), +* la **shell Korn**(`ksh`), +* la **shell C**(`csh`), +* etc. + +`bash` è presente per impostazione predefinita nella maggior parte (tutte) le distribuzioni Linux. Si caratterizza per le sue caratteristiche pratiche e di facile utilizzo. + +La shell è anche un **linguaggio di programmazione di base** che, grazie ad alcuni comandi dedicati, permette: + +* l'uso di **variabili**, +* **esecuzione condizionale** dei comandi, +* la **ripetizione** dei comandi. + +Gli script di shell hanno il vantaggio di poter essere creati **in modo rapido** e **affidabile**, senza **compilare** o installare comandi aggiuntivi. Uno script di shell è solo un file di testo senza abbellimenti (grassetto, corsivo, ecc.). + +!!! NOTE "Nota" + + Sebbene la shell sia un linguaggio di programmazione "di base", è comunque molto potente e talvolta più veloce di un codice compilato male. + +Per scrivere uno script di shell, è sufficiente inserire tutti i comandi necessari in un unico file di testo. Rendendo questo file eseguibile, la shell lo legge in sequenza ed esegue i comandi in esso contenuti uno per uno. È anche possibile eseguirlo passando il nome dello script come argomento al binario bash. + +Quando la shell incontra un errore, visualizza un messaggio per identificare il problema, ma continua a eseguire lo script. Esistono però dei meccanismi per interrompere l'esecuzione di uno script quando si verifica un errore. Gli errori specifici dei comandi vengono visualizzati anche sullo schermo o all'interno dei file. + +Che cos'è una buona script? Lo è: + +* **affidabile**: il suo funzionamento è impeccabile anche in caso di uso improprio; +* **commentato**: il suo codice è annotato per facilitarne la rilettura e l'evoluzione futura; +* **leggibile**: il codice è indentato in modo appropriato, i comandi sono distanziati, ... +* **portabilità**: il codice viene eseguito su qualsiasi sistema Linux, gestione delle dipendenze, gestione dei diritti, ecc. From 8ac64c470907add4991b7163005787c513fed4a2 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 20 May 2022 13:23:51 -0400 Subject: [PATCH 12/51] New translations 00-toc.md (Italian) --- docs/books/learning_bash/00-toc.it.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_bash/00-toc.it.md b/docs/books/learning_bash/00-toc.it.md index da6ab8c9ae..113e950d10 100644 --- a/docs/books/learning_bash/00-toc.it.md +++ b/docs/books/learning_bash/00-toc.it.md @@ -47,6 +47,6 @@ Quando la shell incontra un errore, visualizza un messaggio per identificare il Che cos'è una buona script? Lo è: * **affidabile**: il suo funzionamento è impeccabile anche in caso di uso improprio; -* **commentato**: il suo codice è annotato per facilitarne la rilettura e l'evoluzione futura; +* **commentata**: il suo codice è annotato per facilitarne la rilettura e l'evoluzione futura; * **leggibile**: il codice è indentato in modo appropriato, i comandi sono distanziati, ... -* **portabilità**: il codice viene eseguito su qualsiasi sistema Linux, gestione delle dipendenze, gestione dei diritti, ecc. +* **portabile**: il codice viene eseguito su qualsiasi sistema Linux, gestione delle dipendenze, gestione dei diritti, ecc. From 8b948895ad691a38980521a28579a3540aa1e3f8 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 23 May 2022 03:29:49 -0400 Subject: [PATCH 13/51] New translations 02-variables-logs.md (Italian) --- .../appendix/02-variables-logs.it.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 docs/books/learning_bash/appendix/02-variables-logs.it.md diff --git a/docs/books/learning_bash/appendix/02-variables-logs.it.md b/docs/books/learning_bash/appendix/02-variables-logs.it.md new file mode 100644 index 0000000000..3a4cb62644 --- /dev/null +++ b/docs/books/learning_bash/appendix/02-variables-logs.it.md @@ -0,0 +1,118 @@ +--- +title: Variabili - Utilizzo Con I Registri +author: Steven Spencer +contributors: Antoine Le Morvan, Franco Colussi +tested with: 8.5 +tags: + - bash scripting + - bash + - variables example +--- + +# Usare Le Variabili - Un'Applicazione Pratica Con I Registri + +## Introduzione + +Nella lezione due, "Bash - Utilizzando le variabili", hai visto alcuni modi per usare le variabili e hai imparato molto su come le variabili possono essere utilizzate. Questo è solo un esempio pratico di utilizzo di variabili all'interno dei tuoi script bash. + +## Informazione + +Quando un amministratore di sistema ha a che fare con i file di registro, ci sono a volte formati diversi che entrano in gioco. Diciamo che vuoi ottenere alcune informazioni dal `dnf.log` (`/var/log/dnf.log`). Diamo un'occhiata rapida a come sembra quel file di log usando `tail /var/log/dnf.log`: + + +``` +2022-05-04T09:02:18-0400 DEBUG extras: using metadata from Thu 28 Apr 2022 04:25:35 PM EDT. +2022-05-04T09:02:18-0400 DEBUG repo: using cache for: powertools +2022-05-04T09:02:18-0400 DEBUG powertools: using metadata from Thu 28 Apr 2022 04:25:36 PM EDT. +2022-05-04T09:02:18-0400 DEBUG repo: using cache for: epel +2022-05-04T09:02:18-0400 DEBUG epel: using metadati from Tue 03 May 2022 11:55:16 AM EDT. +2022-05-04T09:02:18-0400 DEBUG repo: using cache for: epel-modular +2022-05-04T09:02:18-0400 DEBUG epel-modular: using metadata from Sun 17 Apr 2022 07:09:16 PM EDT. +2022-05-04T09:02:18-0400 INFO Last metadata expiration check: 3:07:06 ago on Wed 04 May 2022 05:55:12 AM EDT. +2022-05-04T09:02:18-0400 DDEBUG timer: sack setup: 512 ms +2022-05-04T09:02:18-0400 DDEBUG Cleaning up. +``` + +Ora dai un'occhiata al file di log `messages` in `tail /var/log/messages`: + +``` +May 4 08:47:19 localhost systemd[1]: Starting dnf makecache... +May 4 08:47:19 localhost dnf[108937]: Metadata cache refreshed recently. +4 maggio 08:47:19 localhost systemd[1]: dnf-makecache.service: Succeeded. +May 4 08:47:19 localhost systemd[1]: Started dnf makecache. +May 4 08:51:59 localhost NetworkManager[981]: [1651668719.5310] dhcp4 (eno1): state changed extended -> extended, address=192.168.1.141 +May 4 08:51:59 localhost dbus-daemon[843]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=981 comm="/usr/sbin/NetworkManager --no-daemon " label="system_u:system_r:NetworkManager_t:s0") +May 4 08:51:59 localhost systemd[1]: Starting Network Manager Script Dispatcher Service... +May 4 08:51:59 localhost dbus-daemon[843]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' +May 4 08:51:59 localhost systemd[1]: Started Network Manager Script Dispatcher Service. +May 4 08:52:09 localhost systemd[1]: NetworkManager-dispatcher.service: Succeeded. +``` + +E finalmente diamo un'occhiata all'output del comando `date`: + +``` +Wed May 4 09:47:00 EDT 2022 +``` + +## Risultati e obiettivi + +Quello che possiamo vedere qui è che i due file di registro, `dnf.log` e `messages` visualizzano la data in modi completamente diversi. Se volevamo prendere le informazioni dai `messages` per accedere a uno script bash usando `date` potremmo farlo senza molti problemi, ma ottenere le stesse informazioni dal `dnf.log` richiederebbe un po di tempo. Diciamo che come amministratore di sistema, è necessario controllare il `dnf.log` ogni giorno per assicurarsi che nulla è stato introdotto nel sistema di cui non eravate a conoscenza o che potrebbe causare problemi. Vuoi che queste informazioni siano prese dal file `dnf.log` per data e poi inviate via email a te ogni giorno. Userai un lavoro `cron` per automatizzare questo, ma prima abbiamo bisogno di ottenere uno script che faccia quello che vogliamo. + +## Script + +Per realizzare ciò che vogliamo, useremo una variabile nella nostra script chiamata "today" che formatterà la data in base alla data visualizzata nel `dnf.log`. Per ottenere il formato corretto `data` , stiamo usando il `+%F` che ci porterà il formato yyy-mm-dd che stiamo cercando. Dal momento che tutto ciò che ci interessa è il giorno, non i tempi o qualsiasi altra informazione, che è tutto quello che avremo bisogno per ottenere le informazioni corrette dal dnf `.log`. Prova solo questo gran parte dello script: + +``` +#!/usr/bin/env bash +# script per catturare i dati dnf.log e inviarli all'amministratore ogni giorno + +today=`date +%F` +echo $today +``` + +Qui stiamo usando il comando `echo` per vedere se abbiamo avuto successo con la nostra formattazione della data. Quando si esegue lo script, si dovrebbe ottenere un output con la data di oggi che assomiglia a qualcosa di simile: + +``` +2022-05-04 +``` + +Se così è allora grande, possiamo rimuovere la nostra linea "debug" e continuare. Aggiungiamo un'altra variabile chiamata "logfile" che imposteremo a `/var/log/dnf. og` e poi vediamo se possiamo `grep` che usando la nostra variabile "oggi". Per ora, lasciamo che sia eseguito su output standard: + +``` +!/usr/bin/env bash +# script to grab dnf. og data and send it to administrator daily + +today=`date +%F` +logfile=/var/log/dnf.log + +/bin/grep $today $logfile +``` + +Il `dnf. og` ha un sacco di informazioni in esso ogni giorno, quindi non stiamo pubblicando che sullo schermo qui, ma si dovrebbe vedere output che ha solo i dati di oggi in esso. Dare allo script una prova e se funziona, allora possiamo passare al passo successivo. Dopo aver controllato l'output, il passo successivo è che vogliamo effettuare un reindirizzamento del tubo per inviare le informazioni all'email. + +!!! hint "Suggerimento" + + Hai bisogno di `mailx` e di un demone di posta come `postfix` installato per compiere questo passo successivo. C'è anche qualche configurazione che *probabilmente* sarà necessaria per ricevere email dal tuo server all'indirizzo email delle aziende. Non preoccuparti di quei passi a questo punto, perché puoi controllare il `maillog` per vedere se il tentativo è stato fatto e poi lavorare da lì per ottenere email dal tuo server al tuo indirizzo email funzionante. Non è qualcosa che questo documento si occuperà. Per ora fare: + + ``` + dnf install mailx postfix + systemctl enable --now postfix + ``` + +``` +#!/usr/bin/env bash +# script per catturare i dati dnf.log e inviarli all'amministratore ogni giorno + +today=`date +%F` +logfile=/var/log/dnf. og + +/bin/grep $today $logfile /bin/mail -s "DNF logfile dati per $today" systemadministrator@domain.ext +``` + +Diamo un'occhiata alle aggiunte allo script qui. Abbiamo aggiunto una pipe `` per reindirizzare l'output a `/bin/mail` impostare l'oggetto dell'email (`-s`) con ciò che è in virgolette doppie e impostare il destinatario per essere "systemadministrator@domain. xt". Sostituisci l'ultimo bit con il tuo indirizzo email e riprova ad eseguire lo script. + +Come notato, probabilmente non riceverai l'email senza alcune modifiche alla configurazione della posta Postfix, ma dovresti vedere il tentativo in `/var/log/maillog`. + +## Prossimi Passi + +La prossima cosa che devi fare è ottenere l'invio di e-mail dal funzionamento del server. Si può dare un'occhiata a [Postfix for Reporting](../../../guides/email/postfix_reporting.md) per iniziare. Abbiamo anche bisogno di automatizzare questo script per eseguire ogni giorno, per farlo useremo `cron`. Ci sono più riferimenti qui: [cron](../../../guides/automation/cron_jobs_howto.md), [anacron](../../../guides/automation/anacron.md), e [cronie](../../../guides/automation/cronie.md). Per ulteriori informazioni sulla formattazione della data, consulta `man date` o [questo link](https://man7.org/linux/man-pages/man1/date.1.html). From 0b89b6b00affbb879b1b91a7c03a3cc591a00235 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 23 May 2022 04:41:34 -0400 Subject: [PATCH 14/51] New translations 01-first-script.md (Italian) --- .../books/learning_bash/01-first-script.it.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docs/books/learning_bash/01-first-script.it.md diff --git a/docs/books/learning_bash/01-first-script.it.md b/docs/books/learning_bash/01-first-script.it.md new file mode 100644 index 0000000000..a509ebe33c --- /dev/null +++ b/docs/books/learning_bash/01-first-script.it.md @@ -0,0 +1,121 @@ +--- +title: Bash - Primo script +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Primo script + +In questo capitolo imparerete a scrivere il vostro primo script in bash. + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: Scrivere il tuo primo script in bash; +:heavy_check_mark: Eseguire il tuo primo script; +:heavy_check_mark: Specificare quale shell usare con il cosiddetto shebang; + +:checkered_flag: **linux**, **script**, **bash** + +**Conoscenza**: :star: +**Complessità**: :star: + +**Tempo di lettura**: 10 minuti + +**** + +## Il mio primo script + +Per iniziare a scrivere uno script di shell, è conveniente utilizzare un editor di testo che supporti l'evidenziazione della sintassi. + +`vim`, ad esempio, è un ottimo strumento per questo scopo. + +Il nome dello script deve rispettare alcune regole: + +* nessun nome di comandi esistenti; +* solo caratteri alfanumerici, cioè senza caratteri accentati o spazi; +* estensione .sh per indicare che si tratta di uno script di shell. + +!!! note "Nota" + + In queste lezioni l'autore utilizza il simbolo "$" per indicare il prompt dei comandi dell'utente. + +``` +#!/usr/bin/env bash +# +# Autore : Team di documentazione Rocky +# Data: Marzo 2022 +# Versione 1.0.0: Visualizza il testo "Hello world!" +# + +# Visualizza un testo sullo schermo : +echo "Hello world!" +``` + +Per poter eseguire questo script, come argomento della bash: + +``` +$ bash hello-world.sh +Hello world ! +``` + +O, più semplicemente, dopo avergli dato il diritto di eseguire: + +``` +$ chmod u+x ./hello-world.sh +$ ./hello-world.sh +Hello world ! +``` + +!!! note "Nota" + + Per eseguire lo script, è necessario chiamarlo con `./` prima del nome quando ci si trova nella directory in cui risiede lo script. Se non si trova in quella directory, è necessario richiamarlo con l'intero percorso dello script, OPPURE collocarlo in una directory che si trova all'interno della variabile d'ambiente PATH (esempi: `/usr/local/sbin`, `/usr/local/bin`, ecc.) + L'interprete rifiuterà di eseguire uno script presente nella directory corrente senza indicare un percorso (qui con `./` prima di esso). + + Il comando `chmod` deve essere passato una sola volta su uno script appena creato. + +La prima riga da scrivere in qualsiasi script è quella che indica il nome del binario di shell da usare per eseguirlo. Se si vuole usare la shell `ksh` o il linguaggio interpretato `python`, si sostituisce la riga: + +``` +#!/usr/bin/env bash +``` + +con : + +``` +#!/usr/bin/env ksh +``` + +o con : + +``` +#!/usr/bin/env python +``` + +Questa prima riga si chiama "`shebang`". Inizia con i caratteri `#!` seguiti dal percorso del binario dell'interprete dei comandi da utilizzare. + +!!! accenno "Sullo shebang" + + Può capitare di incontrare lo "shebang" in uno script che non contiene la sezione "env" e contiene semplicemente l'interprete da usare. (Esempio: `#!/bin/bash`). Il metodo dell'autore è considerato il modo raccomandato e corretto per formattare il "shebang". + + Perché si raccomanda il metodo dell'autore? Perché aumenta la portabilità dello script. Se per qualche motivo l'interprete si trovasse in una directory completamente diversa, l'interprete verrebbe comunque trovato se si usasse il metodo dell'autore. + +Durante il processo di scrittura, è necessario fare la revisione dello script, utilizzando in particolare i commenti: + +* una presentazione generale, all'inizio, per indicare lo scopo dello script, il suo autore, la sua versione, il suo utilizzo, ecc. +* lungo il testo per aiutare a comprendere le azioni. + +I commenti possono essere inseriti su una riga separata o alla fine di una riga contenente un comando. + +Esempio: + +``` +# Questo programma visualizza la data +date # Questa riga è la riga che visualizza la data! +``` From faa9a202405a202e8d621dd352fe58dbf34a1cd2 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 23 May 2022 05:42:53 -0400 Subject: [PATCH 15/51] New translations 02-using-variables.md (Italian) --- .../learning_bash/02-using-variables.it.md | 274 ++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 docs/books/learning_bash/02-using-variables.it.md diff --git a/docs/books/learning_bash/02-using-variables.it.md b/docs/books/learning_bash/02-using-variables.it.md new file mode 100644 index 0000000000..2d8581687e --- /dev/null +++ b/docs/books/learning_bash/02-using-variables.it.md @@ -0,0 +1,274 @@ +--- +title: Bash - Uso delle variabili +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Uso delle variabili + +In questo capitolo imparerete a usare le variabili nei vostri script bash. + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: Memorizzare le informazioni per un uso successivo; +:heavy_check_mark: Cancellare e bloccare le variabili; +:heavy_check_mark: Utilizzare le variabili d'ambiente; +:heavy_check_mark: Sostituire i comandi; + +:checkered_flag: **linux**, **script**, **bash**, **variabile** + +**Conoscenza**: :star: :star: +**Complessità**: :star: + +**Tempo di lettura**: 10 minuti + +**** + +## Memorizzazione delle informazioni per un uso successivo + +Come in qualsiasi linguaggio di programmazione, lo script di shell utilizza le variabili. Vengono utilizzate per immagazzinare informazioni in memoria da riutilizzare quando necessario durante lo script. + +Una variabile viene creata quando riceve il suo contenuto. Rimane valido fino al termine dell'esecuzione dello script o su richiesta esplicita dell'autore dello script. Poiché lo script viene eseguito in sequenza dall'inizio alla fine, è impossibile richiamare una variabile prima che sia stata creata. + +Il contenuto di una variabile può essere modificato durante lo script, poiché la variabile continua a esistere fino al termine dello script. Se il contenuto viene cancellato, la variabile rimane attiva ma non contiene nulla. + +La nozione di tipo di variabile in uno script di shell è possibile, ma viene utilizzata molto raramente. Il contenuto di una variabile è sempre un carattere o una stringa. + +``` +#!/usr/bin/env bash + +# +# Author : Rocky Documentation Team +# Date: March 2022 +# Version 1.0.0: Save in /root the files passwd, shadow, group, and gshadow +# + +# Global variables +FILE1=/etc/passwd +FILE2=/etc/shadow +FILE3=/etc/group +FILE4=/etc/gshadow + +# Destination folder +DESTINATION=/root + +# Clear the screen +clear + +# Launch the backup +echo "Starting the backup of $FILE1, $FILE2, $FILE3, $FILE4 to $DESTINATION:" + +cp $FILE1 $FILE2 $FILE3 $FILE4 $DESTINATION + +echo "Backup ended!" +``` + +Questo script fa uso di variabili. Il nome di una variabile deve iniziare con una lettera, ma può contenere qualsiasi sequenza di lettere o numeri. Ad eccezione del trattino basso "_", non è possibile utilizzare caratteri speciali. + +Per convenzione, le variabili create da un utente hanno un nome in minuscolo. Questo nome deve essere scelto con cura per non essere troppo evasivo o troppo complicato. Tuttavia, una variabile può essere denominata con lettere maiuscole, come in questo caso, se si tratta di una variabile globale che non deve essere modificata dal programma. + +Il carattere `=` assegna il contenuto a una variabile: + +``` +variable=value +rep_name="/home" +``` + +Non ci sono spazi prima o dopo il segno `=`. + +Una volta creata la variabile, è possibile utilizzarla anteponendole un dollaro $. + +``` +file=file_name +touch $file +``` + +Si raccomanda vivamente di proteggere le variabili con le virgolette, come nell'esempio seguente: + +``` +file=file name +touch $file +touch "$file" +``` + +Poiché il contenuto della variabile contiene uno spazio, il primo `touch` creerà 2 file, mentre il secondo `creerà` un file il cui nome conterrà uno spazio. + +Per isolare il nome della variabile dal resto del testo, è necessario utilizzare le virgolette o le parentesi graffe: + +``` +file=file_name +touch "$file"1 +touch ${file}1 +``` + +**Si raccomanda l'uso sistematico di parentesi graffe.** + +L'uso degli apostrofi impedisce l'interpretazione dei caratteri speciali. + +``` +message="Hello" +echo "This is the content of the variable message: $message" +Here is the content of the variable message: Hello +echo 'Here is the content of the variable message: $message' +Here is the content of the variable message: $message +``` + +## Cancellare e bloccare le variabili + +Il comando `unset` consente di cancellare una variabile. + +Esempio: + +``` +name="NAME" +firstname="Firstname" +echo "$name $firstname" +NAME Firstname +unset firstname +echo "$name $firstname" +NAME +``` + +Il comando `readonly` o `typeset -r` blocca una variabile. + +Esempio: + +``` +name="NAME" +readonly name +name="OTHER NAME" +bash: name: read-only variable +unset name +bash: name: read-only variable +``` + +!!! Note "Nota" + + Un `set -u` all'inizio dello script interromperà l'esecuzione dello script se vengono utilizzate variabili non dichiarate. + +## Utilizzare le variabili d'ambiente + +Le**variabili d'ambiente** e di **sistema** sono variabili utilizzate dal sistema per il suo funzionamento. Per convenzione, i nomi sono indicati con lettere maiuscole. + +Come tutte le variabili, possono essere visualizzate durante l'esecuzione di uno script. Anche se ciò è fortemente sconsigliato, possono essere modificati. + +Il comando `env` visualizza tutte le variabili d'ambiente utilizzate. + +Il comando `set` visualizza tutte le variabili di sistema utilizzate. + +Tra le decine di variabili d'ambiente, alcune sono interessanti da usare in uno script di shell: + +| Variabili | Osservazioni | +| ----------------------------- | --------------------------------------------------------------------------- | +| `HOSTNAME` | Nome host della macchina. | +| `USER`, `USERNAME`e `LOGNAME` | Nome dell'utente connesso alla sessione. | +| `PATH` | Percorso per trovare i comandi. | +| `PWD` | Directory corrente, aggiornata ogni volta che viene eseguito il comando cd. | +| `HOME` | Directory di accesso. | +| `$$` | Id del processo di esecuzione dello script. | +| `$?` | Codice di ritorno dell'ultimo comando eseguito. | + +Il comando `export` consente di esportare una variabile. + +Una variabile è valida solo nell'ambiente del processo di script della shell. Affinché i **processi figli** dello script riconoscano le variabili e il loro contenuto, devono essere esportati. + +La modifica di una variabile esportata in un processo figlio non può essere ricondotta al processo padre. + +!!! note "Nota" + + Senza alcuna opzione, il comando `export` visualizza il nome e i valori delle variabili esportate nell'ambiente. + +## Comandi sostitutivi + +È possibile memorizzare il risultato di un comando in una variabile. + +!!! Note "Nota" + + Questa operazione è valida solo per i comandi che restituiscono un messaggio al termine della loro esecuzione. + +La sintassi per la sub-esecuzione di un comando è la seguente: + +``` +variable=`command` +variable=$(command) # Preferred syntax +``` + +Esempio: + +``` +$ day=`date +%d` +$ homedir=$(pwd) +``` + +Con tutto ciò che abbiamo appena visto, il nostro script di backup potrebbe assomigliare a questo: + +``` +#!/usr/bin/env bash + +# +# Author : Rocky Documentation Team +# Date: March 2022 +# Version 1.0.0: Save in /root the files passwd, shadow, group, and gshadow +# Version 1.0.1: Adding what we learned about variables +# + +# Global variables +FILE1=/etc/passwd +FILE2=/etc/shadow +FILE3=/etc/group +FILE4=/etc/gshadow + +# Destination folder +DESTINATION=/root + +## Readonly variables +readonly FILE1 FILE2 FILE3 FILE4 DESTINATION + +# A folder name with the day's number +dir="backup-$(date +%j)" + +# Clear the screen +clear + +# Launch the backup +echo "****************************************************************" +echo " Backup Script - Backup on ${HOSTNAME} " +echo "****************************************************************" +echo "The backup will be made in the folder ${dir}." +echo "Creating the directory..." +mkdir -p ${DESTINATION}/${dir} + +echo "Starting the backup of ${FILE1}, ${FILE2}, ${FILE3}, ${FILE4} to ${DESTINATION}/${dir}:" + +cp ${FILE1} ${FILE2} ${FILE3} ${FILE4} ${DESTINATION}/${dir} + +echo "Backup ended!" + +# The backup is noted in the system event log: +logger "Backup of system files by ${USER} on ${HOSTNAME} in the folder ${DESTINATION}/${dir}." +``` + +Esecuzione dello script di backup: + +``` +$ sudo ./backup.sh +``` + +questo ci darà: + +``` +**************************************************************** + Backup Script - Backup on desktop +**************************************************************** +The backup will be made in the folder backup-088. +Creazione della directory... +Starting the backup of /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow to /root/backup-088: +Backup ended! +``` From a9aeb9beb7f2676cdc84763006f129bda45ee6d3 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 23 May 2022 05:42:54 -0400 Subject: [PATCH 16/51] New translations 01-first-script.md (Italian) --- docs/books/learning_bash/01-first-script.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_bash/01-first-script.it.md b/docs/books/learning_bash/01-first-script.it.md index a509ebe33c..885b59ad71 100644 --- a/docs/books/learning_bash/01-first-script.it.md +++ b/docs/books/learning_bash/01-first-script.it.md @@ -100,7 +100,7 @@ o con : Questa prima riga si chiama "`shebang`". Inizia con i caratteri `#!` seguiti dal percorso del binario dell'interprete dei comandi da utilizzare. -!!! accenno "Sullo shebang" +!!! hint "Sullo shebang" Può capitare di incontrare lo "shebang" in uno script che non contiene la sezione "env" e contiene semplicemente l'interprete da usare. (Esempio: `#!/bin/bash`). Il metodo dell'autore è considerato il modo raccomandato e corretto per formattare il "shebang". From 9be5845881853488aa9978c41e5d00e3da1c0d66 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 23 May 2022 07:03:32 -0400 Subject: [PATCH 17/51] New translations 02-using-variables.md (Italian) --- docs/books/learning_bash/02-using-variables.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_bash/02-using-variables.it.md b/docs/books/learning_bash/02-using-variables.it.md index 2d8581687e..439d246c73 100644 --- a/docs/books/learning_bash/02-using-variables.it.md +++ b/docs/books/learning_bash/02-using-variables.it.md @@ -268,7 +268,7 @@ questo ci darà: Backup Script - Backup on desktop **************************************************************** The backup will be made in the folder backup-088. -Creazione della directory... +Creating the directory... Starting the backup of /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow to /root/backup-088: Backup ended! ``` From 0a8846b68492058da174f8a257c54cd132caaa84 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 25 May 2022 10:14:07 -0400 Subject: [PATCH 18/51] New translations 04-advanced-commands.md (Chinese Simplified) --- .../admin_guide/04-advanced-commands.zh.md | 204 +++++++++--------- 1 file changed, 106 insertions(+), 98 deletions(-) diff --git a/docs/books/admin_guide/04-advanced-commands.zh.md b/docs/books/admin_guide/04-advanced-commands.zh.md index 80914c650b..1d926f42f9 100644 --- a/docs/books/admin_guide/04-advanced-commands.zh.md +++ b/docs/books/admin_guide/04-advanced-commands.zh.md @@ -1,32 +1,32 @@ --- -title: Advanced Linux Commands +title: 高级Linux 命令 --- -# Advanced Commands for Linux users +# Linux 用户的高级命令 -In this chapter you will learn some advanced commands for Linux. +在本章中,您将学习一些针对Linux的高级命令。 **** -**Objectives** : In this chapter, future Linux administrators will learn: +**目标** : 在本章中,未来的Linux管理员将学习: -:heavy_check_mark: some useful commands not covered in the previous chapter; -:heavy_check_mark: some advanced commands. +:heavy_check_mark: 上一章没有介绍的一些有用的命令; +:heavy_check_mark: 一些高级命令 -:checkered_flag: **user commands**, **Linux** +:checkered_flag: **用户命令**, **Linux** -**Knowledge**: :star: -**Complexity**: :star: :star: :star: +**知识**: :star: +**复杂度**: :star: :star: :star: **阅读时间**: 20 分钟 **** -## `uniq` command +## `uniq` 命令 -The `uniq` command is a very powerful command, used with the `sort` command, especially for log file analysis. It allows you to sort and display entries by removing duplicates. +`uniq`命令是一个非常强大的命令,与`sort`命令一起使用尤其适合用于日志文件分析。 它允许您通过删除重复项来排序和显示条目。 -To illustrate how the `uniq` command works, let's use a `firstnames.txt` file containing a list of first names: +为了说明`uniq`命令的工作原理,让我们使用一个包含名字列表的`firstnames.txt`文件: ``` antoine @@ -39,9 +39,11 @@ antoine steven ``` -!!! Note `uniq` requires the input file to be sorted because it only compares consecutive lines. +!!! note "说明" -Without an argument, the `uniq` command will not display identical lines that follow each other in the `firstnames.txt` file: + `uniq`需要对输入文件进行排序,因为它只比较连续的行。 + +如果不带选项,`uniq`命令将不会显示`firstnames.txt`文件中紧随其后的相同行: ``` $ sort firstnames.txt | uniq @@ -51,14 +53,14 @@ steven xavier ``` -To display only the rows that appear only once, use the `-u` option: +要仅显示只出现一次的行,请使用`-u`选项: ``` $ sort firstnames.txt | uniq -u patrick ``` -Conversely, to display only the lines that appear at least twice in the file, you must use the `-d` option: +相反,要只显示文件中至少出现两次的行,必须使用`-d`选项: ``` $ sort firstnames.txt | uniq -d @@ -67,7 +69,7 @@ steven xavier ``` -To simply delete lines that appear only once, use the `-D` option: +要简单地删除只出现一次的行,请使用`-D`选项: ``` $ sort firstnames.txt | uniq -D @@ -80,7 +82,7 @@ xavier xavier ``` -Finally, to count the number of occurrences of each line, use the `-c` option: +最后,要计算每行出现的次数,请使用`-c`选项: ``` $ sort firstnames.txt | uniq -c @@ -97,13 +99,13 @@ $ sort firstnames.txt | uniq -cd 2 xavier ``` -## `xargs` commands +## `xargs` 命令 -The `xargs` command allows the construction and execution of command lines from standard input. +`xargs`命令允许从标准输入构建和执行命令行。 -The `xargs` command reads whitespace or linefeed delimited arguments from standard input, and executes the command (`/bin/echo` by default) one or more times using the initial arguments followed by the arguments read from standard input. +`xargs` 命令从标准输入中读取以空格或换行符分隔的参数,并使用初始参数和从标准输入中读取的参数执行一次或多次命令(默认为`/bin/echo`)。 -A first and simplest example would be the following: +第一个也是最简单的示例如下: ``` $ xargs @@ -114,16 +116,16 @@ xargs use of xargs ``` -The `xargs` command waits for an input from the standard **stdin** input. Three lines are entered. The end of the user input is specified to `xargs` by the keystroke sequence CTRL+D. `xargs` then executes the default command `echo` followed by the three arguments corresponding to the user input, namely : +`xargs`命令等待来自标准**stdin**输入的输入, 输入三行。 用户输入的结束是通过按键顺序CTRL+D指定给`xargs`的。 `xargs`然后执行默认命令`echo`,后跟与用户输入对应的三个参数,即: ``` $ echo "use" "of" "xargs" use of xargs ``` -It is possible to specify a command to be run by `xargs`. +可以通过`xargs`来指定一个要运行的命令。 -In the following example, `xargs` will run the command `ls -ld` on the set of folders specified in the standard input: +在下面的示例中,`xargs`将对标准输入中指定的一组文件夹上运行命令`ls-ld`: ``` $ xargs ls -ld @@ -136,9 +138,9 @@ dr-xr-x---. 2 root root 4096 5 avril 15:52 /root drwxrwxrwt. 3 root root 4096 6 avril 10:25 /tmp ``` -In practice, the `xargs` command executed the `ls -ld /home /tmp /root` command. +实际上,`xargs`命令执行的是 `ls -ld /home /tmp /root`命令。 -What happens if the command to be executed does not accept multiple arguments as is the case with the `find` command? +如果要执行的命令不像`find`命令那样接受多个参数,会发生什么情况? ``` $ xargs find /var/log -name @@ -147,14 +149,14 @@ $ xargs find /var/log -name find: paths must precede expression: *.log ``` -The `xargs` command attempted to execute the `find` command with multiple arguments behind the `-name` option, which caused `find` to generate an error: +`xargs`命令试图执行`-name`选项后面带有多个参数的`find`命令,这导致`find`产生错误: ``` $ find /var/log -name "*.old" "*.log" find: paths must precede expression: *.log ``` -In this case, the `xargs` command must be forced to execute the `find` command several times (once per line entered as standard input). The `-L` option followed by an **integer** allows you to specify the maximum number of entries to be processed with the command at one time: +在这种情况下,必须强制`xargs`命令多次执行find命令(每行输入一次作为标准输入)。 `-L`选项后跟 **整数**允许您指定一次使用该命令能处理的最大条目数: ``` $ xargs -L 1 find /var/log -name @@ -173,7 +175,7 @@ $ xargs -L 1 find /var/log -name ``` -If we wanted to be able to specify both arguments on the same line, we would have to use the `-n 1` option: +如果我们希望能够在同一行中指定这两个参数,则必须使用`-n 1`选项: ``` $ xargs -n 1 find /var/log -name @@ -191,7 +193,7 @@ $ xargs -n 1 find /var/log -name ``` -Case study of a backup with a `tar` based on a search: +基于搜索使用`tar`进行备份的案例研究: ``` $ find /var/log/ -name "*.log" -mtime -1 | xargs tar cvfP /root/log.tar @@ -200,92 +202,96 @@ $ tar tvfP /root/log.tar -rw-r--r-- root/root 499270 2017-04-06 11:01 /var/log/audit/audit.log ``` -The special feature of the `xargs` command is that it places the input argument at the end of the called command. This works very well with the above example since the files passed in will form the list of files to be added to the archive. +`xargs`命令的特殊功能是将输入参数放在被调用命令的结尾, 这对于上面的示例非常有效,因为传入的文件将形成要添加到归档中的文件列表。 -Now, if we take the example of the `cp` command and want to copy a list of files in a directory, this list of files will be added at the end of the command... but what the `cp` command expects at the end of the command is the destination. To do this, we use the `-I` option to put the input arguments somewhere else than at the end of the line. +现在,如果我们以`cp`命令为例并希望复制目录中的文件列表,则该文件列表将被添加到该命令的结尾... 但是`cp`命令在命令结尾要求的是目标文件。 为此,我们使用 `-I`选项将输入参数放在行尾以外的其他位置。 ``` $ find /var/log -type f -name "*.log" | xargs -I % cp % /root/backup ``` -The `-I` option allows you to specify a character (in our example the `%` character) where the input files to `xargs` will be placed. +`-I`选项允许您指定一个字符(在我们的示例中是`%`字符),用于放置`xargs`的输入文件。 -## `yum-utils` package +## `yum-utils` 软件包 -The `yum-utils` package is a collection of utilities from different authors for `yum`, which make it easier and more powerful to use. +`yum-utils` 软件包是不同作者为`yum`提供的实用程序的集合,这使得yum更易于使用且功能更强大。 -!!! Note While `yum` has been replaced by `dnf` in Rocky Linux 8, the package name has remained `yum-utils` although it can be installed as `dnf-utils` as well. These are classic YUM utilities implemented as CLI shims on top of DNF to maintain backwards compatibility with `yum-3`. +!!! note "说明" -Here are some examples of usage: + 在Rocky Linux 8中,`yum`被替换为`dnf`,虽然也可以安装`dnf-utils`,但包名仍然是`yum-utils`。 这些都是经典的YUM工具,在DNF之上以CLI shims的形式实现,以保持与`yum-3`的向后兼容。 -* `repoquery` command: +以下是一些用法示例: -The `repoquery` command queries the repositories. +* `repoquery` 命令: -Examples of use: +`repoquery` 命令用于查询存储库中的软件包。 - * Knowing the dependencies of an uninstalled package: +使用示例: -``` -repoquery --requires -``` + * 显示软件包的依赖 (它可以是已安装或未安装的软件包), 等同于`dnf deplist `。 - * Know the files provided by a non-installed package: + repoquery --requires -``` -$ repoquery -l yum-utils -/etc/bash_completion.d -/etc/bash_completion.d/yum-utils.bash -/usr/bin/debuginfo-install -/usr/bin/find-repos-of-install -/usr/bin/needs-restarting -/usr/bin/package-cleanup -/usr/bin/repo-graph -/usr/bin/repo-rss -/usr/bin/repoclosure -/usr/bin/repodiff -/usr/bin/repomanage -/usr/bin/repoquery -/usr/bin/reposync -/usr/bin/repotrack -/usr/bin/show-changed-rco -/usr/bin/show-installed -/usr/bin/verifytree -/usr/bin/yum-builddep -/usr/bin/yum-config-manager -/usr/bin/yum-debug-dump -/usr/bin/yum-debug-restore -/usr/bin/yum-groups-manager -/usr/bin/yumdownloader -… -``` + * 显示已安装软件包提供的文件(对于未安装的软件包不起作用),相当于`rpm -ql ` + + ``` + $ repoquery -l yum-utils + /etc/bash_completion.d + /etc/bash_completion.d/yum-utils.bash + /usr/bin/debuginfo-install + /usr/bin/find-repos-of-install + /usr/bin/needs-restarting + /usr/bin/package-cleanup + /usr/bin/repo-graph + /usr/bin/repo-rss + /usr/bin/repoclosure + /usr/bin/repodiff + /usr/bin/repomanage + /usr/bin/repoquery + /usr/bin/reposync + /usr/bin/repotrack + /usr/bin/show-changed-rco + /usr/bin/show-installed + /usr/bin/verifytree + /usr/bin/yum-builddep + /usr/bin/yum-config-manager + /usr/bin/yum-debug-dump + /usr/bin/yum-debug-restore + /usr/bin/yum-groups-manager + /usr/bin/yumdownloader + … + ``` -* `yumdownloader` command: +* `yumdownloader` 命令: -The `yumdownloader` command downloads RPM packages from the repositories. +`yumdownloader`命令用来从存储库下载RPM软件包。 等同于 `dnf download --downloadonly --downloaddir ./ package-name` -!!! Note This command is very useful to quickly build a local repository of a few rpm! +!!! note "说明" -Example: `yumdownloader` will download the _repoquery_ rpm package and all its dependencies: + 这个命令对于快速构建几个rpm的本地存储库非常有用! + +示例:`yumdownloader` 将下载 _samba_及其所有依赖项: ``` -$ yumdownloader --destdir /var/tmp -- resolve repoquery +$ yumdownloader --destdir /var/tmp --resolve samba +or +$ dnf download --downloadonly --downloaddir /var/tmp --resolve samba ``` -| Options | Comments | -| ----------- | --------------------------------------------------------------- | -| -`-destdir` | The downloaded packages will be stored in the specified folder. | -| `--resolve` | Also downloads the package dependencies. | +| 选项 | 解释 | +| ----------- | ------------------ | +| -`-destdir` | 下载的软件包将存储在指定的文件夹中。 | +| `--resolve` | 同时下载软件包依赖项。 | -## `psmisc` packages +## `psmisc` 软件包 -The `psmisc` package contains utilities for managing system processes: +`psmisc`软件包包含用于管理系统进程的实用程序: -* `pstree`: the `pstree` command displays the current processes on the system in a tree-like structure. -* `killall`: the `killall` command sends a kill signal to all processes identified by name. -* `fuser`: the `fuser` command identifies the `PID` of processes that use the specified files or file systems. +* `pstree`:`pstree`命令会以树状结构显示系统上的当前进程。 +* `killall`:`killall` 命令会向按名称标识的所有进程发送一个 kill 信号。 +* `fuser`:`fuser`命令用于标识指定文件或文件系统的进程`PID`。 -Examples: +示例: ``` $ pstree @@ -311,29 +317,31 @@ systemd─┬─NetworkManager───2*[{NetworkManager}] # killall httpd ``` -Kill processes (option `-k`) that access the `/etc/httpd/conf/httpd.conf` file: +结束访问`/etc/httpd/conf/httpd.conf`文件的进程(`-k`选项): ``` # fuser -k /etc/httpd/conf/httpd.conf ``` -## `watch` command +## `watch` 命令 + +`watch`命令会定期执行一条命令,并在终端全屏显示结果。 -The `watch` command regularly executes a command and displays the result in the terminal in full screen. +`-n`选项允许您指定每次执行命令之间的秒数。 -The `-n` option allows you to specify the number of seconds between each execution of the command. +!!! note "说明" -!!! Note To exit the `watch` command, you must type the keys: CTRL+C to kill the process. + 要退出`watch`命令,您必须键入按键:CTRL+C 来终止进程。 -Examples: +示例: -* Display the end of the `/etc/passwd` file every 5 seconds: +* 每5秒显示一次`/etc/passwd`文件的结尾: ``` $ watch -n 5 tail -n 3 /etc/passwd ``` -Result: +结果: ``` Every 5,0s: tail -n 3 /etc/passwd rockstar.rockylinux.lan: Thu Jul 1 15:43:59 2021 @@ -343,13 +351,13 @@ chrony:x:995:992::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ``` -* Monitoring the number of files in a folder: +* 监控文件夹中的文件数: ``` $ watch -n 1 'ls -l | wc -l' ``` -* Display a clock: +* 显示时钟: ``` $ watch -t -n 1 date From bf730a33bf18267844e4ee6e504318bfa950f6db Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 27 May 2022 04:56:15 -0400 Subject: [PATCH 19/51] New translations 04-advanced-commands.md (Italian) --- .../admin_guide/04-advanced-commands.it.md | 110 +++++++++--------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/docs/books/admin_guide/04-advanced-commands.it.md b/docs/books/admin_guide/04-advanced-commands.it.md index 99ef470045..7c271b2c8d 100644 --- a/docs/books/admin_guide/04-advanced-commands.it.md +++ b/docs/books/admin_guide/04-advanced-commands.it.md @@ -224,49 +224,47 @@ Ecco alcuni esempi di utilizzo: * comando `repoquery`: -Il comando `repoquery` interroga i repository. +Il comando `repoquery` viene utilizzato per interrogare i pacchetti nel repository. Esempi di utilizzo: - * Conoscere le dipendenze di un pacchetto disinstallato: - -``` -repoquery --requires -``` - - * Conoscere i file forniti da un pacchetto non installato: - -``` -$ repoquery -l yum-utils -/etc/bash_completion.d -/etc/bash_completion.d/yum-utils.bash -/usr/bin/debuginfo-install -/usr/bin/find-repos-of-install -/usr/bin/needs-restarting -/usr/bin/package-cleanup -/usr/bin/repo-graph -/usr/bin/repo-rss -/usr/bin/repoclosure -/usr/bin/repodiff -/usr/bin/repomanage -/usr/bin/repoquery -/usr/bin/reposync -/usr/bin/repotrack -/usr/bin/show-changed-rco -/usr/bin/show-installed -/usr/bin/verifytree -/usr/bin/yum-builddep -/usr/bin/yum-config-manager -/usr/bin/yum-debug-dump -/usr/bin/yum-debug-restore -/usr/bin/yum-groups-manager -/usr/bin/yumdownloader -… -``` + * Visualizza le dipendenze di un pacchetto (può essere un pacchetto software installato o non installato), Equivalente a `dnf deplist `. + + repoquery --requires + + * Visualizza i file forniti da un pacchetto installato (non funziona per i pacchetti che non sono installati), Equivalente a `rpm -ql ` + + ``` + $ repoquery -l yum-utils + /etc/bash_completion.d + /etc/bash_completion.d/yum-utils.bash + /usr/bin/debuginfo-install + /usr/bin/find-repos-of-install + /usr/bin/needs-restarting + /usr/bin/package-cleanup + /usr/bin/repo-graph + /usr/bin/repo-rss + /usr/bin/repoclosure + /usr/bin/repodiff + /usr/bin/repomanage + /usr/bin/repoquery + /usr/bin/reposync + /usr/bin/repotrack + /usr/bin/show-changed-rco + /usr/bin/show-installed + /usr/bin/verifytree + /usr/bin/yum-builddep + /usr/bin/yum-config-manager + /usr/bin/yum-debug-dump + /usr/bin/yum-debug-restore + /usr/bin/yum-groups-manager + /usr/bin/yumdownloader + … + ``` * comando `yumdownloader`: -Il comando `yumdownloader` scarica i pacchetti RPM dai repository. +Il comando `yumdownloader` scarica i pacchetti RPM dai repository. Equivalente a `dnf scaricare --downloadonly --downloaddir ./ package-name` !!! Note "Nota" @@ -275,7 +273,7 @@ Il comando `yumdownloader` scarica i pacchetti RPM dai repository. Esempio: `yumdownloader` scaricherà il pacchetto rpm _repoquery_ e tutte le sue dipendenze: ``` -$ yumdownloader --destdir /var/tmp -- resolve repoquery +$ yumdownloader --destdir /var/tmp --resolve repoquery ``` | Opzioni | Commenti | @@ -293,6 +291,16 @@ Il pacchetto `psmisc` contiene utilità per la gestione dei processi di sistema: Esempi: +``` +Questo comando è molto utile per creare rapidamente un repository locale di alcuni rpm! +``` + +``` +$ yumdownloader --destdir /var/tmp -- resolve repoquery +``` + +Arresta i processi (opzione `-k`) che accedono al file `/etc/httpd/conf/httpd.conf`: + ``` $ pstree systemd─┬─NetworkManager───2*[{NetworkManager}] @@ -313,16 +321,6 @@ systemd─┬─NetworkManager───2*[{NetworkManager}] └─tuned───4*[{tuned}] ``` -``` -# killall httpd -``` - -Arresta i processi (opzione `-k`) che accedono al file `/etc/httpd/conf/httpd.conf`: - -``` -# fuser -k /etc/httpd/conf/httpd.conf -``` - ## comando `watch` Il comando `watch` esegue regolarmente un comando e visualizza il risultato nel terminale a schermo intero. @@ -331,14 +329,14 @@ L'opzione `-n` consente di specificare il numero di secondi tra ogni esecuzione !!! Note "Nota" - Per uscire dal comando `watch`, devi digitare le chiavi: CTRL+C per terminare il processo. + Per uscire dal comando `watch', è necessario digitare i tasti: CTRL+C per terminare il processo. Esempi: -* Mostra la fine del file `/etc/passwd` ogni 5 secondi: +* Visualizza la fine del file `/etc/passwd` ogni 5 secondi: ``` -$ watch -n 5 tail -n 3 /etc/passwd +# fuser -k /etc/httpd/conf/httpd.conf ``` Risultato: @@ -354,11 +352,15 @@ sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin * Monitoraggio del numero di file in una cartella: ``` -$ watch -n 1 'ls -l | wc -l' +$ watch -n 5 tail -n 3 /etc/passwd ``` -* Mostra un orologio: +* Mostra la fine del file `/etc/passwd` ogni 5 secondi: ``` -$ watch -t -n 1 date +Every 5,0s: tail -n 3 /etc/passwd rockstar.rockylinux.lan: Thu Jul 1 15:43:59 2021 + +sssd:x:996:993:User for sssd:/:/sbin/nologin +chrony:x:995:992::/var/lib/chrony:/sbin/nologin +sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ``` From e0a5d88e11d290837db73054dec70a50b3e9e4bc Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 27 May 2022 06:47:35 -0400 Subject: [PATCH 20/51] New translations 03-data-entry-and-manipulations.md (Italian) --- .../03-data-entry-and-manipulations.it.md | 346 ++++++++++++++++++ 1 file changed, 346 insertions(+) create mode 100644 docs/books/learning_bash/03-data-entry-and-manipulations.it.md diff --git a/docs/books/learning_bash/03-data-entry-and-manipulations.it.md b/docs/books/learning_bash/03-data-entry-and-manipulations.it.md new file mode 100644 index 0000000000..f21415f8d0 --- /dev/null +++ b/docs/books/learning_bash/03-data-entry-and-manipulations.it.md @@ -0,0 +1,346 @@ +--- +title: Bash - Inserimento e manipolazione dei dati +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Inserimento e manipolazione dei dati + +In questo capitolo imparerete a far interagire i vostri script con gli utenti e a manipolare i dati. + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: leggere l'input di un utente; +:heavy_check_mark: manipolare voci di dati; +:heavy_check_mark: utilizzare argomenti all'interno di uno script; +:heavy_check_mark: gestire variabili posizionali; + +:checkered_flag: **linux**, **script**, **bash**, **variable** + +**Conoscenza**: :star: :star: +**Complessità**: :star: + +**Tempo di lettura**: 10 minuti + +**** + +A seconda dello scopo dello script, può essere necessario inviargli informazioni quando viene lanciato o durante la sua esecuzione. Queste informazioni, non note al momento della scrittura dello script, possono essere estratte da file o inserite dall'utente. È anche possibile inviare queste informazioni sotto forma di argomenti quando viene immesso il comando di script. Questo è il modo in cui funzionano molti comandi di Linux. + +## Il comando `read` + +Il comando `read` consente di inserire una stringa di caratteri e di memorizzarla in una variabile. + +Sintassi del comando read: + +``` +read [-n X] [-p] [-s] [variable] +``` + +Il primo esempio qui sotto richiede l'inserimento di due variabili: "name" e "firstname", ma poiché non c'è alcun prompt, bisogna sapere in anticipo che questo è il caso. Nel caso di questo particolare inserimento, ogni variabile immessa sarà separata da uno spazio. Il secondo esempio richiede la variabile "name" con il testo di richiesta incluso: + +``` +read name firstname +read -p "Please type your name: " name +``` + +| Opzione | Osservazione | +| ------- | ------------------------------------------ | +| `-p` | Visualizza un messaggio di richiesta. | +| `-n` | Limita il numero di caratteri da inserire. | +| `-s` | Nasconde l'input. | + +Quando si utilizza l'opzione `-n`, la shell convalida automaticamente l'input dopo il numero di caratteri specificato. L'utente non deve premere il tasto INVIO. + +``` +read -n5 name +``` + +Il comando `read` consente di interrompere l'esecuzione dello script mentre l'utente inserisce le informazioni. L'input dell'utente viene scomposto in parole assegnate a una o più variabili predefinite. Le parole sono stringhe di caratteri separate dal separatore di campo. + +La fine dell'immissione è determinata dalla pressione del tasto INVIO. + +Una volta convalidato l'input, ogni parola viene memorizzata nella variabile predefinita. + +La divisione delle parole è definita dal carattere separatore di campo. Questo separatore è memorizzato nella variabile di sistema `IFS`(**Internal Field Separator**). + +``` +set | grep IFS +IFS=$' \t\n' +``` + +Per impostazione predefinita, l'IFS contiene spazio, tabulazione e avanzamento riga. + +Se utilizzato senza specificare una variabile, questo comando mette semplicemente in pausa lo script. Lo script continua la sua esecuzione quando l'input viene convalidato. + +Viene utilizzato per mettere in pausa uno script durante il debug o per chiedere all'utente di premere INVIO per continuare. + +``` +echo -n "Press [ENTER] to continue..." +read +``` + +## Il comando `cut` + +Il comando cut consente di isolare una colonna in un file o in un flusso. + +Sintassi del comando cut: + +``` +cut [-cx] [-dy] [-fz] file +``` + +Esempio di utilizzo del comando cut: + +``` +cut -d: -f1 /etc/passwd +``` + +| Opzione | Osservazione | +| ------- | ------------------------------------------------------------ | +| `-c` | Specifica i numeri in sequenza dei caratteri da selezionare. | +| `-d` | Specifica il separatore di campo. | +| `-f` | Specifica il numero d'ordine delle colonne da selezionare. | + +L'interesse principale di questo comando sarà la sua associazione con un flusso, ad esempio il comando `grep` e la pipe `|`. + +* Il comando `grep` funziona "in verticale" (isolamento di una riga da tutte le righe del file). +* La combinazione dei due comandi consente di **isolare un campo specifico del file**. + +Esempio: + +``` +grep "^root:" /etc/passwd | cut -d: -f3 +0 +``` + +!!! NOTE "Nota" + + I file di configurazione con un'unica struttura che utilizzano lo stesso separatore di campo sono i bersagli ideali per questa combinazione di comandi. + +## Il comando `tr` + +Il comando `tr` consente di convertire una stringa. + +Sintassi del comando `tr`: + +``` +tr [-csd] string1 string2 +``` + +| Opzione | Osservazione | +| ------- | ------------------------------------------------------------------------------------------------------------- | +| `-c` | Tutti i caratteri non specificati nella prima stringa vengono convertiti nei caratteri della seconda stringa. | +| `-d` | Elimina il carattere specificato. | +| `-s` | Riduce il carattere specificato a una singola unità. | + +Segue un esempio di utilizzo del comando `tr`. Se si usa `grep` per restituire la voce del file `passwd` di root, si ottiene questo risultato: + +``` +grep root /etc/passwd +``` +restituisce: +``` +root:x:0:0:root:/root:/bin/bash +``` +Ora usiamo il comando `tr` e riduciamo le "o" nella riga: + +``` +grep root /etc/passwd | tr -s "o" +``` +che restituisce questo: +``` +rot:x:0:0:rot:/rot:/bin/bash +``` +## Estrarre il nome e il percorso di un file + +Il comando `basename` consente di estrarre il nome del file da un percorso. + +Il comando `dirname` consente di estrarre il percorso padre di un file. + +Esempi: + +``` +echo $FILE=/usr/bin/passwd +basename $FILE +``` +Il che si tradurrebbe in "passwd" +``` +dirname $FILE +``` +Il risultato sarebbe: "/usr/bin" + +## Argomenti di uno script + +La richiesta di inserire informazioni con il comando di `read` interrompe l'esecuzione dello script finché l'utente non inserisce qualche informazione. + +Questo metodo, sebbene sia molto semplice, ha i suoi limiti se lo script è programmato per essere eseguito di notte. Per superare questo problema, è possibile iniettare le informazioni desiderate tramite argomenti. + +Molti comandi di Linux funzionano secondo questo principio. + +Questo modo di procedere ha il vantaggio che, una volta eseguito, lo script non avrà bisogno di alcun intervento umano per essere completato. + +Lo svantaggio principale è che l'utente dovrà essere avvisato della sintassi dello script per evitare errori. + +Gli argomenti vengono inseriti quando si immette il comando di script. Sono separati da uno spazio. + +``` +./script argument1 argument2 +``` + +Una volta eseguito, lo script salva gli argomenti inseriti in variabili predefinite: le `variabili posizionali`. + +Queste variabili possono essere utilizzate nello script come qualsiasi altra variabile, ma non possono essere assegnate. + +* Le variabili posizionali non utilizzate esistono ma sono vuote. +* Le variabili posizionali sono sempre definite nello stesso modo: + +| Variabile | Osservazione | +| ----------- | ------------------------------------------------------ | +| `$0` | contiene il nome dello script inserito. | +| `$1` a `$9` | contengono i valori dal 1° al 9° argomento | +| `${x}` | contiene il valore dell'argomento `x`, superiore a 9. | +| `$#` | contiene il numero di argomenti passati. | +| `$*` o `$@` | contiene in una variabile tutti gli argomenti passati. | + +Esempio: + +``` +#!/usr/bin/env bash +# +# Author : Damien dit LeDub +# Date : september 2019 +# Version 1.0.0 : Display the value of the positional arguments +# From 1 to 3 + +# The field separator will be "," or space +# Important to see the difference in $* and $@ +IFS=", " + +# Display a text on the screen: +echo "The number of arguments (\$#) = $#" +echo "The name of the script (\$0) = $0" +echo "The 1st argument (\$1) = $1" +echo "The 2nd argument (\$2) = $2" +echo "The 3rd argument (\$3) = $3" +echo "All separated by IFS (\$*) = $*" +echo "All without separation (\$@) = $@" +``` + +questo ci darà: + +``` +$ ./arguments.sh one two "tree four" +The number of arguments ($#) = 3 +The name of the script ($0) = ./arguments.sh +The 1st argument ($1) = one +The 2nd argument ($2) = two +The 3rd argument ($3) = tree four +All separated by IFS ($*) = one,two,tree four +All without separation ($@) = one two tree four +``` + +!!! warning "Attenzione" + + Attenzione alla differenza tra `$@` e `$*`. È nel formato di memorizzazione degli argomenti: + + * `$*`: Contiene gli argomenti nel formato `"$1 $2 $3 ..."` + * `$@`: contiene argomenti nel formato `"$1" "$2" "$3" ..`. + + È modificando la variabile d'ambiente `IFS` che si nota la differenza. + +### Il comando shift + +Il comando shift consente di spostare le variabili posizionali. + +Modifichiamo l'esempio precedente per illustrare l'impatto del comando shift sulle variabili posizionali: + +``` +#!/usr/bin/env bash +# +# Author : Damien dit LeDub +# Date : september 2019 +# Version 1.0.0 : Display the value of the positional arguments +# From 1 to 3 + +# The field separator will be "," or space +# Important to see the difference in $* and $@ +IFS=", " + +# Display a text on the screen: +echo "The number of arguments (\$#) = $#" +echo "The 1st argument (\$1) = $1" +echo "The 2nd argument (\$2) = $2" +echo "The 3rd argument (\$3) = $3" +echo "All separated by IFS (\$*) = $*" +echo "All without separation (\$@) = $@" + +shift 2 +echo "" +echo "-------- SHIFT 2 ----------------" +echo "" + +echo "The number of arguments (\$#) = $#" +echo "The 1st argument (\$1) = $1" +echo "The 2nd argument (\$2) = $2" +echo "The 3rd argument (\$3) = $3" +echo "All separated by IFS (\$*) = $*" +echo "All without separation (\$@) = $@" +``` + +questo ci darà: + +``` +./arguments.sh one two "tree four" +The number of arguments ($#) = 3 +The 1st argument ($1) = one +The 2nd argument ($2) = two +The 3rd argument ($3) = tree four +All separated by IFS ($*) = one,two,tree four +All without separation ($@) = one two tree four + +-------- SHIFT 2 ---------------- + +The number of arguments ($#) = 1 +The 1st argument ($1) = tree four +The 2nd argument ($2) = +The 3rd argument ($3) = +All separated by IFS ($*) = tree four +All without separation ($@) = tree four +``` + +Come si può notare, il comando `shift` ha spostato il posto degli argomenti "a sinistra", rimuovendo i primi due. + +!!! WARNING "Attenzione" + + Quando si usa il comando `shift`, le variabili `$#` e `$*` vengono modificate di conseguenza. + +### Il comando `set` + +Il comando `set` divide una stringa in variabili posizionali. + +Sintassi del comando set: + +``` +set [value] [$variable] +``` + +Esempio: + +``` +$ set one two three +$ echo $1 $2 $3 $# +one two three 3 +$ variable="four five six" +$ set $variable +$ echo $1 $2 $3 $# +four five six 3 +``` + +È ora possibile utilizzare le variabili posizionali come visto in precedenza. From 9cb329b7d1b66cdb5df8a065b3b8b9b736d88eed Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 27 May 2022 12:16:26 -0400 Subject: [PATCH 21/51] New translations 04-check-your-knowledge.md (Italian) --- .../04-check-your-knowledge.it.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/books/learning_bash/04-check-your-knowledge.it.md diff --git a/docs/books/learning_bash/04-check-your-knowledge.it.md b/docs/books/learning_bash/04-check-your-knowledge.it.md new file mode 100644 index 0000000000..c4e53b1373 --- /dev/null +++ b/docs/books/learning_bash/04-check-your-knowledge.it.md @@ -0,0 +1,60 @@ +--- +title: Bash - Verificare le proprie conoscenze +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Verificare le proprie conoscenze + +:heavy_check_mark: Tra queste 4 shell, quale non esiste? + +- [ ] Bash +- [ ] Ksh +- [ ] Tsh +- [ ] Csh + +:heavy_check_mark: Qual è la sintassi corretta per assegnare un contenuto a una variabile: + +- [ ] `variabile:=valore` +- [ ] `variabile := valore` +- [ ] `variabile = valore` +- [ ] `variabile=valore` + +:heavy_check_mark: Come memorizzare il ritorno di un comando in una variabile: + +- [ ] `file=$(ls)` +- [ ] `file=`ls`` +- [ ] `file:=$ls` +- [ ] `file = $(ls)` +- [ ] `file=${ls}` + +:heavy_check_mark: Il comando read consente di leggere il contenuto di un file: + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Quale delle seguenti è la sintassi corretta per il comando `cut`: + +- [ ] `cut -f: -D1 /etc/passwd` +- [ ] `cut -d: -f1 /etc/passwd` +- [ ] `cut -d1 -f: /etc/passwd` +- [ ] `cut -c ":" -f 3 /etc/passwd` + +:heavy_check_mark: Quale comando viene usato per spostare le variabili posizionali: + +- [ ] `left` +- [ ] `shift` +- [ ] `set` +- [ ] `array` + +:heavy_check_mark: Quale comando trasforma una stringa in variabili posizionali: + +- [ ] `left` +- [ ] `shift` +- [ ] `set` +- [ ] `array` From f89263a30c4f2c599de0aae4082dde0680e691ba Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 27 May 2022 13:31:49 -0400 Subject: [PATCH 22/51] New translations 05-tests.md (Italian) --- docs/books/learning_bash/05-tests.it.md | 393 ++++++++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 docs/books/learning_bash/05-tests.it.md diff --git a/docs/books/learning_bash/05-tests.it.md b/docs/books/learning_bash/05-tests.it.md new file mode 100644 index 0000000000..3cf8ffc0b4 --- /dev/null +++ b/docs/books/learning_bash/05-tests.it.md @@ -0,0 +1,393 @@ +--- +title: Bash - Test +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Test + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: lavorare con il codice di ritorno; +:heavy_check_mark: testare i file e confrontarli; +:heavy_check_mark: testare variabili, stringhe e numeri interi; +:heavy_check_mark: eseguire un'operazione con numeri interi; + +:checkered_flag: **linux**, **script**, **bash**, **variable** + +**Conoscenza**: :star: :star: +**Complessità**: :star: + +**Tempo di lettura**: 10 minuti + +**** + +Una volta completati, tutti i comandi eseguiti dalla shell restituiscono un **codice di ritorno** (chiamato anche **codice** **di stato** o di **uscita**). + +* Se il comando è stato eseguito correttamente, il codice di stato sarà pari a **zero**. +* Se il comando ha incontrato un problema durante la sua esecuzione, il suo codice di stato avrà un **valore diverso da zero**. I motivi possono essere molteplici: mancanza di diritti di accesso, file mancante, inserimento errato, ecc. + +Si consiglia di consultare il manuale `man command` per conoscere i diversi valori del codice di ritorno forniti dagli sviluppatori. + +Il codice di ritorno non è visibile direttamente, ma è memorizzato in una variabile speciale: `$?` + +``` +mkdir directory +echo $? +0 +``` + +``` +mkdir /directory +mkdir: unable to create directory +echo $? +1 +``` + +``` +command_that_does_not_exist +command_that_does_not_exist: command not found +echo $? +127 +``` + + +!!! note "Nota" + + La visualizzazione del contenuto della variabile `$?` con il comando `echo` è fatta subito dopo il comando che si vuole valutare, perché questa variabile viene aggiornata dopo ogni esecuzione di un comando, di una riga di comando o di uno script. + +!!! tip "Suggerimento" + + Poiché il valore di `$?` cambia dopo l'esecuzione di ogni comando, è meglio inserire il suo valore in una variabile che verrà utilizzata in seguito, per un test o per visualizzare un messaggio. + + ``` + ls no_file + ls: cannot access 'no_file': No such file or directory + result=$? + echo $? + 0 + echo $result + 2 + ``` + +È anche possibile creare codici di ritorno in uno script. Per farlo, è sufficiente aggiungere un argomento numerico al comando `exit`. + +``` +bash # to avoid being disconnected after the "exit 2 +exit 123 +echo $? +123 +``` + +Oltre alla corretta esecuzione di un comando, la shell offre la possibilità di eseguire test su molti modelli: + +* **File**: esistenza, tipo, diritti, confronto; +* **Stringhe**: lunghezza, confronto; +* **Numeri interi**: valore, confronto. + +Il risultato del test: + +* `$?=0`: il test è stato eseguito correttamente ed è vero; +* `$?=1`: il test è stato eseguito correttamente ed è falso; +* `$?=2`: il test non è stato eseguito correttamente. + +## Verifica del tipo di file + +Sintassi del comando di `test` per un file: + +``` +test [-d|-e|-f|-L] file +``` + +oppure: + +``` +[ -d-e|-f|-L file ] +``` + +!!! NOTE "Nota" + + Si noti che c'è uno spazio dopo il `[` e prima del `]`. + +Opzioni del comando test sui file: + +| Opzione | Osservazione | +| ------- | ---------------------------------------------------------------------- | +| `-e` | Verifica se il file esiste | +| `-f` | Verifica se il file esiste ed è di tipo normale | +| `-d` | Verifica se il file esiste ed è di tipo directory | +| `-L` | Controlla se il file esiste e se è di tipo link simbolico | +| `-b` | Verifica se il file esiste e se è di tipo speciale in modalità blocco | +| `-c` | Controlla se il file esiste e se è di tipo speciale modalità carattere | +| `-p` | Controlla se il file esiste ed è di tipo tube | +| `-S` | Verifica se il file esiste ed è di tipo socket | +| `-t` | Verifica se il file esiste ed è di tipo terminale | +| `-r` | Verifica se il file esiste ed è leggibile | +| `-w` | Controlla se il file esiste e se è scrivibile | +| `-x` | Verifica se il file esiste ed è eseguibile | +| `-g` | Controlla se il file esiste e ha un SGID impostato | +| `- u` | Controlla se il file esiste e ha un SUID impostato | +| `-s` | Verifica se il file esiste e non è vuoto (dimensione > 0 byte) | + +Esempio: + +``` +test -e /etc/passwd +echo $? +0 +[ -w /etc/passwd ] +echo $? +1 +``` + +È stato creato un comando interno ad alcune shell (tra cui bash) che è più moderno e fornisce più funzioni del comando esterno `test`. + +``` +[[ -s /etc/passwd ]] +echo $? +1 +``` + +!!! NOTE "Nota" + + Per il resto di questo capitolo utilizzeremo quindi il comando interno. + +## Confronto di due file + +È anche possibile confrontare due file: + +``` +[[ file1 -nt|-ot|-ef file2 ]] +``` + +| Opzione | Osservazione | +| ------- | ----------------------------------------------------------------- | +| `-nt` | Verifica se il primo file è più recente del secondo | +| `-ot` | Verifica se il primo file è più vecchio del secondo | +| `-ef` | Verifica se il primo file è un collegamento fisico con il secondo | + +## Testare le variabili + +È possibile testare le variabili: + +``` +[[ -z|-n $variable ]] +``` + +| Opzione | Osservazione | +| ------- | ------------------------------------ | +| `-z` | Verifica se la variabile è vuota | +| `-n` | Verifica se la variabile non è vuota | + +## Test delle stringhe + +È anche possibile confrontare due stringhe: + +``` +[[ string1 =|!=|<|> string2 ]] +``` + +Esempio: + +``` +[[ "$var" = "Rocky rocks!" ]] +echo $? +0 +``` + +| Opzione | Osservazione | +| ------- | ---------------------------------------------------------------------- | +| `=` | Verifica se la prima stringa è uguale alla seconda | +| `!=` | Verifica se la prima stringa è diversa dalla seconda | +| `<` | Verifica se la prima stringa è precedente alla seconda in ordine ASCII | +| `>` | Verifica se la prima stringa è dopo la seconda in ordine ASCII | + +## Confronto tra numeri interi + +Sintassi per il test dei numeri interi: + +``` +[[ "num1" -eq|-ne|-gt|-lt "num2" ]] +``` + +Esempio: + +``` +var=1 +[[ "$var" -eq "1" ]] +echo $? +0 +``` + +``` +var=2 +[[ "$var" -eq "1" ]] +echo $? +1 +``` + +| Opzione | Osservazione | +| ------- | -------------------------------------------------- | +| `-eq` | Verifica se il primo numero è uguale al secondo | +| `-ne` | Verifica se il primo numero è diverso dal secondo | +| `-gt` | Verifica se il primo numero è maggiore del secondo | +| `-lt` | Verifica se il primo numero è minore del secondo | + +!!! Note "Nota" + + Poiché i valori numerici sono trattati dalla shell come caratteri regolari (o stringhe), un test su un carattere può restituire lo stesso risultato sia che venga trattato come un carattere numerico o meno. + + ``` + test "1" = "1" + echo $? + 0 + test "1" -eq "1" + echo $? + 0 + ``` + + + Ma il risultato del test non avrà lo stesso significato: + + * Nel primo caso, significa che i due caratteri hanno lo stesso valore nella tabella ASCII. + * Nel secondo caso, significa che i due numeri sono uguali. + +## Test combinati + +La combinazione di test consente di eseguire più test con un unico comando. È possibile testare più volte lo stesso argomento (file, stringa o numero) o argomenti diversi. + +``` +[ option1 argument1 [-a|-o] option2 argument 2 ] +``` + +``` +ls -lad /etc +drwxr-xr-x 142 root root 12288 sept. 20 09:25 /etc +[ -d /etc -a -x /etc ] +echo $? +0 +``` + +| Opzione | Osservazione | +| ------- | ---------------------------------------------------- | +| `-a` | AND: il test sarà vero se tutti i modelli sono veri. | +| `-o` | OR: Il test sarà vero se almeno uno schema è vero. | + + +Con il comando interno, è meglio utilizzare questa sintassi: + +``` +[[ -d "/etc" && -x "/etc" ]] +``` + +I test possono essere raggruppati con parentesi `(` `)` per dare loro una priorità. + +``` +(TEST1 -a TEST2) -a TEST3 +``` + +Il carattere `!` viene utilizzato per eseguire il test inverso a quello richiesto dall'opzione: + +``` +test -e /file # true if file exists +! test -e /file # true if file does not exist +``` + +## Operazioni numeriche + +Il comando `expr` esegue un'operazione con numeri interi. + +``` +expr num1 [+] [-] [\*] [/] [%] num2 +``` + +Esempio: + +``` +expr 2 + 2 +4 +``` + +!!! Warning "Attenzione" + + Fare attenzione a circondare il segno di operazione con uno spazio. In caso di dimenticanza, verrà visualizzato un messaggio di errore. + Nel caso di una moltiplicazione, il carattere jolly `*` è preceduto da `\` per evitare un'interpretazione errata. + +| Opzione | Osservazione | +| ------- | ---------------------- | +| `+` | Addizione | +| `-` | Sottrazione | +| `\*` | Moltiplicazione | +| `/` | Quoziente di divisione | +| `%` | Modulo della divisione | + + +## Il comando `typeset` + +Il comando `typeset -i` dichiara una variabile come un numero intero. + +Esempio: + +``` +typeset -i var1 +var1=1+1 +var2=1+1 +echo $var1 +2 +echo $var2 +1+1 +``` + +## Il comando `let` + +Il comando `let` verifica se un carattere è numerico. + +Esempio: + +``` +var1="10" +var2="AA" +let $var1 +echo $? +0 +let $var2 +echo $? +1 +``` + +!!! Warning "Attenzione" + + Il comando `let` non restituisce un codice di ritorno coerente quando valuta il valore numerico `0`. + + ``` + let 0 + echo $? + 1 + ``` + +Il comando `let` consente anche di eseguire operazioni matematiche: + +``` +let var=5+5 +echo $var +10 +``` + +`può` essere sostituito da `$(( ))`. + +``` +echo $((5+2)) +7 +echo $((5*2)) +10 +var=$((5*3)) +echo $var +15 +``` From 1f94a7d8af48f6c4180b433e1a3afc3bc1370f1f Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Sat, 28 May 2022 04:20:44 -0400 Subject: [PATCH 23/51] New translations 06-conditional-structures.md (Italian) --- .../06-conditional-structures.it.md | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 docs/books/learning_bash/06-conditional-structures.it.md diff --git a/docs/books/learning_bash/06-conditional-structures.it.md b/docs/books/learning_bash/06-conditional-structures.it.md new file mode 100644 index 0000000000..8273354d03 --- /dev/null +++ b/docs/books/learning_bash/06-conditional-structures.it.md @@ -0,0 +1,189 @@ +--- +title: Bash - Strutture condizionali if e case +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Strutture condizionali if e case + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: utilizzare la sintassi condizionale `if`; +:heavy_check_mark: utilizzare la sintassi condizionale `case`; + +:checkered_flag: **linux**, **script**, **bash**, **conditional structures** + +**Conoscenza**: :star: :star: +**Complessità**: :star: + +**Tempo di lettura**: 20 minuti + +**** + +## Strutture condizionali + +Se la variabile `$?` viene utilizzata per conoscere il risultato di un test o l'esecuzione di un comando, può essere solo visualizzata e non ha alcun effetto sull'esecuzione di uno script. + +Ma possiamo usarlo in una condizione. **Se** il test è positivo **allora** eseguo questa azione **altrimenti** eseguo quest'altra. + +Sintassi dell'alternativa condizionale `if`: + +``` +if command +then + command if $?=0 +else + command if $?!=0 +fi +``` + +Il comando posto dopo la parola `if` può essere qualsiasi comando, poiché è il suo codice di ritorno (`$?`) a essere valutato. Spesso è conveniente usare il comando `test` per definire diverse azioni in base al risultato di questo test (file esistente, variabile non vuota, diritti di scrittura impostati). + +L'uso di un comando classico`(mkdir`, `tar`, ...) consente di definire le azioni da eseguire in caso di successo o i messaggi di errore da visualizzare in caso di fallimento. + +Esempi: + +``` +if [[ -e /etc/passwd ]] +then + echo "The file exists" +else + echo "The file does not exist" +fi + +if mkdir rep +then + cd rep +fi +``` + +Se il blocco `else` inizia con una nuova struttura `if`, è possibile unire `else` e `if` con `elif`, come mostrato di seguito: + +``` +[...] +else + if [[ -e /etc/ ]] +[...] + +[...] +# is equivalent to +elif [[ -e /etc ]] +[...] +``` + +!!! Nota "Sintesi" + + La struttura `if` / `then` / `else` / `fi` valuta il comando posto dopo if: + + * Se il codice di ritorno di questo comando è `0` (`vero`), la shell eseguirà i comandi `successivi`; + * Se il codice di ritorno è diverso da `0` (`falso`), la shell eseguirà i comandi posti dopo `else`. + + Il blocco `else` è opzionale. + + Spesso è necessario eseguire alcune azioni solo se la valutazione del comando è vera e non fare nulla se è falsa. + + La parola `fi` chiude la struttura. + +Quando c'è un solo comando da eseguire nel blocco `then`, è possibile utilizzare una sintassi più semplice. + +Il comando da eseguire se `$?` è `vero` è posto dopo `&&` mentre il comando da eseguire se `$?` è `falso` è posto dopo `||` (opzionale). + +Esempio: + +``` +[[ -e /etc/passwd ]] && echo "The file exists" || echo "The file does not exist" +mkdir dir && echo "The directory is created". +``` + +È anche possibile valutare e sostituire una variabile con una struttura più leggera di `if`. + +Questa sintassi implementa le parentesi graffe: + +* Visualizza un valore sostitutivo se la variabile è vuota: + ``` + ${variable:-value} + ``` +* Visualizza un valore sostitutivo se la variabile non è vuota: + ``` + ${variable:+value} + ``` +* Assegna un nuovo valore alla variabile se è vuota: + ``` + ${variable:=value} + ``` + +Esempi: + +``` +name="" +echo ${name:-linux} +linux +echo $name + +echo ${name:=linux} +linux +echo $name +linux +echo ${name:+tux} +tux +echo $name +linux +``` + +!!! hint "Suggerimento" + + Quando si decide di usare `if`, `then`, `else`, `fi` o di usare gli esempi di sintassi più semplici descritti sopra, bisogna tenere a mente la leggibilità dello script. Se nessuno utilizzerà lo script oltre a voi stessi, potete usare quello che funziona meglio per voi. Se qualcun altro potrebbe aver bisogno di rivedere, debuggare o tracciare lo script che avete creato, usate la forma più autodocumentante (`if`, `then`, ecc.) o assicuratevi di documentare accuratamente il vostro script, in modo che la sintassi più semplice sia effettivamente compresa da coloro che potrebbero aver bisogno di modificare e usare lo script. Documentare lo script è *sempre* una buona cosa da fare in ogni caso, come già notato più volte in queste lezioni. + +## Alternativa condizionale: struttura `case` + +Una successione di strutture `if` può diventare rapidamente pesante e complessa. Quando si tratta della valutazione di una stessa variabile, è possibile utilizzare una struttura condizionale con più rami. I valori della variabile possono essere specificati o appartenere a un elenco di possibilità. + +**È possibile utilizzare i caratteri jolly**. + +La struttura `case ... in` / `esac` valuta la variabile posta dopo `case` e la confronta con i valori definiti. + +Alla prima uguaglianza trovata, vengono eseguiti i comandi posti tra `)` e `;;`. + +La variabile valutata e i valori proposti possono essere stringhe o risultati di sotto esecuzioni di comandi. + +Collocata alla fine della struttura, la scelta `*` indica le azioni da eseguire per tutti i valori che non sono stati precedentemente testati. + +Sintassi dell'alternativo condizionale case: + +``` +case $variable in + value1) + commands if $variable = value1 + ;; + value2) + commands if $variable = value2 + ;; + [..] + *) + commands for all values of $variable != of value1 and value2 + ;; +esac +``` + +Quando il valore è soggetto a variazioni, è consigliabile utilizzare i caratteri jolly `[]` per specificare le possibilità: + +``` +[Yy][Ee][Ss]) + echo "yes" + ;; +``` + +Il carattere `|` consente anche di specificare un valore o un altro: + +``` +"yes" | "YES") + echo "yes" + ;; +``` From e7c026038944d4c2d8c42fb0f92d67483bb614d9 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Sat, 28 May 2022 06:12:42 -0400 Subject: [PATCH 24/51] New translations 07-loops.md (Italian) --- docs/books/learning_bash/07-loops.it.md | 273 ++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 docs/books/learning_bash/07-loops.it.md diff --git a/docs/books/learning_bash/07-loops.it.md b/docs/books/learning_bash/07-loops.it.md new file mode 100644 index 0000000000..7cb0681f54 --- /dev/null +++ b/docs/books/learning_bash/07-loops.it.md @@ -0,0 +1,273 @@ +--- +title: Bash - Loops +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Loops + +**** + +**Obiettivi**: In questo capitolo imparerete a: + +:heavy_check_mark: utilizzare i loop; + +:checkered_flag: **linux**, **script**, **bash**, **loops** + +**Conoscenza**: :star: :star: +**Complessità**: :star: + +**Tempo di lettura**: 20 minuti + +**** + +La shell bash consente l'uso di **loops**. Queste strutture consentono l'esecuzione di **un blocco di comandi più volte** (da 0 a infinito) in base a un valore definito staticamente, dinamicamente o a condizione: + +* `while` +* `until` +* `for` +* `select` + +Qualunque sia il ciclo utilizzato, i comandi da ripetere sono collocati **tra le parole** `do` e `done`. + +## La struttura del ciclo condizionale while + +La struttura `while` / `do` / `done` valuta il comando posto dopo il `while`. + +Se questo comando è vero (`$? = 0`), i comandi posti tra `do` e `done` vengono eseguiti. Lo script torna quindi all'inizio per valutare nuovamente il comando. + +Quando il comando valutato è falso (`$? != 0`), la shell riprende l'esecuzione dello script al primo comando dopo done. + +Sintassi della struttura del ciclo condizionale `while`: + +``` +while command +do + command if $? = 0 +done +``` + +Esempio di utilizzo della struttura condizionale `while`: + +``` +while [[ -e /etc/passwd ]] +do + echo "The file exists" +done +``` + +Se il comando valutato non varia, il ciclo sarà infinito e la shell non eseguirà mai i comandi posti dopo lo script. Questo può essere intenzionale, ma anche un errore. Quindi bisogna fare **molta attenzione ai comandi che gestiscono il loop e trovare un modo per uscirne**. + +Per uscire da un ciclo `while`, bisogna assicurarsi che il comando valutato non sia più vero, il che non è sempre possibile. + +Esistono comandi che consentono di modificare il comportamento di un ciclo: + +* `exit` +* `break` +* `continue` + +## Il comando di uscita + +Il comando `exit` termina l'esecuzione dello script. + +Sintassi del comando `exit`: + +``` +exit [n] +``` + +Esempio di utilizzo del comando `exit`: + +``` +bash # to avoid being disconnected after the "exit 1 +exit 1 +echo $? +1 +``` + +Il comando `exit` termina immediatamente lo script. È possibile specificare il codice di ritorno dello script fornendolo come argomento (da `0` a `255`). Se non viene fornito alcun argomento, il codice di ritorno dell'ultimo comando dello script verrà passato alla variabile `$?` + +## I comandi `break` e `continue` + +Il comando `break` consente di interrompere il ciclo passando al primo comando dopo `done`. + +Il comando `continue` consente di riavviare il ciclo tornando al primo comando dopo `done`. + +``` +while [[ -d / ]]  INT ✘  17s  +do + echo "Do you want to continue? (yes/no)" + read ans + [[ $ans = "yes" ]] && continue + [[ $ans = "no" ]] && break +done +``` + +## I comandi `true` / `false` + +Il comando `true` restituisce sempre `vero`, mentre il comando `false` restituisce sempre `falso`. + +``` +true +echo $? +0 +false +echo $? +1 +``` + +Utilizzati come condizione di un ciclo, consentono l'esecuzione di un ciclo infinito o la sua disattivazione. + +Esempio: + +``` +while true +do + echo "Do you want to continue? (yes/no)" + read ans + [[ $ans = "yes" ]] && continue + [[ $ans = "no" ]] && break +done +``` + +## La struttura del ciclo condizionale `until` + +La struttura `until` / `do` / `done` valuta il comando posto dopo `until`. + +Se questo comando è falso (`$? != 0`), i comandi posti tra `do` e `done` vengono eseguiti. Lo script torna quindi all'inizio per valutare nuovamente il comando. + +Quando il comando valutato è vero (`$? = 0`), la shell riprende l'esecuzione dello script al primo comando dopo `done`. + +Sintassi della struttura del ciclo condizionale `until`: + +``` +until command +do + command if $? != 0 +done +``` + +Esempio di utilizzo della struttura condizionale `until`: + +``` +until [[ -e test_until ]] +do + echo "The file does not exist" + touch test_until +done +``` + +## La struttura di scelta alternativa `select` + +La struttura `select` / `do` / `done` consente di visualizzare un menu con diverse scelte e una richiesta di input. + +Ogni voce dell'elenco ha una scelta numerata. Quando si inserisce una scelta, il valore scelto viene assegnato alla variabile posta dopo `select` (creata a questo scopo). + +Esegue quindi i comandi posti tra `do` e `done` con questo valore. + +* La variabile `PS3` contiene l'invito a inserire la scelta; +* La variabile `REPLY` restituirà il numero della scelta. + +Per uscire dal ciclo è necessario un comando di `break`. + +!!! Note "Nota" + + La struttura `select` è molto utile per menu piccoli e semplici. Per personalizzare una visualizzazione più completa, i comandi `echo` e `read` devono essere utilizzati in un ciclo `while`. + +Sintassi della struttura del ciclo condizionale `select`: + +``` +PS3="Your choice:" +select variable in var1 var2 var3 +do + commands +done +``` + +Esempio di utilizzo della struttura condizionale `select`: + +``` +PS3="Your choice: " +select choice in coffee tea chocolate +do + echo "You have chosen the $REPLY: $choice" +done +``` + +Se questo script viene eseguito, viene visualizzato qualcosa di simile a questo: + +``` +1) Coffee +2) Tea +3) Chocolate +Your choice : 2 +You have chosen choice 2: Tea +Your choice: +``` + +## La struttura del ciclo `for` su un elenco di valori + +La struttura `for` / `do` / `done` assegna il primo elemento dell'elenco alla variabile posta dopo `for` (creata in questa occasione). Esegue quindi i comandi posti tra `do` e `done` con questo valore. Lo script torna quindi all'inizio per assegnare l'elemento successivo dell'elenco alla variabile di lavoro. Quando l'ultimo elemento è stato utilizzato, la shell riprende l'esecuzione dal primo comando dopo `done`. + +Sintassi della struttura del ciclo `for` su un elenco di valori: + +``` +for variable in list +do + commands +done +``` + +Esempio di utilizzo della struttura condizionale `for`: + +``` +for file in /home /etc/passwd /root/fic.txt +do + file $file +done +``` + +Qualsiasi comando che produca un elenco di valori può essere collocato dopo il comando `in` utilizzando una sotto esecuzione. + +* Con la variabile `IFS` contenente `$' \t\n'`, il ciclo `for` prenderà **ogni parola** del risultato di questo comando come un elenco di elementi su cui eseguire il ciclo. +* Con la variabile `IFS` contenente `$'\t\n'` (cioè senza spazi), il ciclo `for` prenderà ogni riga del risultato di questo comando. + +Questi possono essere i file di una directory. In questo caso, la variabile assumerà come valore ciascuna delle parole dei nomi dei file presenti: + +``` +for file in $(ls -d /tmp/*) +do + echo $file +done +``` + +Può essere un file. In questo caso, la variabile assumerà come valore ogni parola contenuta nel file sfogliato, dall'inizio alla fine: + +``` +cat my_file.txt +first line +second line +third line +for LINE in $(cat my_file.txt); do echo $LINE; done +first +line +second +line +third line +line +``` + +Per leggere un file riga per riga, è necessario modificare il valore della variabile d'ambiente `IFS`. + +``` +IFS=$'\t\n' +for LINE in $(cat my_file.txt); do echo $LINE; done +first line +second line +third line +``` From ee79777da13ca98851a8a138ff7d8c0a700017fb Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Sat, 28 May 2022 07:08:18 -0400 Subject: [PATCH 25/51] New translations 08-check-your-knowledge.md (Italian) --- .../08-check-your-knowledge.it.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 docs/books/learning_bash/08-check-your-knowledge.it.md diff --git a/docs/books/learning_bash/08-check-your-knowledge.it.md b/docs/books/learning_bash/08-check-your-knowledge.it.md new file mode 100644 index 0000000000..9218a9b9f2 --- /dev/null +++ b/docs/books/learning_bash/08-check-your-knowledge.it.md @@ -0,0 +1,83 @@ +--- +title: Bash - Verificare le proprie conoscenze +author: Antoine Le Morvan +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - education + - bash scripting + - bash +--- + +# Bash - Verificare le proprie conoscenze + +:heavy_check_mark: Ogni ordine deve restituire un codice di ritorno al termine della sua esecuzione: + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Un codice di ritorno pari a 0 indica un errore di esecuzione: + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Il codice di ritorno è memorizzato nella variabile `$@`: + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Il comando test consente di: + +- [ ] Verificare il tipo di file +- [ ] Testare una variabile +- [ ] Confrontare i numeri +- [ ] Confrontare il contenuto di 2 file + +:heavy_check_mark: Il comando `expr`: + +- [ ] Concatena 2 stringhe di caratteri +- [ ] Esegue operazioni matematiche +- [ ] Visualizza il testo sullo schermo + +:heavy_check_mark: La sintassi della struttura condizionale sottostante vi sembra corretta? Spiegare perché. + +``` +if command + command if $?=0 +else + command if $?!=0 +fi +``` + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Cosa significa la seguente sintassi: `${variable:=value}` + +- [ ] Visualizza un valore sostitutivo se la variabile è vuota +- [ ] Visualizza un valore sostitutivo se la variabile non è vuota +- [ ] Assegna un nuovo valore alla variabile se è vuota + +:heavy_check_mark: La sintassi della struttura alternativa condizionale qui sotto vi sembra corretta? Spiegare perché. + +``` +case $variable in + value1) + commands if $variable = value1 + value2) + commands if $variable = value2 + *) + commands for all values of $variable != of value1 and value2 + ;; +esac +``` + +- [ ] Vero +- [ ] Falso + +:heavy_check_mark: Quale delle seguenti non è una struttura per il looping? + +- [ ] while +- [ ] until +- [ ] loop +- [ ] for From 1af47958ed146bd5dc9ac550d1187ac0ef749552 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Sat, 28 May 2022 13:14:36 -0400 Subject: [PATCH 26/51] New translations 8-changelog.md (Italian) --- docs/release_notes/8-changelog.it.md | 480 +++++++++++++-------------- 1 file changed, 240 insertions(+), 240 deletions(-) diff --git a/docs/release_notes/8-changelog.it.md b/docs/release_notes/8-changelog.it.md index 918e2182dc..852a8a92f1 100644 --- a/docs/release_notes/8-changelog.it.md +++ b/docs/release_notes/8-changelog.it.md @@ -1,38 +1,38 @@ --- title: Change Log author: Louis Abel -contributors: Steven Spencer, tianci li, Colussi Franco, GiorgioHerbie +contributors: Steven Spencer, tianci li, Franco Colussi tags: - - changelog roccioso + - rocky changelog - changelog --- # Rocky Linux 8 Change Log -Rocky Linux 8 riceverà aggiornamenti incrementali e aggiornamenti di versione minori, nel tempo come la build upstream e ne caricherà di propri. Questa pagina fornirà dettagli e informazioni sui cambiamenti che si verificano. Un sistema con in esecuzione Rocky Linux può aggiornare il proprio sistema in qualsiasi momento eseguendo `dnf update`. L'aggiornamento di questo documento può a volte essere ritardato. Per controllare nuovi aggiornamenti, puoi andare all'archivio [Rocky Announce](https://lists.resf.org/archives/list/rocky-announce@lists.resf.org/) della mailing list. +Rocky Linux 8 riceverà aggiornamenti incrementali e aggiornamenti di versione minori nel corso del tempo, man mano che l'upstream svilupperà le proprie versioni. Questa pagina fornirà dettagli e informazioni sui cambiamenti che si verificheranno. Un sistema che esegue Rocky Linux può aggiornare il proprio sistema alla versione completa in qualsiasi momento eseguendo `dnf update`. L'aggiornamento di questo documento può talvolta subire ritardi. Per verificare la presenza di nuovi aggiornamenti, è possibile consultare l'archivio della mailing list [Rocky Announce](https://lists.resf.org/archives/list/rocky-announce@lists.resf.org/). ### Aggiornamenti -Gli aggiornamenti rilasciati dall'upstream sono pubblicati attraverso le nostre architetture attuali. Raccomandiamo vivamente che tutti gli utenti applichino *tutti* gli aggiornamenti, compreso il contenuto rilasciato oggi, sulle macchine Rocky Linux esistenti. Questo può essere fatto eseguendo `dnf update`. +Gli aggiornamenti rilasciati dall'upstream sono pubblicati su tutte le nostre architetture attuali. Raccomandiamo vivamente a tutti gli utenti di applicare *tutti gli* aggiornamenti, compresi i contenuti rilasciati oggi, sulle macchine Rocky Linux esistenti. Questo può essere fatto eseguendo `dnf update`. -Tutti i componenti di Rocky Linux sono costruiti dalle fonti ospitate su [git.rockylinux.org](https://git.rockylinux.org). Inoltre, gli SRPM sono in corso di pubblicazione accanto ai repository in una corrispondente directory "source". Puoi trovarli su uno qualsiasi dei nostri mirrors. Questi pacchetti sorgente corrispondono ad ogni RPM binario che rilasciamo. +Tutti i componenti di Rocky Linux sono costruiti a partire dai sorgenti ospitati su [git.rockylinux.org](https://git.rockylinux.org). Inoltre, gli SRPM vengono pubblicati insieme ai repository in una corrispondente directory "source". È possibile trovarli su uno qualsiasi dei nostri mirrors. Questi pacchetti sorgente corrispondono a tutti gli RPM binari che rilasciamo. -## 8.5 - 2022-01-11 +## 8.5 - 2022-03-15 -I seguenti pacchetti sono stati aggiornati dal 11 gennaio 2022: +I seguenti pacchetti sono stati aggiornati dal 15 marzo 2022: -* httpd: httpd-2.4.37-41.module+el8.5.0+695+1fa8055e -> httpd-2.4.37-43.module+el8.5.0+714+5ec56e8 +* expat-2.2.5-4.el8_5.3 * tzdata-2022a-1.el8 -* resource-agent -> resource-agents-4.1.1-90.el8_4.5 +* httpd-2.4.37-43.module+el8.5.0+747+83fae388.3 * openssl-1.1.1k-6.el8_5 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +Sono stati aggiornati i seguenti moduli: -* 389-ds-1,4-8050020211221162652,1a75f91c +* httpd -I seguenti pacchetti sono stati aggiornati dal 22 dicembre 2021: +CVE associati: -* thunderbird: aggiornato a 78.14.0 +* CVE-2022-25236 * CVE-2022-25235 * CVE-2022-25315 * CVE-2022-23852 @@ -47,19 +47,19 @@ I seguenti pacchetti sono stati aggiornati dal 22 dicembre 2021: * CVE-2022-0778 * CVE-2022-22720 -### Note Tecniche di Rilascio +### Informazioni aggiuntive -Ci scusiamo per la mancanza di annunci nelle ultime due settimane. Attualmente questi annunci sono manuali e ci sono piani in corso per rendere questi più automatizzati con meno interazione umana. +Ci scusiamo per la mancanza di annunci nelle ultime due settimane. Attualmente questi annunci sono manuali e sono in corso piani per renderli più automatizzati con una minore interazione umana. -Con il rilascio del RHEL 8. beta, esamineremo cosa sta cambiando e cosa e come dovremo fare le nostre costruzioni per le prossime settimane prima della sua potenziale GA a fine aprile o maggio. Durante questo processo, abbiamo anche lavorato sul bootstrapping dei pacchetti beta RHEL 9 per essere importati, ricostruito, e testato nel nostro nuovo sistema di costruzione. +Con il rilascio della beta di RHEL 8.6, analizzeremo cosa sta cambiando e cosa e come dovremo fare le nostre build nelle prossime settimane prima del suo potenziale GA a fine aprile o maggio. Durante questo periodo, abbiamo anche lavorato al bootstrapping dei pacchetti beta di RHEL 9, che saranno poi importati, ricostruiti e testati nel nostro nuovo sistema di compilazione. -## 8.5 - 2022-01-03 +## 8.5 - 2022-03-14 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti pacchetti sono stati aggiornati dal 14 marzo 2022: -* CVE-2021-44716 +* 389-ds-base: 389-ds-base-1.4.3.23-12.module+el8.5.0+722+e2a0b219 -> 389-ds-base-1.4.3.23-14.module+el8.5.0+745+c5be6847 * cloud-init: cloud-init-21.1-7.el8_5.3 -> cloud-init-21.1-7.el8_5.4 -* resource-agent -> resource-agents-4.1.1-90.el8_4.5 +* fence-agents: fence-agents-4.2.1-75.el8 -> fence-agents-4.2.1-75.el8_5.2 * firewalld: firewalld-0.9.3-7.el8 -> firewalld-0.9.3-7.el8_5.1 * gdm: gdm-1:40.0-15.el8 -> gdm-1:40.0-15.el8_5.1 * glibc: glibc-2.28-164.el8 -> glibc-2.28-164.el8_5.3 @@ -69,7 +69,7 @@ I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: * libxml2: libxml2-2.9.7-11.el8 -> libxml2-2.9.7-12.el8_5 * linux-firmware: linux-firmware-20210702-103.gitd79c2677.el8 -> linux-firmware-20210702-104.gitd79c2677.el8_5 * lvm2: lvm2-8:2.03.12-10.el8 -> lvm2-8:2.03.12-11.el8_5 -* nmstate -> nmstate-1,0,2-11,el8_4 +* nmstate: nmstate-1.1.0-5.el8_5 -> nmstate-1.1.0-6.el8_5 * pcs: pcs-0.10.10-4.el8.rocky.0 -> pcs-0.10.10-4.el8_5.1.rocky.0 * plymouth: plymouth-0.9.4-10.20200615git1e36e30.el8 -> plymouth-0.9.4-10.20200615git1e36e30.el8_5.1 * qemu-kvm: qemu-kvm-15:4.2.0-59.module+el8.5.0+726+ce09ee88.1 -> qemu-kvm-15:4.2.0-59.module+el8.5.0+744+67293bef.2 @@ -80,112 +80,112 @@ I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: * systemd: systemd-239-51.el8_5.3 -> systemd-239-51.el8_5.5 * vim: vim-2:8.0.1763-16.el8_5.4 -> vim-2:8.0.1763-16.el8_5.12 -I seguenti moduli sono stati aggiornati: +Sono stati aggiornati i seguenti moduli: -* 389-ds-base: 389-ds-base-1.4.3.23-10.module+el8.5.0+700+370e33d5 -> 389-ds-base-1.4.3.23-12.module+el8.5.0+722+e2a0b219 -* 389-ds-1,4-8050020211221162652,1a75f91c +* 389-ds +* httpd * virt -* virt-who: virt-who-1,30,5-1,el8 -> virt-who-1,30,5-2,el8_4 +* virt-devel -## 8.5 - 2021-12-22 +## 8.5 - 2022-03-10 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti pacchetti sono stati aggiornati dal 10 marzo 2022: -* CVE-2021-20321 +* thunderbird: thunderbird-91.6.0-1.el8_5 -> thunderbird-91.7.0-2.el8_5 * thunderbird: thunderbird-91.6.0-1.el8_5.plus -> thunderbird-91.7.0-2.el8_5.plus -I seguenti pacchetti sono stati aggiornati dal 16 Dicembre, 2021: +CVE associati: -* cyrus-imapd: aggiornato a 3.0.7-20.el8_4.1 (indirizzi CVE-2021-33582) +* CVE-2022-25315 * CVE-2022-25235 -* thunderbird: aggiornato a 78.14.0 +* CVE-2022-25236 -## 8.5 - 2021-12-17 +## 8.5 - 2022-02-24 -I seguenti moduli sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 24 febbraio 2022: -* selinux-policy: selinux-policy-3.14.3-80.el8 -> selinux-policy-3.14.3-80.el8_5.2 +* dotnet3.1: dotnet3.1-3.1.416-3.el8_5 -> dotnet3.1-3.1.417-1.el8_5 * dotnet5.0: dotnet5.0-5.0.211-1.el8_5 -> dotnet5.0-5.0.212-1.el8_5 * dotnet6.0: dotnet6.0-6.0.102-1.el8_5 -> dotnet6.0-6.0.103-4.el8_5 * firefox: firefox-91.6.0-1.el8_5 -> firefox-91.7.0-3.el8_5 * kernel: kernel-4.18.0-348.12.2.el8_5 -> kernel-4.18.0-348.20.1.el8_5 -* kernel-rt: kernel-rt-kvm aggiunto a RT +* kernel-rt: kernel-rt-4.18.0-348.12.2.rt7.143.el8_5 -> kernel-rt-4.18.0-348.20.1.rt7.150.el8_5 -CVE Associati: +CVE associati: -* python2 -> aggiunge rocky alle dists supportate +* CVE-2022-0435 * CVE-2022-0847 -## 8.5 - 2021-12-16 +## 8.5 - 2022-02-22 -I seguenti moduli sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 22 febbraio 2022: -* CVE-2020-25717 +* cyrus-sasl: cyrus-sasl-2.1.27-5.el8 -> cyrus-sasl-2.1.27-6.el8_5 -Sulla base di una richiesta, il pacchetto kernel-rt-kvm è stato aggiunto al repository RT. +CVE associati: -* ruby:2,5 -> 2.5.9-107 +* CVE-2022-24407 -## 8.5 - 2021-12-13 +## 8.5 - 2022-02-16 -I seguenti pacchetti sono stati aggiornati dal 12 Dicembre, 2021: +I seguenti pacchetti sono stati aggiornati dal 16 febbraio 2022: -* thunderbird con supporto PGP (tutte le architetture) +* python-pillow: python-pillow-5.1.1-16.el8 -> python-pillow-5.1.1-18.el8_5 -CVE Associati: +CVE associati: -* CVE-2016-2124 +* CVE-2022-22815 * CVE-2022-22816 * CVE-2022-22817 -## 8.5 - 2021-12-12 +## 8.5 - 2022-02-15 -I seguenti pacchetti sono stati aggiornati dal 10 Dicembre, 2021: +I seguenti moduli sono stati aggiornati dal 15 febbraio 2022: -* WALinuxAgent: WALinuxAgent-2.3.0.2-2.el8 -> WALinuxAgent-2.3.0.2-2.el8.rocky.0 -* ruby:2,6 -> 2,6,7-107 +* ruby-2.5-8050020220216182135.b4937e53 +* ruby-2.6-8050020220216165459.b4937e53 -## 8.5 - 2021-12-10 +## 8.5 - 2022-02-14 -The follow modules have been updated: +I seguenti pacchetti sono stati aggiornati dal 14 febbraio 2022: -* python27 +* thunderbird: thunderbird-91.5.0-1.el8_5 -> thunderbird-91.6.0-1.el8_5 * thunderbird: thunderbird-91.5.0-1.el8.plus -> thunderbird-91.6.0-1.el8_5.plus -## 8.5 - 2021-12-09 +## 8.5 - 2022-02-09 -Questi aggiornamenti sono per lo più di natura estetica e non influenzano le funzionalità. +I seguenti pacchetti sono stati aggiornati dal 09 febbraio 2022: -* WALinuxAgent -> Abbiamo aggiunto il supporto diretto a Rocky quì così come a monte in un PR a Microsoft +* dotnet3.1: dotnet3.1-3.1.120-2.el8_5 -> dotnet3.1-3.1.416-3.el8_5 * dotnet5.0: dotnet5.0-5.0.210-1.el8_5 -> dotnet5.0-5.0.211-1.el8_5 * dotnet6.0: dotnet6.0-6.0.101-2.el8_5 -> dotnet6.0-6.0.102-1.el8_5 * firefox: firefox-91.5.0-1.el8_5 -> firefox-91.6.0-1.el8_5 -## 8.5 - 2021-12-03 +## 8.5 - 2022-02-04 -I seguenti pacchetti sono stati aggiornati dal 09 dicembre 2021: +I seguenti pacchetti sono stati aggiornati dal 04 febbraio 2022: -* thunderbird: thunderbird-91.3.0-2.el8_4 -> +* aide: aide-0.16-14.el8 -> aide-0.16-14.el8_5.1 -Questi aggiornamenti sono per lo più di natura estetica e non influenzano le funzionalità. +CVE associati: -* abrt: abrt-2.10.9-21.el8 -> abrt-2.10.9-21.el8.rocky.0 +* CVE-2021-45417 -## 8.5 - 2021-12-02 +## 8.5 - 2022-02-02 -I seguenti pacchetti sono stati aggiornati dal 03 dicembre 2021: +I seguenti moduli/pacchetti sono stati aggiornati dal 02 febbraio 2022: -* mailman: mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 -> +* varnish: varnish-6.0.8-1.module+el8.5.0+677+2a78a869 -> varnish-6.0.8-1.module+el8.5.0+736+fec10e21.1 -The follow modules have been updated: +CVE associati: -* mailman: CVE-2021-44227 +* CVE-2022-23959 -## 8.5 - Supplemento - 2021-11-30 +## 8.5 - 2022-02-01 -I seguenti pacchetti sono stati aggiornati dal 03 dicembre 2021: +I seguenti pacchetti sono stati aggiornati dal 01 febbraio 2022: -* mailman-2.1-8050020211202160117.fd901a62 +* clevis: clevis-15-1.el8 -> clevis-15-1.el8_5.1 * cockpit: cockpit-251.1-1.el8 -> cockpit-251.3-1.el8_5 * cryptsetup: cryptsetup-2.3.3-4.el8 -> cryptsetup-2.3.3-4.el8_5.1 * dnf-plugins-core: dnf-plugins-core-4.0.21-3.el8 -> dnf-plugins-core-4.0.21-4.el8_5 @@ -208,121 +208,121 @@ I seguenti pacchetti sono stati aggiornati dal 03 dicembre 2021: * vulkan-tools: vulkan-tools-1.2.189.0-1.el8 ->vulkan-tools-1.2.198.0-1.el8_5 * vulkan-validation-layers: vulkan-validation-layers-1.2.189.0-2.el8 ->vulkan-validation-layers-1.2.198.0-4.el8_5 -Firefox: Questa è una versione aggiornata di ESR per Firefox. +Sono stati aggiornati i seguenti moduli: -* ncurses-static +* containertools * freeradius * nodejs * pki-core * virt -* virt-who: virt-who-1,30,5-1,el8 -> virt-who-1,30,5-2,el8_4 +* virt-devel -## 8.5 - 2021-11-29 +## 8.5 - 2022-01-27 -I seguenti pacchetti sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 27 gennaio 2022: -* open-vm-tools (aarch64 specific build only) +* dotnet-build-reference-packages: dotnet-build-reference-packages-0-10.20200608gitcd5a8c6.el8 ->dotnet-build-reference-packages-0-11.20211215git045b288.el8_5 * nginx: nginx-1:1.20.0-2.module+el8.5.0+669+b11495b0 -> nginx-1:1.20.1-1.module+el8.5.0+729+3f70613e * samba: samba-4.14.5-7.el8_5 -> samba-4.14.5-9.el8_5 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti moduli: -* openldap-servers (all architectures) +* nginx -I seguenti moduli sono stati aggiornati dal 2 dicembre 2021: +CVE associati: -* kronosnet: kronosnet-1.18-2.el8 -> kronosnet-1.18-4.el8_5 +* CVE-2021-44142 * CVE-2021-23017 -## 8.5 - 2021-11-24 +## 8.5 - 2022-01-26 -I seguenti pacchetti sono stati aggiunti al repository devel: +I seguenti pacchetti sono stati aggiornati dal 26 gennaio 2022: -* nss-3.67.0-7.el8_5: CVE-2021-43527 +* java-1.8.0-openjdk: java-1.8.0-openjdk-1:1.8.0.312.b07-2.el8_5 -> java-1.8.0-openjdk-1:1.8.0.322.b06-2.el8_5 -## 8.5 - 2021-11-22 +## 8.5 - 2022-01-25 -I seguenti pacchetti sono stati aggiunti al repository plus: +I seguenti pacchetti sono stati aggiornati dal 25 gennaio 2022: -* systemd -> systemd-239-45.el8_4.2 -> Indirizzi CVE-2021-33910 +* parfait: parfait-0.5.4-2.module+el8.3.0+214+edf13b3f -> parfait-0.5.4-4.module+el8.5.0+728+553fbdb8 -I seguenti pacchetti sono stati aggiunti al repository devel: +I seguenti pacchetti sono stati eliminati: -* mailman: mailman-3:2.1.29-12.module+el8.5.0+703+19300c10 -> mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 +* log4j12: log4j12-1.2.17-22.module+el8.3.0+214+edf13b3f -Gli attuali pacchetti in plus (a partire dal 2021-11-30) sono: +Sono stati aggiornati i seguenti moduli: -* mailman-2.1-8050020211123230959.fd901a62 +* parfait -## 8.5 - 2021-11-16 +## 8.5 - 2022-01-24 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti pacchetti sono stati aggiornati dal 24 gennaio 2022: -* CVE-2021-42096 +* httpd: httpd-2.4.37-43.module+el8.5.0+714+5ec56ee8 -> httpd-2.4.37-43.module+el8.5.0+727+743c5577.1 * polkit: polkit-0.115-12.el8 -> polkit-0.115-13.el8_5.1 -I seguenti pacchetti sono stati aggiornati dal 29 Nov, 2021: +Sono stati aggiornati i seguenti moduli: -* clang: clang-12.0.1-2.module+el8.5.0+692+8756646f -> clang-12.0.1-4.module+el8.5.0+715+58f51d49 +* httpd -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +CVE associati: -* llvm-toolset-rhel8-8050020211122023437.b4937e53 +* CVE-2021-44790 * CVE-2021-4034 -## 8.5 - 2021-11-14 +## 8.5 - 2022-01-19 -I seguenti pacchetti sono stati aggiornati dal 24 Nov, 2021: +I seguenti pacchetti sono stati aggiornati dal 19 gennaio 2022: -* annobin: annobin-9.65-1.el8 -> annobin-9.72-1.el8_5.2 +* java-11-openjdk: java-11-openjdk-1:11.0.13.0.8-4.el8_5 -> java-11-openjdk-1:11.0.14.0.9-2.el8_5 -## 8.4 - 2021-09-21 +## 8.5 - 2022-01-12 -I seguenti pacchetti sono stati aggiornati dal 22 Nov, 2021 (inclusi i pacchetti dei moduli aggiornati): +I seguenti pacchetti sono stati aggiornati dal 12 gennaio 2022: -* insights-client: insights-client-3.1.5-1.el8 (Standard Group) +* gegl04: gegl04-0.4.4-6.el8 -> gegl04-0.4.4-6.el8_5.2 * java-17-openjdk: java-17-openjdk-1:17.0.1.0.12-2.el8_5 -> java-17-openjdk-1:17.0.2.0.8-4.el8_5 * kernel: kernel-4.18.0-348.7.1.el8_5 -> kernel-4.18.0-348.12.2.el8_5 * kernel-rt: kernel-rt-4.18.0-348.7.1.rt7.137.el8_5 -> kernel-rt-4.18.0-348.12.2.rt7.143.el8_5 * libarchive: libarchive-3.3.3-1.el8 -> libarchive-3.3.3-1.el8_5 * libreswan: libreswan-4.4-1.el8 -> libreswan-4.4-4.el8_5 -I seguenti moduli sono stati aggiornati dal 23 Nov, 2021: +CVE associati: -* rust-toolset-rhel8-8050020211112021616.f73640c0 +* CVE-2022-0185 * CVE-2021-45463 * CVE-2021-4155 -## 8.4 - 2021-09-13 +## 8.5 - 2022-01-11 -CVE Associati: +I seguenti pacchetti sono stati aggiornati dal 11 gennaio 2022: -* kernel: kernel-4.18.0-305.19.1 (9-15) -* idm-DL1-8050020211215093947-3d2c466f +* firefox: firefox-91.4.0-1.el8_5 -> firefox-91.5.0-1.el8_5 +* thunderbird: thunderbird-91.4.0-2.el8_5 -> thunderbird-91.5.0-1.el8_5 * thunderbird: thunderbird-91.4.0-2.el8.plus -> thunderbird-91.5.0-1.el8.plus -## 8.4 - 2021-08-24 +## 8.5 - 2022-01-03 -I seguenti pacchetti sono stati aggiornati dal 16 Nov, 2021 (inclusi i pacchetti dei moduli aggiornati): +I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: -* thunderbird: aggiornato a 78.14.0 -* firefox: aggiornato a 78.14.0 +* dotnet6.0: dotnet6.0-6.0.100-0.10.el8_5 -> dotnet6.0-6.0.101-2.el8_5 +* rpaste: rpaste-0.1-3.el8.2 -> rpaste-0.2.0-1.el8 -## 8.4 - 2021-08-11 +## 8.5 - 2021-12-22 -Sulla base di una richiesta, il pacchetto kernel-rt-kvm è stato aggiunto al repository RT. +I seguenti pacchetti sono stati aggiornati dal 22 dicembre 2021: -* extra -> sono stati aggiunti i CentOS sig release packages +* grafana: grafana-7.5.9-4.el8 -> grafana-7.5.9-5.el8_5 -I seguenti pacchetti sono stati aggiornati dalla release 8.5 il 14 Nov, 2021 (inclusi i pacchetti dei moduli aggiornati): +CVE associati: -* dotnet: dotnet-2.1.525.el8_4 -> dotnet-2.1.526.el8_4 +* CVE-2021-44716 -## 8.4 - 2021-08-02 +## 8.5 - 2021-12-17 -I seguenti pacchetti sono stati eliminati e anche rimossi dai gruppi dnf: +I seguenti pacchetti sono stati aggiornati dal 17 dicembre 2021: -* extra -> CentOS sig release packages sono stati aggiunti +* 389-ds-base: 389-ds-base-1.4.3.23-10.module+el8.5.0+700+370e33d5 -> 389-ds-base-1.4.3.23-12.module+el8.5.0+722+e2a0b219 * accountsservice: accountsservice-0.6.55-2.el8 -> accountsservice-0.6.55-2.el8_5.2 * cloud-init: cloud-init-21.1-7.el8 -> cloud-init-21.1-7.el8_5.3 * freeradius: freeradius-3.0.20-9.module+el8.5.0+704+21fb769d -> freeradius-3.0.20-10.module+el8.5.0+723+cc9aee6c @@ -339,14 +339,14 @@ I seguenti pacchetti sono stati eliminati e anche rimossi dai gruppi dnf: * rocky-release: rocky-release-8.5-2.el8 -> rocky-release-8.5-3.el8 * sssd: sssd-2.5.2-2.el8_5.1 -> sssd-2.5.2-2.el8_5.3 -Per i pacchetti che sono stati eliminati, è sicuro rimuoverli usando `dnf remove` +CVE associati: -* 389-ds-base: 389-ds-base-1.4.3.16-16.module+el8.4.0+596+159889e5 -> 389-ds-base-1.4.3.16-19.module+el8.4.0+636+837ee950 -* extra -> sono stati aggiunti i CentOS sig release packages +* CVE-2021-20321 +* CVE-2021-3930 * CVE-2021-20257 * CVE-2021-3712 -I seguenti moduli sono stati aggiornati dalla versione 8.5 del 14 novembre 2021: +I seguenti moduli sono stati aggiornati: * virt-rhel-8050020211221163306.b4937e53 * virt-devel-rhel-8050020211221163306.b4937e53 @@ -355,111 +355,111 @@ I seguenti moduli sono stati aggiornati dalla versione 8.5 del 14 novembre 2021: * freeradius-3.0-8050020211221161359.ab0f257b * 389-ds-1.4-8050020211221162652.1a75f91c -### Note Tecniche di Rilascio +### Note tecniche di rilascio -il pacchetto rocky-release è stato aggiornato per aggiungere il countme=1 ai repository base di Rocky Linux, analogamente a come epel ha nei loro repos. Se hai modificato i file dei repository, avrete i file .rpmnew generati, per non sovrascrivere le vostre modifiche. +il pacchetto rocky-release è stato aggiornato per aggiungere countme=1 ai repository di base per Rocky Linux, in modo simile a come epel ha nei suoi repository. Se avete modificato i file del repo, verranno generati dei file .rpmnew, per non sovrascrivere le modifiche. -## 8.4 - 2021-07-27 +## 8.5 - 2021-12-16 -I seguenti moduli sono stati aggiornati dalla versione 8.5 del 14 novembre 2021: +I seguenti pacchetti sono stati aggiornati dal 16 dicembre 2021: * selinux-policy: selinux-policy-3.14.3-80.el8 -> selinux-policy-3.14.3-80.el8_5.2 -* extra -> CentOS sig release packages sono stati aggiunti +* systemd: systemd-239-51.el8 -> systemd-239-51.el8_5.3 -## 8.4 - 2021-07-21 +## 8.5 - 2021-12-13 -I seguenti pacchetti sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 13 dicembre 2021: -* thunderbird -> thunderbird-78.12.0-3.el8_4 +* dotnet5.0: dotnet5.0-5.0.209-1.el8_5 -> dotnet5.0-5.0.210-1.el8_5 * go-toolset: go-toolset-1.16.7-1.module+el8.5.0+694+f77f0bfd -> go-toolset-1.16.12-1.module+el8.5.0+720+c057d5cf * golang: golang-1.16.7-1.module+el8.5.0+694+f77f0bfd -> golang-1.16.12-1.module+el8.5.0+720+c057d5cf * ipa: ipa-4.9.6-6.module+el8.5.0+675+61f67439 -> ipa-4.9.6-10.module+el8.5.0+719+4f06efb6 * nodejs: nodejs-1:16.8.0-1.module+el8.5.0+702+221f14e6 -> nodejs-1:16.13.1-3.module+el8.5.0+721+4c107270 * nodejs-nodemon: nodejs-nodemon-2.0.7-1.module+el8.5.0+702+221f14e6 -> nodejs-nodemon-2.0.15-1.module+el8.5.0+721+4c107270 -* kernel-rt: kernel-rt-kvm added to RT +* kernel-rt: kernel-rt-kvm aggiunto a RT -I seguenti pacchetti sono stati aggiornati dal 22 dicembre 2021: +CVE associati: -* kernel -> kernel-4.18.0-305.10.2.el8_4 -> Addresses CVE-2021-33909 +* CVE-2020-25717 -Sono stati aggiornati i seguenti repos: +I seguenti moduli sono stati aggiornati: * go-toolset-rhel8-8050020211215173118-8aa62369 * idm-DL1-8050020211215093947-3d2c466f * nodejs-16-8050020211215195043-b4937e53 -### Note Tecniche di Rilascio +### Note tecniche di rilascio -I seguenti pacchetti sono stati aggiornati: +In base a una richiesta, il pacchetto kernel-rt-kvm è stato aggiunto al repo di RT. -## 8.4 - 2021-07-12 +## 8.5 - 2021-12-12 -Sono stati aggiunti i seguenti repos/pacchetti: +I seguenti pacchetti sono stati aggiornati dal 12 dicembre 2021: -* python36 +* samba: samba-4.14.5-2.el8 -> samba-4.14.5-7.el8_5 -I seguenti pacchetti sono stati aggiornati dal 22 dicembre 2021: +CVE associati: -* openscap -> Mancavano delle informazioni per Rocky Linux. -* kernel -> kernel-4.18.0-305.10.2.el8_4 -> Addresses CVE-2021-33909 +* CVE-2016-2124 +* CVE-2020-25717 * CVE-2021-23192 -## 8.4 - 2021-06-30 +## 8.5 - 2021-12-10 -I seguenti pacchetti sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 10 dicembre 2021: -* NetworkManager -> NetworkManager-11.30.0-9.el8_4 +* WALinuxAgent: WALinuxAgent-2.3.0.2-2.el8 -> WALinuxAgent-2.3.0.2-2.el8.rocky.0 * libreoffice: libreoffice-1:6.4.7.2-5.el8.1 -> libreoffice-1:6.4.7.2-5.el8.2.rocky * openscap: openscap-1.3.5-6.el8 -> openscap-1.3.5-6.el8.rocky.0.1 * pcs: pcs-0.10.10-4.el8 -> pcs-0.10.10-4.el8.rocky.0 * python2: python2-2.7.18-7.module+el8.5.0+706+735ec4b3.rocky.0.1 -> python2-2.7.18-7.module+el8.5.0+718+67e45b5f.rocky.0.2 * rocky-release: rocky-release-8.5-1.el8 -> rocky-release-8.5-2.el8 -Aggiunti kickstart repos per i seguenti repository: +I seguenti moduli sono stati aggiornati: * python27 -### Note Tecniche di Rilascio +### Note tecniche di rilascio -Questi aggiornamenti sono per lo più di natura estetica e non influenzano le funzionalità. +Questi aggiornamenti sono per lo più di natura estetica e non influiscono sulla funzionalità. -* WALinuxAgent -> Abbiamo aggiunto il supporto diretto a Rocky quì così come a monte in un PR a Microsoft -* libreoffice -> È stato trovato un marchio del cappello rosso. Questo aggiornamento riguarda il marchio. -* openscap -> Mancavano delle informazioni per Rocky Linux. +* WALinuxAgent -> Abbiamo aggiunto il supporto diretto a Rocky qui e in una PR upstream a Microsoft +* libreoffice -> È stato trovato il marchio Red Hat. Questo aggiornamento riguarda il branding. +* openscap -> Mancano informazioni per Rocky Linux. * pcs -> Il logo aveva un marchio che non è stato rimosso -* rocky-release -> semplifica CPE_NAME -* python2 -> aggiunge rocky alle dists supportate +* rocky-release -> semplificato CPE_NAME +* python2 -> aggiunge rocky alle dist supportate ## 8.5 - 2021-12-09 I seguenti pacchetti sono stati aggiornati dal 09 dicembre 2021: -* Un repository "devel" è ora fornito per scopi mock/buildroot +* thunderbird: thunderbird-91.3.0-2.el8_4 -> * thunderbird-91.4.0-2.el8_5 * thunderbird: thunderbird-91.3.0-2.el8.plus -> * thunderbird-91.4.0-2.el8.plus -### Note Tecniche di Rilascio +### Note tecniche di rilascio -Thunderbird: Questo è un normale aggiornamento di compilazione ESR per thunderbird. Questo aggiornamento è per entrambi i repository base e Plus. Il repository Plus contiene una versione di thunderbird con supporto PGP. +Thunderbird: Si tratta di un aggiornamento regolare della build ESR di thunderbird. Questo aggiornamento riguarda sia i repository di base che Plus. Il repository Plus contiene una versione di thunderbird con supporto PGP. ## 8.5 - 2021-12-03 -I seguenti moduli sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 03 dicembre 2021: * abrt: abrt-2.10.9-21.el8 -> abrt-2.10.9-21.el8.rocky.0 * firefox: firefox-91.3.0-1.el8_4 -> firefox-91.4.0-1.el8_5 * sos: sos-4.1-5.el8 -> sos-4.1-5.el8.rocky.2 -### Note su Plus +### Note tecniche di rilascio -I seguenti pacchetti sono stati aggiornati: +Firefox: Si tratta di una build ESR aggiornata per Firefox. -abrt: Questo è un cambiamento per lo più estetico. Rimuove le dipendenze dai plugin libreport-rhel* e rhtsupport. Questi pacchetti possono essere rimossi in modo sicuro dopo l'aggiornamento al nuovo pacchetto abrt. +abrt: Si tratta di una modifica per lo più estetica. Elimina la dipendenza dai plugin libreport-rhel* e rhtsupport. Questi pacchetti possono essere tranquillamente rimossi dopo l'aggiornamento al nuovo pacchetto abrt. -sos: Questo è un cambiamento per lo più estetico. Abbassa la politica di Rocky a monte. Vedi [questo PR per maggiori dettagli](https://github.com/sosreport/sos/pull/2784) +sos: Si tratta di una modifica per lo più estetica. Abbatte la politica Rocky a monte. Consultare [questo PR per maggiori dettagli](https://github.com/sosreport/sos/pull/2784) ## 8.5 - 2021-12-02 @@ -468,54 +468,54 @@ I seguenti pacchetti sono stati aggiornati dal 02 dicembre 2021: * mailman: mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 -> * mailman-3:2.1.29-12.module+el8.5.0+717+27fd1ba7.2 -I pacchetti regolari di Rocky sono stati aggiornati per affrontare i seguenti aspetti: +CVE associati: * mailman: CVE-2021-44227 -I seguenti moduli sono stati aggiornati dal 2 dicembre 2021: +I seguenti moduli sono stati aggiornati dal 02 dicembre 2021: * mailman-2.1-8050020211202160117.fd901a62 ## 8.5 - Supplemento - 2021-11-30 -I pacchetti regolari di Rocky sono stati aggiornati per affrontare i seguenti aspetti: +I seguenti pacchetti sono stati aggiunti al repository devel: * ncurses-static -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti pacchetti sono stati aggiunti al repository plus: -* open-vm-tools (aarch64 specific build only) +* open-vm-tools (solo build specifiche per aarch64) -### Note su Devel +### Note aggiuntive -Il repository plus contiene elementi che non sono forniti nei repository base, o perché non sono disponibili a causa della configurazione dei comps e dei pungi (basati sui repository RHEL) o perché sono richiesti come build alternative con patch/funzionalità aggiuntive non trovate nella base. Mantenere il repository plus abilitato dovrebbe essere sicuro. +Il repository plus contiene elementi che non sono presenti nei repository di base, o perché non sono disponibili a causa della configurazione di comps e pungi (basata sui repository RHEL) o perché sono richiesti come build alternative con patch/caratteristiche aggiuntive non presenti nella base. Il repository plus dovrebbe essere sicuro da tenerlo abilitato. -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I pacchetti attuali in più (al 2021-11-30) sono: -* openldap-servers (all architectures) -* thunderbird with PGP support (all architectures) -* ncurses-static (all architectures) -* open-vm-tools (aarch64 specific build only) +* openldap-server (tutte le architetture) +* thunderbird con supporto PGP (tutte le architetture) +* ncurses-static (tutte le architetture) +* open-vm-tools (solo build specifiche per aarch64) -### Problemi noti +### Note di sviluppo -Il repository devel dovrebbe essere usato con attenzione. È destinato per scopi koji o buildroot e non dovrebbe essere abilitato il 100% del tempo. Se trovate che c'è un pacchetto che si desidera vedere nel repo di devel, inviate una email a rocky-devel e/o aprite una segnalazione di bug su https://bugs.rockylinux.org +Il repository devel deve essere usato con attenzione. È pensato per scopi di koji o buildroot e non dovrebbe essere abilitato al 100% del tempo. Se trovate un pacchetto che desiderate vedere nel repo di sviluppo, inviate una mail su rocky-devel e/o aprite una segnalazione di bug su https://bugs.rockylinux.org ## 8.5 - 2021-11-29 -CVE Associati: +I seguenti pacchetti sono stati aggiornati dal 29 novembre 2021: * kronosnet: kronosnet-1.18-2.el8 -> kronosnet-1.18-4.el8_5 * nss: nss-3.67.0-6.el8_4 -> nss-3.67.0-7.el8_5 -I seguenti pacchetti sono stati aggiornati: +CVE associati: * nss-3.67.0-7.el8_5: CVE-2021-43527 ## 8.5 - 2021-11-24 -I seguenti pacchetti sono stati aggiornati dal 24 Nov, 2021: +I seguenti pacchetti sono stati aggiornati dal 24 novembre 2021: * dotnet5.0: dotnet5.0-5.0.208-2.el8_5 -> dotnet5.0-5.0.209-1.el8_5 * dotnet5.0-build-reference-packages: dotnet5.0-build-reference-packages-0-11.20210607git5f10a4b.el8 -> dotnet5.0-build-reference-packages-0-12.20211117git6ce5818.el8_5 @@ -523,33 +523,33 @@ I seguenti pacchetti sono stati aggiornati dal 24 Nov, 2021: ## 8.5 - 2021-11-22 -I seguenti pacchetti sono stati aggiornati: +I seguenti pacchetti sono stati aggiornati dal 22 novembre 2021 (compresi i pacchetti modulo aggiornati): * mailman: mailman-3:2.1.29-12.module+el8.5.0+703+19300c10 -> mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 -I seguenti moduli sono stati aggiornati dal 23 Nov, 2021: +I seguenti moduli sono stati aggiornati dal 23 novembre 2021: * mailman-2.1-8050020211123230959.fd901a62 -I seguenti pacchetti sono stati aggiornati: +CVE associati: * CVE-2021-42096 * CVE-2021-42097 ## 8.5 - 2021-11-16 -I seguenti pacchetti sono stati aggiornati dal 16 Nov, 2021 (inclusi i pacchetti dei moduli aggiornati): +I seguenti pacchetti sono stati aggiornati dal 16 novembre 2021 (compresi i pacchetti modulo aggiornati): * clang: clang-12.0.1-2.module+el8.5.0+692+8756646f -> clang-12.0.1-4.module+el8.5.0+715+58f51d49 * llvm-toolset: llvm-toolset-12.0.1-1.module+el8.5.0+692+8756646f -> llvm-toolset-12.0.1-1.module+el8.5.0+715+58f51d49 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti moduli sono stati aggiornati dal 16 novembre 2021: * llvm-toolset-rhel8-8050020211122023437.b4937e53 ## 8.5 - 2021-11-14 -I seguenti pacchetti sono stati aggiornati dalla release 8.5 il 14 Nov, 2021 (inclusi i pacchetti dei moduli aggiornati): +I seguenti pacchetti sono stati aggiornati dal rilascio 8.5 del 14 novembre 2021 (compresi i pacchetti modulo aggiornati): * annobin: annobin-9.65-1.el8 -> annobin-9.72-1.el8_5.2 * binutils: binutils-2.30-108.el8 -> binutils-2.30-108.el8_5.1 @@ -574,7 +574,7 @@ I seguenti pacchetti sono stati aggiornati dalla release 8.5 il 14 Nov, 2021 (in * gnome-shell-extensions: gnome-shell-extensions-3.32.1-20.el8 -> gnome-shell-extensions-3.32.1-20.el8_5.1 * httpd: httpd-2.4.37-41.module+el8.5.0+695+1fa8055e -> httpd-2.4.37-43.module+el8.5.0+714+5ec56ee8 * ibus: ibus-1.5.19-13.el8 -> ibus-1.5.19-14.el8_5 -* poppler: 20,11,0-2,el8_4,1 +* java-1.8.0-openjdk: java-1.8.0-openjdk-1:1.8.0.302.b08-3.el8 -> java-1.8.0-openjdk-1:1.8.0.312.b07-2.el8_5 * java-11-openjdk: java-11-openjdk-1:11.0.12.0.7-4.el8 -> java-11-openjdk-1:11.0.13.0.8-3.el8_5 * java-17-openjdk: java-17-openjdk-1:17.0.0.0.35-4.el8 -> java-17-openjdk-1:17.0.1.0.12-2.el8_5 * kernel: kernel-4.18.0-348.el8.0.2 -> kernel-4.18.0-348.2.1.el8_5 @@ -586,26 +586,26 @@ I seguenti pacchetti sono stati aggiornati dalla release 8.5 il 14 Nov, 2021 (in * thunderbird: thunderbird-78.13.0-1.el8 -> thunderbird-91.3.0-2.el8 * udftools: udftools-2.2-5.el8 -> udftools-2.3-2.el8 -Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. +I seguenti pacchetti sono stati eliminati e rimossi anche dai gruppi dnf: -* firefox: aggiornato a 78.14.0 +* insights-client: insights-client-3.1.5-1.el8 (Gruppo Standard) -Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. +Per i pacchetti che sono stati abbandonati, è sicuro rimuoverli usando `dnf remove` -I seguenti pacchetti sono stati aggiornati: +I seguenti moduli sono stati aggiornati dalla versione 8.5 del 14 novembre 2021: * rust-toolset-rhel8-8050020211112021616.f73640c0 * httpd-2.4-8050020211115030420.b4937e53 -### Modifiche Aggiuntive +### Problemi noti -Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. +[bug 174](https://bugs.rockylinux.org/show_bug.cgi?id=174) - Siamo a conoscenza di un problema per cui `kdump` non funziona su sistemi vmware come ESXi. -Siamo anche a conoscenza del nostro sistema mirror che riporta la directory sbagliata per fare gli aggiornamenti. Sarebbe stata `kickstart` piuttosto che `os`. Questo dovrebbe essere risolto e gli aggiornamenti dovrebbero funzionare normalmente. +Siamo anche consapevoli del fatto che il nostro sistema mirror riporta la directory sbagliata per effettuare gli aggiornamenti. Avrebbe preso il `kickstart` piuttosto che l'`os`. Il problema dovrebbe essere risolto e gli aggiornamenti dovrebbero funzionare normalmente. ## 8.4 - 2021-09-21 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * kernel: kernel-4.18.0-305.19.1 (9-15) * scap-security-guide: scap-security-guide-0.1.54-5.el8.rocky.2 @@ -635,32 +635,32 @@ I seguenti pacchetti sono stati aggiornati: ## 8.4 - 2021-09-13 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * thunderbird: aggiornato a 78.14.0 * firefox: aggiornato a 78.14.0 -* cyrus-imapd: aggiornato a 3.0.7-20.el8_4.1 (indirizzi CVE-2021-33582) -* systemtap ricostruito contro dininst 10.2 per affrontare una segnalazione di bug -* rocky-release -> Aggiornato per permettere "centos" come ID +* cyrus-imapd: aggiornato a 3.0.7-20.el8_4.1 (risolve CVE-2021-33582) +* systemtap ricostruito con dyninst 10.2 per risolvere una segnalazione di bug +* rocky-release -> Aggiornato per consentire "centos" come ID -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +I seguenti repo sono stati aggiornati: -* extra -> sono stati aggiunti i CentOS sig release packages +* extras -> Sono stati aggiunti i pacchetti della release CentOS sig ## 8.4 - 2021-08-24 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * dotnet: dotnet-2.1.525.el8_4 -> dotnet-2.1.526.el8_4 * libsndfile: libsndfile-1.0.28-10.el8_4 -> libsndfile-1.0.28-10.el8_4.1 -- Addresses - * Indirizza un overflow heap buffer che consente l'esecuzione arbitraria di codice da un file wav + * Risolve un overflow del buffer heap che consentiva l'esecuzione di codice arbitrario da un file wav * scap-security-guide: scap-security-guide-0.1.54-5.el8.rocky.1 * Addresses RLBZ#108 -Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. +Sono stati aggiunti i seguenti repository/pacchetti: * RT (realtime) - Abilitato eseguendo `dnf config-manager --set-enabled rt` @@ -668,7 +668,7 @@ Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. ## 8.4 - 2021-08-11 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * 389-ds-base: 389-ds-base-1.4.3.16-16.module+el8.4.0+596+159889e5 -> 389-ds-base-1.4.3.16-19.module+el8.4.0+636+837ee950 * NetworkManager: NetworkManager-1:1.30.0-9.el8_4 -> NetworkManager-1:1.30.0-10.el8_4 @@ -735,11 +735,11 @@ I seguenti pacchetti sono stati aggiornati: ## 8.4 - 2021-08-02 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * varnish -> varnish-0:6.0.6-2.module+el8.4.0+628+e1687553.1 -> Addresses CVE-2021-36740 -Aggiunti kickstart repos per i seguenti repository: +Aggiunti i repository kickstart per i seguenti repository: * BaseOS * AppStream @@ -749,13 +749,13 @@ Aggiunti kickstart repos per i seguenti repository: ## 8.4 - 2021-07-27 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * thunderbird -> thunderbird-78.12.0-3.el8_4 ## 8.4 - 2021-07-21 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * kernel -> kernel-4.18.0-305.10.2.el8_4 -> Addresses CVE-2021-33909 * systemd -> systemd-239-45.el8_4.2 -> Addresses CVE-2021-33910 @@ -765,40 +765,40 @@ I seguenti pacchetti sono stati aggiornati: ## 8.4 - 2021-07-12 -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: * rocky-release * linuxptp * rpaste * ovn2.13 (NFV) -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +Sono stati aggiornati i seguenti moduli: * python36 -### In Arrivo... +### Modifiche aggiuntive -L'archivio extra per aarch64 è stato aggiornato per includere vari pacchetti che non sono inclusi da upstream. Esempi di ciò sarebbero libreoffice e altre applicazioni gnome. +È stata implementata la firma sperimentale dei metadati del repository. Se si vuole provare, impostare la seguente opzione nei file Rocky-X.repo: ``` repo_gpgcheck=1 ``` -### Aggiornamenti Pacchetti +### Pagina Coming Soon -* Storage addon repositories: +* Archiviazione dei repository dei componenti aggiuntivi: - * Aggiunti i repository devel e debuginfo per lo stato futuro + * Supporto per Glusterfs 9 ## 8.4 - 2021-06-30 -### Contesto +### Aggiornamenti del pacchetto -I seguenti pacchetti sono stati aggiornati: +Sono stati aggiornati i seguenti pacchetti: -* Un repository "devel" è ora fornito per scopi mock/buildroot -* Il repository extra per aarch64 è stato aggiornato per includere i pacchetti mancanti non forniti da upstream per l'uso desktop -* rpaste è stato aggiornato per accettare l'input stdin +* NetworkManager -> NetworkManager-11.30.0-9.el8_4 +* cloud-init -> cloud-init-20.3-10.el8_4.3 +* cmake -> cmake-3.18.2-11.el8_4 * edk2 -> edk2-20200602gitca407c7246bf-4.el8_4.1 * exiv2 -> exiv2-0.27.3-2.el8 * firewalld -> firewalld-0.8.2-7.el8_4 @@ -826,22 +826,22 @@ I seguenti pacchetti sono stati aggiornati: * tuned -> tuned-2.15.0-2.el8_4.1 * unzip -> unzip-6.0-45.el8_4 -I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: +Sono stati aggiornati i seguenti moduli: * PyYAML -> PyYAML-5.4.1-1.module+el8.4.0+595+c96abaa2 * 389-ds -> 1.4.3.16-16 * go-toolset -> go-toolset-1.15.13-1.module+el8.4.0+591+0da41cc3 * golang -> golang-1.15.13-3.module+el8.4.0+591+0da41cc3 * idm:DL1 -> ipa-4.9.2-4 -* idm:client -> (ricostruito con ipaplatform=rhel per sincronizzare con il modulo DL1) +* idm:client -> (ricostruito con ipaplatform=rhel per sincronizzarsi con il modulo DL1) * pgaudit -> pgaudit-1.4.0-6.module+el8.4.0+587+d46efd10 * postgres-decoderbufs -> postgres-decoderbufs-0.10.0-2.module+el8.4.0+587+d46efd10 * postgresql -> postgresql-12.7-1.module+el8.4.0+587+d46efd10 * python38 -> python38-3.8.6-3.module+el8.4.0+595+c96abaa2 * ruby -> ruby-2.5.9-107.module+el8.4.0+592+03ff458a -* ruby:2,5 -> 2.5.9-107 -* ruby:2,6 -> 2,6,7-107 -* ruby:2,7 -> 2,7,3-136 +* ruby:2.5 -> 2.5.9-107 +* ruby:2.6 -> 2.6.7-107 +* ruby:2.7 -> 2.7.3-136 * rubygem-abrt -> rubygem-abrt-0.3.0-4 / rubygem-abrt-0.4.0-1 * rubygem-bson -> rubygem-bson-4.3.0-2 / rubygem-bson-4.5.0-1 / rubygem-bson-4.8.1-1 * rubygem-bundler -> rubygem-bundler-1.16.1-3.module+el8.4.0+592+03ff458a @@ -849,29 +849,29 @@ I seguenti pacchetti sono stati aggiornati dal 03 gennaio 2022: * rubygem-pg -> rubygem-pg-1.0.0-2 / rubygem-pg-1.1.4-1 / rubygem-pg-1.2.3-1 -### Modifiche Aggiuntive +### Contesto -Alcuni moduli e pacchetti sono stati aggiornati di routine da upstream. +Alcuni moduli e pacchetti sono stati aggiornati di routine dall'upstream. -I pacchetti regolari di Rocky sono stati aggiornati per affrontare i seguenti aspetti: +I pacchetti rocky regolari sono stati aggiornati per risolvere i seguenti problemi: * rocky-release - * Aggiunti i repository devel e debuginfo per lo stato futuro - * Questo è fornito per scopi mock/buildroot + * Aggiungere i repository devel e debuginfo per uno stato futuro + * Viene fornito per scopi di mock/buildroot * rocky-logos - * Migliora le icone per le future immagini live ufficiali + * Migliorate le icone per le future immagini live ufficiali -### In Arrivo... +### Modifiche aggiuntive -L'archivio extra per aarch64 è stato aggiornato per includere vari pacchetti che non sono inclusi da upstream. Esempi di ciò sarebbero libreoffice e altre applicazioni gnome. Poiché non sono in BaseOS o AppStream, il repository extra è il posto appropriato per questi pacchetti. +Il repository extras per aarch64 è stato aggiornato per includere vari pacchetti non inclusi da upstream. Esempi di questo tipo sono libreoffice e altre applicazioni di Gnome. Poiché non sono presenti in BaseOS o AppStream, il repository extras è il luogo appropriato per questi pacchetti. -* Un repository "devel" è ora fornito per scopi mock/buildroot -* Il repository extra per aarch64 è stato aggiornato per includere i pacchetti mancanti non forniti da upstream per l'uso desktop -* rpaste è stato aggiornato per accettare l'input stdin -* I pacchetti più vecchi saranno forniti nei repos durante la vita di un punto di rilascio. +* Viene ora fornito un repository "devel" a scopo di mock/buildroot +* Il repository Extras per aarch64 è stato aggiornato per includere i pacchetti mancanti non forniti da upstream per l'uso desktop +* rpaste è stato aggiornato per accettare input da stdin +* I pacchetti più vecchi saranno forniti nei repo durante la vita di un rilascio puntuale. - * Questo consente di declassare i pacchetti in caso di regressione da upstream o risoluzione dei problemi. + * Ciò consente di declassare i pacchetti in caso di regressioni a monte o di risoluzione dei problemi. From 088900986119ce465e577e94a574d9b5e8343000 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 02:54:09 -0400 Subject: [PATCH 27/51] New translations markdown-demo-v4.md (Italian) --- docs/gemstones/markdown-demo-v4.it.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/gemstones/markdown-demo-v4.it.md diff --git a/docs/gemstones/markdown-demo-v4.it.md b/docs/gemstones/markdown-demo-v4.it.md new file mode 100644 index 0000000000..de2ec2363a --- /dev/null +++ b/docs/gemstones/markdown-demo-v4.it.md @@ -0,0 +1,9 @@ +Una volta molto tempo fa, c'era un antico regno, il regno di Crowdin. Dove tutto funzionava senza problemi, tutte le lingue avevano i suoi marcatori unici, e tutte le traduzioni erano sempre corrette e indicizzate regolarmente. + +Ma un giorno un cavaliere sconosciuto di nome Rocky si è profilato all'orizzonte, portando scompiglio nel regno. Il nuovo cavaliere non aveva marcatori ben definiti ed era alimentato da autori malvagi che usavano un linguaggio indecifrabile chiamato markdown. + +Il scompiglio era tale che per mesi i governanti di Crowdin provarono senza successo a dare un ordine logico alla nuova lingua portata da Rocky, ma senza successo. + +Finché un giorno, grazie alla magia di un mago molto potente, fu svelato il significato arcano del linguaggio markdown. + +E il regno ritornò alla vita felice e tradotta. From c6075ba4aeda7e842a2164dc05467a279f609d09 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 12:37:54 -0400 Subject: [PATCH 28/51] New translations htop.md (Italian) --- docs/gemstones/htop.it.md | 97 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 docs/gemstones/htop.it.md diff --git a/docs/gemstones/htop.it.md b/docs/gemstones/htop.it.md new file mode 100644 index 0000000000..4c74f2ec14 --- /dev/null +++ b/docs/gemstones/htop.it.md @@ -0,0 +1,97 @@ +--- +title: htop-Gestione dei processi +author: tianci li +contributors: Steven Spencer, Franco Colussi +date: 2021-10-16 +--- + +# installare `htop` +Ogni amministratore di sistema ama utilizzare alcuni dei comandi più comuni. Oggi raccomando `htop` come alternativa al comando `top`. Per utilizzare normalmente il comando `htop`, è necessario prima installarlo. + +``` bash +# Installation epel source (also called repository) +dnf -y install epel-release +# Generate cache +dnf makecache +# Install htop +dnf -y install htop +``` + +# Utilizzare `htop` +È sufficiente digitare `htop` nel terminale e l'interfaccia interattiva è la seguente: + +``` +0[ ||| 3%] Tasks: 24, 14thr; 1 running +1[ | 1%] Load average: 0.00 0.00 0.05 +Mem[ ||||||| 197M/8G] Uptime: 00:31:39 +Swap[ 0K/500M] +PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Commad(merged) +... +``` + +F1Help F2Setup F3Search F4Filter F5Tree F6SortBy F7Nice F8Nice+ F9Kill F10Quit + +## Descrizione superiore + +* I numeri 0 e 1 in alto indicano il numero di core della CPU, mentre la percentuale indica il tasso di occupazione di un singolo core (naturalmente è possibile visualizzare anche il tasso di occupazione totale della CPU) + * I diversi colori della barra di avanzamento indicano la percentuale dei diversi tipi di processo: + + | Colore | Osservazioni | + | --------- | ------------------------------------------------------------------ | + | Blu | Percentuale di CPU utilizzata da processi a bassa priorità | + | Verde | Percentuale della CPU del processo posseduta dagli utenti ordinari | + | Rosso | Percentuale di CPU utilizzata dai processi di sistema | + | Arancione | Percentuale della CPU utilizzata dai IRQ time | + | Magenta | Percentuale della CPU utilizzata dal soft IRQ time | + | Grigio | Percentuale di CPU occupata dal tempo di attesa IO | + | Ciano | Percentuale di CPU consumata dallo Steal time | + +* Tasks: 24, 14thr; 1 running, process information. Nel mio esempio, significa che la mia macchina attuale ha 24 task, suddivisi in 14 thread, di cui solo 1 processo è in esecuzione. +* Informazioni sulla memoria e sullo swap. Allo stesso modo, utilizza colori diversi per distinguerli: + + | Colore | Osservazioni | + | --------- | ------------------------------------------------------ | + | Blu | Percentuale di memoria consumata dal buffer | + | Verde | Percentuale di memoria consumata dall'area di memoria | + | Arancione | Percentuale di memoria consumata dall'area della cache | + +* Carico medio, i tre valori rappresentano rispettivamente il carico medio del sistema negli ultimi 1 minuto, negli ultimi 5 minuti e negli ultimi 15 minuti +* Uptime, ossia il tempo di funzionamento dopo l'avvio + +## Descrizione delle informazioni sul processo + +* **PID-Numero ID del processo** + +* USER: il proprietario del processo +* PRI: visualizza la priorità del processo vista dal kernel Linux +* NI- mostra la priorità del processo di reset da parte dell'utente normale o del superutente root +* VIRI-memoria virtuale consumata da un processo + +* **RES-Memoria fisica consumata da un processo** + +* Memoria condivisa SHR consumata da un processo +* S - Lo stato attuale del processo, c'è uno stato speciale a cui prestare attenzione! Questo è Z (processo zombie). Se nella macchina è presente un numero elevato di processi zombie, le prestazioni della macchina ne risentono. + +* **CPU%-Percentuale di CPU consumata da ciascun processo** + +* MEM%-Percentuale di memoria consumata da ciascun processo +* TIME+-mostra il tempo di esecuzione dall'avvio del processo +* Command-il comando corrispondente al processo + +## Descrizione del tasto di scelta rapida +Nell'interfaccia interattiva, premere il tasto F1 per visualizzare la descrizione del tasto di scelta rapida corrispondente. + +* I tasti direzionali su, giù, sinistra e destra consentono di scorrere l'interfaccia interattiva e lo spazio può contrassegnare il processo corrispondente, contrassegnato in giallo. +* I pulsanti N, P, M e T indicano rispettivamente PID, CPU%, MEM%, TIME+ e sono usati per l'ordinamento. Naturalmente, è anche possibile fare clic con il mouse per ordinare in ordine crescente o decrescente un determinato campo. + +## Altri strumenti comunemente utilizzati +Per gestire il processo, utilizzare il tasto F9 per inviare diversi segnali al processo. L'elenco dei segnali si trova in `kill -l`. Quelli più comunemente utilizzati sono: + +| Segnale | Osservazioni | +| ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Lasciare che il processo si chiuda immediatamente e poi riavviarlo dopo aver riletto il file di configurazione | +| 9 | Usato per terminare immediatamente l'esecuzione del programma, usato per terminare forzatamente il processo, simile alla fine forzata nella barra delle applicazioni di Windows | +| 15 | Il segnale predefinito per il comando kill. A volte, se si è verificato un problema nel processo e il processo non può essere terminato normalmente con questo segnale, si proverà con il segnale 9 | + +## End +`htop` è molto più facile da usare rispetto al `top` fornito con il sistema, è più intuitivo e migliora notevolmente l'uso quotidiano. Per questo motivo, di solito l'autore lo installa per primo dopo aver installato il sistema operativo. From 13995bbc6d0ed4d2af92e3383d6da12256fcca07 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 13:33:33 -0400 Subject: [PATCH 29/51] New translations htop.md (Italian) --- docs/gemstones/htop.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/gemstones/htop.it.md b/docs/gemstones/htop.it.md index 4c74f2ec14..d609a6e9e6 100644 --- a/docs/gemstones/htop.it.md +++ b/docs/gemstones/htop.it.md @@ -93,5 +93,5 @@ Per gestire il processo, utilizzare il tasto F9 per inviare diversi s | 9 | Usato per terminare immediatamente l'esecuzione del programma, usato per terminare forzatamente il processo, simile alla fine forzata nella barra delle applicazioni di Windows | | 15 | Il segnale predefinito per il comando kill. A volte, se si è verificato un problema nel processo e il processo non può essere terminato normalmente con questo segnale, si proverà con il segnale 9 | -## End +## Fine `htop` è molto più facile da usare rispetto al `top` fornito con il sistema, è più intuitivo e migliora notevolmente l'uso quotidiano. Per questo motivo, di solito l'autore lo installa per primo dopo aver installato il sistema operativo. From 0288db43dc925f4235fc3f578c0c3eb81fe501bc Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 16:27:20 -0400 Subject: [PATCH 30/51] New translations mtr.md (Italian) --- docs/gemstones/mtr.it.md | 64 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/gemstones/mtr.it.md diff --git a/docs/gemstones/mtr.it.md b/docs/gemstones/mtr.it.md new file mode 100644 index 0000000000..37d4be7c73 --- /dev/null +++ b/docs/gemstones/mtr.it.md @@ -0,0 +1,64 @@ +--- +title: mtr - Diagnostica di rete +author: tianci li +contributors: Steven Spencer, Franco Colussi +date: 2022-02-13 +--- + +# `mtr` Introduzione + +`mtr` è uno strumento di diagnostica di rete in grado di diagnosticare i problemi della rete. Viene utilizzato per sostituire i comandi `ping` e `traceroute`. In termini di prestazioni, il comando `mtr` è più veloce. + +## Utilizzare `mtr` + +```bash +# Install mtr +shell > dnf -y install mtr +``` + +Le opzioni comuni del comando `mtr` sono le seguenti. In circostanze normali, non sono richieste opzioni aggiuntive, seguite direttamente dal nome host o dall'indirizzo IP: + +| Opzioni | Descrizione | +| -------- | ------------------------------------- | +| -4 | # Usa solo IPv4 | +| -6 | # Usa solo IPv6 | +| -c COUNT | # Numero di ping inviati | +| -n | # Non risolvere il nome dell'host | +| -z | # Visualizzazione del numero di AS | +| -b | # Visualizzare ip e hostname | +| -w | # Output di un'ampia gamma di report | + +Le informazioni scambiate dal terminale sono le seguenti: + +```bash +shell > mtr -c 10 bing.com + My traceroutr [v0.92] +li(192.168.100.4) 2021-10-20T08:02:05+0800 +Keys:Help Display mode Restart Statistics Order of fields quit +HOST: li Loss% Snt Last Avg Best Wrst StDev + 1. _gateway 0.0% 10 2.0 5.6 2.0 12.9 3.6 + 2. 10.9.128.1 0.0% 10 13.9 14.8 8.5 20.7 3.9 + 3. 120.80.175.109 0.0% 10 15.8 15.0 10.0 20.1 3.1 + 4. 112.89.0.57 20.0% 10 18.9 15.2 11.5 18.9 2.9 + 5.219.158.8.114 0.0% 10 10.8 14.4 10.6 20.5 3.5 + 6. 219.158.24.134 0.0% 10 13.1 14.5 11.9 18.9 2.2 + 7. 219.158.10.30 0.0% 10 14.9 21.2 12.0 29.8 6.9 + 8. 219.158.33.114 0.0% 10 17.7 17.1 13.0 20.0 2.0 + 9. ??? 100.0 10 0.0 0.0 0.0 0.0 0.0 +10. ??? 100.0 10 0.0 0.0 0.0 0.0 0.0 +11. ??? 100.0 10 0.0 0.0 0.0 0.0 0.0 +12. ??? 100.0 10 0.0 0.0 0.0 0.0 0.0 +13. a-0001.a-msedge.net 0.0% 10 18.4 15.7 9.5 19.3 3.1 +... +``` + +* Perdita% - tasso di perdita del pacchetto +* Snt - il numero di pacchetti inviati +* Last- il ritardo dell'ultimo pacchetto +* Avg - ritardo medio +* Best: la latenza più bassa +* Wrst - Ritardo peggiore +* StDev - varianza (stabilità) + +## Tasti di scelta rapida per l'interazione +p - pausa; d - cambia modalità di visualizzazione; n - attiva/disattiva il DNS; r - azzera tutti i contatori; j - alterna le informazioni di visualizzazione del ritardo; y - cambia le informazioni IP; q - Esce dall'interazione. From d688e0d0003da81cd4892995c4b941ee760f9aac Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 16:27:29 -0400 Subject: [PATCH 31/51] New translations view_kernel_conf.md (Italian) --- docs/gemstones/view_kernel_conf.it.md | 158 ++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 docs/gemstones/view_kernel_conf.it.md diff --git a/docs/gemstones/view_kernel_conf.it.md b/docs/gemstones/view_kernel_conf.it.md new file mode 100644 index 0000000000..316a10aa1c --- /dev/null +++ b/docs/gemstones/view_kernel_conf.it.md @@ -0,0 +1,158 @@ +--- +title: Visualizzare la Configurazione Attuale del Kernel +author: David Hensley +contributors: Steven Spencer, Franco Colussi +tested with: 8.5 +tags: + - kernel + - configurazione + - moduli + - kmod +--- + +# Visualizzare la configurazione attuale del kernel + +Il kernel Linux memorizza le informazioni sul kernel in esecuzione in due luoghi, tramite file system speciali:[(Una sintesi di questi](https://www.landoflinux.com/linux_procfs_sysfs.html)) + + - Il vecchio [procfs](https://man7.org/linux/man-pages/man5/procfs.5.html) che monta `/proc` (verificabile tramite `mount -l -t proc`) + - Il [sysfs](https://man7.org/linux/man-pages/man5/sysfs.5.html) più recente che monta `/sys` (verificare tramite `mount -l -t sysfs`) + +!!! caution "Attenzione" + + Siate cauti nell'esaminare i file qui menzionati, la loro modifica può cambiare il comportamento del kernel in esecuzione! + + +Queste due interfacce consentono di visualizzare e modificare i parametri del kernel in esecuzione. + +Si noti che se si esegue un [`ls -l`](https://man7.org/linux/man-pages/man1/ls.1.html) su alcuni di questi file, essi vengono visualizzati con una lunghezza pari a "0", ma se si usa [`cat`](https://man7.org/linux/man-pages/man1/cat.1.html) contengono effettivamente dei dati; la maggior parte di essi sono ASCII e modificabili, ma alcuni sono binari, e in entrambi i casi comandi come [`file`](https://man7.org/linux/man-pages/man1/file.1.html) o [`stat`](https://man7.org/linux/man-pages/man2/lstat.2.html) restituiranno in genere solo "file vuoto" o "0" per le lunghezze, anche se mostreranno altre informazioni. + +I programmi preferiti e standard per interagire con queste funzioni sono [`lsmod`](https://man7.org/linux/man-pages/man8/lsmod.8.html), [`modinfo`](https://man7.org/linux/man-pages/man8/modinfo.8.html), e [`sysctl`](https://man7.org/linux/man-pages/man8/sysctl.8.html), tra gli altri. + +```bash +sysctl -a | grep -i +``` + +```bash +lsmod | grep -i +``` + +```bash +modinfo +``` + +Vedere la versione della "release del kernel" attualmente in uso: + +`uname -r` e sostituire il suo valore di ritorno nei comandi usando `$(uname -r)` + +RHEL e distribuzioni derivate (Fedora, CentOS Stream, Scientific Linux, RockyLinux, Almalinux, ecc.) memorizza anche la configurazione usata per i kernel installati avviabili nella directory `/boot` usata da Grub2 come file ASCII: + +```bash +/boot/config- +``` + +Per controllare la configurazione del kernel attualmente in esecuzione per un particolare valore: + +```bash +cat /boot/config-$(uname -r) | grep -i +``` + +I risultati mostreranno: + + - "=m" se compilato come modulo del kernel + - "=y" se compilato staticamente nel kernel + - "is not set" se l'impostazione è stata commentata + - un valore numerico + - un valore stringa quotato + +Alcune distribuzioni, come Gentoo e Arch, utilizzano il modulo `configs` del kernel per fornire `/proc/config.gz` come impostazione predefinita: + +```bash +zcat /proc/config.gz | grep -i +zgrep /proc/config.gz +``` + +Per qualsiasi distribuzione, se il kernel in esecuzione ha impostato sia `CONFIG_IKCONFIG` che `CONFIG_IKCONFIG_PROC` e se + +```bash +ls -lh /sys/module/configs +``` + +esiste ed è eseguibile (ricercabile nel caso di una directory), allora si può creare `/proc/config.gz` con questo comando se non è presente: + +```bash +modprobe configs +``` + +!!! note "Repository abilitati" + + Questo documento non copre attualmente i pacchetti del kernel che potrebbero provenire da repository non predefiniti, come ad esempio: + + appstream-debug, appstream-source, baseos-debug, baseos-source, o devel + + +I pacchetti `kernel-devel` installano il file di configurazione utilizzato per compilare ogni pacchetto standard del kernel installato come file ASCII nel seguente percorso: + +```bash +/usr/src/kernels//.config +``` + +A questo file si accede più comunemente tramite un percorso collegato in symlink fornito dai pacchetti `kernel-core`: + +```bash +/lib/modules//build/ -> /usr/src/kernels// +``` + +Se avete installato il pacchetto `kernel-debug-devel`, avrete anche questa directory: + +```bash + /usr/src/kernels/+debug/ +``` + +Per i dettagli sui valori di configurazione usati per costruire un kernel installato, si può consultare uno dei seguenti documenti: + +```bash +/lib/modules//config +/lib/modules//build/.config +/usr/src/kernels//.config +/usr/src/kernels/+debug/.config +``` + +I moduli configurati per il kernel in esecuzione, compilati come builtin (cioè staticamente nel kernel stesso) o come moduli caricabili, sono elencati in sottodirectory denominate come il nome del modulo in: + +```bash +/sys/module/ +``` + +Per ogni release del kernel installata è possibile esaminare questi file per vedere quali valori sono stati compilati in quel kernel e quale versione di [GCC](https://man7.org/linux/man-pages/man1/gcc.1.html) è stata usata per compilarlo: + +```bash +cat /lib/modules/$(uname -r)/config | grep -i +``` + +```bash +cat /lib/modules/$(uname -r)/build/.config | grep -i +``` + +```bash +cat /usr/src/kernels/$(uname -r)/.config | grep -i +``` + +```bash +cat /usr/src/kernels/$(uname -r)+debug/.config | grep -i +``` + +```bash +ls -lh /sys/module/ | grep -i +``` + +È possibile verificare le dipendenze dei moduli del kernel nel file: + +```bash +/lib/modules//modules.dep +``` + +ma è più facile leggere o analizzare l'output del campo "Used-by" in [`lsmod`](https://man7.org/linux/man-pages/man8/lsmod.8.html). + +## Riferimento: + +[depmod](https://man7.org/linux/man-pages/man8/depmod.8.html), [ls](https://man7.org/linux/man-pages/man1/ls.1.html), [lsmod](https://man7.org/linux/man-pages/man8/lsmod.8.html), [modinfo](https://man7.org/linux/man-pages/man8/modinfo.8.html), [modprobe](https://man7.org/linux/man-pages/man8/modprobe.8.html), [modules.dep](https://man7.org/linux/man-pages/man5/modules.dep.5.html), [namespaces](https://man7.org/linux/man-pages/man7/namespaces.7.html), [procfs](https://man7.org/linux/man-pages/man5/procfs.5.html), [sysctl](https://man7.org/linux/man-pages/man8/sysctl.8.html), [sysfs](https://man7.org/linux/man-pages/man5/sysfs.5.html), [uname](https://man7.org/linux/man-pages/man8/uname26.8.html) From 2e0d16f49f0922fad388289139d6bcb15e0adcfb Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 17:24:53 -0400 Subject: [PATCH 32/51] New translations bash_stub.md (Italian) --- docs/gemstones/bash_stub.it.md | 105 +++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 docs/gemstones/bash_stub.it.md diff --git a/docs/gemstones/bash_stub.it.md b/docs/gemstones/bash_stub.it.md new file mode 100644 index 0000000000..0e34dda996 --- /dev/null +++ b/docs/gemstones/bash_stub.it.md @@ -0,0 +1,105 @@ +--- +title: bash - Script Stub +author: Steven Spencer +contributors: Ezequiel Bruni, Franco Colussi +--- + +# Bash - Script Stub + +Dove lavoravo prima, avevamo un programmatore eccezionale che conosceva un sacco di linguaggi. Era anche l'uomo di riferimento quando si avevano domande su come realizzare qualcosa con uno script. Alla fine ha creato un piccolo stub, un file pieno di esempi di scripting dal quale si può semplicemente togliere e modificare le parti a seconda delle necessità. Alla fine sono diventato abbastanza bravo in queste routine da non dover guardare lo stub, ma è stato un buon strumento di apprendimento e qualcosa che altri potrebbero trovare utile. + +## Lo Stub Effettivo + +Lo stub è ben documentato, ma si tenga presente che questo non è assolutamente uno script esaustivo! Si potrebbero aggiungere molte altre routine. Se **avete** esempi che si adattano bene a questo stub, sentitevi liberi di aggiungere qualche modifica: + +``` +#!/bin/sh + +# By exporting the path, this keeps you from having to enter full paths for commands that exist in those paths: + +export PATH="$PATH:/bin:/usr/bin:/usr/local/bin" + +# Determine and save absolute path to program directory. +# Attention! In bash, ' ' rappresenta la stringa stessa; ma " " è un po' diverso. $, ` ` e \ rappresentano rispettivamente i valori delle variabili di chiamata, i comandi di riferimento e i caratteri di escape +# When done will be in same directory as script + +PGM=`basename $0` # Name of the program +CDIR=`pwd` # Save directory program was run from + +PDIR=`dirname $0` +cd $PDIR +PDIR=`pwd` + +# If a program accepts filenames as arguments, this will put us back where we started. +# (Needed so references to files using relative paths work.): + +cd $CDIR + +# Use this if script must be run by certain user: + +runby="root" +iam=`/usr/bin/id -un` +if [ $iam != "$runby" ] +then + echo "$PGM : program must be run by user \"$runby\"" + exit +fi + +# Check for missing parameter. +# Display usage message and exit if it is missing: + +if [ "$1" = "" ] +then + echo "$PGM : parameter 1 is required" + echo "Usage: $PGM param-one" + exit +fi + +# Prompt for data (in this case a yes/no response that defaults to "N"): + +/bin/echo -n "Do you wish to continue? [y/N] " +read yn +if [ "$yn" != "y" ] && [ "$yn" != "Y" ] +then + echo "Cancelling..." + exit; +fi + +# If only one copy of your script can run at a time, use this block of code. +# Check for lock file. If it doesn't exist create it. +# If it does exist, display error message and exit: + +LOCKF="/tmp/${PGM}.lock" +if [ ! -e $LOCKF ] +then + touch $LOCKF +else + echo "$PGM: cannot continue -- lock file exists" + echo + echo "To continue make sure this program is not already running, then delete the" + echo "lock file:" + echo + echo " rm -f $LOCKF" + echo + echo "Aborting..." + exit 0 +fi + +script_list=`ls customer/*` + +for script in $script_list +do + if [ $script != $PGM ] + then + echo "./${script}" + fi +done + +# Remove the lock file + +rm -f $LOCKF +``` + +## Conclusione + +Lo scripting è un amico dell'amministratore di sistema. La possibilità di eseguire rapidamente determinate operazioni in uno script semplifica il completamento dei processi. Pur non essendo un insieme esaustivo di routine di script, questo stub offre alcuni esempi di utilizzo comune. From ed69e67084c729a4965572f230a8e357b568f761 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Mon, 30 May 2022 17:25:02 -0400 Subject: [PATCH 33/51] New translations https_rsa_keygen.md (Italian) --- docs/gemstones/https_rsa_keygen.it.md | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/gemstones/https_rsa_keygen.it.md diff --git a/docs/gemstones/https_rsa_keygen.it.md b/docs/gemstones/https_rsa_keygen.it.md new file mode 100644 index 0000000000..f06c4a711f --- /dev/null +++ b/docs/gemstones/https_rsa_keygen.it.md @@ -0,0 +1,45 @@ +--- +title: https - Generazione di chiavi RSA +author: Steven Spencer +update: 26-gen-2022 +--- + +# https - Generazione di chiavi RSA + +Questo script è stato usato da me molte volte. Indipendentemente dalla frequenza con cui si utilizza la struttura del comando openssl, a volte è necessario fare riferimento alla procedura. Questo script consente di automatizzare la generazione di chiavi per un sito web utilizzando RSA. Si noti che questo script è codificato con una chiave di lunghezza pari a 2048 bit. Per coloro che ritengono che la lunghezza minima della chiave debba essere di 4096 bit, è sufficiente modificare questa parte dello script. È sufficiente sapere che è necessario soppesare la memoria e la velocità di caricamento di un sito su un dispositivo, rispetto alla sicurezza di una lunghezza di chiave maggiore. + +## Script + +Date a questo script un nome a piacere, ad esempio: `keygen.sh`, rendetelo eseguibile`(chmod +x scriptname`) e posizionatelo in una directory presente nel vostro percorso, ad esempio: /usr/local/sbin + +``` +#!/bin/bash +if [ $1 ] +then + echo "generating 2048 bit key - you'll need to enter a pass phrase and verify it" + openssl genrsa -des3 -out $1.key.pass 2048 + echo "now we will create a pass-phrase less key for actual use, but you will need to enter your pass phrase a third time" + openssl rsa -in $1.key.pass -out $1.key + echo "next, we will generate the csr" + openssl req -new -key $1.key -out $1.csr + #cleanup + rm -f $1.key.pass +else + echo "requires keyname parameter" + exit +fi +``` + +!!! Note "Nota" + + La frase di accesso deve essere immessa tre volte di seguito. + +## Breve descrizione + +* Questo script bash richiede l'inserimento di un parametro ($1) che è il nome del sito senza www, ecc. Ad esempio, "mywidget". +* Lo script crea la chiave predefinita con una password e una lunghezza di 2048 bit (che può essere modificata, come indicato sopra, in una lunghezza maggiore di 4096 bit) +* La password viene immediatamente rimossa dalla chiave; il motivo è che il riavvio del server web richiederebbe ogni volta l'inserimento della password, il che può essere problematico nella pratica. +* Quindi lo script crea il CSR (Certificate Signing Request), che può essere utilizzato per acquistare un certificato SSL da un provider. +* Infine, la fase di pulizia rimuove la chiave creata in precedenza con la password allegata. +* L'inserimento del nome dello script senza il parametro genera l'errore: "requires keyname parameter". +* In questo caso si utilizza la variabile parametro posizionale, cioè $n. Dove $0 rappresenta il comando stesso e da $1 a $9 rappresentano i parametri dal primo al nono. Quando il numero è maggiore di 10, è necessario utilizzare le parentesi graffe, ad esempio ${10} \ No newline at end of file From 2a62b298c295174013b258bffab075bcb7c80627 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 03:46:50 -0400 Subject: [PATCH 34/51] New translations nmtui.md (Italian) --- docs/gemstones/nmtui.it.md | 117 +++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 docs/gemstones/nmtui.it.md diff --git a/docs/gemstones/nmtui.it.md b/docs/gemstones/nmtui.it.md new file mode 100644 index 0000000000..0a06de1d42 --- /dev/null +++ b/docs/gemstones/nmtui.it.md @@ -0,0 +1,117 @@ +--- +title: nmtui - Strumento di Gestione della Rete +author: tianci li +contributors: Steven Spencer, Neil Hanlon, Franco Colussi +update: 2021-10-23 +--- + +# Introduzione + +Per gli utenti inesperti che si avvicinano per la prima volta a GNU/Linux, la prima cosa da considerare è come collegare la macchina a Internet dopo aver installato il sistema operativo. Questo articolo spiega come configurare l'indirizzo IP, la maschera di sottorete, il gateway e il DNS. Ci sono diversi modi per avere riferimenti. Che siate principianti o esperti, credo che possiate iniziare rapidamente. + +## nmtui + +`NetworkManager` è una suite di strumenti standard per la configurazione della rete Linux, che supporta ambienti server e desktop. Oggi le distribuzioni più diffuse lo supportano. Questo set di strumenti di configurazione di rete è adatto a Rocky Linux 8 e versioni successive. Se si desidera configurare le informazioni di rete in modo grafico (cioè con la riga di comando `nmtui` ), è sufficiente eseguire questa operazione: + +```bash +shell > dnf -y install NetworkManager NetworkManager-tui +shell > nmtui +``` + +| NetworkManager TUI | | +| ----------------------------- | -------- | +| Modifica di una connessione | | +| Attiva una connessione | | +| Imposta nome host del sistema | | +| Esci | | +| | \ | + +È possibile utilizzare il tasto Tab o i tasti per selezionare la specifica Se si desidera modificare le informazioni di rete, selezionare **Modifica una connessione** e quindi Invio. Selezionare una scheda di rete diversa e scegliere **Modifica...** per modificarla. + +### DHCP IPv4 + +Per IPv4, se si tratta di ottenere le informazioni di rete utilizzando il metodo DHCP, è sufficiente selezionare *IPv4 CONFIGURATION* indietro **<Automatico>**, quindi eseguire nel terminale `systemctl restart NetworkManager.service`, grande Nella maggior parte dei casi, può avere effetto. In rari casi, è necessario cambiare la scheda di rete per ottenere l'effetto desiderato. Ad esempio, in questo modo: `nmcli connection down ens33`, `nmcli connection up ens33` + +### Correggere manualmente le informazioni di rete + +Se si desidera correggere manualmente tutte le informazioni di rete IPv4, è necessario selezionare **<Manuale>** dopo *CONFIGURAZIONE IPv4* e aggiungerle riga per riga. Ad esempio, mi piace questo: + +| Elemento | Valore | +| ---------- | ---------------- | +| Indirizzi | 192.168.100.4/24 | +| Gateway | 192.168.100.1 | +| Server DNS | 8.8.8.8 | + +Quindi fare clic su \< OK \>, tornare all'interfaccia del terminale passo dopo passo ed eseguire `systemctl restart NetworkManager.service`. Allo stesso modo, in rari casi, la scheda di rete deve essere accesa e spenta per avere effetto. + +## Modificare il modo in cui i file di configurazione vengono utilizzati + +Tutte le distribuzioni RHEL, sia upstream che downstream, sono configurate allo stesso modo. Il file di configurazione delle informazioni di rete è memorizzato nella directory **/etc/sysconfig/network-scripts/** e una scheda di rete corrisponde a un file di configurazione. Il file di configurazione ha molti parametri, come mostrato nella tabella seguente. Avviso! I parametri devono essere scritti in maiuscolo. + +```bash +shell > ls /etc/sysconfig/network-scripts/ +ifcfg-ens33 +``` + +| Nome del parametro | Significato | Esempio | +| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | +| DEVICE | Nome del dispositivo logico del sistema | DEVICE=ens33 | +| ONBOOT | È possibile scegliere se la scheda di rete si avvia automaticamente con il sistema | ONBOOT=yes | +| TYPE | Tipo di interfaccia della scheda di rete, solitamente Ethernet | TYPE=Ethernet | +| BOOTPROTO | La modalità di ottenimento dell'ip può essere l'acquisizione dinamica DHCP o la configurazione manuale statica, utilizzando un indirizzo statico | BOOTPROTO=static | +| IPADDR | L'indirizzo ip della scheda di rete, quando BOOTPROTO=static, questo parametro avrà effetto | IPADDR=192.168.100.4 | +| HWADDR | Indirizzo hardware, ovvero indirizzo MAC | HWADDR=00:0C:29:84:F6:9C | +| NETMASK | Maschera di sottorete decimale | NETMASK=255.255.255.0 | +| PREFIX=24 | Maschera di sottorete, rappresentata da numeri | PREFIX=24 | +| gateway: 192.168.20.254 | Gateway, se ci sono più schede di rete, questo parametro può comparire una sola volta | GATEWAY=192.168.100.1 | +| PEERDNS | Quando è sì, i parametri DNS definiti qui modificheranno /etc/resolv.conf; quando è no, /etc/resolv.conf non verrà modificato. Quando si utilizza DHCP, l'impostazione predefinita è sì | PEERDNS=yes | +| DNS1 | Il DNS primario è selezionato, ha effetto solo quando PEERDNS=no | DNS1=8.8.8.8 | +| DNS2 | DNS alternativo, efficace solo quando PEERDNS=no | DNS2=114.114.114.114 | +| BROWSER_ONLY | Se consentire solo i browser | BROWSER_ONLY=no | +| USERCTL | Se gli utenti ordinari sono autorizzati a controllare il dispositivo della scheda di rete, sì significa che è consentito, no significa che non è consentito | USERCTL=no | +| UUID | Codice di identificazione univoco universale, la funzione principale è quella di identificare l'hardware, in generale, non è necessario compilare | | +| PROXY_METHOD | Metodo proxy, generalmente nessuno, può essere lasciato vuoto | | +| IPV4_FAILURE_FATAL | Se è sì, significa che il dispositivo sarà disabilitato dopo che la configurazione ipv4 è fallita; se è no, significa che non sarà disabilitato. | IPV4_FAILURE_FATAL=no | +| IPV6INIT | Se abilitare IPV6, sì per abilitare, no per non abilitare. Quando IPV6INIT=yes, possono essere abilitati anche i due parametri IPV6ADDR e IPV6_DEFAULTGW. Il primo rappresenta l'indirizzo IPV6 e il secondo il gateway designato | IPV6INIT=yes | +| IPV6_AUTOCONF | Se utilizzare la configurazione automatica di IPV6, sì significa utilizzare; no significa non utilizzare | IPV6_AUTOCONF=yes | +| IPV6_DEFROUTE | Se dare a IPV6 il percorso predefinito | IPV6_DEFROUTE=yes | +| IPV6_FAILURE_FATAL | Dopo che la configurazione IPV6 è fallita, se disabilitare o meno il dispositivo | IPV6_FAILURE_FATAL=no | +| IPV6_ADDR_GEN_MODE | Genera il modello di indirizzo IPV6, i valori opzionali sono stable-privacy e eui64 | IPV6_ADDR_GEN_MODE=stable-privacy | + +Dopo che il file di configurazione è stato modificato con successo, ricordarsi di riavviare il servizio della scheda di rete `systemctl restart NetworkManager.service` + +### Configurazione consigliata per IPV4 + +```bash +TYPE=Ethernet +ONBOOT=yes +DEVICE=ens33 +USERCTL=no +IPV4_FAILURE_FATAL=no +BROWSER_ONLY=no +BOOTPROTO=static +PEERDNS=no +IPADDR=192.168.100.4 +PREFIX=24 +GATEWAY=192.168.100.1 +DNS1=8.8.8.8 +DNS2=114.114.114.114 +``` + +### Configurazione consigliata per IPV6 + +```bash +TYPE=Ethernet +ONBOOT=yes +DEVICE=ens33 +USERCTL=no +BROWSER_ONLY=no +IPV6INIT=yes +IPV6_AUTOCONF=yes +IPV6_DEFROUTE=yes +IPV6_FAILURE_FATAL=no +``` + +## Visualizzazione delle informazioni di rete + +`ip a` or `nmcli device show` From 83051ba13fab706e4b6b1c31ae22ce4063ee2b73 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 03:46:52 -0400 Subject: [PATCH 35/51] New translations perl_search_replace.md (Italian) --- docs/gemstones/perl_search_replace.it.md | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/gemstones/perl_search_replace.it.md diff --git a/docs/gemstones/perl_search_replace.it.md b/docs/gemstones/perl_search_replace.it.md new file mode 100644 index 0000000000..1169018f31 --- /dev/null +++ b/docs/gemstones/perl_search_replace.it.md @@ -0,0 +1,37 @@ +--- +title: Perl - Ricerca e sostituzione +author: Steven Spencer +--- + +# `perl` Cerca e sostituisci + +A volte è necessario cercare e sostituire rapidamente stringhe in un file o in un gruppo di file. Ci sono molti modi per farlo, ma questo metodo utilizza `perl` + +Per cercare e sostituire una particolare stringa in più file di una directory, il comando sarà: + +``` +perl -pi -w -e 's/search_for/replace_with/g;' ~/Dir_to_search/*.html +``` + +Per un singolo file che potrebbe avere più istanze della stringa, è possibile specificare il file: + +``` +perl -pi -w -e 's/search_for/replace_with/g;' /var/www/htdocs/bigfile.html +``` + +Questo comando utilizza la sintassi vi per la ricerca e la sostituzione per trovare qualsiasi occorrenza di una stringa e sostituirla con un'altra stringa in uno o più file di un determinato tipo. Utile per sostituire le modifiche ai collegamenti html/php incorporati in questi tipi di file e per molte altre cose. + +## Descrizione Opzioni + +| Opzione | Spiegazione | +| ------- | ------------------------------------------------------------------------ | +| -p | inserisce un ciclo intorno allo script | +| -i | modifica il file in posizione | +| -w | stampa messaggi di avvertimento nel caso in cui qualcosa vada storto | +| -e | consente di inserire una singola riga di codice alla riga di comando | +| -s | specifica la ricerca | +| -g | specifica di sostituire globalmente, in altre parole tutte le occorrenze | + +## Conclusione + +Un modo semplice per sostituire una stringa in uno o più file usando `il perl`. From b00790343d2b67e71387139a20032f9111f7a3d5 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 05:25:37 -0400 Subject: [PATCH 36/51] New translations setup_local_repo.md (Italian) --- docs/gemstones/setup_local_repo.it.md | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 docs/gemstones/setup_local_repo.it.md diff --git a/docs/gemstones/setup_local_repo.it.md b/docs/gemstones/setup_local_repo.it.md new file mode 100644 index 0000000000..c61c33d69d --- /dev/null +++ b/docs/gemstones/setup_local_repo.it.md @@ -0,0 +1,50 @@ +--- +title: Impostazione dei repository Rocky locali +author: codedude +contributors: Steven Spencer, Franco Colussi +update: 09-dic-2021 +--- + +# Introduzione + +A volte è necessario disporre di repository Rocky in locale per creare macchine virtuali, ambienti di laboratorio e così via. Può anche aiutare a risparmiare la larghezza di banda, se questo è un problema. Questo articolo spiega come usare `rsync` per copiare i repository Rocky su un server web locale. La costruzione di un server web non rientra nell'ambito di questo breve articolo. + +## Requisiti + +* Un server web + +## Codice + +``` +#!/bin/bash +repos_base_dir="/web/path" + +# Start sync if base repo directory exist +if [[ -d "$repos_base_dir" ]] ; then + # Start Sync + rsync -avSHP --progress --delete --exclude-from=/opt/scripts/excludes.txt rsync://ord.mirror.rackspace.com/rocky "$repos_base_dir" --delete-excluded + # Download Rocky 8 repository key + if [[ -e /web/path/RPM-GPG-KEY-rockyofficial ]]; then + exit + else + wget -P $repos_base_dir https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-rockyofficial + fi +fi +``` + +## Ripartizione + +Questo semplice script di shell utilizza `rsync` per prelevare i file del repository dal mirror più vicino. Utilizza anche l'opzione "exclude", definita in un file di testo sotto forma di parole chiave che non devono essere incluse. Le esclusioni sono utili se si dispone di spazio limitato su disco o se, per qualsiasi motivo, non si vuole tutto. Possiamo usare `*` come carattere jolly. Fate attenzione all'uso di `*/ng`, perché escluderà tutto ciò che corrisponde a questi caratteri. Un esempio è riportato di seguito: + +``` +*/source* +*/debug* +*/images* +*/Devel* +8/* +8.4-RC1/* +8.4-RC1 +``` + +# Fine +Un semplice script che può aiutare a risparmiare larghezza di banda o a semplificare la creazione di un ambiente di laboratorio. From 55aaeaa49dd2af8ce8f10e10dfa1ab4106029aea Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 05:25:39 -0400 Subject: [PATCH 37/51] New translations sed_search_replace.md (Italian) --- docs/gemstones/sed_search_replace.it.md | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 docs/gemstones/sed_search_replace.it.md diff --git a/docs/gemstones/sed_search_replace.it.md b/docs/gemstones/sed_search_replace.it.md new file mode 100644 index 0000000000..b550e13a69 --- /dev/null +++ b/docs/gemstones/sed_search_replace.it.md @@ -0,0 +1,74 @@ +--- +title: sed - Ricerca e sostituzione +author: Steven Spencer +--- + +# `sed` - Ricerca e sostituzione + +`sed` è un comando che sta per "stream editor" + +## Convenzioni + +* `path`: Il percorso effettivo. Esempio: `/var/www/html/` +* `filename`: il nome effettivo del file. Esempio: `index.php` + +## Utilizzo di `sed` + +L'uso di `sed` per la ricerca e la sostituzione è la mia preferenza personale perché si può usare un delimitatore a scelta, il che rende molto comoda la sostituzione di cose come i collegamenti web con "/". Gli esempi predefiniti per l'editing sul posto usando `sed` mostrano cose come questo esempio: + +`sed -i 's/search_for/replace_with/g' /path/filename` + +Ma cosa succede se si cercano stringhe che contengono "/"? Se la barra in avanti fosse l'unica opzione disponibile come delimitatore, dovremmo fare l'escape di ogni barra in avanti prima di poterla usare nella ricerca. È qui che `sed` eccelle rispetto ad altri strumenti, perché il delimitatore è modificabile al volo (non è necessario specificare che lo si sta cambiando da qualche parte). Come detto, se si cercano cose con "/", si può facilmente farlo cambiando il delimitatore in "|". Ecco un esempio di ricerca di un link con questo metodo: + +`sed -i 's|search_for/with_slash|replace_string|g' /path/filename` + +È possibile utilizzare qualsiasi carattere a singolo byte come delimitatore, ad eccezione di backslash, newline e "s". Ad esempio, funziona anche questo: + +`sed -i 'sasearch_forawith_slashareplace_stringag' /path/filename` where "a" is the delimiter, and the search and replace still works. Per sicurezza, è possibile specificare un backup durante la ricerca e la sostituzione, utile per assicurarsi che le modifiche apportate con `sed` siano quelle _realmente_ desiderate. In questo modo si ottiene un'opzione di ripristino dal file di backup: + +`sed -i.bak s|search_for|replacea_with|g /path/filename` + +Che creerà una versione non modificata del `filename` chiamata `filename.bak` + +Se volete, potete anche usare le doppie virgolette invece di quelle singole: + +`sed -i "s|search_for/with_slash|replace_string|g" /path/filename` + +## Descrizione Opzioni + +| Opzione | Spiegazione | +| ------- | ------------------------------------------------------------------------ | +| i | modifica il file in posizione | +| i.ext | crea un backup con qualsiasi estensione (ext qui) | +| s | specifica la ricerca | +| g | specifica di sostituire globalmente, in altre parole tutte le occorrenze | + +## File multipli + +Sfortunatamente, `sed` non ha un'opzione di looping in linea come il `perl`. Per scorrere più file, è necessario combinare il comando `sed` all'interno di uno script. Ecco un esempio di come farlo. + +Per prima cosa, generate un elenco di file che il vostro script utilizzerà, che può essere inserito alla riga di comando: + +`find /var/www/html -name "*.php" > phpfiles.txt` + +Quindi, create uno script per utilizzare il file `phpfiles.txt:` + +``` +#!/bin/bash + +for file in `cat phpfiles.txt` +do + sed -i.bak 's|search_for/with_slash|replace_string|g' $file +done +``` +Lo script scorre tutti i file creati in `phpfiles.txt`, crea un backup di ogni file ed esegue la stringa di ricerca e sostituzione a livello globale. Una volta verificato che la ricerca e la sostituzione siano state completate correttamente e che le modifiche siano quelle desiderate, è possibile eliminare tutti i file di backup. + +## Altre letture ed esempi + +* `sed` [pagina del manuale](https://linux.die.net/man/1/sed) +* `sed` [esempi aggiuntivi](https://www.linuxtechi.com/20-sed-command-examples-linux-users/) +* `sed` e `awk` [Libro O'Reilly](https://www.oreilly.com/library/view/sed-awk/1565922255/) + +## Conclusione + +`sed` è uno strumento potente e funziona molto bene per le funzioni di ricerca e sostituzione, in particolare quando il delimitatore deve essere flessibile. From 743e2b578ad3e6f5e5732643cd2797b56cf4d555 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 07:07:22 -0400 Subject: [PATCH 38/51] New translations olivetin.md (Italian) --- docs/guides/automation/olivetin.it.md | 150 ++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 docs/guides/automation/olivetin.it.md diff --git a/docs/guides/automation/olivetin.it.md b/docs/guides/automation/olivetin.it.md new file mode 100644 index 0000000000..195ef881cc --- /dev/null +++ b/docs/guides/automation/olivetin.it.md @@ -0,0 +1,150 @@ +--- +title: OliveTin +author: Ezequiel Bruni +contributors: Steven Spencer, Franco Colussi +tested with: 8.5, 8.6 +tags: + - automazione + - web + - bash +--- + +# Come installare e utilizzare OliveTin su Rocky Linux + +## Introduzione + +Vi siete mai stancati di digitare sempre gli stessi comandi CLI? Avete mai voluto che tutti gli altri in casa vostra potessero riavviare il server Plex senza il vostro intervento? Volete semplicemente digitare un nome in un pannello web, premere un pulsante e vedere apparire magicamente un contenitore Docker/LXD personalizzato? + +Allora potreste voler dare un'occhiata a OliveTin. OliveTin è letteralmente solo un'applicazione che consente di generare una pagina web da un file di configurazione, e questa pagina web ha dei pulsanti. Premendo i pulsanti, OliveTin eseguirà i comandi bash preimpostati da voi. + +Certo, tecnicamente si potrebbe creare qualcosa di simile da soli, da zero, con una sufficiente esperienza di programmazione... ma questo è *molto* più semplice. L'aspetto è simile a questo quando è configurato (immagine per gentile concessione del [repository OliveTin](https://https://github.com/OliveTin/OliveTin)): + +![Una schermata di OliveTin sul desktop; presenta diversi quadrati in una griglia, con etichette e azioni per ogni comando che può essere eseguito.](olivetin/screenshotDesktop.png) + +!!! Avvertenza "Non eseguire MAI questa applicazione su un server pubblico" + + Questa applicazione, per progettazione e per ammissione dello stesso creatore, è destinata a essere utilizzata su reti locali, *forse* su configurazioni dev. Tuttavia, al momento non ha un sistema di autenticazione dell'utente e (finché lo sviluppatore non lo risolverà) *viene eseguito come root per impostazione predefinita*. + + Quindi sì, usatelo quanto volete su una rete protetta e difesa da firewall. *Non* metterlo su nulla che sia destinato all'uso da parte del pubblico. Per ora fare: + +## Prerequisiti e presupposti + +Per seguire questa guida è necessario + +* Una macchina con Rocky Linux +* Un minimo di comfort/esperienza con la riga di comando. +* Accesso root o capacità di usare `sudo`. +* Per imparare le basi di YAML. Non è difficile; ne prenderete coscienza più in basso. + +## Installazione di OliveTin + +Questa è la parte più facile: OliveTin viene fornito con RPM pre-costruiti. È sufficiente scaricare qui l'ultima versione per la propria architettura e installarla. Se state seguendo questa guida su una workstation con un desktop grafico, scaricate il file e fate doppio clic su di esso nel vostro file manager preferito. + +Se si sta installando questa applicazione su un server, è possibile scaricarla sul proprio computer di lavoro e caricarla tramite SSH/SCP/SFTP, oppure fare la cosa che alcuni dicono di non fare e scaricarla con `wget`. + +ad es. + +```bash +wget https://github.com/OliveTin/OliveTin/releases/download/2022-04-07/OliveTin_2022-04-07_linux_amd64.rpm +``` + +Quindi installare l'applicazione con (sempre ad esempio): + +```bash +sudo rpm -i OliveTin_2022-04-07_linux_amd64.rpm +``` + +Ora OliveTin può essere eseguito come un normale servizio `systemd`, ma non bisogna ancora abilitarlo. È necessario impostare prima il file di configurazione. + +!!! Note "Nota" + + Dopo alcune prove, ho stabilito che queste stesse istruzioni di installazione funzionano perfettamente in un contenitore Rocky Linux LXD. Per chi ama Docker, sono disponibili immagini precostituite. + +## Configurazione delle azioni OliveTin + +OliveTin può fare tutto ciò che può fare bash, e anche di più. Si può usare per eseguire applicazioni con opzioni CLI, eseguire script bash, riavviare servizi, ecc. Per iniziare, aprire il file di configurazione con l'editor di testo desiderato con root/sudo: + +```bash +sudo nano /etc/OliveTin/config.yaml +``` + +Il tipo di azione più elementare è un semplice pulsante; si fa clic su di esso e il comando viene eseguito sul computer host. Si può definire nel file YAML in questo modo: + +```yaml +actions: + - title: Restart Nginx + shell: systemctl restart nginx +``` + +È inoltre possibile aggiungere icone personalizzate a ogni azione, come nel caso delle emoji unicode: + +```yaml +actions: + - title: Restart Nginx + icon: "F504" + shell: systemctl restart nginx +``` + +Non mi soffermerò su tutti i dettagli delle opzioni di personalizzazione, ma è anche possibile utilizzare gli input di testo e i menu a discesa per aggiungere variabili e opzioni ai comandi da eseguire. Se lo fate, OliveTin vi chiederà un input prima di eseguire il comando. + +In questo modo è possibile eseguire qualsiasi programma, controllare macchine remote tramite SSH, attivare webhook e altro ancora. Consultate [la documentazione ufficiale](https://docs.olivetin.app/actions.html) per ulteriori idee. + +Ma ecco un mio esempio: Ho uno script personale che uso per generare contenitori LXD con server web preinstallati. Con OliveTin, sono riuscito a creare rapidamente un'interfaccia grafica per questo script, come questa: + +```yaml +actions: +- title: Build Container + shell: sh /home/ezequiel/server-scripts/rocky-host/buildcontainer -c {{ containerName }} -d {{ domainName }} {{ softwarePackage }} + timeout: 60 + arguments: + - name: containerName + title: Container Name + type: ascii_identifier + + - name: domainName + title: Domain + type: ascii_identifier + + - name: softwarePackage + title: Default Software + choices: + - title: None + value: + + - title: Nginx + value: -s nginx + + - title: Nginx & PHP + value: -s nginx-php + + - title: mariadb + value: -s mariadb +``` + +Sul front end, l'aspetto è questo (e sì, OliveTin ha una modalità scura e devo *assolutamente* cambiare l'icona): + +![Un modulo con tre input di testo e un menu a tendina](olivetin/containeraction.png) + +## Abilitazione di OliveTin + +Una volta creato il file di configurazione nel modo desiderato, è sufficiente attivare e avviare OliveTin con: + +```bash +sudo systemctl enable --now OliveTin +``` + +Ogni volta che si modifica il file di configurazione, è necessario riavviare il servizio nel modo consueto: + +```bash +sudo systemctl restart OliveTin +``` + +## Conclusione + +OliveTin è un ottimo modo per eseguire qualsiasi cosa, da semplici comandi bash a operazioni piuttosto complesse tramite script. Tenete presente, però, che tutto viene eseguito come root per impostazione predefinita, a meno che non usiate su/sudo nei vostri comandi di shell per cambiare l'utente per quel particolare comando. + +Per questo motivo, è necessario prestare attenzione a come si configura l'intero sistema, soprattutto se si prevede di fornire l'accesso (ad esempio) alla propria famiglia, per controllare i server e gli elettrodomestici di casa, ecc. + +E ancora, non mettetelo su un server pubblico a meno che non siate pronti a cercare di proteggere la pagina da soli. + +Altrimenti, divertitevi. Si tratta di un piccolo strumento molto utile. From c0707ba10af5eebe344bde10a8d758b8d5a71f96 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 08:01:52 -0400 Subject: [PATCH 39/51] New translations markdown-demo-v4.md (French) --- docs/gemstones/markdown-demo-v4.fr.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/gemstones/markdown-demo-v4.fr.md diff --git a/docs/gemstones/markdown-demo-v4.fr.md b/docs/gemstones/markdown-demo-v4.fr.md new file mode 100644 index 0000000000..fc8d832496 --- /dev/null +++ b/docs/gemstones/markdown-demo-v4.fr.md @@ -0,0 +1,9 @@ +Il y a bien longtemps, il y avait un ancien royaume, le royaume de Crowdin. Là où tout fonctionnait sans problème, toutes les langues ayant ses marqueurs uniques, et toutes les traductions étaient toujours correctes et indexées régulièrement. + +Mais un jour, un chevalier inconnu nommé Rocky se profila à l'horizon, ravageant le royaume. Le nouveau chevalier n'avait pas de marqueurs bien définis et a été alimenté par des auteurs méchants qui ont utilisé un langage indéchiffrable appelé markdown. + +La confusion était telle que, pendant des mois, les dirigeants de Crowdin ont essayé sans succès de donner un ordre logique au nouveau langage apporté par Rocky, mais sans succès. + +Jusqu’au jour où, à travers la magie d’un magicien très puissant, le sens profane du langage markdown a été révélé. + +Et le royaume retourna à la vie heureuse et traduite. From 1a7b58689ef1aedffb806129118ce8b1a3eaf157 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 09:14:05 -0400 Subject: [PATCH 40/51] New translations 01-presentation.md (French) --- docs/books/admin_guide/01-presentation.fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/admin_guide/01-presentation.fr.md b/docs/books/admin_guide/01-presentation.fr.md index da46debf24..f6e520430d 100644 --- a/docs/books/admin_guide/01-presentation.fr.md +++ b/docs/books/admin_guide/01-presentation.fr.md @@ -63,7 +63,7 @@ UNIX est toujours d'actualité aujourd'hui (HP-UX, AIX, Solaris, etc.) #### Minix -* **1987** : A.S. Tanenbaum développe MINIX, un UNIX simplifié, pour enseigner les systèmes d'exploitation de manière simple. +* **1987** : Andrew S. Tanenbaum développe MINIX, un UNIX simplifié, pour enseigner les systèmes d'exploitation de manière simple. M. Tanenbaum met à disposition le code source de son système d'exploitation. #### Linux From 34ffaa152bb730a32db256af53463e48356fadde Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 09:14:07 -0400 Subject: [PATCH 41/51] New translations 04-advanced-commands.md (French) --- .../admin_guide/04-advanced-commands.fr.md | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/books/admin_guide/04-advanced-commands.fr.md b/docs/books/admin_guide/04-advanced-commands.fr.md index 124eacca70..baf8e64648 100644 --- a/docs/books/admin_guide/04-advanced-commands.fr.md +++ b/docs/books/admin_guide/04-advanced-commands.fr.md @@ -224,58 +224,58 @@ Voici quelques exemples d’utilisation : * la commande `repoquery` : -La commande `repoquery` interroge les dépôts. +La commande `repoquery` est utilisée pour rechercher les paquets dans le dépôt. Exemples d’utilisation : - * Connaître les dépendances d’un paquet non-installé : - -``` -repoquery --requires -``` - - * Connaître les fichiers fournis par un paquet non-installé : - -``` -$ repoquery -l yum-utils -/etc/bash_completion.d -/etc/bash_completion.d/yum-utils.bash -/usr/bin/debuginfo-install -/usr/bin/find-repos-of-install -/usr/bin/needs-restarting -/usr/bin/package-cleanup -/usr/bin/repo-graph -/usr/bin/repo-rss -/usr/bin/repoclosure -/usr/bin/repodiff -/usr/bin/repomanage -/usr/bin/repoquery -/usr/bin/reposync -/usr/bin/repotrack -/usr/bin/show-changed-rco -/usr/bin/show-installed -/usr/bin/verifytree -/usr/bin/yum-builddep -/usr/bin/yum-config-manager -/usr/bin/yum-debug-dump -/usr/bin/yum-debug-restore -/usr/bin/yum-groups-manager -/usr/bin/yumdownloader -… -``` + * Affiche les dépendances d'un paquet (il peut s'agir d'un paquet logiciel qui a été installé ou non installé), Équivalent à `dnf deplist `. + + repoquery --requires + + * Affiche les fichiers fournis par un paquet installé (ne fonctionne pas pour les paquets qui ne sont pas installés), équivalent à `rpm -ql ` + + ``` + $ repoquery -l yum-utils + /etc/bash_completion.d + /etc/bash_completion.d/yum-utils.bash + /usr/bin/debuginfo-install + /usr/bin/find-repos-of-install + /usr/bin/needs-restarting + /usr/bin/package-cleanup + /usr/bin/repo-graph + /usr/bin/repo-rss + /usr/bin/repoclosure + /usr/bin/repodiff + /usr/bin/repomanage + /usr/bin/repoquery + /usr/bin/reposync + /usr/bin/repotrack + /usr/bin/show-changed-rco + /usr/bin/show-installed + /usr/bin/verifytree + /usr/bin/yum-builddep + /usr/bin/yum-config-manager + /usr/bin/yum-debug-dump + /usr/bin/yum-debug-restore + /usr/bin/yum-groups-manager + /usr/bin/yumdownloader + … + ``` * La commande `yumdownloader` : -La commande `yumdownloader` télécharge les paquets RPM depuis les dépôts. +La commande `yumdownloader` télécharge les paquets RPM depuis les dépôts. Équivalent à `dnf download --downloadonly --downloaddir ./ package-name` !!! Note Cette commande est très pratique pour construire un dépôt local de quelques rpm ! -Exemple : `yumdownloader` va télécharger le paquet rpm de _repoquery_ ainsi que toutes ses dépendances : +Exemple : `yumdownloader` va télécharger le paquet rpm de _samba_ ainsi que toutes ses dépendances : ``` -$ yumdownloader --destdir /var/tmp -- resolve repoquery +$ yumdownloader --destdir /var/tmp --resolve samba +or +$ dnf download --downloadonly --downloaddir /var/tmp --resolve samba ``` | Options | Commentaires | @@ -331,7 +331,7 @@ L’option `-n` permet de spécifier le nombre de secondes entre chaque exécuti !!! Note - Pour quitter la commande `watch`, vous devez taper les clés : CTRL+C pour tuer le processus. + Pour quitter la commande `watch`, vous devez appuyer sur les touches : CTRL+C pour tuer le processus. Exemples : @@ -351,7 +351,7 @@ chrony:x:995:992::/var/lib/chrony:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ``` -* Surveillance du nombre de fichier dans un dossier : +* Surveiller le nombre de fichier dans un dossier : ``` $ watch -n 1 'ls -l | wc -l' From 8d198762fb666f4f3239c79d7192ef6deab944a6 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 09:14:57 -0400 Subject: [PATCH 42/51] New translations README.md (French) --- docs/guides/contribute/README.fr.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/guides/contribute/README.fr.md diff --git a/docs/guides/contribute/README.fr.md b/docs/guides/contribute/README.fr.md new file mode 100644 index 0000000000..8a33348c7d --- /dev/null +++ b/docs/guides/contribute/README.fr.md @@ -0,0 +1 @@ +../../../README.md \ No newline at end of file From 8c0e5f56c502a39c47ef8b40983ce7800d2c965d Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 11:56:53 -0400 Subject: [PATCH 43/51] New translations mirroring_lsyncd.md (Italian) --- docs/guides/backup/mirroring_lsyncd.it.md | 245 ++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 docs/guides/backup/mirroring_lsyncd.it.md diff --git a/docs/guides/backup/mirroring_lsyncd.it.md b/docs/guides/backup/mirroring_lsyncd.it.md new file mode 100644 index 0000000000..ff88f7bfbc --- /dev/null +++ b/docs/guides/backup/mirroring_lsyncd.it.md @@ -0,0 +1,245 @@ +--- +title: Soluzione di mirroring - lsyncd +author: Steven Spencer +contributors: Ezequiel Bruni, tianci li, Franco Colussi +tags: + - lsyncd + - synchronization + - mirroring +--- + +# Soluzione di mirroring - `lsyncd` + +## Prerequisiti + +Ecco tutto ciò di cui avrete bisogno per capire e seguire questa guida: + +* Una macchina con Rocky Linux +* Un livello di confidenza con la modifica dei file di configurazione da riga di comando +* Conoscenza dell'uso di un editor a riga di comando (qui usiamo vi, ma potete usare il vostro editor preferito) +* È necessario avere accesso a root e, idealmente, essere registrati come utente root nel proprio terminale +* Coppia di chiavi SSH pubbliche e private +* I repository EPEL di Fedora +* È necessario avere familiarità con *inotify*, un'interfaccia per il monitoraggio degli eventi +* Facoltativo: familiarità con *tail* + +## Introduzione + +Se state cercando un modo per sincronizzare automaticamente file e cartelle tra i computer, `lsyncd` è un'ottima opzione. L'unico inconveniente per i principianti? È necessario configurare tutto tramite la riga di comando e i file di testo. + +Anche così, è un programma che vale la pena imparare per qualsiasi sysadmin. + +La migliore descrizione di `lsyncd` proviene dalla sua stessa pagina man. Parafrasando un po', `lsyncd` è una soluzione live mirror leggera e relativamente facile da installare. Non richiede nuovi filesystem o dispositivi di blocco e non ostacola le prestazioni del filesystem locale. In breve, fa il mirror dei file. + +`lsyncd` controlla un'interfaccia di monitoraggio degli eventi degli alberi delle directory locali (inotify). Aggrega e combina gli eventi per alcuni secondi, quindi genera uno (o più) processi per sincronizzare le modifiche. Per impostazione predefinita è `rsync`. + +Ai fini di questa guida, chiameremo "master" il sistema con i file originali e "target" quello su cui stiamo effettuando la sincronizzazione. È possibile eseguire il mirroring completo di un server utilizzando `lsyncd`, specificando con molta attenzione le directory e i file che si desidera sincronizzare. È piuttosto facile! + +Per la sincronizzazione remota, è necessario impostare anche le [Coppie di Chiavi Pubbliche e Private Rocky Linux SSH](../security/ssh_public_private_keys.md). Gli esempi qui riportati utilizzano SSH (porta 22). + +## Installazione di `lsyncd` + +Esistono due modi per installare `lsyncd`. Li includeremo entrambi in questa sede. L'RPM tende a rimanere un po' indietro rispetto ai pacchetti sorgente, ma solo di poco. La versione installata con il metodo RPM al momento in cui scriviamo è la 2.2.2-9, mentre la versione del codice sorgente è attualmente la 2.2.3. Detto questo, vogliamo offrirvi entrambe le opzioni e lasciarvi scegliere. + +## Installazione di `lsyncd` - Metodo RPM + +L'installazione della versione RPM è relativamente semplice. L'unica cosa che dovrete installare prima è il repository del software EPEL di Fedora. Questo può essere fatto con un solo comando: + +`dnf install -y epel-release` + +A questo punto è sufficiente installare `lsyncd` e tutte le dipendenze mancanti saranno installate insieme ad esso: + +`dnf install lsyncd` + +Impostate il servizio in modo che parta all'avvio, ma non avviatelo ancora: + +`systemctl enable lsyncd` + +Fatto! + +## Installazione di `lsyncd` - Metodo sorgente + +L'installazione da sorgente non è così male come sembra. Seguite questa guida e sarete subito operativi! + +### Installare le dipendenze + +Avremo bisogno di alcune dipendenze: alcune richieste da `lsyncd` stesso e altre necessarie per compilare i pacchetti dai sorgenti. Usate questo comando sulla vostra macchina Rocky Linux per assicurarvi di avere le dipendenze necessarie. Se si costruisce dai sorgenti, è una buona idea avere tutti gli strumenti di sviluppo installati: + +`dnf groupinstall 'Development Tools'` + +Ecco le dipendenze necessarie per `lsyncd` stesso e per il suo processo di compilazione: + +`dnf install lua lua-libs lua-devel cmake unzip wget rsync` + +### Scaricare `lsyncd` e costruirlo + +Poi abbiamo bisogno del codice sorgente: + +`wget https://github.com/axkibe/lsyncd/archive/master.zip` + +Ora decomprimere il file master.zip: + +`unzip master.zip` + +Verrà creata una directory chiamata "lsyncd-master". Dobbiamo passare a questa cartella e creare una cartella chiamata build: + +`cd lsyncd-master` + +E poi: + +`mkdir build` + +Ora cambiate nuovamente directory, in modo da trovarvi nella directory di compilazione: + +`cd build` + +Ora eseguite questi comandi: + +``` +cmake ... +make +make install +``` + +Al termine, il binario `lsyncd` dovrebbe essere installato e pronto per l'uso in */usr/local/bin* + +## `lsyncd` Servizio Systemd + +Con il metodo di installazione RPM, il servizio systemd sarà installato per voi, ma se scegliete di installare da sorgente, dovrete creare il servizio systemd. Anche se è possibile avviare il binario senza il servizio systemd, vogliamo assicurarci che *parta* all'avvio. In caso contrario, un riavvio del server interromperebbe lo sforzo di sincronizzazione e se ci si dimenticasse di riavviarlo, cosa molto probabile, ciò potrebbe essere molto imbarazzante per qualsiasi amministratore di sistema! + +La creazione del servizio systemd, tuttavia, non è molto difficile e a lungo andare vi farà risparmiare molto tempo. + +## Creare il Service File `lsyncd` + +Questo file può essere creato ovunque, anche nella directory principale del server. Una volta creato, possiamo facilmente spostarlo nella posizione giusta. + +`vi /root/lsyncd.service` + +Il contenuto di questo file dovrebbe essere: + +``` +[Unit] +Description=Live Syncing (Mirror) Daemon +After=network.target + +[Service] +Restart=always +Type=simple +Nice=19 +ExecStart=/usr/local/bin/lsyncd -nodaemon -pidfile /run/lsyncd.pid /etc/lsyncd.conf +ExecReload=/bin/kill -HUP $MAINPID +PIDFile=/run/lsyncd.pid + +[Install] +WantedBy=multi-user.target +``` +Ora installiamo il file appena creato nella posizione corretta: + +`install -Dm0644 /root/lsyncd.service /usr/lib/systemd/system/lsyncd.service` + +Infine, ricaricare il demone `systemctl` in modo che systemd "veda" il nuovo file di servizio: + +`systemctl daemon-reload` + +## Configurazione di`lsyncd` + +Qualunque sia il metodo scelto per installare `lsyncd`, è necessario un file di configurazione: */etc/lsyncd.conf*. La prossima sezione spiega come costruire un semplice file di configurazione e come testarlo. + +## Configurazione di Esempio per i Test + +Ecco un esempio di un semplice file di configurazione che sincronizza */home* su un'altra macchina. La nostra macchina di destinazione sarà un indirizzo IP locale: *192.168.1.40* + +``` + settings { + logfile = "/var/log/lsyncd.log", + statusFile = "/var/log/lsyncd-status.log", + statusInterval = 20, + maxProcesses = 1 + } + +sync { + default.rsyncssh, + source="/home", + host="root@192.168.1.40", + excludeFrom="/etc/lsyncd.exclude", + targetdir="/home", + rsync = { + archive = true, + compress = false, + whole_file = false + }, + ssh = { + port = 22 + } +} +``` + +Scomporre un po' questo file: + +* I file "logfile" e "statusFile" verranno creati automaticamente all'avvio del servizio. +* Lo "statusInterval" è il numero di secondi da attendere prima di scrivere sullo statusFile. +* "maxProcesses" è il numero di processi che `lsyncd` può generare. Onestamente, a meno che non si tratti di una macchina molto trafficata, un processo è sufficiente. +* Nella sezione di sincronizzazione "default.rsyncssh" dice di usare rsync su ssh +* "source=" è il percorso della directory da cui si effettua la sincronizzazione. +* "host=" è il nostro computer di destinazione su cui stiamo effettuando la sincronizzazione. +* L'opzione "excludeFrom=" indica a `lsyncd` dove si trova il file delle esclusioni. Deve esistere, ma può essere vuoto. +* "targetdir=" è la directory di destinazione a cui inviare i file. Nella maggior parte dei casi sarà uguale alla sorgente, ma non sempre. +* Poi abbiamo la sezione "rsync =" e queste sono le opzioni con cui eseguire rsync. +* Infine, abbiamo la sezione "ssh =", che specifica la porta SSH in ascolto sulla macchina di destinazione. + +Se si aggiunge più di una directory da sincronizzare, è necessario ripetere l'intera sezione "sync", comprese tutte le parentesi di apertura e chiusura per ogni directory. + +## Il File lsyncd.exclude + +Come già detto, il file "excludeFrom" deve esistere, quindi creiamolo ora: + +`touch /etc/lsyncd.exclude` + +Se stessimo sincronizzando la cartella /etc del nostro computer, ci sarebbe un certo numero di file e/o directory che dovremmo lasciare fuori. Ogni file o directory esclusa viene semplicemente elencata nel file, una per riga, in questo modo: + +``` +/etc/hostname +/etc/hosts +/etc/networks +/etc/fstab +``` + +## Prova e Riprendi + +Ora che tutto il resto è stato impostato, possiamo testare il tutto. Per cominciare, assicuriamoci che il servizio systemd lsyncd.service si avvii: + +`systemctl start lsyncd` + +Se non vengono visualizzati errori dopo l'esecuzione di questo comando, controllare lo stato del servizio, per sicurezza: + +`systemctl status lsyncd` + +Se il servizio è in esecuzione, usare tail per vedere la parte finale dei due file di log e verificare che tutto sia a posto: + +`tail /var/log/lsyncd.log` + +E poi: + +`tail /var/log/lsyncd-status.log` + +Supponendo che tutto sia corretto, spostatevi nella directory `/home/[user]`, dove `[user]` è un utente della macchina e create un nuovo file con *touch*. + +`touch /home/[user]/testfile` + +Ora andate sul computer di destinazione e verificate se il file viene visualizzato. Se è così, tutto funziona come dovrebbe. Impostare il servizio lsyncd.service da avviare all'avvio con: + +`systemctl enable lsyncd` + +E dovreste essere pronti a partire. + +## Ricordate di essere prudenti + +Ogni volta che si sincronizza un insieme di file o directory su un'altra macchina, è necessario pensare attentamente all'effetto che avrà sulla macchina di destinazione. Se si torna al **File lsyncd.exclude** dell'esempio precedente, si può immaginare cosa potrebbe accadere se */etc/fstab* venisse sincronizzato? + +Per i neofiti, *fstab* è il file utilizzato per configurare le unità di archiviazione su qualsiasi macchina Linux. I dischi e le etichette sono quasi certamente diversi. Al successivo riavvio del computer di destinazione è probabile che non riesca ad avviarsi del tutto. + +# Conclusioni e riferimenti + +`lsyncd` è un potente strumento per la sincronizzazione delle directory tra i computer. Come avete visto, non è difficile da installare ed è facile da mantenere in futuro. Non si può chiedere di più. + +Per saperne di più su `lsyncd` visitate [Il Sito Ufficiale](https://github.com/axkibe/lsyncd) From 1022bbb7fd5b191e800fb7840c41cb6ba27ccd90 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Tue, 31 May 2022 11:57:44 -0400 Subject: [PATCH 44/51] New translations 8-changelog.md (Chinese Simplified) --- docs/release_notes/8-changelog.zh.md | 396 +++++++++++++-------------- 1 file changed, 198 insertions(+), 198 deletions(-) diff --git a/docs/release_notes/8-changelog.zh.md b/docs/release_notes/8-changelog.zh.md index fa6a9540aa..682e58f724 100644 --- a/docs/release_notes/8-changelog.zh.md +++ b/docs/release_notes/8-changelog.zh.md @@ -1,10 +1,10 @@ --- -title: 更改日志 +title: 变更日志 author: Louis Abel contributors: tianci li, Steven Spencer tags: - - 岩石更新日志 - - 更新日志 + - rocky的变更日志 + - 变更日志 --- # Rocky Linux 8 更改日志 @@ -17,24 +17,24 @@ tags: 所有Rocky Linux组件都是由托管在[git.rockylinux.org](https://git.rockylinux.org) 上的源代码进行构建的。 此外,SRPM与存储库将一起发布在对应的"source"目录中, 您可以在我们的任意镜像网站上找到它们, 镜像网站的源码包与我们发布的每个二进制RPM相同。 -## 2022-01-20 +## 8.5 - 2022-03-15 -以下软件包自2022年2月4日起进行了更新: +以下软件包自2022年03月15日起进行了更新: -* aide: aide-0.16-14.el8 -> aide-0.16-14.el8_5.1 +* expat-2.2.5-4.el8_5.3 * tzdata-2022a-1.el8 * httpd-2.4.37-43.module+el8.5.0+747+83fae388.3 * openssl-1.1.1k-6.el8_5 -关联的CVE: +以下模块已更新: -* CVE-2021-45417 +* httpd -以下软件包自2022年01月11日起进行了更新: +关联的CVE: -* thunderbird: 更新至78.14.0 +* CVE-2022-25236 * CVE-2022-25235 -* cyrus-imapd: 更新至3.0.7-20.el8_4.1(地址 CVE-2021-33582) +* CVE-2022-25315 * CVE-2022-23852 * CVE-2021-45960 * CVE-2021-46143 @@ -47,27 +47,27 @@ tags: * CVE-2022-0778 * CVE-2022-22720 -### 发布工程说明 +### 附加信息 -我们要对过去两个星期中没有作出宣布表示歉意。 目前这些公告都是手工发布的,目前正在制定计划,使这些公告更加自动化,并减少人与人之间的互动。 +我们为过去两周没有发布公告而道歉。 目前,这些公告都是人工手动发布的,目前正在制定计划,减少人工交互,使这些公告更加自动化。 -释放了RHEL 8。 beta, 我们将研究正在变化的情况以及我们将需要如何在其可能于4月底或5月举行的大会之前的几个星期内完成我们的工作。 在此期间,我们还一直致力于启动RHEL 9 测试包,最终将被导入, 重建并在我们的新构建系统中测试。 +随着 RHEL 8.6 测试版的发布,我们将在4月底或5月正式版本(GA)发布之前的几周内,研究哪些方面发生了变化以及需要如何构建我们的版本。 在此期间,我们还一直在努力引导 RHEL 9测试包,最终将在我们的新构建系统中导入、重建和测试。 -## 8.5 - 2022-01-03 +## 8.5 - 2022-03-14 -关联的CVE: +以下软件包自2022年03月14日起进行了更新: -* dotnet6.0: dotnet6.0-6.0.100-0.10.el8_5 -> dotnet6.0-6.0.101-2.el8_5 -* 云内:云内-21.1-7.el8_5.3 -> 云内-21.1-7.el8_5.4 +* 389-ds-base: 389-ds-base-1.4.3.23-12.module+el8.5.0+722+e2a0b219 -> 389-ds-base-1.4.3.23-14.module+el8.5.0+745+c5be6847 +* cloud-init: cloud-init-21.1-7.el8_5.3 -> cloud-init-21.1-7.el8_5.4 * fence-agents: fence-agents-4.2.1-75.el8 -> fence-agents-4.2.1-75.el8_5.2 * firewalld: firewalld-0.9.3-7.el8 -> firewalld-0.9.3-7.el8_5.1 * gdm: gdm-1:40.0-15.el8 -> gdm-1:40.0-15.el8_5.1 * glibc: glibc-2.28-164.el8 -> glibc-2.28-164.el8_5.3 -* httpd-2.4.37-43.module+el8.5.0+727+743c5577.1 -> httpd-2.4.37-43.module+el8.5.0+746+b6ce3176.2 +* httpd: httpd-2.4.37-43.module+el8.5.0+727+743c5577.1 -> httpd-2.4.37-43.module+el8.5.0+746+b6ce3176.2 * java-11-openjdk: java-11-openjdk-1:11.0.14.0.9-2.el8_5 -> java-11-openjdk-1:11.0.14.1.1-2.el8_5 * libarchive: libarchive-3.3.3-1.el8_5 -> libarchive-3.3.3-3.el8_5 * libxml2: libxml2-2.9.7-11.el8 -> libxml2-2.9.7-12.el8_5 -* linux-firmware:linux-firmware20210702-103.gitd79c2677.el8 -> linux-firmware20210702-104.gitd79c2677.el8_5 +* linux-firmware: linux-firmware-20210702-103.gitd79c2677.el8 -> linux-firmware-20210702-104.gitd79c2677.el8_5 * lvm2: lvm2-8:2.03.12-10.el8 -> lvm2-8:2.03.12-11.el8_5 * nmstate: nmstate-1.1.0-5.el8_5 -> nmstate-1.1.0-6.el8_5 * pcs: pcs-0.10.10-4.el8.rocky.0 -> pcs-0.10.10-4.el8_5.1.rocky.0 @@ -76,116 +76,116 @@ tags: * redhat-support-lib-python: redhat-support-lib-python-0.11.3-1.el8 -> redhat-support-lib-python-0.13.0-0.el8_5 * redhat-support-tool: redhat-support-tool-0.11.3-2.el8 -> redhat-support-tool-0.13.0-0.el8_5 * samba: samba-4.14.5-9.el8_5 -> samba-4.14.5-10.el8_5 -* 订阅管理器: 订阅经理-1.28.21-3.el8 -> 订阅经理-1.28.21-5.el8_5 +* subscription-manager: subscription-manager-1.28.21-3.el8 -> subscription-manager-1.28.21-5.el8_5 * systemd: systemd-239-51.el8_5.3 -> systemd-239-51.el8_5.5 * vim: vim-2:8.0.1763-16.el8_5.4 -> vim-2:8.0.1763-16.el8_5.12 -以下软件包自2022年1月27日起进行了更新: +以下模块已更新: -* grafana: grafana-7.5.9-4.el8 -> grafana-7.5.9-5.el8_5 -* CVE-2021-45417 +* 389-ds +* httpd * virt * virt-devel -## 8.5 - 2022-02-01 +## 8.5 - 2022-03-10 -关联的CVE: +以下软件包自2022年03月10日起进行了更新: -* containertools -* thunderbird:thunderbird-91.6.0-1.el8_5.Plus -> thunderbird-91.7.0-2.el8_5.plus +* thunderbird: thunderbird-91.6.0-1.el8_5 -> thunderbird-91.7.0-2.el8_5 +* thunderbird: thunderbird-91.6.0-1.el8_5.plus -> thunderbird-91.7.0-2.el8_5.plus -以下模块已更新: +关联的 CVE: -* cyrus-imapd: 更新至3.0.7-20.el8_4.1(地址 CVE-2021-33582) +* CVE-2022-25315 * CVE-2022-25235 -* thunderbird: 更新至78.14.0 +* CVE-2022-25236 -## 8.5 - 2022-01-27 +## 8.5 - 2022-02-24 -关联的CVE: +以下软件包自2022年02月24日起进行了更新: -* CVE-2021-20321 +* dotnet3.1: dotnet3.1-3.1.416-3.el8_5 -> dotnet3.1-3.1.417-1.el8_5 * dotnet5.0: dotnet5.0-5.0.211-1.el8_5 -> dotnet5.0-5.0.212-1.el8_5 * dotnet6.0: dotnet6.0-6.0.102-1.el8_5 -> dotnet6.0-6.0.103-4.el8_5 -* firefox: 更新至78.14.0firefox: firefox-91.6.0-1.el8_5 -> firefox-91.7.0-3.el8_5 +* firefox: firefox-91.6.0-1.el8_5 -> firefox-91.7.0-3.el8_5 * kernel: kernel-4.18.0-348.12.2.el8_5 -> kernel-4.18.0-348.20.1.el8_5 * kernel-rt: kernel-rt-4.18.0-348.12.2.rt7.143.el8_5 -> kernel-rt-4.18.0-348.20.1.rt7.150.el8_5 -以下软件包自2021年12月16日起进行了更新: +关联的CVE: -* virt-rhel-8050020211221163306.b4937e53 +* CVE-2022-0435 * CVE-2022-0847 -## 8.5 - 2022-01-26 +## 8.5 - 2022-02-22 -以下软件包自2021年12月13日起进行了更新: +以下软件包自2022年02月22日起进行了更新: -* java-1.8.0-openjdk: java-1.8.0-openjdk-1:1.8.0.312.b07-2.el8_5 -> java-1.8.0-openjdk-1:1.8.0.322.b06-2.el8_5 +* cyrus-sasl: cyrus-sasl-2.1.27-5.el8 -> cyrus-sasl-2.1.27-6.el8_5 关联的CVE: -* dotnet5.0: dotnet5.0-5.0.209-1.el8_5 -> dotnet5.0-5.0.210-1.el8_5 +* CVE-2022-24407 -## 8.5 - 2022-01-25 +## 8.5 - 2022-02-16 -以下软件包自2021年12月17日起进行了更新: +以下软件包自2022年02月16日起进行了更新: -* CVE-2020-25717 +* python-pillow: python-pillow-5.1.1-16.el8 -> python-pillow-5.1.1-18.el8_5 -以请求为基础,将 kernel-rt-kvm 软件包添加到 RT 存储库中。 +关联的CVE: -* go-toolset-rhel8-8050020211215173118-8aa62369 +* CVE-2022-22815 * CVE-2022-22816 * CVE-2022-22817 -## 8.5 - 2021-12-12 +## 8.5 - 2022-02-15 -以下软件包自2021年12月12日起进行了更新: +以下模块自2022年02月15日起进行了更新: -* samba: samba-4.14.5-2.el8 -> samba-4.14.5-7.el8_5 -* rubby-2.6-805002202165459.b4937e53 +* ruby-2.5-8050020220216182135.b4937e53 +* ruby-2.6-8050020220216165459.b4937e53 -## 8.5 - 2021-12-10 +## 8.5 - 2022-02-14 -关联的CVE: +以下软件包自2022年02月14日起进行了更新: -* CVE-2016-2124 -* thunderbird:thunderbird-91.5.0-1.el8.plus -> thunderbird-91.6.0-1.el8_5.plus +* thunderbird: thunderbird-91.5.0-1.el8_5 -> thunderbird-91.6.0-1.el8_5 +* thunderbird: thunderbird-91.5.0-1.el8.plus -> thunderbird-91.6.0-1.el8_5.plus -## 8.5 - 2021-12-09 +## 8.5 - 2022-02-09 -以下软件包自2021年12月10日起进行了更新: +以下软件包自2022年02月09日起进行了更新: -* WALinuxAgent: WALinuxAgent-2.3.0.2-2.el8 -> WALinuxAgent-2.3.0.2-2.el8.rocky.0 +* dotnet3.1: dotnet3.1-3.1.120-2.el8_5 -> dotnet3.1-3.1.416-3.el8_5 * dotnet5.0: dotnet5.0-5.0.210-1.el8_5 -> dotnet5.0-5.0.211-1.el8_5 * dotnet6.0: dotnet6.0-6.0.101-2.el8_5 -> dotnet6.0-6.0.102-1.el8_5 -* firefox: 更新至78.14.0firefox: firefox-91.5.0-1.el8_5 -> firefox-91.6.0-1.el8_5 +* firefox: firefox-91.5.0-1.el8_5 -> firefox-91.6.0-1.el8_5 -## 8.5 - 2021-12-03 +## 8.5 - 2022-02-04 -以下模块已更新: +以下软件包自2022年02月04日起进行了更新: -* python27 +* aide: aide-0.16-14.el8 -> aide-0.16-14.el8_5.1 -这些更新主要是外观上的,并不影响功能。 +关联的CVE: -* WALinuxAgent -> 我们在这里以及微软的PR上游中添加了对 Rocky 的直接支持 +* CVE-2021-45417 -## 8.5 - 2021-12-02 +## 8.5 - 2022-02-02 -以下软件包自2021年12月09日起进行了更新: +以下模块/软件包自2022年02月02日起进行了更新: -* thunderbird: thunderbird-91.3.0-2.el8_4 -> +* varnish: varnish-6.0.8-1.module+el8.5.0+677+2a78a869 -> varnish-6.0.8-1.module+el8.5.0+736+fec10e21.1 关联的CVE: -* abrt: abrt-2.10.9-21.el8 -> abrt-2.10.9-21.el8.rocky.0 +* CVE-2022-23959 -## 8.5 - 补充部分 - 2021-11-30 +## 8.5 - 2022-02-01 -以下软件包自2021年12月03日起进行了更新: +以下软件包自2022年02月01日起进行了更新: -* mailman: mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 -> +* clevis: clevis-15-1.el8 -> clevis-15-1.el8_5.1 * cockpit: cockpit-251.1-1.el8 -> cockpit-251.3-1.el8_5 * cryptsetup: cryptsetup-2.3.3-4.el8 -> cryptsetup-2.3.3-4.el8_5.1 * dnf-plugins-core: dnf-plugins-core-4.0.21-3.el8 -> dnf-plugins-core-4.0.21-4.el8_5 @@ -208,121 +208,121 @@ tags: * vulkan-tools: vulkan-tools-1.2.189.0-1.el8 ->vulkan-tools-1.2.198.0-1.el8_5 * vulkan-validation-layers: vulkan-validation-layers-1.2.189.0-2.el8 ->vulkan-validation-layers-1.2.198.0-4.el8_5 -Firefox: 这是一个针对 Firefox 的 ESR 构建更新。 +以下模块已更新: -* mailman: CVE-2021-44227 +* containertools * freeradius * nodejs * pki-core * virt * virt-devel -## 8.5 - 2021-11-29 +## 8.5 - 2022-01-27 -添加了以下存储库/软件包: +以下软件包自2022年01月27日起进行了更新: -* mailman-2.1-8050020211202160117.fd901a62 +* dotnet-build-reference-packages: dotnet-build-reference-packages-0-10.20200608gitcd5a8c6.el8 ->dotnet-build-reference-packages-0-11.20211215git045b288.el8_5 * nginx: nginx-1:1.20.0-2.module+el8.5.0+669+b11495b0 -> nginx-1:1.20.1-1.module+el8.5.0+729+3f70613e * samba: samba-4.14.5-7.el8_5 -> samba-4.14.5-9.el8_5 -添加了以下存储库/软件包: +以下模块已更新: -* ncurses-static +* nginx -以下软件包自2021年12月02日起进行了更新: +关联的CVE: -* open-vm-tools (仅适用于aarch64的构建) +* CVE-2021-44142 * CVE-2021-23017 -## 8.5 - 2021-11-24 +## 8.5 - 2022-01-26 -关联的CVE: +以下软件包自2022年01月26日起进行了更新: -* openldap-servers (所有架构) +* java-1.8.0-openjdk: java-1.8.0-openjdk-1:1.8.0.312.b07-2.el8_5 -> java-1.8.0-openjdk-1:1.8.0.322.b06-2.el8_5 -## 8.5 - 2021-11-22 +## 8.5 - 2022-01-25 -以下模块自2021年11月02日起已更新: +以下软件包自2022年01月25日起进行了更新: -* kronosnet: kronosnet-1.18-2.el8 -> kronosnet-1.18-4.el8_5 +* parfait: parfait-0.5.4-2.module+el8.3.0+214+edf13b3f -> parfait-0.5.4-4.module+el8.5.0+728+553fbdb8 -以下软件包已添加到 devel 存储库中: +以下软件包已被丢弃: -* nss-3.67.0-7.el8_5: CVE-2021-43527 +* log4j12: log4j12-1.2.17-22.module+el8.3.0+214+edf13b3f -以下软件包已添加到 plus 存储库中: +以下模块已更新: -* dotnet5.0: dotnet5.0-5.0.208-2.el8_5 -> dotnet5.0-5.0.209-1.el8_5 +* parfait -## 8.5 - 2021-11-16 +## 8.5 - 2022-01-24 -关联的CVE: +以下软件包自2022年01月24日起进行了更新: -* mailman: mailman-3:2.1.29-12.module+el8.5.0+703+19300c10 -> mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 +* httpd: httpd-2.4.37-43.module+el8.5.0+714+5ec56ee8 -> httpd-2.4.37-43.module+el8.5.0+727+743c5577.1 * polkit: polkit-0.115-12.el8 -> polkit-0.115-13.el8_5.1 -在plus 存储库中的当前软件包是(截至2021-11-30): +以下模块已更新: -* mailman-2.1-8050020211123230959.fd901a62 +* httpd 关联的CVE: -* CVE-2021-42096 +* CVE-2021-44790 * CVE-2021-4034 -## 8.5 - 2021-11-14 +## 8.5 - 2022-01-19 -以下软件包自2021年11月29日起已更新: +以下软件包自2022年1月19日起进行了更新: -* clang: clang-12.0.1-2.module+el8.5.0+692+8756646f -> clang-12.0.1-4.module+el8.5.0+715+58f51d49 +* java-11-openjdk: java-11-openjdk-1:11.0.13.0.8-4.el8_5 -> java-11-openjdk-1:11.0.14.0.9-2.el8_5 -## 8.4 - 2021-09-21 +## 8.5 - 2022-01-12 -关联的 CVE: +以下软件包自2022年01月12日起进行了更新: -* llvm-toolset-rhel8-8050020211122023437.b4937e53 +* gegl04: gegl04-0.4.4-6.el8 -> gegl04-0.4.4-6.el8_5.2 * java-17-openjdk: java-17-openjdk-1:17.0.1.0.12-2.el8_5 -> java-17-openjdk-1:17.0.2.0.8-4.el8_5 * kernel: kernel-4.18.0-348.7.1.el8_5 -> kernel-4.18.0-348.12.2.el8_5 * kernel-rt: kernel-rt-4.18.0-348.7.1.rt7.137.el8_5 -> kernel-rt-4.18.0-348.12.2.rt7.143.el8_5 * libarchive: libarchive-3.3.3-1.el8 -> libarchive-3.3.3-1.el8_5 * libreswan: libreswan-4.4-1.el8 -> libreswan-4.4-4.el8_5 -以下软件包自2021年11月24日起已更新: +关联的CVE: -* annobin: annobin-9.65-1.el8 -> annobin-9.72-1.el8_5.2 +* CVE-2022-0185 * CVE-2021-45463 * CVE-2021-4155 -## 8.4 - 2021-09-13 +## 8.5 - 2022-01-11 -以下软件包自2021年11月22日起进行了更新(包含更新后的模块软件包): +以下软件包自2022年01月11日起进行了更新: -* insights-client: insights-client-3.1.5-1.el8 (标准软件包组) -* thunderbird: 更新至78.14.0thunderbird: thunderbird-91.4.0-2.el8_5 -> thunderbird-91.5.0-1.el8_5 +* firefox: firefox-91.4.0-1.el8_5 -> firefox-91.5.0-1.el8_5 +* thunderbird: thunderbird-91.4.0-2.el8_5 -> thunderbird-91.5.0-1.el8_5 * thunderbird: thunderbird-91.4.0-2.el8.plus -> thunderbird-91.5.0-1.el8.plus -## 8.4 - 2021-08-24 +## 8.5 - 2022-01-03 -以下模块自2021年11月23日起已更新: +以下软件包自2022年01月03日起进行了更新: -* rust-toolset-rhel8-8050020211112021616.f73640c0 -* llvm-toolset-rhel8-8050020211122023437.b4937e53 +* dotnet6.0: dotnet6.0-6.0.100-0.10.el8_5 -> dotnet6.0-6.0.101-2.el8_5 +* rpaste: rpaste-0.1-3.el8.2 -> rpaste-0.2.0-1.el8 -## 8.4 - 2021-08-11 +## 8.5 - 2021-12-22 以下软件包自2021年12月22日起进行了更新: -* kernel: kernel-4.18.0-305.19.1 (9-15) +* grafana: grafana-7.5.9-4.el8 -> grafana-7.5.9-5.el8_5 -以下软件包自2021年11月16日起进行了更新(包含更新后的模块软件包): +关联的CVE: -* thunderbird: 更新至78.14.0 +* CVE-2021-44716 -## 8.4 - 2021-08-02 +## 8.5 - 2021-12-17 -以下模块自2021年11月16日起已更新: +以下软件包自2021年12月17日起进行了更新: -* extras -> CentOS SIG(Special Interest Group,特别兴趣小组) 发布包已被添加 +* 389-ds-base: 389-ds-base-1.4.3.23-10.module+el8.5.0+700+370e33d5 -> 389-ds-base-1.4.3.23-12.module+el8.5.0+722+e2a0b219 * accountsservice: accountsservice-0.6.55-2.el8 -> accountsservice-0.6.55-2.el8_5.2 * cloud-init: cloud-init-21.1-7.el8 -> cloud-init-21.1-7.el8_5.3 * freeradius: freeradius-3.0.20-9.module+el8.5.0+704+21fb769d -> freeradius-3.0.20-10.module+el8.5.0+723+cc9aee6c @@ -339,14 +339,14 @@ Firefox: 这是一个针对 Firefox 的 ESR 构建更新。 * rocky-release: rocky-release-8.5-2.el8 -> rocky-release-8.5-3.el8 * sssd: sssd-2.5.2-2.el8_5.1 -> sssd-2.5.2-2.el8_5.3 -从2021年11月14日发布 8.5 版本以来,以下软件包已更新(包含更新后的模块软件包): +关联的CVE: -* dotnet: dotnet-2.1.525.el8_4 -> dotnet-2.1.526.el8_4 -* kernel: kernel-4.18.0-305.19.1 (9-15) +* CVE-2021-20321 +* CVE-2021-3930 * CVE-2021-20257 * CVE-2021-3712 -以下软件包已被丢弃,同时也从 dnf 软件包组中删除: +以下模块已更新: * virt-rhel-8050020211221163306.b4937e53 * virt-devel-rhel-8050020211221163306.b4937e53 @@ -359,18 +359,18 @@ Firefox: 这是一个针对 Firefox 的 ESR 构建更新。 rocky-release 软件包已经更新,您可以将 countme=1 添加到 Rocky Linux 的 base 存储库中,类似于 epel 的存储库。 如果您已经修改了 repo 文件,将会生成 .rpmnew 文件,这样就不会覆盖您的更改。 -## 8.4 - 2021-07-27 +## 8.5 - 2021-12-16 -从2021年11月14日发布 8.5 版本以来,以下模块已经更新: +以下软件包自2021年12月16日起进行了更新: * selinux-policy: selinux-policy-3.14.3-80.el8 -> selinux-policy-3.14.3-80.el8_5.2 -* extras -> CentOS SIG(Special Interest Group,特别兴趣小组) 发布包已被添加 +* systemd: systemd-239-51.el8 -> systemd-239-51.el8_5.3 -## 8.4 - 2021-07-21 +## 8.5 - 2021-12-13 -[bug 174](https://bugs.rockylinux.org/show_bug.cgi?id=174) - 我们注意到一个问题,即`kdump` 在ESXi等VMware系统上不起作用。 +以下软件包自2021年12月13日起进行了更新: -* varnish -> varnish-0:6.0.6-2.module+el8.4.0+628+e1687553.1 -> Addresses CVE-2021-36740 +* dotnet5.0: dotnet5.0-5.0.209-1.el8_5 -> dotnet5.0-5.0.210-1.el8_5 * go-toolset: go-toolset-1.16.7-1.module+el8.5.0+694+f77f0bfd -> go-toolset-1.16.12-1.module+el8.5.0+720+c057d5cf * golang: golang-1.16.7-1.module+el8.5.0+694+f77f0bfd -> golang-1.16.12-1.module+el8.5.0+720+c057d5cf * ipa: ipa-4.9.6-6.module+el8.5.0+675+61f67439 -> ipa-4.9.6-10.module+el8.5.0+719+4f06efb6 @@ -379,11 +379,11 @@ rocky-release 软件包已经更新,您可以将 countme=1 添加到 Rocky Lin * kernel-rt: kernel-rt-kvm added to RT -以下软件包自2022年01月11日起进行了更新: +关联的CVE: -* BaseOS +* CVE-2020-25717 -以下软件包已更新: +以下模块已更新: * go-toolset-rhel8-8050020211215173118-8aa62369 * idm-DL1-8050020211215093947-3d2c466f @@ -392,32 +392,32 @@ rocky-release 软件包已经更新,您可以将 countme=1 添加到 Rocky Lin ### 发布工程说明 -以下软件包已更新: +以请求为基础,将 kernel-rt-kvm 软件包添加到 RT 存储库中。 -## 8.4 - 2021-07-12 +## 8.5 - 2021-12-12 -以下存储库已更新: +以下软件包自2021年12月12日起进行了更新: -* kernel -> kernel-4.18.0-305.10.2.el8_4 -> Addresses CVE-2021-33909 +* samba: samba-4.14.5-2.el8 -> samba-4.14.5-7.el8_5 -以下软件包自2022年01月11日起进行了更新: +关联的CVE: -* rocky-release -* BaseOS +* CVE-2016-2124 +* CVE-2020-25717 * CVE-2021-23192 -## 8.4 - 2021-06-30 +## 8.5 - 2021-12-10 -添加了以下存储库/软件包: +以下软件包自2021年12月10日起进行了更新: -* python36 +* WALinuxAgent: WALinuxAgent-2.3.0.2-2.el8 -> WALinuxAgent-2.3.0.2-2.el8.rocky.0 * libreoffice: libreoffice-1:6.4.7.2-5.el8.1 -> libreoffice-1:6.4.7.2-5.el8.2.rocky * openscap: openscap-1.3.5-6.el8 -> openscap-1.3.5-6.el8.rocky.0.1 * pcs: pcs-0.10.10-4.el8 -> pcs-0.10.10-4.el8.rocky.0 * python2: python2-2.7.18-7.module+el8.5.0+706+735ec4b3.rocky.0.1 -> python2-2.7.18-7.module+el8.5.0+718+67e45b5f.rocky.0.2 * rocky-release: rocky-release-8.5-1.el8 -> rocky-release-8.5-2.el8 -以下软件包已经更新: +以下模块已更新: * python27 @@ -436,7 +436,7 @@ rocky-release 软件包已经更新,您可以将 countme=1 添加到 Rocky Lin 以下软件包自2021年12月09日起进行了更新: -* PyYAML -> PyYAML-5.4.1-1.module+el8.4.0+595+c96abaa2 +* thunderbird: thunderbird-91.3.0-2.el8_4 -> * thunderbird-91.4.0-2.el8_5 * thunderbird: thunderbird-91.3.0-2.el8.plus -> * thunderbird-91.4.0-2.el8.plus @@ -447,15 +447,15 @@ Thunderbird:这是一个针对 Thunderbird 常规的 ESR 构建更新, 此 ## 8.5 - 2021-12-03 -以下软件包已更新: +以下软件包自2021年12月03日起进行了更新: * abrt: abrt-2.10.9-21.el8 -> abrt-2.10.9-21.el8.rocky.0 * firefox: firefox-91.3.0-1.el8_4 -> firefox-91.4.0-1.el8_5 * sos: sos-4.1-5.el8 -> sos-4.1-5.el8.rocky.2 -### 附加注释 +### 发布工程说明 -为以下存储库添加了kickstart repos: +Firefox: 这是一个针对 Firefox 的 ESR 构建更新。 abrt:主要是外观上的变化。 移除了对 libreport-rhel* 和 rhtsupport 这些插件的依赖, 您可以在更新到新的 abrt 软件包之后,将这些软件包安全的删除。 @@ -468,48 +468,48 @@ sos:主要是外观上的变化。 它带来了 Rocky 的策略, 查阅 [thi * mailman: mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 -> * mailman-3:2.1.29-12.module+el8.5.0+717+27fd1ba7.2 -以下模块已更新: +关联的CVE: -* open-vm-tools (仅适用于aarch64的构建) +* mailman: CVE-2021-44227 以下模块自2021年11月02日起已更新: -* ncurses-static (所有架构) +* mailman-2.1-8050020211202160117.fd901a62 ## 8.5 - 补充部分 - 2021-11-30 -常规的 Rocky 软件包已进行更新,以解决以下问题: +以下软件包已添加到 devel 存储库中: * ncurses-static -关联的CVE: +以下软件包已添加到 plus 存储库中: * open-vm-tools (仅适用于aarch64的构建) -### 开发笔记 +### 附加注释 -plus 存储库包含了 base 存储库中没有提供的项目,原因可能是由于comps和pungi配置 (基于 RHEL 存储库) 而无法使用这些项目,或者是在 base 存储库中找不到其他补丁/功能,被要求作为替代构建。 但 plus 存储库应该可以安全地保持启用状态。 +plus 存储库包含了 base 存储库中没有提供的项目,原因可能是由于 comps 和 pungi 的配置 (基于 RHEL 存储库) 而无法使用这些项目,或者是在 base 存储库中找不到其他补丁/功能,被要求作为替代构建。 但 plus 存储库应该可以安全地保持启用状态。 -关联的CVE: +在 plus 存储库中的当前软件包是(截至2021-11-30): * openldap-servers (所有架构) * thunderbird with PGP support (所有架构) * ncurses-static (所有架构) * open-vm-tools (仅适用于aarch64的构建) -### 已知问题 +### devel 笔记 应谨慎使用 devel 存储库, 它是被用于 koji 或 buildroot 目的的,不应该100%启用。 如果您希望在 devel 存储库中找到您想要查看的软件包,请在rocky-devel上发送邮件和(或者)在 https://bugs.rockylinux.org 上打开bug报告 ## 8.5 - 2021-11-29 -以下软件包自2022年01月03日起进行了更新: +以下软件包自2021年11月29日起已更新: * kronosnet: kronosnet-1.18-2.el8 -> kronosnet-1.18-4.el8_5 * nss: nss-3.67.0-6.el8_4 -> nss-3.67.0-7.el8_5 -以下软件包已更新: +关联的CVE: * nss-3.67.0-7.el8_5: CVE-2021-43527 @@ -523,7 +523,7 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.5 - 2021-11-22 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包自2021年11月22日起进行了更新(包含更新后的模块软件包): * mailman: mailman-3:2.1.29-12.module+el8.5.0+703+19300c10 -> mailman-3:2.1.29-12.module+el8.5.0+716+66d1ab43.1 @@ -531,7 +531,7 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 * mailman-2.1-8050020211123230959.fd901a62 -一些模块和软件包已经被上游以常规方式更新。 +关联的CVE: * CVE-2021-42096 * CVE-2021-42097 @@ -540,10 +540,10 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 以下软件包自2021年11月16日起进行了更新(包含更新后的模块软件包): -* insights-client: insights-client-3.1.5-1.el8 (标准软件包组) +* clang: clang-12.0.1-2.module+el8.5.0+692+8756646f -> clang-12.0.1-4.module+el8.5.0+715+58f51d49 * llvm-toolset: llvm-toolset-12.0.1-1.module+el8.5.0+692+8756646f -> llvm-toolset-12.0.1-1.module+el8.5.0+715+58f51d49 -以下模块已更新: +以下模块自2021年11月16日起已更新: * llvm-toolset-rhel8-8050020211122023437.b4937e53 @@ -586,26 +586,26 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 * thunderbird: thunderbird-78.13.0-1.el8 -> thunderbird-91.3.0-2.el8 * udftools: udftools-2.2-5.el8 -> udftools-2.3-2.el8 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已被丢弃,同时也从 dnf 软件包组中删除: -* firefox: 更新至78.14.0 +* insights-client: insights-client-3.1.5-1.el8 (标准软件包组) -一些模块和软件包已经被上游以常规方式更新。 +对于被丢弃的软件包,可以使用 `dnf remove`安全地将其删除。 -一些模块和软件包已经被上游以常规方式更新。 +从2021年11月14日发布 8.5 版本以来,以下模块已经更新: -* extras -> CentOS SIG(Special Interest Group,特别兴趣小组) 发布包已被添加 +* rust-toolset-rhel8-8050020211112021616.f73640c0 * httpd-2.4-8050020211115030420.b4937e53 -### 附加更改 +### 已知问题 -一些模块和软件包已经被上游以常规方式更新。 +[bug 174](https://bugs.rockylinux.org/show_bug.cgi?id=174) - 我们注意到一个问题,即`kdump` 在ESXi等VMware系统上不起作用。 我们还了解到镜像系统做更新时报告了有错误的目录, 它应该去到`kickstart` 请求应答文件而不是 `OS`(操作系统)。 这个问题应该可以通过更新来解决,使其正常工作。 ## 8.4 - 2021-09-21 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * kernel: kernel-4.18.0-305.19.1 (9-15) * scap-security-guide: scap-security-guide-0.1.54-5.el8.rocky.2 @@ -635,32 +635,32 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.4 - 2021-09-13 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * thunderbird: 更新至78.14.0 -* Firefox: 更新至78.14.0 +* firefox: 更新至78.14.0 * cyrus-imapd: 更新至3.0.7-20.el8_4.1(地址 CVE-2021-33582) -* systemtap将根据dyinest 10.2进行重新构建,以解决漏洞报告 +* systemtap将根据 dyinest 10.2 进行重新构建,以解决漏洞 bug * rocky-release -> 更新为允许"centos"作为ID -以下模块已更新: +以下存储库已更新: * extras -> CentOS SIG(Special Interest Group,特别兴趣小组) 发布包已被添加 ## 8.4 - 2021-08-24 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * dotnet: dotnet-2.1.525.el8_4 -> dotnet-2.1.526.el8_4 * libsndfile: libsndfile-1.0.28-10.el8_4 -> libsndfile-1.0.28-10.el8_4.1 -- Addresses - * Addresses a heap buffer overflow that allowed arbitrary code execution from a wav file + * 解决了允许从 wav 文件执行任意代码的堆缓冲区溢出问题。 * scap-security-guide: scap-security-guide-0.1.54-5.el8.rocky.1 * Addresses RLBZ#108 -一些模块和软件包已经被上游以常规方式更新。 +添加了以下存储库/软件包: * RT (realtime) - 通过运行 `dnf config-manager --set-enabled rt` 来启用 @@ -668,7 +668,7 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.4 - 2021-08-11 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * 389-ds-base: 389-ds-base-1.4.3.16-16.module+el8.4.0+596+159889e5 -> 389-ds-base-1.4.3.16-19.module+el8.4.0+636+837ee950 * NetworkManager: NetworkManager-1:1.30.0-9.el8_4 -> NetworkManager-1:1.30.0-10.el8_4 @@ -735,7 +735,7 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.4 - 2021-08-02 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * varnish -> varnish-0:6.0.6-2.module+el8.4.0+628+e1687553.1 -> Addresses CVE-2021-36740 @@ -749,13 +749,13 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.4 - 2021-07-27 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * thunderbird -> thunderbird-78.12.0-3.el8_4 ## 8.4 - 2021-07-21 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * kernel -> kernel-4.18.0-305.10.2.el8_4 -> Addresses CVE-2021-33909 * systemd -> systemd-239-45.el8_4.2 -> Addresses CVE-2021-33910 @@ -765,40 +765,40 @@ plus 存储库包含了 base 存储库中没有提供的项目,原因可能是 ## 8.4 - 2021-07-12 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: * rocky-release * linuxptp * rpaste * ovn2.13 (NFV) -关联的CVE: +以下模块已更新: * python36 -### 即将到来 +### 附加更改 -aarch64 的 extras 存储库已更新,以包含上游未包含的各种软件包。 例如 libreoffice 和其他 gnome 应用程序。 +已经实现了实验性的存储库元数据签名。 如果要尝试此操作,请在 Rocky-X.repo 文件中设置以下选项: ``` repo_gpgcheck=1 ``` -### 软件包更新 +### 即将到来 * 存储插件库 - * 为未来的情况添加 devel 和 debuginfo 存储库 + * 对 Glusterfs 9 文件系统的支持 ## 8.4 - 2021-06-30 -### 背景 +### 软件包更新 -一些模块和软件包已经被上游以常规方式更新。 +以下软件包已更新: -* 现在提供了一个用于 模拟/构建根 目的的"devel"存储库 -* aarch64 的 Extras 存储库已更新,以包含上游未提供给桌面使用的缺失软件包 -* rpaste已经更新,可以接受标准输入。 +* NetworkManager -> NetworkManager-11.30.0-9.el8_4 +* cloud-init -> cloud-init-20.3-10.el8_4.3 +* cmake -> cmake-3.18.2-11.el8_4 * edk2 -> edk2-20200602gitca407c7246bf-4.el8_4.1 * exiv2 -> exiv2-0.27.3-2.el8 * firewalld -> firewalld-0.8.2-7.el8_4 @@ -826,7 +826,7 @@ repo_gpgcheck=1 * tuned -> tuned-2.15.0-2.el8_4.1 * unzip -> unzip-6.0-45.el8_4 -关联的CVE: +以下模块已更新: * PyYAML -> PyYAML-5.4.1-1.module+el8.4.0+595+c96abaa2 * 389-ds -> 1.4.3.16-16 @@ -849,7 +849,7 @@ repo_gpgcheck=1 * rubygem-pg -> rubygem-pg-1.0.0-2 / rubygem-pg-1.1.4-1 / rubygem-pg-1.2.3-1 -### 附加更改 +### 背景 一些模块和软件包已经被上游以常规方式更新。 @@ -862,16 +862,16 @@ repo_gpgcheck=1 * rocky-logos - * 改进未来官方的live镜像图标 + * 改进未来官方的 live 镜像图标 -### 即将到来 +### 附加更改 aarch64 的 extras 存储库已更新,以包含上游未包含的各种软件包。 例如 libreoffice 和其他 gnome 应用程序。 因为它们不在 BaseOS 或 AppStream 中,所以 extras 存储库是存放这些软件包的合适地方。 -* 现在提供了一个用于 模拟/构建根 目的的"devel"存储库 -* aarch64 的 Extras 存储库已更新,以包含上游未提供给桌面使用的缺失软件包 -* rpaste已经更新,可以接受标准输入。 +* 现在提供了一个用于 模拟/构建根 目的的 "devel" 存储库 +* aarch64 的 extras 存储库已更新,以包含上游未提供给桌面使用的缺失软件包 +* rpaste 已经更新,可以接受标准输入。 * 在点发布(point release)的生命周期内,将在 repos 中提供较旧的包。 * 这将允许在上游软件包回归(regressions)或者需要排查问题的情况下,将其降级到已知的良好版本。 From 8e878a187d741be477092991ca6d2c95db3a4a87 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 1 Jun 2022 12:06:06 -0400 Subject: [PATCH 45/51] New translations cron_jobs_howto.md (Italian) --- docs/guides/automation/cron_jobs_howto.it.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/guides/automation/cron_jobs_howto.it.md b/docs/guides/automation/cron_jobs_howto.it.md index 958506b293..b5d556b0a5 100644 --- a/docs/guides/automation/cron_jobs_howto.it.md +++ b/docs/guides/automation/cron_jobs_howto.it.md @@ -2,7 +2,11 @@ title: cron - Automatizzare i comandi author: Steven Spencer contributors: Ezequiel Bruni, Franco Colussi -update: 2022-02-13 +tested on: 8.5 +tags: + - automazione del lavoro + - automazione + - cron --- # Automatizzare i Processi con `cron` e `crontab` @@ -144,7 +148,7 @@ Questo dice di eseguire lo script alle 10 PM, ogni giorno del mese, ogni mese e ### Le @options per `crontab` -Un altro modo per eseguire i lavori ad un orario strettamente programmato (cioè, giorno, settimana, mese, anno, ecc.) è quello di utilizzare le @options che offrono la possibilità di utilizzare tempi più naturali. Le @options consistono in: +Un altro modo per eseguire i lavori a un orario strettamente programmato (cioè, giorno, settimana, mese, anno, ecc.) è quello di usare le @options, che offrono la capacità di usare tempistiche più naturali. Le @options consistono in: * `@hourly` esegue lo script ogni ora di ogni giorno a 0 minuti dopo l'ora. (questo è esattamente il risultato di mettere il tuo script anche in `/etc/cron.hourly` ) * `@daily` esegue lo script ogni giorno a mezzanotte. From eb711422b620d69359310e0ebc9eeb34bd093f1b Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 1 Jun 2022 12:06:21 -0400 Subject: [PATCH 46/51] New translations rsnapshot_backup.md (Italian) --- docs/guides/backup/rsnapshot_backup.it.md | 337 ++++++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 docs/guides/backup/rsnapshot_backup.it.md diff --git a/docs/guides/backup/rsnapshot_backup.it.md b/docs/guides/backup/rsnapshot_backup.it.md new file mode 100644 index 0000000000..42bf3f421e --- /dev/null +++ b/docs/guides/backup/rsnapshot_backup.it.md @@ -0,0 +1,337 @@ +- - - +title: Soluzione di Backup - Rsnapshot author: Steven Spencer contributors: Ezequiel Bruni, Colussi Franco tags: + - backup + - rsnapshot +- - - + +# Soluzione di Backup - Rsnapshot + +## Prerequisiti + + * Saper installare repository e snapshot aggiuntivi dalla riga di comando + * Conoscere il montaggio di filesystem esterni alla macchina (disco rigido esterno, filesystem remoto, ecc.) + * Saper usare un editor (qui si usa`vi`, ma si può usare il proprio editor preferito) + * Conoscere un po' di scripting BASH + * Sapere come modificare il crontab per l'utente root + * Conoscenza delle chiavi pubbliche e private SSH (solo se si intende eseguire backup remoti da un altro server) + +## Introduzione + +_rsnapshot_ è un'utilità di backup molto potente che può essere installata su qualsiasi macchina basata su Linux. È possibile eseguire il backup di una macchina in locale o di più macchine, ad esempio i server, da un'unica macchina. + +_rsnapshot_ utilizza `rsync` ed è scritto interamente in perl senza dipendenze da librerie, quindi non ci sono requisiti strani per installarlo. Nel caso di Rocky Linux, dovreste essere in grado di installare _rsnapshot_ semplicemente installando il repository del software EPEL. + +Questa documentazione riguarda l'installazione di _rsnapshot_ solo su Rocky Linux. + +## Installazione di Rsnapshot + +Tutti i comandi qui mostrati si riferiscono alla riga di comando del server o della workstation, a meno che non sia indicato diversamente. + +### Installazione del repository EPEL + +Per installare _rsnapshot_ abbiamo bisogno del repository del software EPEL di Fedora. Per installare il repository, basta usare questo comando: + +`sudo dnf install epel-release` + +Il repository dovrebbe ora essere attivo. + +### Installare il pacchetto Rsnapshot + +Successivamente, installare _rsnapshot_ stesso: + +`sudo dnf install rsnapshot` + +Se mancano delle dipendenze, queste verranno visualizzate e sarà sufficiente rispondere alla richiesta per continuare. Per esempio: + +``` +dnf install rsnapshot +Last metadata expiration check: 0:00:16 ago on Mon Feb 22 00:12:45 2021. +Dependencies resolved. +======================================================================================================================================== + Package Architecture Version Repository Size +======================================================================================================================================== +Installing: + rsnapshot noarch 1.4.3-1.el8 epel 121 k +Installing dependencies: + perl-Lchown x86_64 1.01-14.el8 epel 18 k + rsync x86_64 3.1.3-9.el8 baseos 404 k + +Transaction Summary +======================================================================================================================================== +Install 3 Packages + +Total download size: 543 k +Installed size: 1.2 M +Is this ok [y/N]: y +``` +## Montaggio di un'unità o di un file system per il backup + +In questa fase viene mostrato come montare un disco rigido, ad esempio un disco rigido USB esterno, che verrà utilizzato per il backup del sistema. Questo passaggio è necessario solo se si esegue il backup di un singolo computer o server, come nel primo esempio riportato di seguito. + +1. Collegare l'unità USB. +2. Digitare `dmesg | grep sd` che dovrebbe mostrare l'unità che si desidera utilizzare. In questo caso, si chiamerà _sda1_. + Esempio: `EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem`. +3. Sfortunatamente (o fortunatamente, a seconda delle opinioni) la maggior parte dei moderni sistemi operativi Linux per desktop esegue il montaggio automatico dell'unità, se possibile. Ciò significa che, a seconda di vari fattori, _rsnapshot_ potrebbe perdere la traccia del disco rigido. Vogliamo che l'unità venga "montata" o che i suoi file siano sempre disponibili nello stesso posto. + Per farlo, prendete le informazioni sull'unità rivelata dal comando dmesg di cui sopra e digitate `mount | grep sda1`, che dovrebbe mostrare qualcosa di simile a questo: `/dev/sda1 on /media/username/8ea89e5e-9291-45c1-961d-99c346a2628a` +4. Digitare `sudo umount /dev/sda1` per smontare il disco rigido esterno. +5. Quindi, creare un nuovo punto di montaggio per il backup: `sudo mkdir /mnt/backup` +6. Ora montate l'unità nella posizione della cartella di backup: `sudo mount /dev/sda1 /mnt/backup` +7. Ora digitate nuovamente `mount | grep sda1` e dovreste vedere qualcosa di simile: `/dev/sda1 on /mnt/backup type ext2 (rw,relatime)` +8. Quindi creare una directory che deve esistere affinché il backup continui sull'unità montata. Per questo esempio utilizzeremo una cartella chiamata "storage": `sudo mkdir /mnt/backup/storage` + +Si noti che per una singola macchina, sarà necessario ripetere le operazioni di umount e mount ogni volta che l'unità viene ricollegata o ogni volta che il sistema si riavvia, oppure automatizzare questi comandi con uno script. + +Raccomandiamo l'automazione. L'automazione è la via del sysadmin. + +## Configurazione di rsnapshot + +Questo è il passo più importante. È facile commettere un errore quando si apportano modifiche al file di configurazione. La configurazione di _rsnapshot_ richiede l'uso di tabulazioni per la separazione tra gli elementi e un'avvertenza in tal senso si trova all'inizio del file di configurazione. + +Un carattere di spazio fa fallire l'intera configurazione e il backup. Per esempio, all'inizio del file di configurazione c'è una sezione per la `# SNAPSHOT ROOT DIRECTORY #`. Se lo si aggiungesse da zero, si dovrebbe digitare `snapshot_root`, poi TAB e quindi digitare `/qualunque_percorso_per_la_root_di_snapshot/` + +La cosa migliore è che la configurazione predefinita fornita con _rsnapshot_ richiede solo piccole modifiche per far funzionare il backup di una macchina locale. È sempre una buona idea, però, fare una copia di backup del file di configurazione prima di iniziare a modificarlo: + +`cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak` + +## Backup di base della macchina o del singolo server + +In questo caso, _rsnapshot_ verrà eseguito localmente per eseguire il backup di un particolare computer. In questo esempio, scomporremo il file di configurazione e mostreremo esattamente le modifiche da apportare. + +Per aprire il file _/etc/rsnapshot.conf_ è necessario utilizzare `vi` (o modificare con il proprio editor preferito). + +La prima cosa da modificare è l'impostazione _snapshot_root_, che per impostazione predefinita ha questo valore: + +`snapshot_root /.snapshots/` + +Dobbiamo cambiare questo punto con il nostro punto di montaggio creato in precedenza, con l'aggiunta di "storage". + +`snapshot_root /mnt/backup/storage/` + +Vogliamo anche dire al backup di NON essere eseguito se l'unità non è montata. Per fare ciò, rimuovete il segno "#" (chiamato anche commento, segno di cancelletto, segno di numero, simbolo di hash, ecc.) accanto a no_create_root, in modo che appaia come questo: + +`no_create_root 1` + +Quindi scendete alla sezione intitolata `# EXTERNAL PROGRAM DEPENDENCIES #` e rimuovete il commento (di nuovo, il segno "#") da questa riga: + +`#cmd_cp /usr/bin/cp` + +Così che ora si legge: + +`cmd_cp /usr/bin/cp` + +Anche se non abbiamo bisogno di cmd_ssh per questa particolare configurazione, ne avremo bisogno per l'altra opzione che segue e non fa male averla abilitata. Trovate quindi la riga che dice: + +`#cmd_ssh /usr/bin/ssh` + +E rimuovete il segno "#" in modo che appaia come questo: + +`cmd_ssh /usr/bin/ssh` + +Poi dobbiamo passare alla sezione intitolata `# BACKUP LEVELS / INTERVALS #` + +Rispetto alle versioni precedenti di _rsnapshot_ è stato cambiato da `hourly, daily, monthly, yearly` in `alfa, beta, gamma, delta`. Il che è un po' confuso. È necessario aggiungere un'annotazione a tutti gli intervalli che non verranno utilizzati. Nella configurazione, il delta è già stato commentato. + +Per questo esempio, non verranno eseguiti altri incrementi oltre al backup notturno, quindi è sufficiente aggiungere un'annotazione ad alfa e gamma in modo che la configurazione appaia come questa una volta terminata: + +``` +#retain alpha 6 +retain beta 7 +#retain gamma 4 +#retain delta 3 +``` + +Ora passate alla riga del file di log, che per impostazione predefinita dovrebbe essere la seguente: + +`#logfile /var/log/rsnapshot` + +E rimuovete il commento in modo che sia abilitato: + +`logfile /var/log/rsnapshot` + +Infine, passate alla sezione `### BACKUP POINTS / SCRIPTS ###` e aggiungete tutte le directory che volete aggiungere nella sezione `# LOCALHOST`, ricordando di usare TAB anziché SPAZIO tra gli elementi! + +Per ora scrivete le vostre modifiche`(SHIFT :wq!` per `vi`) e uscite dal file di configurazione. + +### Controllo della Configurazione + +Vogliamo assicurarci di non aver aggiunto spazi o altri errori evidenti al nostro file di configurazione mentre lo stavamo modificando. Per fare ciò, si esegue _rsnapshot_ con la nostra configurazione con l'opzione configtest: + +`rsnapshot configtest` mostrerà `Syntax OK` se non ci sono errori nella configurazione. + +Si dovrebbe prendere l'abitudine di eseguire configtest quando si modifica una particolare configurazione. Il motivo sarà più evidente quando entreremo nella sezione **Backup di più Macchine o più Server**. + +Per eseguire configtest con un particolare file di configurazione, è necessario eseguirlo con l'opzione -c per specificare la configurazione: + +`rsnapshot -c /etc/rsnapshot.conf configtest` + +## Eseguire il Backup la Prima Volta + +Tutto è stato verificato, quindi è il momento di eseguire il backup per la prima volta. Se si vuole, si può eseguire prima in modalità di prova, in modo da vedere cosa farà lo script di backup. + +Anche in questo caso non è necessario specificare la configurazione, ma si dovrebbe prendere l'abitudine di farlo: + +`rsnapshot -c /etc/rsnapshot.conf -t beta` + +Il risultato dovrebbe essere simile a questo, mostrando cosa accadrà quando il backup verrà effettivamente eseguito: + +``` +echo 1441 > /var/run/rsnapshot.pid +mkdir -m 0755 -p /mnt/backup/storage/beta.0/ +/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ + /home/ /mnt/backup/storage/beta.0/localhost/ +mkdir -m 0755 -p /mnt/backup/storage/beta.0/ +/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc/ \ + /mnt/backup/storage/beta.0/localhost/ +mkdir -m 0755 -p /mnt/backup/storage/beta.0/ +/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ + /usr/local/ /mnt/backup/storage/beta.0/localhost/ +touch /mnt/backup/storage/beta.0/ +``` + +Una volta soddisfatti del test, procedere all'esecuzione manuale della prima volta senza il test: + +`rsnapshot -c /etc/rsnapshot.conf beta` + +Al termine del backup, navigare in /mnt/backup e dare un'occhiata alla struttura di directory che è stata creata. Ci sarà una directory `storage/beta.0/localhost`, seguita dalle directory specificate per il backup. + +### Ulteriori spiegazioni + +Ogni volta che viene eseguito il backup, viene creato un nuovo incremento beta, 0-6 o 7 giorni di backup. Il backup più recente sarà sempre beta.0, mentre il backup di ieri sarà sempre beta.1. + +Le dimensioni di ciascuno di questi backup sembreranno occupare la stessa quantità (o più) di spazio su disco, ma ciò è dovuto all'uso di hard link _da parte di rsnapshot_. Per ripristinare i file dal backup di ieri, è sufficiente copiarli di nuovo dalla struttura di directory della beta.1. + +Ogni backup è solo un backup incrementale rispetto all'esecuzione precedente, MA, grazie all'uso dei collegamenti diretti, ogni directory di backup contiene il file o il collegamento diretto al file nella directory in cui è stato effettivamente eseguito il backup. + +Per ripristinare i file, non è necessario scegliere la directory o l'incremento da cui ripristinarli, ma solo la data e l'ora in cui il backup deve essere ripristinato. È un ottimo sistema e utilizza molto meno spazio su disco rispetto a molte altre soluzioni di backup. + +## Impostazione dell'esecuzione automatica del backup + +Una volta che tutto è stato testato e sappiamo che le cose funzioneranno senza problemi, il passo successivo è impostare il crontab per l'utente root, in modo che tutto questo possa essere fatto automaticamente ogni giorno: + +`sudo crontab -e` + +Se non avete mai eseguito questa operazione, scegliete vim.basic come editor o l'editor che preferite quando viene visualizzata la riga `Select an editor`. + +Vogliamo impostare il nostro backup in modo che venga eseguito automaticamente alle 23:00, quindi lo aggiungeremo al crontab: + +``` +## Running the backup at 11 PM +00 23 * * * /usr/bin/rsnapshot -c /etc/rsnapshot.conf beta` +``` + +## Backup di Più Macchine o Più Server + +L'esecuzione di backup di più macchine da una macchina con un array RAID o una grande capacità di archiviazione, in sede o da Internet, funziona molto bene. + +Se si eseguono questi backup da Internet, è necessario assicurarsi che entrambe le sedi dispongano di una larghezza di banda adeguata per l'esecuzione dei backup. È possibile utilizzare _rsnapshot_ per sincronizzare un server in sede con un array di backup o un server di backup fuori sede per migliorare la ridondanza dei dati. + +## Presupposto + +Si presume che si stia eseguendo _rsnapshot_ da un computer remoto, in sede. Questa esatta configurazione può essere duplicata, come indicato sopra, anche in remoto fuori sede. + +In questo caso, è necessario installare _rsnapshot_ sul computer che esegue tutti i backup. Stiamo anche ipotizzando: + +* Che i server su cui si eseguirà il backup abbiano una regola del firewall che consenta alla macchina remota di accedere al server SSH +* Che ogni server di cui si intende eseguire il backup abbia installato una versione recente di `rsync`. Per i server Rocky Linux, eseguire `dnf install rsync` per aggiornare la versione di `rsync` del sistema. +* Che vi siate connessi alla macchina come utente root o che abbiate eseguito `sudo -s` per passare all'utente root. + +## Chiavi Pubbliche e Private SSH + +Per il server che eseguirà i backup, è necessario generare una coppia di chiavi SSH da utilizzare durante i backup. Per il nostro esempio, creeremo chiavi RSA. + +Se si è già generato un set di chiavi, si può saltare questo passaggio. È possibile scoprirlo eseguendo `ls -al .ssh` e cercando una coppia di chiavi id_rsa e id_rsa.pub. Se non esiste, utilizzate il seguente link per impostare le chiavi per il vostro computer e per i server a cui volete accedere: + +[Coppie di Chiavi Private Pubbliche SSH](../security/ssh_public_private_keys.md) + +## Configurazione di Rsnapshot + +Il file di configurazione deve essere identico a quello creato per la **Macchina di Base o per il Backup di un Singolo Server**, tranne che per la modifica di alcune opzioni. + +La radice dell'istantanea può essere riportata al valore predefinito in questo modo: + +`snapshot_root /.snapshots/` + +E questa riga: + +`no_create_root 1` + +... può essere nuovamente commentata: + +`#no_create_root 1` + +L'altra differenza è che ogni macchina avrà una propria configurazione. Una volta che ci si è abituati, è sufficiente copiare uno dei file di configurazione esistenti con un nuovo nome e modificarlo per adattarlo alle macchine aggiuntive di cui si desidera eseguire il backup. + +Per ora, vogliamo modificare il file di configurazione come abbiamo fatto sopra e poi salvarlo. Quindi copiare il file come modello per il nostro primo server: + +`cp /etc/rsnapshot.conf /etc/rsnapshot_web.conf` + +Si vuole modificare il nuovo file di configurazione e creare il log e il lockfile con il nome della macchina: + +`logfile /var/log/rsnapshot_web.log` + +`lockfile /var/run/rsnapshot_web.pid` + +Successivamente, si vuole modificare rsnapshot_web.conf in modo che includa le directory di cui si vuole fare il backup. L'unica cosa diversa è l'obiettivo. + +Ecco un esempio di configurazione di web.ourdomain.com: + +``` +### BACKUP POINTS / SCRIPTS ### +backup root@web.ourourdomain.com:/etc/ web.ourourdomain.com/ +backup root@web.ourourdomain.com:/var/www/ web.ourourdomain.com/ +backup root@web.ourdomain.com:/usr/local/ web.ourdomain.com/ +backup root@web.ourdomain.com:/home/ web.ourdomain.com/ +backup root@web.ourdomain.com:/root/ web.ourdomain.com/ +``` + +### Controllo della Configurazione ed Esecuzione del Backup Iniziale + +Come in precedenza, ora possiamo verificare la configurazione per assicurarci che sia sintatticamente corretta: + +`rsnapshot -c /etc/rsnapshot_web.conf configtest` + +Come in precedenza, cerchiamo il messaggio `Syntax OK`. Se tutto è a posto, possiamo eseguire il backup manualmente: + +`/usr/bin/rsnapshot -c /etc/rsnapshot_web.conf beta` + +Supponendo che tutto funzioni bene, possiamo creare i file di configurazione per il server di posta (rsnapshot_mail.conf) e per il server del portale (rsnapshot_portal.conf), testarli ed eseguire un backup di prova. + +## Automatizzare il backup + +L'automazione dei backup per la versione con più macchine/server è leggermente diversa. Vogliamo creare uno script bash per richiamare i backup in ordine. Quando uno finisce, inizia il successivo. Questo script avrà un aspetto simile a questo e sarà memorizzato in /usr/local/sbin: + +`vi /usr/local/sbin/backup_all` + +Con il contenuto: + +``` +#!/bin/bash +# script to run rsnapshot backups in succession +/usr/bin/rsnapshot -c /etc/rsnapshot_web.conf beta +/usr/bin/rsnapshot -c /etc/rsnapshot_mail.conf beta +/usr/bin/rsnapshot -c /etc/rsnapshot_portal.conf beta +``` +Poi rendiamo lo script eseguibile: + +`chmod +x /usr/local/sbin/backup_all` + +Quindi creaiamo il crontab per root per eseguire lo script di backup: + +`crontab -e` + +E aggiungere questa riga: + +``` +## Running the backup at 11 PM +00 23 * * * /usr/local/sbin/backup_all +``` + +## Segnalazione dello Stato del Backup + +Per assicurarsi che il backup avvenga secondo i piani, si consiglia di inviare i file di registro del backup all'indirizzo e-mail. Se si stanno eseguendo backup di più macchine utilizzando _rsnapshot_, ogni file di registro avrà il proprio nome, che potrà essere inviato all'indirizzo e-mail per la revisione utilizzando la procedura [Utilizzo di postfix per la Segnalazione dei Processi del Server](../email/postfix_reporting.md). + +## Conclusioni e altre risorse + +La configurazione corretta di _rsnapshot_ è un po' scoraggiante all'inizio, ma può far risparmiare molto tempo per il backup delle macchine o dei server. + +_rsnapshot_ è molto potente, molto veloce e molto economico per quanto riguarda l'utilizzo dello spazio su disco. Per ulteriori informazioni su Rsnapshot, visitare il sito [rsnapshot.org](https://rsnapshot.org/download.html) From b4742d404d9875522eb4c641132b7dc73f14d82b Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 1 Jun 2022 13:19:17 -0400 Subject: [PATCH 47/51] New translations rsync_ssh.md (Italian) --- docs/guides/backup/rsync_ssh.it.md | 163 +++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 docs/guides/backup/rsync_ssh.it.md diff --git a/docs/guides/backup/rsync_ssh.it.md b/docs/guides/backup/rsync_ssh.it.md new file mode 100644 index 0000000000..df479cb4db --- /dev/null +++ b/docs/guides/backup/rsync_ssh.it.md @@ -0,0 +1,163 @@ +--- +title: Sincronizzazione con rsync +author: Steven Spencer +contributors: Ezequiel Bruni, tianci li, Franco Colussi +tags: + - synchronization + - rsync +--- + +# Usare `rsync` per mantenere sincronizzate due macchine + +## Prerequisiti + +Ecco tutto ciò di cui avrete bisogno per capire e seguire questa guida: + +* Una macchina con Rocky Linux +* Essere in grado di modificare i file di configurazione dalla riga di comando. +* Conoscere l'uso di un editor a riga di comando (qui usiamo _vi_, ma potete usare il vostro editor preferito). +* È necessario avere accesso a root e, idealmente, essere registrati come utente root nel proprio terminale +* Coppia di chiavi SSH Pubbliche e Private +* Essere in grado di creare un semplice script bash, utilizzando vi o l'editor preferito, e di testarlo. +* In grado di utilizzare _crontab_ per automatizzare l'esecuzione dello script. + +## Introduzione + +L'uso di `rsync` su SSH non è né potente come [lsyncd](../backup/mirroring_lsyncd.md) (che consente di osservare una directory o un file per le modifiche e mantenerlo sincronizzato in tempo reale), né flessibile come [rsnapshot](../backup/rsnapshot_backup.md) (che offre la possibilità di eseguire facilmente il backup di più targets da una singola macchina). Tuttavia, offre la possibilità di mantenere aggiornati due computer in base a una pianificazione definita dall'utente. + +Se avete bisogno di mantenere aggiornato un insieme di directory sul computer di destinazione e non vi interessa la sincronizzazione in tempo reale come caratteristica, allora `rsync` su SSH è probabilmente la soluzione migliore. + +Per tutto ciò che segue, faremo le cose come utente root, per cui è necessario effettuare il login come root o usare il comando `sudo -s` per passare all'utente root nel terminale. + +### Installazione di `rsync` + +Anche se `rsync` potrebbe essere già installato, è meglio aggiornare `rsync` alla versione più recente sui computer di origine e di destinazione. Per assicurarsi che `rsync` sia installato e aggiornato, eseguire le seguenti operazioni su entrambi i computer: + +`dnf install rsync` + +Se il pacchetto non è installato, `dnf` chiederà di confermare l'installazione; se è già installato, `dnf` cercherà un aggiornamento e chiederà di installarlo. + +### Preparazione dell'Ambiente + +Questo particolare esempio userà `rsync` sulla macchina di destinazione per prelevare dalla sorgente invece di spingere dalla sorgente alla destinazione, quindi è necessario impostare una [coppia di chiavi SSH](../security/ssh_public_private_keys.md) per questo. Una volta creata la coppia di chiavi SSH e confermato l'accesso senza password dal computer di destinazione al computer di origine, si può iniziare. + +### parametri di `rsync` e impostazione di uno script + +Prima di lasciarsi prendere la mano con l'impostazione di uno script, è necessario decidere quali parametri utilizzare con `rsync`. Ci sono molte possibilità, quindi date un'occhiata al [manuale di rsync](https://linux.die.net/man/1/rsync). Il modo più comune di usare `rsync` è quello di usare l'opzione `-a`, perché `-a`, o archivio, combina una serie di opzioni in una sola e queste sono opzioni molto comuni. Che cosa include -a? + +* -r, ricorre le directory +* -l, mantenere i collegamenti simbolici come collegamenti simbolici +* -p, preservare le autorizzazioni +* -t, preservare i tempi di modifica +* -g, preservare il gruppo- +* -o, preservare il proprietario +* -D, conservare i file di dispositivo + +Le uniche altre opzioni da specificare in questo esempio sono: + +* -e, specificare la shell remota da utilizzare +* --delete, che dice che se la directory di destinazione contiene un file che non esiste nella sorgente, bisogna eliminarlo + +Successivamente, è necessario impostare uno script creando un file per esso. (Anche in questo caso, utilizzate il vostro editor preferito se non avete familiarità con vi) Per creare il file, basta usare questo comando: + +`vi /usr/local/sbin/rsync_dirs` + +E poi renderlo eseguibile: + +`chmod +x /usr/local/sbin/rsync_dirs` + +## Impostazioni + +Ora, lo scripting lo rende super semplice e sicuro, in modo da poterlo testare senza timore. Si noti che l'URL utilizzato di seguito è "Soure.domain.com". Sostituirlo con il dominio o l'indirizzo IP del proprio computer di origine, entrambi funzionano. Ricordate inoltre che in questo esempio lo script viene creato sul computer "di destinazione", perché il file viene estratto dal computer di origine: + +``` +#!/bin/bash +/usr/bin/rsync -ae ssh --delete root@source.domain.com:/home/your_user /home +``` + +!!! attention "Attenzione" + + In questo caso, si presume che la propria home directory non esista sul computer di destinazione. **Se esiste, si consiglia di eseguire un backup prima di eseguire lo script!** + +Ora eseguite lo script: + +`/usr/local/sbin/rsync_dirs` + +Se tutto va bene, si dovrebbe ottenere una copia completamente sincronizzata della propria home directory sul computer di destinazione. Verificate che sia così. + +Supponendo che tutto questo abbia funzionato come sperato, procedete a creare un nuovo file sul computer di origine nella vostra home directory: + +`touch /home/your_user/testfile.txt` + +Eseguire nuovamente lo script: + +`/usr/local/sbin/rsync_dirs` + +Quindi verificare che il computer di destinazione riceva il nuovo file. In caso affermativo, il passo successivo consiste nel verificare il processo di eliminazione. Cancellare il file appena creato sul computer di origine: + +`rm -f /home/your_user/testfile.txt` + +Eseguire nuovamente lo script: + +`/usr/local/sbin/rsync_dirs` + +Verificare che il file non esista più sul computer di destinazione. + +Infine, creiamo un file sul computer di destinazione che non esiste sull'origine. Quindi sul target: + +`touch /home/your_user/a_different_file.txt` + +Eseguire lo script un'ultima volta: + +`/usr/local/sbin/rsync_dirs` + +Il file appena creato sulla destinazione dovrebbe essere sparito, perché non esiste sulla sorgente. + +Supponendo che tutto questo abbia funzionato come previsto, modificate lo script per sincronizzare tutte le directory desiderate. + +## Automatizzare il Tutto + +Non si vuole eseguire manualmente questo script ogni volta che si vuole sincronizzare, quindi il passo successivo è quello di farlo automaticamente. Supponiamo di voler eseguire questo script alle 23:00 di ogni sera. Per automatizzare questa operazione, utilizzare crontab: + +`crontab -e` + +In questo modo si ottiene il cron, che può avere un aspetto simile a questo: + +```bash +# Edit this file to introduce tasks to be run by cron. +# +# Each task to run has to be defined through a single line +# indicating with different fields when the task will be run +# and what command to run for the task +# +# To define the time you can provide concrete values for +# minute (m), hour (h), day of month (dom), month (mon), +# and day of week (dow) or use '*' in these fields (for 'any'). +# +# Notice that tasks will be started based on the cron's system +# daemon's notion of time and timezones. +# +# Output of the crontab jobs (including errors) is sent through +# email to the user the crontab file belongs to (unless redirected). +# +# For example, you can run a backup of all your user accounts +# at 5 a.m every week with: +# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ +# +# For more information see the manual pages of crontab(5) and cron(8) +# +# m h dom mon dow command +``` +Il cron è impostato su un orologio di 24 ore, quindi la voce da inserire in fondo al file è la seguente: + +`00 23 * * * /usr/local/sbin/rsync_dirs` + +Il comando deve essere eseguito alle ore 00, 23, 100, ogni giorno, ogni mese e ogni giorno della settimana. Salvare la voce di cron con: + +`Shift : wq!` + +... o con i comandi che il vostro editor preferito utilizza per salvare un file. + +## Conclusioni + +Sebbene `rsync` non sia flessibile o potente come altri strumenti, fornisce una semplice sincronizzazione dei file, che è sempre utile. From 1dc29d0521bf4178a0483ebc0992956982dd66b7 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 3 Jun 2022 05:31:54 -0400 Subject: [PATCH 48/51] New translations cloud_server_using_nextcloud.md (Italian) --- .../cms/cloud_server_using_nextcloud.it.md | 387 ++++++++++++++++++ 1 file changed, 387 insertions(+) create mode 100644 docs/guides/cms/cloud_server_using_nextcloud.it.md diff --git a/docs/guides/cms/cloud_server_using_nextcloud.it.md b/docs/guides/cms/cloud_server_using_nextcloud.it.md new file mode 100644 index 0000000000..f044909abf --- /dev/null +++ b/docs/guides/cms/cloud_server_using_nextcloud.it.md @@ -0,0 +1,387 @@ +- - - +title: Server Cloud con Nextcloud author: Steven Spencer contributors: Ezequiel Bruni, Colussi Franco tested with: 8.5 tags: + - cloud + - nextcloud +- - - + +# Server Cloud con Nextcloud + +## Prerequisiti e Presupposti + +* Server con Rocky Linux (è possibile installare Nextcloud su qualsiasi distribuzione Linux, ma questa procedura presuppone l'utilizzo di Rocky). +* Un elevato grado di comfort nell'operare dalla riga di comando per l'installazione e la configurazione. +* Conoscenza di un editor a riga di comando. Per questo esempio utilizziamo _vi_, ma potete usare il vostro editor preferito, se ne avete uno. +* Sebbene Nextcloud possa essere installato tramite un'applicazione snap, documenteremo due metodi di installazione, il modulo e il file .zip. +* Applicheremo i concetti del documento Apache "sites enabled" (linkato in basso) per l'impostazione delle directory nel metodo del file .zip. +* Utilizzeremo anche la procedura di hardening di _mariadb-server_ (anch'essa linkata più avanti) per la configurazione del database. +* In questo documento si presuppone che siate root, o che possiate esserlo usando _sudo_. +* Utilizziamo un dominio di esempio "yourdomain.com" nel metodo del file .zip. + +## Introduzione + +Se siete responsabili di un ambiente server per una grande (o anche piccola) azienda, potreste essere tentati dalle applicazioni cloud. L'utilizzo del cloud può liberare risorse per altre attività, ma c'è un aspetto negativo: la perdita di controllo dei dati aziendali. Se l'applicazione cloud è compromessa, potrebbero esserlo anche i dati della vostra azienda. + +Riportare il cloud nel proprio ambiente è un modo per recuperare la sicurezza dei dati a scapito di tempo ed energia. A volte è un costo che vale la pena pagare. + +Nextcloud offre un cloud open source che tiene conto della sicurezza e della flessibilità. Si noti che la creazione di un server Nextcloud è un buon esercizio, anche se alla fine si sceglie di portare il cloud fuori sede. La procedura seguente riguarda l'impostazione di Nextcloud su Rocky Linux. + +## Procedure comuni necessarie per entrambe le installazioni + +Ci sono diversi passaggi che sono gli stessi indipendentemente dal metodo di installazione utilizzato. Si tratta di installare i repository EPEL e Remi, configurare PHP e configurare mariadb. Il link a queste procedure è presente nel metodo di installazione del file .zip (secondo metodo). Siate consapevoli di questo. + +## Nextcloud - Metodo del modulo + +Perché utilizzare il modulo Nextcloud? Dopo aver abilitato il modulo, possiamo installare Nextcloud, che scaricherà quasi tutte le dipendenze. Dovrete comunque installare il database che preferite (mariadb, postgresql o sqlite), ma la vostra piattaforma web sarà gestita dai pacchetti Nextcloud, così come tutti gli script back-end. Lo svantaggio di questo metodo particolare è che si perde il controllo sulla posizione in cui si desidera installare Nextcloud. + +Quando si gestisce un gruppo di server o container con applicazioni web, un amministratore di sistema preferisce cercare le cose nello stesso punto, senza cercare di capire dove si è installato il pacchetto "A" rispetto al pacchetto "B". + +### Installazione e configurazione di repository e moduli + + +Per questa installazione sono necessari due repository. È necessario installare i pacchetti EPEL (Extra Packages for Enterprise Linux) e il repository Remi per PHP 8.0 (è richiesto un minimo di versione 7.3 o 7.4 e la versione Rocky Linux 7.4 (non abilitata di default) non contiene tutti i pacchetti di cui Nextcloud ha bisogno. Utilizzeremo invece PHP 8.0 dal repository Remi. + +Per installare EPEL esegui: + +`dnf install epel-release` + +To install the Remi repository run: + +`dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm` + +Quindi eseguire nuovamente `dnf update`. + +Eseguire il seguente comando per visualizzare l'elenco dei moduli php che possono essere abilitati: + +`dnf module list php` + +``` +Rocky Linux 8 - AppStream +Name Stream Profiles Summary +php 7.2 [d] common [d], devel, minimal PHP scripting language +php 7.3 common [d], devel, minimal PHP scripting language +php 7.4 common [d], devel, minimal PHP scripting language +php 7.4 common [d], devel, minimal PHP scripting language +Remi's Modular repository for Enterprise Linux 8 - x86_64 +Name Stream Profiles Summary +php remi-7.2 common [d], devel, minimal PHP scripting language +php remi-7.3 common [d], devel, minimal PHP scripting language +php remi-7.4 common [d], devel, minimal PHP scripting language +php remi-8.0 common [d], devel, minimal PHP scripting language +php remi-8.1 common [d], devel, minimal PHP scripting language +Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled +``` + +Vogliamo prendere il PHP più recente con cui Nextcloud è compatibile, che in questo momento è l'8.0, quindi abiliteremo il modulo: + +`dnf module enable php:remi-8.0` + +Per vedere come cambia l'output dell'elenco dei moduli, eseguite di nuovo il comando module list e vedrete la scritta "[e]" accanto a 8.0: + +`dnf module list php` + +L'output è di nuovo lo stesso, tranne che per questa riga: + +`php remi-8.0 [e] common [d], devel, minimal PHP scripting language` + +Il passo finale consiste nell'abilitare la versione stabile di Nextcloud dai moduli. È facile come: + +`dnf module enable nextcloud:nextcloud-stable` + +### Installazione dei pacchetti + +Per vedere cosa offre l'abilitazione del modulo Nextcloud da installare, procedere come segue: + +`dnf list available | grep nextcloud` che mostrerà un risultato come questo: + +``` +nextcloud.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +nextcloud-client.x86_64 3.2.4-2.el8 epel +nextcloud-client-devel.x86_64 3.2.4-2.el8 epel +nextcloud-client-dolphin.x86_64 3.2.4-2.el8 epel +nextcloud-client-libs.x86_64 3.2.4-2.el8 epel +nextcloud-client-nautilus.x86_64 3.2.4-2.el8 epel +nextcloud-httpd.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +nextcloud-mysql.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +nextcloud-nginx.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +nextcloud-postgresql.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +nextcloud-sqlite.noarch 22.0.0-2.module_el8+12398+2facbd17 epel-modular +``` +Il nostro esempio utilizza Apache e mariadb, quindi per installare ciò di cui abbiamo bisogno, dobbiamo semplicemente procedere come segue: + +`dnf install nextcloud nextcloud-httpd nextcloud-mysql mariadb-server` + +### Configurazione + +#### Configurazione di Apache + +Impostare l'avvio di _apache_ all'avvio del sistema: + +`systemctl enable httpd` + +Poi avviatelo: + +`systemctl start httpd` + +Quando si installa Nextcloud utilizzando il modulo, la configurazione viene già creata per l'utente. In realtà, esistono più configurazioni. È possibile trovarle cercando nella cartella conf.d in questo modo: `ls -al /etc/httpd/conf.d` che dovrebbe mostrare un risultato simile a questo: + +``` +-rw-r--r--. 1 root root 400 Nov 15 03:13 README +-rw-r--r--. 1 root root 2926 Nov 15 03:13 autoindex.conf +-rw-r--r--. 1 root root 994 Jul 14 2021 nextcloud-access.conf.avail +-rw-r--r--. 1 root root 278 Jul 14 2021 nextcloud-auth-any.inc +-rw-r--r--. 1 root root 313 Jul 14 2021 nextcloud-auth-local.inc +-rw-r--r--. 1 root root 263 Jul 14 2021 nextcloud-auth-none.inc +-rw-r--r--. 1 root root 2407 Jul 14 2021 nextcloud-defaults.inc +-rw-r--r--. 1 root root 1893 Jul 14 2021 nextcloud.conf +-rw-r--r--. 1 root root 1668 Dec 16 06:57 php.conf +-rw-r--r--. 1 root root 1252 Nov 15 03:10 userdir.conf +-rw-r--r--. 1 root root 574 Nov 15 03:10 welcome.conf +``` +La configurazione principale per Nextcloud è `nextcloud.conf`, ma si consiglia di esaminare gli altri file. Le istruzioni per l'uso sono riportate all'inizio di ogni file. Nella nostra installazione di laboratorio, localhost non è disponibile da nessuna interfaccia web. Se si guarda all'inizio del file `nextcloud-access.conf.avail`, si vedrà un avviso che invita ad abilitarlo solo dopo che l'account amministratore e l'installazione iniziale sono stati completati. Poiché questo non è possibile nell'istanza di laboratorio, lo stiamo facendo in anticipo: + +`ln -s /etc/httpd/conf.d/nextcloud-access.conf.avail /etc/httpd/conf.d/z-nextcloud-access.conf` + +Abbiamo anche bisogno di un file speciale vuoto per poter installare Nextcloud. Questo file risiede in `/etc/nextcloud` e si chiama CAN_INSTALL. Per crearlo, è sufficiente procedere come segue: + +`touch /etc/nextcloud/CAN_INSTALL` + +#### Configurazione di PHP + + +È necessario impostare il fuso orario per PHP. Per farlo, aprire php.ini con il proprio editor di testo: + +`vi /etc/php.ini` + +Trovate quindi la riga che dice: + +`;date.timezone =` + +È necessario rimuovere l'annotazione (;) e impostare il fuso orario. Per il nostro esempio di fuso orario, dovremmo inserire uno dei due: + +`date.timezone = "America/Chicago"` + +O + +`date.timezone = "US/Central"` + +Quindi salvare e chiudere il file php.ini. + +Si noti che, per mantenere le cose invariate, il fuso orario nel file _php.ini_ dovrebbe corrispondere a quello della macchina. Per sapere a quale valore è impostato, procedere come segue: + +`ls -al /etc/localtime` + +Questo dovrebbe mostrare qualcosa di simile, supponendo che abbiate impostato il fuso orario quando avete installato Rocky Linux e che viviate nel fuso orario centrale: + +`/etc/localtime -> /usr/share/zoneinfo/America/Chicago` + +#### Configurazione di mariadb-server + + +Impostare l'avvio di _mariadb-server_ all'avvio del sistema: + +`systemctl enable mariadb` + +E poi avviarlo: + +`systemctl restart mariadb` + +Anche in questo caso, come indicato in precedenza, per la configurazione iniziale si utilizzerà la procedura di configurazione per l'hardening di _mariadb-server_ che si trova [qui](../database/database_mariadb-server.md). + +#### Configurazione di Nextcloud + +Ora arriva il divertimento! Innanzitutto, assicuratevi che i vostri servizi siano attivi. Se avete seguito i passaggi precedenti, dovrebbero essere già in funzione. Ci sono stati diversi passaggi tra questi avvii iniziali del servizio, quindi andiamo avanti e riavviamoli, per essere sicuri: + +``` +systemctl restart httpd +systemctl restart mariadb +``` + +Se tutto si riavvia e non ci sono problemi, siete pronti a proseguire. + +Per effettuare la configurazione iniziale, vogliamo caricare il sito in un browser web. Nella nostra istanza di laboratorio, non abbiamo impostato alcun hostname, quindi ci colleghiamo al sito tramite l'indirizzo IP in questo modo: + +`http://192.168.1.108/nextcloud` + +Supponendo di aver fatto tutto correttamente fino a questo momento, dovrebbe apparire la schermata di configurazione di Nextcloud: + +![schermata di accesso a nextcloud](../images/nextcloud_screen.jpg) + +Ci sono un paio di cose che vogliamo fare in modo diverso rispetto alle impostazioni predefinite: + +* Nella parte superiore della pagina web, dove è scritto "Crea un account amministratore", impostare l'utente e la password. Ai fini di questo documento, inseriamo "admin" e impostiamo una password forte. Ricordate di salvarla in un posto sicuro (come un gestore di password) per non perderla! Anche se avete digitato in questo campo, non premete "Invio" prima di aver completato tutti i campi di impostazione! +* Nella sezione "Configura il database", cambiare da "SQLite" a "MySQL/MariaDB" facendo clic sul pulsante. +* Nei campi "Utente del database" e "Password del database" digitate l'utente root di MariaDB e la password impostata in precedenza +* Nel campo "Nome del database", digitare "nextcloud" +* Nel campo "localhost", digitate "localhost:3306" (3306 è la porta di connessione predefinita di _mariadb_ ) + +Una volta fatto tutto questo, fate clic su `Fine dell'installazione` e sarete subito operativi. + +### Note per l'Amministratore di Sistema + +Come già detto, se si usa l'installazione del modulo per Nextcloud, Nextcloud metterà le cose dove pensa che debbano essere, non dove l'amministratore di sistema potrebbe cercarle. Per questo motivo, come parte delle fasi di configurazione, raccomando di creare un file README.txt in ogni posizione in cui l'amministratore di sistema dovrebbe logicamente cercare. + +Venivo da un ambiente in cui usavamo `/etc/httpd/sites-enabled` per i file di configurazione (si vedano i passaggi alternativi per l'installazione) e mettevamo i nostri file web in `/var/www/sub-domains/[site_name]/html`. Se dovessi usare l'installazione del modulo di Nextcloud, vorrei inserire un file README.txt in entrambe le posizioni. + +Il file README.txt in `/etc/httpd/sites-enabled/` potrebbe contenere: + +``` +Nextcloud was installed using the module. La configurazione si trova in /etc/httpd/conf.d/nextcloud.conf +``` + +Mentre il file README.txt in `/var/www/sub-domains/[site_name]/html` potrebbe contenere: + +``` +Nextcloud was installed using the module. I file web si trovano in /usr/share/nextcloud +``` +## Installazione .zip di Nextcloud + +Se l'installazione del modulo è così semplice, perché prendere in considerazione il metodo di installazione del file .zip? Il motivo è il controllo dell'ambiente. Come indicato nella procedura di installazione del modulo Nextcloud, Nextcloud sceglie dove mettere i file web, dove mettere i file di configurazione e la maggior parte delle altre opzioni di configurazione. L'uso del metodo di installazione dei file .zip è sicuramente più intensivo del metodo di installazione dei moduli, ma *offre* all'Amministratore di Sistema un maggiore controllo sulla destinazione dei file. + +### Installazione e configurazione dei repository (stessa procedura) + +L'operazione si svolge esattamente come la [procedura di installazione del modulo](#repositories). + +### Installazione dei pacchetti + +Abbiamo bisogno di molti pacchetti installati. Alcuni di questi potrebbero essere già installati con l'installazione predefinita di Rocky Linux, ma è bene accertarsene eseguendo il seguente comando: + +`dnf install httpd mariadb-server vim wget zip unzip libxml2 openssl php80-php php80-php-ctype php80-php-curl php80-php-gd php80-php-iconv php80-php-json php80-php-libxml php80-php-mbstring php80-php-openssl php80-php-posix php80-php-session php80-php-xml php80-php-zip php80-php-zlib php80-php-pdo php80-php-mysqlnd php80-php-intl php80-php-bcmath php80-php-gmp` + +### Configurazione di pacchetti e directory + +#### Configurazione di apache + +Impostare l'avvio di _apache_ all'avvio del sistema: + +`systemctl enable httpd` + +Come già detto, per configurare Apache si utilizza la procedura "Siti Apache Abilitati" che si trova [qui](../web/apache-sites-enabled.md). Seguite questa guida per impostare le directory di configurazione e modificare il file _httpd.conf_, quindi tornate a questo documento per i passi restanti. + +#### Creare la Configurazione + +Per Nextcloud, è necessario creare il seguente file di configurazione. + +`vi /etc/httpd/sites-available/com.yourdomain.nextcloud` + +Il file di configurazione dovrebbe essere simile a questo: + +``` + + DocumentRoot /var/www/sub-domains/com.yourdomain.nextcloud/html/ + ServerName nextcloud.yourdomain.com + + Require all granted + AllowOverride All + Options FollowSymLinks MultiViews + + Dav off + + + +``` + +Al termine, salvare le modifiche (con `SHIFT:wq!` per _vi_). + +Quindi, creare un collegamento a questo file in /etc/httpd/sites-enabled: + +`ln -s /etc/httpd/sites-available/com.yourdomain.nextcloud /etc/httpd/sites-enabled/` + +#### Creazione della Directory... + +Come indicato nella configurazione precedente, è necessario creare la _DocumentRoot_. Questo può essere fatto da: + +`mkdir -p /var/www/sub-domains/com.yourdomain.com/html` + +È qui che verrà installata la nostra istanza Nextcloud. + +#### Configurare PHP (stessa procedura) + +L'operazione si svolge esattamente come la [procedura di installazione del modulo](#confphp). + +#### Configurare Mariadb (stessa procedura) + +L'operazione si svolge esattamente come la [procedura di installazione del modulo](#mariadbproc). + +### Installazione di Nextcloud + +Questo metodo di installazione del server Nextcloud utilizza il file .zip di installazione. + +#### Ottenere il file .zip di Nextcloud e decomprimerlo + +I prossimi passi presuppongono che siate connessi in remoto al vostro server Nextcloud tramite _ssh_ e che abbiate una console remota aperta: + +* Accedere al [sito web di Nextcloud](https://nextcloud.com/) +* Passate il mouse su "Get Nextcloud", che farà apparire un menu a discesa. +* Fare clic su "Pacchetti Server". +* Fate clic con il tasto destro del mouse su "Download Nextcloud" e copiate l'indirizzo del link. (la sintassi esatta è diversa da browser a browser) +* Nella console remota del server Nextcloud, digitate "wget", quindi uno spazio e incollate il testo appena copiato. Si dovrebbe ottenere qualcosa di simile a quanto segue: `wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip` +* Una volta premuto il tasto Invio, il download del file .zip inizierà e si concluderà abbastanza rapidamente. + +Una volta completato il download, decomprimere il file zip di Nextcloud utilizzando la seguente procedura: + +`unzip nextcloud-21.0.1.zip` + +### Copiare il contenuto e modificare i permessi + +Dopo aver completato la fase di decompressione, si dovrebbe avere una nuova directory in /root chiamata "nextcloud" Passare a questa directory: + +`cd nextcloud` + +E copiare o spostare il contenuto nella nostra _DocumentRoot_: + +`cp -Rf * /var/www/sub-domains/com.yourdomain.nextcloud/html/` + +O + +`mv * /var/www/sub-domains/com.yourdomain.nextcloud/html/` + +Ora che tutto è al suo posto, il passo successivo è assicurarsi che apache possieda la directory. Per farlo, eseguire: + +`chown -Rf apache.apache /var/www/sub-domains/com.yourdomain.nextcloud/html` + +Per motivi di sicurezza, vogliamo anche spostare la cartella "data" dall'interno all'esterno della _DocumentRoot_. Per farlo, utilizzate il seguente comando: + +`mv /var/www/sub-domains/com.yourdomain.nextcloud/html/data /var/www/sub-domains/com.yourdomain.nextcloud/` + +### Configurazione di Nextcloud + +Ora arriva il divertimento! Innanzitutto, assicuratevi che i vostri servizi siano attivi. Se avete seguito i passaggi precedenti, dovrebbero essere già in funzione. Ci sono stati diversi passaggi tra questi avvii iniziali del servizio, quindi andiamo avanti e riavviamoli, per essere sicuri: + +``` +systemctl restart httpd +systemctl restart mariadb +``` + +Se tutto si riavvia e non ci sono problemi, siete pronti a proseguire. + +Per effettuare la configurazione iniziale, vogliamo caricare il sito in un browser web: + +`http://nextcloud.yourdomain.com/` + +Dovrebbe apparire questa schermata: + +![schermata di accesso a nextcloud](../images/nextcloud_screen.jpg) + +Ci sono un paio di cose che vogliamo fare in modo diverso rispetto alle impostazioni predefinite: + +* Nella parte superiore della pagina web, dove è scritto "Crea un account amministratore", impostare l'utente e la password. Ai fini di questo documento, inseriamo "admin" e impostiamo una password forte. Ricordate di salvarla in un posto sicuro (come un gestore di password) per non perderla! Anche se avete digitato in questo campo, non premete "Invio" prima di aver completato tutti i campi di impostazione! +* Nella sezione "Archiviazione e database", cambiare la posizione della "Cartella dati" dalla radice predefinita del documento alla posizione in cui abbiamo spostato la cartella dati in precedenza: `/var/www/sub-domains/com.yourdomain.nextcloud/data` +* Nella sezione "Configura il database", cambiare da "SQLite" a "MySQL/MariaDB" facendo clic sul pulsante. +* Nei campi "Utente del database" e "Password del database" digitate l'utente root di MariaDB e la password impostata in precedenza +* Nel campo "Nome del database", digitare "nextcloud" +* Nel campo "localhost", digitate "localhost:3306" (3306 è la porta di connessione predefinita di _mariadb_ ) + +Ora incrociate le dita e fate clic su "Finish Setup". + +La finestra del browser si aggiorna per un po' e poi di solito non ricarica il sito. Inserite nuovamente l'URL nella finestra del browser e vi troverete di fronte alle prime pagine predefinite. + +A questo punto l'utente amministrativo è già (o dovrebbe essere) loggato, e ci sono diverse pagine informative pensate per farvi acquisire familiarità. La "Dashboard" è ciò che gli utenti vedranno al primo accesso. L'utente amministrativo può ora creare altri utenti, installare altre applicazioni e svolgere molte altre attività. + +Il file "Nextcloud Manual.pdf" è il manuale d'uso, in modo che gli utenti possano familiarizzare con ciò che è disponibile. L'utente amministrativo dovrebbe leggere o almeno scansionare i punti salienti del manuale di amministrazione [sul sito web di Nextcloud](https://docs.nextcloud.com/server/21/admin_manual/) + +## Prossimi Passi + +A questo punto, non dimenticate che si tratta di un server su cui memorizzerete i dati aziendali. È importante mettere in sicurezza il sito con un firewall, [configurare i backup](../backup/rsnapshot_backup.md), proteggere il sito con un [SSL](../security/generating_ssl_keys_lets_encrypt.md) e qualsiasi altra operazione necessaria per mantenere i dati al sicuro. + +## Conclusioni e altre risorse +La decisione di portare il cloud aziendale all'interno dell'azienda deve essere valutata con attenzione. Per coloro che decidono che mantenere i dati aziendali in locale è preferibile rispetto a un host cloud esterno, Nextcloud è una buona alternativa. From d996fe5ece7f5a23592333e93762e247351af46a Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 3 Jun 2022 06:44:47 -0400 Subject: [PATCH 49/51] New translations dokuwiki_server.md (Italian) --- docs/guides/cms/dokuwiki_server.it.md | 257 ++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 docs/guides/cms/dokuwiki_server.it.md diff --git a/docs/guides/cms/dokuwiki_server.it.md b/docs/guides/cms/dokuwiki_server.it.md new file mode 100644 index 0000000000..b6d03a3a5c --- /dev/null +++ b/docs/guides/cms/dokuwiki_server.it.md @@ -0,0 +1,257 @@ +- - - +title: DokuWiki author: Steven Spencer contributors: Ezequiel Bruni, Franco Colussi tested with: 8.5 tags: + - Darò i comandi per far funzionare EPEL su RHEL 8, ma se sei su RHEL 6 o RHEL 7 puoi trovare quelle istruzioni sul wiki. + - documentation +- - - + +# Server DokuWiki + +## Prerequisiti e Presupposti + +* Un'istanza di Rocky Linux installata su un server, un container o una macchina virtuale. +* Abilità nel modificare i file di configurazione dalla riga di comando con un editor (gli esempi qui riportati utilizzano _vi_, ma è possibile sostituire l'editor preferito) +* Conoscenza delle applicazioni web e della loro configurazione. +* Il nostro esempio utilizzerà [Apache Sites Enabled](../web/apache-sites-enabled.md) per l'impostazione, quindi è una buona idea rivedere questa routine se si intende seguirla. +* In questo esempio utilizzeremo "wiki-doc.yourdomain.com" come nome di dominio. +* In questo documento si presuppone che siate l'utente root o che possiate arrivarci con _sudo_. +* Si presuppone una nuova installazione del sistema operativo, ma questo **NON** è un requisito. + +## Introduzione + +La documentazione può assumere diverse forme in un'organizzazione. Avere un repository a cui fare riferimento per la documentazione è inestimabile. Un wiki (che in hawaiano significa _veloce_ ) è un modo per conservare in una posizione centralizzata la documentazione, le note di processo, le basi di conoscenza aziendale e persino gli esempi di codice. I professionisti IT che mantengono un wiki, anche di nascosto, hanno una polizza assicurativa incorporata contro la dimenticanza di una routine oscura. + +DokuWiki è un wiki maturo, veloce, che funziona senza database, ha funzioni di sicurezza integrate ed è relativamente facile da distribuire. Per ulteriori informazioni su cosa può fare DokuWiki, consultate la sua [pagina web](https://www.dokuwiki.org/dokuwiki). + +DokuWiki è solo uno dei tanti wiki disponibili, anche se è piuttosto buono. Un grande vantaggio è che DokuWiki è relativamente leggero e può essere eseguito su un server in cui sono già in esecuzione altri servizi, a condizione che si disponga di spazio e memoria. + +## Installazione delle Dipendenze + +La versione minima di PHP per DokuWiki è ora la 7.2, che è esattamente quella con cui Rocky Linux 8 viene fornito. Qui si specificano pacchetti che potrebbero essere già installati: + +`dnf install tar wget httpd php php-gd php-xml php-json php-mbstring` + +Verrà visualizzato un elenco di dipendenze aggiuntive che verranno installate e questo prompt: + +`Is this ok [y/N]:` + +Rispondete con "y" e premete "Invio" per installare. + +## Creare Directory e Modificare la Configurazione + +### Configurazione di Apache + +Se avete letto la procedura [Apache Sites Enabled](../web/apache-sites-enabled.md), sapete che è necessario creare alcune directory. Inizieremo con le aggiunte alla directory di configurazione _httpd_: + +`mkdir -p /etc/httpd/{sites-available,sites-enabled}` + +È necessario modificare il file httpd.conf: + +`vi /etc/httpd/conf/httpd.conf` + +E aggiungete questo in fondo al file: + +`Include /etc/httpd/sites-enabled` + +Creare il file di configurazione del sito in sites-available: + +`vi /etc/httpd/sites-available/com.yourdomain.wiki-doc` + +Il file di configurazione dovrebbe essere simile a questo: + +``` + + ServerName wiki-doc.yourdomain.com + DocumentRoot /var/www/sub-domains/com.yourdomain.wiki-doc/html + + + + AllowOverride All + Require all denied + + + Order allow,deny + Deny from all + + + + ErrorLog /var/log/httpd/wiki-doc.yourdomain.com_error.log + CustomLog /var/log/httpd/wiki-doc.yourdomain_access.log combined + +``` + +Si noti che l'opzione "AllowOverride All" di cui sopra consente al file .htaccess (sicurezza specifica della directory) di funzionare. + +Procedere con il collegamento del file di configurazione in sites-enabled, ma non avviare ancora i servizi web: + +`ln -s /etc/httpd/sites-available/com.yourdomain.wiki-doc /etc/httpd/sites-enabled/` + +### Apache DocumentRoot + +Dobbiamo anche creare la nostra _DocumentRoot_. Per ora fare: + +`mkdir -p /var/www/sub-domains/com.yourdomain.wiki-doc/html` + +## Installazione di DokuWiki + +Nel server, passare alla root directory. + +`cd /root` + +Ora che il nostro ambiente è pronto, prendiamo l'ultima versione stabile di DokuWiki. Potete trovarlo andando alla [pagina di download](https://download.dokuwiki.org/) e sul lato sinistro della pagina, alla voce "Version", vedrete "Stable (Recommended) (direct link)." + +Fare clic con il tasto destro del mouse sulla parte "(link diretto)" e copiare l'indirizzo del link. Nella console del vostro server DokuWiki, digitate "wget" e uno spazio e poi incollate il link copiato nel terminale. Si dovrebbe ottenere qualcosa di simile a questo: + +`wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz` + +Prima di decomprimere l'archivio, si può dare un'occhiata al contenuto usando `tar ztf` per vedere il contenuto dell'archivio: + +`tar ztv dokuwiki-stable.tgz` + +Notate la directory datata che precede tutti gli altri file e che ha un aspetto simile a questo? + +``` +... (more above) +dokuwiki-2020-07-29/inc/lang/fr/resetpwd.txt +dokuwiki-2020-07-29/inc/lang/fr/draft.txt +dokuwiki-2020-07-29/inc/lang/fr/recent.txt +... (more below) +``` +Non vogliamo che questa directory venga decompressa quando decomprimiamo l'archivio, quindi useremo alcune opzioni con tar per escluderla. La prima opzione è "--strip-components=1" che rimuove la directory principale. + +La seconda opzione è l'opzione "-C", che indica a tar dove si vuole decomprimere l'archivio. Quindi decomprimere l'archivio con questo comando: + +`tar xzf dokuwiki-stable.tgz --strip-components=1 -C /var/www/sub-domains/com.yourdomain.wiki-doc/html/` + +Una volta eseguito questo comando, tutto DokuWiki dovrebbe trovarsi nella nostra _DocumentRoot_. + +È necessario fare una copia del file _.htaccess.dist_ fornito con DokuWiki e conservare anche quello vecchio, nel caso in cui si debba tornare all'originale in futuro. + +Nel processo, cambieremo il nome di questo file in _.htaccess_, che è quello che _apache_ cercherà. Per ora fare: + +`cp /var/www/sub-domains/com.yourdomain.wiki-doc/html/.htaccess{.dist,}` + +Ora dobbiamo cambiare la proprietà della nuova directory e dei suoi file all'utente e al gruppo _apache_: + +`chown -Rf apache.apache /var/www/sub-domains/com.yourdomain.wiki-doc/html` + +## Impostazione del DNS o di /etc/hosts + +Prima di poter accedere all'interfaccia di DokuWiki, è necessario impostare la risoluzione dei nomi per questo sito. A scopo di test, è possibile utilizzare il file _/etc/hosts_. + +In questo esempio, supponiamo che DokuWiki venga eseguito su un indirizzo IPv4 privato di 10.56.233.179. Supponiamo anche che si stia modificando il file _/etc/hosts_ su una workstation Linux. Per farlo, eseguire: + +`sudo vi /etc/hosts` + +Quindi modificate il vostro file hosts in modo che assomigli a questo (notare l'indirizzo IP in alto nell'esempio seguente): + +``` +127.0.0.1 localhost +127.0.1.1 myworkstation-home +10.56.233.179 wiki-doc.yourdomain.com wiki-doc + +# The following lines are desirable for IPv6 capable hosts +::1 ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +``` + +Una volta terminati i test e pronti a rendere il tutto operativo per tutti, sarà necessario aggiungere questo host a un server DNS. Si può utilizzare un [server DNS privato](../dns/private_dns_server_using_bind.md) o un server DNS pubblico. + +## Avviare httpd + +Prima di avviare _httpd_, facciamo un test per verificare che la nostra configurazione sia corretta: + +`httpd -t` + +Dovresti ottenere: + +`Syntax OK` + +In caso affermativo, si dovrebbe essere pronti ad avviare _httpd_ e a terminare la configurazione. Iniziamo abilitando l'avvio di _httpd_ all'avvio del sistema: + +`systemctl enable httpd` + +E poi avviarlo: + +`systemctl start httpd` + +## Testare DokuWiki + +Ora che il nostro nome host è stato impostato per il test e il servizio Web è stato avviato, il passo successivo è aprire un browser Web e digitare questo nella barra degli indirizzi: + +`http://wiki-doc/install.php` + +O + +`http://wiki-doc.yourdomain.com/install.php` + +Entrambi dovrebbero funzionare se si imposta il file hosts come sopra. In questo modo si accede alla schermata di impostazione per completare la configurazione: + +* Nel campo "Nome del wiki", digitare il nome del nostro wiki. Esempio "Documentazione tecnica" +* Nel campo "Superuser", digitare il nome utente amministrativo. Esempio "admin" +* Nel campo "Nome reale", digitare il nome reale dell'utente amministrativo. +* Nel campo "E-Mail", digitare l'indirizzo e-mail dell'utente amministrativo. +* Nel campo "Password", digitare la password sicura per l'utente amministrativo. +* Nel campo "once again", digitare nuovamente la stessa password. +* Nel menu a discesa "Initial ACL Policy", scegliere l'opzione più adatta all'ambiente. +* Scegliere la casella di controllo appropriata per la licenza con cui si desidera inserire i contenuti. +* Lasciare selezionata o deselezionare la casella di controllo "Una volta al mese, invia i dati anonimi di utilizzo agli sviluppatori di DokuWiki" +* Fare clic sul pulsante "Salva" + +Il wiki è ora pronto per l'aggiunta di contenuti. + +## Mettere in sicurezza DokuWiki + +Oltre al criterio ACL appena creato, si consideri che: + +### Il vostro firewall + +Prima di definire il tutto, è necessario pensare alla sicurezza. Innanzitutto, il server dovrebbe essere dotato di un firewall. Si presuppone che si stia usando _iptables_ e che si sia [abilitato _iptables_](../security/enabling_iptables_firewall.md), ma se si vuole usare invece _firewalld_, basta modificare le regole di _firewalld_ di conseguenza. + +Invece di consentire a tutti l'accesso al wiki, assumeremo che chiunque si trovi sulla rete 10.0.0.0/8 sia sulla vostra rete locale privata e che queste siano le uniche persone che hanno bisogno di accedere al sito. Di seguito è riportato un semplice script per il firewall _iptables_. + +Si noti che potrebbero essere necessarie altre regole per altri servizi su questo server e che questo esempio prende in considerazione solo i servizi web. + +Per prima cosa, modificare o creare il file _/etc/firewall.conf:_ + +`vi /etc/firewall.conf` + +``` +#IPTABLES=/usr/sbin/iptables + +# Unless specified, the defaults for OUTPUT is ACCEPT +# The default for FORWARD and INPUT is DROP +# +echo " clearing any existing rules and setting default policy.." +iptables -F INPUT +iptables -P INPUT DROP +# web ports +iptables -A INPUT -p tcp -m tcp -s 10.0.0.0/8 --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m tcp -s 10.0.0.0/8 --dport 443 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT +iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset +iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable + +/usr/sbin/service iptables save +``` + +Una volta creato lo script, assicuratevi che sia eseguibile: + +`chmod +x /etc/firewall.conf` + +Eseguire quindi lo script: + +`/etc/firewall.conf` + +Questo eseguirà le regole e le salverà in modo che vengano ricaricate al successivo avvio di _iptables_ o al boot. + +### SSL + +Per una maggiore sicurezza, dovreste considerare l'utilizzo di un SSL, in modo che tutto il traffico web sia criptato. È possibile acquistare un SSL da un provider SSL o utilizzare [Let's Encrypt](../security/generating_ssl_keys_lets_encrypt.md) + +## Conclusione + +Che si tratti di documentare processi, politiche aziendali, codici di programma o altro, un wiki è un ottimo modo per farlo. DokuWiki è un prodotto sicuro, flessibile, facile da usare, relativamente semplice da installare e distribuire, ed è un progetto stabile che esiste da molti anni. From 2e09a3bb490d5f720cfc5a89fcdf7e4b3bd59487 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Fri, 3 Jun 2022 11:05:01 -0400 Subject: [PATCH 50/51] New translations asterisk_installation.md (Italian) --- .../asterisk_installation.it.md | 216 ++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 docs/guides/communications/asterisk_installation.it.md diff --git a/docs/guides/communications/asterisk_installation.it.md b/docs/guides/communications/asterisk_installation.it.md new file mode 100644 index 0000000000..4643f460cc --- /dev/null +++ b/docs/guides/communications/asterisk_installation.it.md @@ -0,0 +1,216 @@ +--- +title: Installazione di Asterisk +--- + +# Installazione di Asterisk su Rocky Linux + +**Che cos'è Asterisk?** + +Asterisk è un framework open source per la creazione di applicazioni di comunicazione. Inoltre, Asterisk trasforma un normale computer in un server di comunicazione, oltre ad alimentare sistemi IP PBX, gateway VoIP, server per conferenze e altre soluzioni personalizzate. È utilizzato da piccole imprese, grandi aziende, call center, vettori e agenzie governative in tutto il mondo. + +Asterisk è gratuito e open source ed è sponsorizzato da [Sangoma](https://www.sangoma.com/). Sangoma offre anche prodotti commerciali che utilizzano Asterisk come base, a seconda della vostra esperienza e del vostro budget, l'utilizzo di questi prodotti potrebbe essere più vantaggioso rispetto alla creazione di un proprio sistema. Solo voi e la vostra organizzazione conoscete la risposta. + +Va notato che questa guida richiede che l'amministratore faccia una discreta quantità di ricerche per conto proprio. L'installazione di un server di comunicazione non è un processo difficile, ma la sua gestione può essere piuttosto complicata. Sebbene questa guida renda il vostro server operativo, non sarà completamente pronto per l'uso in produzione. + +## Prerequisiti + +Per completare questa guida sono necessarie almeno le seguenti competenze e strumenti: + +* Una macchina con Rocky Linux +* Un livello di comfort nella modifica dei file di configurazione e nell'emissione di comandi dalla riga di comando +* Conoscenza dell'uso di un editor a riga di comando (qui usiamo `vi`, ma potete sostituirlo con il vostro editor preferito) +* È necessario avere accesso a root e, idealmente, essere registrati come utente root nel proprio terminale +* I repository EPEL di Fedora +* La possibilità di accedere come root o di eseguire comandi di root con _sudo_. Tutti i comandi qui presenti presuppongono un utente con diritti _sudo_, ma i processi di configurazione e di compilazione vengono eseguiti con `sudo -s`. +* Per ottenere l'ultima versione di Asterisk, è necessario utilizzare `curl` o `wget`. Questa guida utilizza `wget`, ma se si desidera utilizzare la stringa `curl` appropriata, è possibile sostituirla. + +## Aggiornare Rocky Linux e installare `wget` + +`sudo dnf -y update` + +In questo modo il server verrà aggiornato con tutti i pacchetti rilasciati o aggiornati dall'ultimo aggiornamento o installazione. Per installare EPEL esegui: + +`sudo dnf install wget` + +## Impostare l'Hostname + +Impostate il nome host sul dominio che userete per Asterisk. + +`sudo hostnamectl set-hostname asterisk.example.com` + +## Aggiungere i repository necessari + +Per prima cosa, installare EPEL (Extra Packages for Enterprise Linux): + +`sudo dnf -y install epel-release` + +Quindi, attivare i PowerTools di Rocky Linux: + +`sudo dnf config-manager --set-enabled powertools` + +## Installare gli strumenti di sviluppo + + sudo dnf group -y install "Development Tools" + sudo dnf -y install git wget + + +## Installare Asterisk + +### Scaricare e configurare la build di Asterisk + +Prima di scaricare questo script, assicuratevi di avere la versione più recente. Per farlo, visitate il sito http://downloads.asterisk.org/pub/telephony/asterisk/ e cercate l'ultima versione di Asterisk. Quindi copiate la posizione del link. Al momento della stesura di questo documento, la build più recente era la seguente: + +``` +wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18.6.0.tar.gz +tar xvfz asterisk-18-current.tar.gz +cd asterisk-18.6.0/ +``` + +Prima di eseguire il comando `install_prereq` (e gli altri comandi), è necessario essere superutente o root. A questo punto è molto più facile entrare in _sudo_ in modo permanente per un po'. Usciremo da _sudo_ più avanti nel processo: + +``` +sudo -s +contrib/scripts/install_prereq install +``` + +Al termine dello script si dovrebbe vedere quanto segue: + +``` +############################################# +## install completed successfully +############################################# +``` + +Ora che tutti i pacchetti necessari sono installati, il prossimo passo è configurare e costruire Asterisk: + +`./configure --libdir=/usr/lib64 --with-jansson-bundled=yes` + +Supponendo che la configurazione venga eseguita senza problemi, si dovrebbe ottenere un grande emblema ASCII di Asterisk, seguito dal seguente messaggio su Rocky Linux: + +``` +configure: Package configured for: +configure: OS type : linux-gnu +configure: Host CPU : x86_64 +configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu : +configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu : +``` + +### Impostare le opzioni del menu Asterisk [Per ulteriori opzioni] + +Questa è una delle fasi in cui l'amministratore deve fare i compiti a casa. Ci sono molte opzioni di menu che possono essere necessarie o meno. Eseguire il seguente comando: + +`make menuselect` + +vi porterà a una [schermata di selezione dei menu](../images/asterisk_menuselect.png) + +Esaminate attentamente queste opzioni e scegliete in base alle vostre esigenze. Come già detto, potrebbe essere necessario un ulteriore lavoro a casa. + +### Creare e Installare Asterisk + +Per costruire, vogliamo eseguire i seguenti comandi in successione: + +``` +make +make install +``` + +L'installazione della documentazione non è obbligatoria, ma a meno che non siate esperti di server di comunicazione, è consigliabile installarla: + +`make progdocs` + +Quindi installare il PBX di base e configurare il sistema. Il PBX di base è proprio questo, molto semplice! Probabilmente sarà necessario apportare delle modifiche per far funzionare il PBX come si desidera. + +``` +make basic-pbx +make config +``` + +## Configurazione di Asterisk + +### Creare un Utente e un Gruppo + +Avrete bisogno di un utente specifico solo per asterisk. Tanto vale crearlo subito. + +``` +groupadd asterisk +useradd -r -d /var/lib/asterisk -g asterisk asterisk +chown -R asterisk.asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib64/asterisk +restorecon -vr {/etc/asterisk,/var/lib/asterisk,/var/log/asterisk,/var/spool/asterisk} +``` + +Ora che la maggior parte del lavoro è stata completata, si può uscire dal comando `sudo -s`. Questo richiederà che la maggior parte dei comandi rimanenti utilizzino nuovamente _sudo_: + +`exit` + +### Imposta Utente e Gruppo Predefiniti + +`sudo vi /etc/sysconfig/asterisk` + +Rimuovere i commenti nelle due righe sottostanti e salvare: + +``` +AST_USER="asterisk" +AST_GROUP="asterisk" +``` + +`sudo vi /etc/asterisk/asterisk.conf` + +Rimuovere i commenti nelle due righe sottostanti e salvare: + +``` +runuser = asterisk ; The user to run as. +rungroup = asterisk ; The group to run as. +``` + +### Configurare il Servizio Asterisk + +`sudo systemctl enable asterisk` + +### Configurare il Firewall + +Questo esempio utilizza `firewalld` per il firewall, che è quello predefinito in Rocky Linux. L'obiettivo è quello di aprire le porte SIP al mondo e di aprire RTP (Realtime Transport Protocol) al mondo sulle porte 10000-20000, come raccomandato dalla documentazione di Asterisk. + +Tenete presente che quasi certamente avrete bisogno di altre regole firewall per altri servizi forward-facing (HTTP/HTTPS) che probabilmente vorrete limitare ai vostri indirizzi IP. Ciò esula dallo scopo di questo documento: + +``` +sudo firewall-cmd --zone=public --add-service sip --permanent +sudo firewall-cmd --zone=public --add-port=10000-20000/udp --permanent +``` + +Poiché abbiamo reso permanenti i comandi di `firewalld`, dovremo riavviare il server. È possibile farlo con: + +`sudo shutdown -r now` + +## Test + +### La Console Asterisk + +Per verificare, colleghiamoci alla console di Asterisk: + +`sudo asterisk -r` + +Questo vi porterà al client a riga di comando di Asterisk. Questo prompt viene visualizzato dopo la visualizzazione delle informazioni di base di Asterisk: + +`asterisk*CLI>` + +Per modificare la verbosità della console, utilizzare la seguente procedura: + +`core set verbose 4` + +La console di Asterisk dovrebbe mostrare quanto segue: + +`La verbosità della console era disattivata e ora è 4.` + +### Mostra Esempi di Autenticazione End-Point + +Al prompt del client a riga di comando Asterisk, digitare: + +`pjsip show auth 1101` + +Questo restituisce informazioni sul nome utente e sulla password che possono essere utilizzate per connettersi a qualsiasi client SIP. + +## Conclusione + +Le indicazioni di cui sopra vi permetteranno di essere operativi con il server, ma la configurazione finale, il collegamento dei dispositivi e l'ulteriore risoluzione dei problemi dipendono da voi. + +La gestione di un server di comunicazione Asterisk richiede molto tempo e impegno e richiede molte ricerche da parte di qualsiasi amministratore. Per ulteriori informazioni su come configurare e utilizzare Asterisk, consultate il [Wiki Asterisk qui](https://wiki.asterisk.org/wiki/display/AST/Getting+Started). From 5b66934569cd228b556f2b36cd0c1794cd788557 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Sat, 4 Jun 2022 13:12:02 -0400 Subject: [PATCH 51/51] New translations lxd_server.md (Italian) --- docs/guides/containers/lxd_server.it.md | 1229 +++++++++++++++++++++++ 1 file changed, 1229 insertions(+) create mode 100644 docs/guides/containers/lxd_server.it.md diff --git a/docs/guides/containers/lxd_server.it.md b/docs/guides/containers/lxd_server.it.md new file mode 100644 index 0000000000..f73213659f --- /dev/null +++ b/docs/guides/containers/lxd_server.it.md @@ -0,0 +1,1229 @@ +- - - +title: Server LXD author: Steven Spencer contributors: Ezequiel Bruni, Colussi Franco tested with: 8.5 tags: + - lxd + - enterprise +- - - + +# Creare un server LXD completo +## Introduzione + +LXD è meglio descritto sul [sito web ufficiale](https://linuxcontainers.org/lxd/introduction/), ma consideratelo come un sistema di container che offre i vantaggi dei server virtuali in un container, o un container con gli steroidi. + +È molto potente e, con l'hardware e la configurazione giusta, può essere sfruttato per eseguire molte istanze di server su un singolo pezzo di hardware. Se lo si abbina a un server snapshot, si ha anche una serie di container che possono essere avviati quasi immediatamente nel caso in cui il server primario si guasti. + +(Non si deve pensare a questo come a un backup tradizionale. È comunque necessario un sistema di backup regolare di qualche tipo, come [rsnapshot](../backup/rsnapshot_backup.md)) + +La curva di apprendimento di LXD può essere un po' ripida, ma questo documento cercherà di fornire un bagaglio di conoscenze a portata di mano, per aiutarvi a distribuire e utilizzare LXD su Rocky Linux. + +## Prerequisiti e Presupposti + +* Un server Linux Rocky, ben configurato. In un ambiente di produzione si dovrebbe considerare un disco rigido separato per lo spazio su disco ZFS (è necessario se si usa ZFS). E sì, si presume che si tratti di un server bare metal, non di un VPS. +* Questo dovrebbe essere considerato un argomento avanzato, ma abbiamo fatto del nostro meglio per renderlo il più semplice possibile da capire per tutti. Detto questo, conoscere alcune nozioni di base sulla gestione dei container vi porterà lontano. +* Dovete essere a vostro agio con la riga di comando del vostro computer e saper usare con disinvoltura un editor da riga di comando. (In questo esempio utilizziamo _vi_, ma potete sostituirlo con il vostro editor preferito) +* È necessario essere un utente non privilegiato per la maggior parte dei processi LXD. Tranne quando indicato, inserire i comandi LXD come utente non privilegiato. Si presume che per i comandi LXD si sia connessi come utente "lxdadmin". La maggior parte della configurazione _viene_ eseguita come root fino a quando non si supera l'inizializzazione di LXD. L'utente "lxdadmin" verrà creato più avanti nel processo. +* Per ZFS, assicurarsi che l'avvio UEFI secure boot NON sia abilitato. Altrimenti, si finirà per dover firmare il modulo ZFS per poterlo caricare. +* Per il momento utilizzeremo contenitori basati su CentOS, poiché LXC non dispone ancora di immagini Rocky Linux. Rimanete sintonizzati per gli aggiornamenti, perché è probabile che questo cambierà con il tempo. + +!!! Note "Nota" + + La situazione è cambiata! Negli esempi che seguono, potete sostituire i contenitori Rocky Linux con altri. + +## Parte 1: Preparazione dell'ambiente + +Per tutta la "Parte 1" dovrete essere l'utente root o dovrete essere in grado di fare _sudo_ a root. + +### Installare i repository EPEL e OpenZFS + +LXD richiede il repository EPEL (Extra Packages for Enterprise Linux), che sono facili da installare: + +`dnf install epel-release` + +Una volta installato, verificare la presenza di aggiornamenti: + +`dnf update` + +Se si utilizza ZFS, installare il repository OpenZFS con: + +`dnf installa https://zfsonlinux.org/epel/zfs-release.el8_3.noarch.rpm` + +Abbiamo bisogno anche della chiave GPG, per cui utilizziamo questo comando per ottenerla: + +`gpg --import --import-options show-only /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux` + +Se sono stati eseguiti aggiornamenti del kernel durante il processo di aggiornamento di cui sopra, riavviare il server + +### Installare snapd, dkms e vim + +LXD deve essere installato da uno snap per Rocky Linux. Per questo motivo, è necessario installare snapd (e alcuni altri programmi utili) con: + +`dnf install snapd dkms vim` + +Ora abilitate e avviate snapd: + +`systemctl enable snapd` + +E poi eseguire: + +`systemctl start snapd` + +Riavviare il server prima di continuare. + +### Installare LXD + +L'installazione di LXD richiede l'uso del comando snap. A questo punto, stiamo solo installando, non stiamo facendo alcuna configurazione: + +`sudo snap install lxd` + +### Installare OpenZFS + +`dnf install kernel-devel zfs` + +### Impostazione dell'Ambiente + +La maggior parte delle impostazioni del kernel del server non sono sufficienti per eseguire un gran numero di container. Se si presume fin dall'inizio che il server verrà utilizzato in produzione, è necessario apportare queste modifiche in anticipo per evitare errori come "Too many open files". + +Fortunatamente, modificare le impostazioni di LXD è facile con alcune modifiche ai file e un riavvio. + +#### Modifica di limits.conf + +Il primo file da modificare è il file limits.conf. Questo file è autodocumentato, quindi si consiglia di consultare le spiegazioni contenute nel file per sapere cosa fa. Per apportare le nostre modifiche digitate: + +`vi /etc/security/limits.conf` + +L'intero file è commentato e, in fondo, mostra le impostazioni predefinite attuali. Nello spazio vuoto sopra il marcatore di fine file (#End of file) dobbiamo aggiungere le nostre impostazioni personalizzate. Al termine, il file avrà questo aspetto: + +``` +# Modifications made for LXD + +* soft nofile 1048576 +* hard nofile 1048576 +root soft nofile 1048576 +root hard nofile 1048576 +* soft memlock unlimited +* hard memlock unlimited +``` + +Salvare le modifiche e uscire. (`SHIFT:wq!` per _vi_) + +#### Modifica di sysctl.conf con 90-lxd.override.conf + +Con _systemd_, si possono apportare modifiche alla configurazione generale del sistema e alle opzioni del kernel *senza* modificare il file di configurazione principale. Invece, metteremo le nostre impostazioni in un file separato che semplicemente sovrascriverà le impostazioni particolari di cui abbiamo bisogno. + +Per apportare queste modifiche al kernel, creeremo un file chiamato _90-lxd-override.conf_ in /etc/sysctl.d. Per farlo, digitare: + +`vi /etc/sysctl.d/90-lxd-override.conf` + +Inserite il seguente contenuto nel file. Se vi state chiedendo cosa stiamo facendo qui, il contenuto del file sottostante è autodocumentante: + +``` +## The following changes have been made for LXD ## + +# fs.inotify.max_queued_events specifies an upper limit on the number of events that can be queued to the corresponding inotify instance + - (default is 16384) + +fs.inotify.max_queued_events = 1048576 + +# fs.inotify.max_user_instances This specifies an upper limit on the number of inotify instances that can be created per real user ID - +(default value is 128) + +fs.inotify.max_user_instances = 1048576 + +# fs.inotify.max_user_watches specifies an upper limit on the number of watches that can be created per real user ID - (default is 8192) + +fs.inotify.max_user_watches = 1048576 + +# vm.max_map_count contains the maximum number of memory map areas a process may have. Memory map areas are used as a side-effect of cal +ling malloc, directly by mmap and mprotect, and also when loading shared libraries - (default is 65530) + +vm.max_map_count = 262144 + +# kernel.dmesg_restrict denies container access to the messages in the kernel ring buffer. Please note that this also will deny access t +o non-root users on the host system - (default is 0) + +kernel.dmesg_restrict = 1 + +# This is the maximum number of entries in ARP table (IPv4). You should increase this if you create over 1024 containers. + +net.ipv4.neigh.default.gc_thresh3 = 8192 + +# This is the maximum number of entries in ARP table (IPv6). You should increase this if you plan to create over 1024 containers.Not nee +ded if not using IPv6, but... + +net.ipv6.neigh.default.gc_thresh3 = 8192 + +# This is a limit on the size of eBPF JIT allocations which is usually set to PAGE_SIZE * 40000. + +net.core.bpf_jit_limit = 3000000000 + +# This is the maximum number of keys a non-root user can use, should be higher than the number of containers + +kernel.keys.maxkeys = 2000 + +# This is the maximum size of the keyring non-root users can use + +kernel.keys.maxbytes = 2000000 + +# This is the maximum number of concurrent async I/O operations. You might need to increase it further if you have a lot of workloads th +at use the AIO subsystem (e.g. MySQL) + +fs.aio-max-nr = 524288 +``` + +A questo punto è necessario riavviare il server. + +#### Controllo dei valori di _sysctl.conf_ + +Una volta completato il riavvio, accedere nuovamente al server. Dobbiamo verificare che il nostro file di override abbia effettivamente svolto il suo compito. + +È facile da fare. Non è necessario controllare tutte le impostazioni, a meno che non lo si voglia fare, ma controllarne alcune consente di verificare che le impostazioni siano state modificate. Questo viene fatto con il comando _sysctl_: + +`sysctl net.core.bpf_jit_limit` + +Il che dovrebbe dimostrarlo: + +`net.core.bpf_jit_limit = 3000000000` + +Fate lo stesso con alcune delle altre impostazioni del file di override (sopra) per verificare che le modifiche siano state apportate. + +### Abilitazione di ZFS e Impostazione del Pool + +Se l'avvio UEFI secure boot è disattivato, dovrebbe essere abbastanza facile. Per prima cosa, caricare il modulo ZFS con modprobe: + +`/sbin/modprobe zfs` + +Questa operazione non dovrebbe restituire un errore, ma semplicemente tornare al prompt dei comandi una volta terminata. Se si verifica un errore, interrompere subito e iniziare la risoluzione dei problemi. Anche in questo caso, assicuratevi che il secure boot sia disattivato, in quanto è la causa più probabile. + +Successivamente dobbiamo esaminare i dischi del nostro sistema, determinare quali sono quelli su cui è caricato il sistema operativo e quali sono disponibili per il pool ZFS. Lo faremo con _lsblk_: + +`lsblk` + +Il quale dovrebbe restituire qualcosa di simile (il vostro sistema sarà diverso!): + +``` +AME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT +loop0 7:0 0 32,3M 1 loop /var/lib/snapd/snap/snapd/11588 +loop1 7:1 0 55,5M 1 loop /var/lib/snapd/snap/core18/1997 +loop2 7:2 0 68,8M 1 loop /var/lib/snapd/snap/lxd/20037 +sda 8:0 0 119,2G 0 disco +├─sda1 8:1 0 600M 0 parte /boot/efi +├─sda2 8:2 0 1G 0 parte /boot +├─sda3 8:3 0 11.9G 0 part [SWAP] +├─sda4 8:4 0 2G 0 parte /home +└─sda5 8:5 0 103,7G 0 parte / +sdb 8:16 0 119,2G 0 disco +├─sdb1 8:17 0 119,2G 0 parte +└─sdb9 8:25 0 8M 0 parte +sdc 8:32 0 149,1G 0 disco +└─sdc1 8:33 0 149,1G 0 parte +``` + +In questo elenco, possiamo vedere che */dev/sda* è utilizzato dal sistema operativo, quindi useremo */dev/sdb* per il nostro zpool. Si noti che se si dispone di più dischi rigidi liberi, si può prendere in considerazione l'uso di raidz (un software raid specifico per ZFS). + +Questo non rientra nell'ambito di questo documento, ma dovrebbe essere preso in considerazione per la produzione, in quanto offre migliori prestazioni e ridondanza. Per ora, creiamo il nostro pool sul singolo dispositivo che abbiamo identificato: + +`zpool create storage /dev/sdb` + +Questo dice di creare un pool chiamato "storage" che è ZFS sul dispositivo */dev/sdb*. + +Una volta creato il pool, a questo punto è bene riavviare il server. + +### Inizializzazione LXD + +Ora che l'ambiente è stato configurato, siamo pronti a inizializzare LXD. Si tratta di uno script automatico che pone una serie di domande per rendere operativa l'istanza LXD: + +`lxd init` + +Ecco le domande e le nostre risposte per lo script, con una piccola spiegazione dove necessario: + +`Would you like to use LXD clustering? (yes/no) [default=no]:` + +Se siete interessati al clustering, fate qualche ricerca aggiuntiva su questo argomento [qui](https://lxd.readthedocs.io/en/latest/clustering/) + +`Do you want to configure a new storage pool? (yes/no) [default=yes]:` + +Questo può sembrare controintuitivo, dato che abbiamo già creato il nostro pool ZFS, ma sarà risolto in una domanda successiva. Accept the default. + +`Name of the new storage pool [default=default]: storage` + +Si potrebbe lasciare questo nome come predefinito, ma noi abbiamo scelto di usare lo stesso nome che abbiamo dato al nostro pool ZFS. + +`Name of the storage backend to use (btrfs, dir, lvm, zfs, ceph) [default=zfs]:` + +Ovviamente vogliamo accettare l'impostazione predefinita. + +`Create a new ZFS pool? (yes/no) [default=yes]: no` + +Qui si risolve la domanda precedente sulla creazione di un pool di storage. + +`Name of the existing ZFS pool or dataset: storage` + +`Would you like to connect to a MAAS server? (yes/no) [default=no]:` + +Il Metal As A Service (MAAS) non rientra nell'ambito di questo documento. + +`Would you like to create a new local network bridge? (yes/no) [default=yes]:` + +`What should the new bridge be called? [default=lxdbr0]:` + +`What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:` + +`What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none` + +Se si desidera utilizzare IPv6 sui propri contenitori LXD, è possibile attivare questa opzione. Questo dipende da voi. + +`Would you like the LXD server to be available over the network? (yes/no) [default=no]: yes` + +È necessario per eseguire lo snapshot del server, quindi rispondere "yes". + +`Address to bind LXD to (not including port) [default=all]:` + +`Port to bind LXD to [default=8443]:` + +`Trust password for new clients:` + +`Again:` + +Questa password di fiducia è il modo in cui ci si connetterà al server snapshot o al suo ritorno, quindi va impostata con qualcosa che abbia senso nel vostro ambiente. Salvare questa voce in un luogo sicuro, ad esempio in un gestore di password. + +`Would you like stale cached images to be updated automatically? (yes/no) [default=yes]` + +`Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:` + +#### Impostazione dei Privilegi degli Utenti + +Prima di continuare, dobbiamo creare l'utente "lxdadmin" e assicurarci che abbia i privilegi necessari. Abbiamo bisogno che l'utente "lxdadmin" sia in grado di fare il _sudo_ a root e che sia membro del gruppo lxd. Per aggiungere l'utente e assicurarsi che sia membro di entrambi i gruppi, procedere come segue: + +`useradd -G wheel,lxd lxdadmin` + +Quindi impostare la password: + +`passwd lxdadmin` + +Come per le altre password, salvatela in un luogo sicuro. + +### Impostazione del Firewall - iptables + +Prima di continuare, è necessario impostare un firewall sul server. Questo esempio utilizza _iptables_ e [questa procedura](../security/enabling_iptables_firewall.md) per disabilitare _firewalld_. Se si preferisce usare _firewalld_, è sufficiente sostituire le regole di _firewalld_ con le istruzioni riportate in questa sezione. + +Creare lo script firewall.conf: + +`vi /etc/firewall.conf` + +Si ipotizza un server LXD su una rete LAN 192.168.1.0/24 di seguito riportata. Si noti inoltre che stiamo accettando tutto il traffico dalla nostra interfaccia bridged. Questo è importante se si vuole che i container ricevano indirizzi IP dal bridge. + +Questo script del firewall non fa altre ipotesi sui servizi di rete necessari. Esiste una regola SSH che consente agli IP della nostra rete LAN di accedere al server tramite SSH. È possibile che siano necessarie molte più regole, a seconda dell'ambiente. In seguito, aggiungeremo una regola per il traffico bidirezionale tra il server di produzione e il server snapshot. + +``` +#!/bin/sh +# +#IPTABLES=/usr/sbin/iptables + +# Unless specified, the defaults for OUTPUT is ACCEPT +# The default for FORWARD and INPUT is DROP +# +echo " clearing any existing rules and setting default policy.." +iptables -F INPUT +iptables -P INPUT DROP +iptables -A INPUT -i lxdbr0 -j ACCEPT +iptables -A INPUT -p tcp -m tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT +iptables -A INPUT -i lo -j ACCEPT +iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset +iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable + +/usr/sbin/service iptables save +``` +### Impostazione del Firewall - firewalld + +Per le regole di _firewalld_, è necessario utilizzare [questa procedura di base](../security/firewalld.md) o avere familiarità con questi concetti. Le nostre ipotesi sono le stesse delle regole _iptables_ di cui sopra: Rete LAN 192.168.1.0/24 e un bridge chiamato lxdbr0. Per essere chiari, si potrebbero avere più interfacce sul server LXD, con una forse rivolta anche verso la WAN. Creeremo anche una zona per le reti bridged e locali. Questo è solo per chiarezza di zona, dato che gli altri nomi non sono applicabili. Quanto segue presuppone che si conoscano già le basi di _firewalld_. + +``` +firewall-cmd --new-zone=bridge --permanent +``` + +È necessario ricaricare il firewall dopo aver aggiunto una zona: + +``` +firewall-cmd --reload +``` + +Vogliamo consentire tutto il traffico dal bridge, quindi aggiungiamo l'interfaccia e cambiamo il target da "default" ad "ACCEPT" e avremo finito: + +!!! attention "Attenzione" + + La modifica della destinazione di una zona firewalld deve essere fatta con l'opzione --permanent, quindi è meglio inserire questo flag anche negli altri comandi e rinunciare all'opzione --runtime-to-permanent. + +!!! Note "Nota" + + Se si deve creare una zona in cui si vuole consentire l'accesso all'interfaccia o alla sorgente, ma non si vuole specificare alcun protocollo o servizio, è necessario modificare l'obiettivo da "default" ad ACCEPT. Lo stesso vale per DROP e REJECT per un particolare blocco IP per il quale sono state create zone personalizzate. Per essere chiari, la zona "drop" si occuperà di questo aspetto, a patto che non si utilizzi una zona personalizzata. + +``` +firewall-cmd --zone=bridge --add-interface=lxdbr0 --permanent +firewall-cmd --zone=bridge --set-target=ACCEPT --permanent +``` +Supponendo che non ci siano errori e che tutto funzioni ancora, è sufficiente ricaricare il sistema: + +``` +firewall-cmd --reload +``` +Se ora si elencano le regole con `firewall-cmd --zone=bridge --list-all`, si dovrebbe vedere qualcosa di simile a quanto segue: + +``` +bridge (active) + target: ACCEPT + icmp-block-inversion: no + interfaces: lxdbr0 + sources: + services: + ports: + protocols: + forward: no + masquerade: no + forward-ports: + source-ports: + icmp-blocks: + rich rules: +``` +Dalle regole di _iptables_ si nota che vogliamo consentire anche la nostra interfaccia locale. Anche in questo caso, non mi piacciono le zone incluse, quindi creare una nuova zona e utilizzare l'intervallo IP di origine per l'interfaccia locale per assicurarsi di avere accesso: + +``` +firewall-cmd --new-zone=local --permanent +firewall-cmd --reload +``` +Quindi è sufficiente aggiungere gli IP di origine per l'interfaccia locale, cambiare il target in "ACCEPT" e anche in questo caso abbiamo finito: + +``` +firewall-cmd --zone=local --add-source=127.0.0.1/8 --permanent +firewall-cmd --zone=local --set-target=ACCEPT --permanent +firewall-cmd --reload +``` +Procedere con l'elenco della zona "locale" per assicurarsi che le regole siano presenti con `firewall-cmd --zone=local --list all` che dovrebbe mostrare qualcosa di simile: + +``` +local (active) + target: ACCEPT + icmp-block-inversion: no + interfaces: + sources: 127.0.0.1/8 + services: + ports: + protocols: + forward: no + masquerade: no + forward-ports: + source-ports: + icmp-blocks: + rich rules: +``` + +Poi vogliamo consentire SSH dalla nostra rete fidata. Utilizzeremo qui gli IP di origine, proprio come nell'esempio di _iptables_, e la zona "trusted" incorporata. L'obiettivo di questa zona è già "ACCEPT" per impostazione predefinita. + +``` +firewall-cmd --zone=trusted --add-source=192.168.1.0/24 +``` +Quindi aggiungere il servizio alla zona: + +``` +firewall-cmd --zone=trusted --add-service=ssh +``` +Se tutto funziona, spostare le regole in modo permanente e ricaricarle: + +``` +firewall-cmd --runtime-to-permanent +firewall-cmd --reload +``` +L'elenco delle zone "trusted" dovrebbe ora mostrare qualcosa di simile: + +``` +trusted (active) + target: ACCEPT + icmp-block-inversion: no + interfaces: + sources: 192.168.1.0/24 + services: ssh + ports: + protocols: + forward: no + masquerade: no + forward-ports: + source-ports: + icmp-blocks: + rich rules: +``` +Per impostazione predefinita, la zona "pubblica" è abilitata e consente l'uso di SSH. Non vogliamo questo. Assicurarsi che le zone siano corrette e che l'accesso al server avvenga tramite uno degli IP della LAN (nel nostro esempio) e che sia consentito l'SSH. Se non lo si verifica prima di continuare, si rischia di rimanere esclusi dal server. Dopo essersi assicurati di avere accesso dall'interfaccia corretta, rimuovere SSH dalla zona "pubblica": + +``` +firewall-cmd --zone=public --remove-service=ssh +``` +Verificate l'accesso e assicuratevi di non essere bloccati. In caso contrario, spostare le regole su permanenti, ricaricare ed elencare la zona "public" per essere sicuri che SSH sia stato rimosso: + +``` +firewall-cmd --runtime-to-permanent +firewall-cmd --reload +firewall-cmd --zone=public --list-all +``` +Potrebbero esserci altre interfacce da considerare sul vostro server. È possibile utilizzare le zone integrate, se necessario, ma se i nomi non piacciono (non sembrano logici, ecc.), è possibile aggiungere zone. Ricordate che se non ci sono servizi o protocolli che dovete consentire o rifiutare in modo specifico, dovrete modificare il target di zona. Se è possibile utilizzare le interfacce, come abbiamo fatto con il bridge, è possibile farlo. Se avete bisogno di un accesso più granulare ai servizi, utilizzate invece gli IP di origine. + +Questo completa la Parte 1. È possibile proseguire con la Parte 2 o tornare al [menu](#menu). Se state lavorando sul server snapshot, potete passare ora alla [Parte 5](#part5). + +## Parte 2: Impostazione e Gestione delle Immagini + +Per tutta la Parte 2, e da qui in avanti se non diversamente indicato, si eseguiranno i comandi come utente non privilegiato. ("lxdadmin" se state seguendo questo documento). + +### Elenco delle Immagini Disponibili + +Una volta configurato l'ambiente del server, probabilmente non vedrete l'ora di iniziare a usare un container. Ci sono _molte_ possibilità per i sistemi operativi container. Per avere un'idea del numero di possibilità, inserite questo comando: + +`lxc image list images: | more` + +Premete la barra spaziatrice per scorrere l'elenco. Questo elenco di container e macchine virtuali continua a crescere. Per ora ci atteniamo ai containers. + +L'ultima cosa che si vuole fare è cercare un'immagine del container da installare, soprattutto se si conosce l'immagine che si vuole creare. Modifichiamo il comando precedente per mostrare solo le opzioni di installazione di CentOS Linux: + +`lxc image list immagini: | grep centos/8` + +In questo modo si ottiene un elenco molto più gestibile: + +``` +| centos/8 (3 more) | 98b4dbef0c29 | yes | Centos 8 amd64 (20210427_07:08) | x86_64 | VIRTUAL-MACHINE | 517.44MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8 (3 more) | 0427669ebee4 | yes | Centos 8 amd64 (20210427_07:08) | x86_64 | CONTAINER | 125.58MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream (3 more) | 961170f8934f | yes | Centos 8-Stream amd64 (20210427_07:08) | x86_64 | VIRTUAL-MACHINE | 586.44MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream (3 more) | e507fdc8935a | yes | Centos 8-Stream amd64 (20210427_07:08) | x86_64 | CONTAINER | 130.33MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/arm64 (1 more) | e5bf98409ac6 | yes | Centos 8-Stream arm64 (20210427_10:33) | aarch64 | CONTAINER | 126.56MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/cloud (1 more) | 5751ca14bf8f | yes | Centos 8-Stream amd64 (20210427_07:08) | x86_64 | CONTAINER | 144.75MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/cloud (1 more) | ccf0bb20b0ca | yes | Centos 8-Stream amd64 (20210427_07:08) | x86_64 | VIRTUAL-MACHINE | 593.31MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/cloud/arm64 | db3d915d12fd | yes | Centos 8-Stream arm64 (20210427_07:08) | aarch64 | CONTAINER | 140.60MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/cloud/ppc64el | 11aa2ab878b2 | yes | Centos 8-Stream ppc64el (20210427_07:08) | ppc64le | CONTAINER | 149.45MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8-Stream/ppc64el (1 more) | a27665203e47 | yes | Centos 8-Stream ppc64el (20210427_07:08) | ppc64le | CONTAINER | 134.52MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/arm64 (1 more) | d64396d47fa7 | yes | Centos 8 arm64 (20210427_07:08) | aarch64 | CONTAINER | 121.83MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/cloud (1 more) | 84803ca6e32d | yes | Centos 8 amd64 (20210427_07:08) | x86_64 | CONTAINER | 140.42MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/cloud (1 more) | c98196cd9eec | yes | Centos 8 amd64 (20210427_07:08) | x86_64 | VIRTUAL-MACHINE | 536.00MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/cloud/arm64 | 9d06684a9a4e | yes | Centos 8 arm64 (20210427_10:33) | aarch64 | CONTAINER | 136.49MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/cloud/ppc64el | 18c13c448349 | yes | Centos 8 ppc64el (20210427_07:08) | ppc64le | CONTAINER | 144.66MB | Apr 27, 2021 at 12:00am (UTC) | +| centos/8/ppc64el (1 more) | 130c1c83c36c | yes | Centos 8 ppc64el (20210427_07:08) | ppc64le | CONTAINER | 129.53MB | Apr 27, 2021 at 12:00am (UTC) | +``` + +### Installare, Rinominare ed Elencare le Immagini + +Per il primo container, sceglieremo centos/8. Per installarlo, *si può* usare: + +`lxc launch images:centos/8 centos-test` + +Questo creerà un container basato su CentOS chiamato "centos-test". È possibile rinominare un container dopo che è stato creato, ma prima è necessario arrestare il container, che si avvia automaticamente quando viene lanciato. + +Per avviare manualmente il container, utilizzare: + +`lxc start centos-test` + +Ai fini di questa guida, per ora installate un'altra immagine: + +`lxc launch images:ubuntu/20.10 ubuntu-test` + +Ora diamo un'occhiata a ciò che abbiamo finora, elencando le nostre immagini: + +`lxc list` + +che dovrebbe restituire qualcosa di simile: + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 10.199.182.72 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +### Profili LXD + +Quando si installa LXD si ottiene un profilo predefinito, che non può essere rimosso o modificato. Detto questo, è possibile utilizzare il profilo predefinito per creare nuovi profili da utilizzare con i propri container. + +Se si osserva l'elenco dei nostri container (sopra), si noterà che l'indirizzo IP in ogni caso è assegnato dall'interfaccia bridged. In un ambiente di produzione, si potrebbe voler usare qualcos'altro. Potrebbe trattarsi di un indirizzo assegnato via DHCP dall'interfaccia LAN o anche di un indirizzo assegnato staticamente dalla WAN. + +Se si configura il server LXD con due interfacce e si assegna a ciascuna un IP sulla WAN e sulla LAN, è possibile assegnare ai container indirizzi IP in base all'interfaccia verso cui il container deve essere rivolto. + +A partire dalla versione 8 di Rocky Linux (e in realtà qualsiasi copia di Red Hat Enterprise Linux, come CentOS nel nostro elenco precedente) il metodo per assegnare gli indirizzi IP in modo statico o dinamico utilizzando i profili sottostanti, è stato interrotto. + +Ci sono modi per aggirare questo problema, ma è fastidioso, perché la funzione che non funziona _dovrebbe essere_ parte del kernel Linux. Questa funzione è macvlan. Macvlan consente di creare più interfacce con indirizzi Layer 2 diversi. + +Per ora, sappiate che ciò che stiamo per suggerire ha degli svantaggi quando si scelgono immagini di container basate su RHEL. + +#### Creazione di un Profilo macvlan e sua Assegnazione + +Per creare il nostro profilo macvlan, basta usare questo comando: + +`lxc profile create macvlan` + +Si tenga presente che, se si dispone di una macchina con più interfacce e si desidera più di un modello macvlan in base alla rete che si desidera raggiungere, si può usare "lanmacvlan" o "wanmacvlan" o qualsiasi altro nome che si desidera usare per identificare il profilo. In altre parole, l'uso di "macvlan" nella dichiarazione di creazione del profilo dipende totalmente da voi. + +Una volta creato il profilo, è necessario modificarlo per ottenere i risultati desiderati. Per prima cosa, dobbiamo assicurarci che l'editor predefinito del server sia quello che vogliamo usare. Se non si esegue questo passaggio, l'editor sarà quello predefinito. Abbiamo scelto _vim_ come editor: + +`export EDITOR=/usr/bin/vim` + +Ora vogliamo modificare l'interfaccia macvlan, ma prima dobbiamo sapere qual è l'interfaccia principale del nostro server LXD. Si tratta dell'interfaccia che ha un IP assegnato alla LAN (in questo caso). Per determinare di quale interfaccia si tratta, utilizzare: + +`ip addr` + +Quindi cercare l'interfaccia con l'assegnazione dell'IP LAN nella rete 192.168.1.0/24: + +``` +2: enp3s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 + link/ether 40:16:7e:a9:94:85 brd ff:ff:ff:ff:ff:ff + inet 192.168.1.106/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0 + valid_lft 4040sec preferred_lft 4040sec + inet6 fe80::a308:acfb:fcb3:878f/64 scope link noprefixroute + valid_lft forever preferred_lft forever +``` + +In questo caso, l'interfaccia sarebbe "enp3s0". + +Ora modifichiamo il profilo: + +`lxc profile edit macvlan` + +Questo file sarà auto-documentato all'inizio. È necessario modificare il file come segue, sotto la sezione commentata: + +``` +config: {} +description: "" +devices: + eth0: + name: eth0 + nictype: macvlan + parent: enp3s0 + type: nic +name: macvlan +used_by: [] +``` + +Ovviamente si possono usare i profili per molte altre cose, ma l'assegnazione di un IP statico a un container o l'uso del proprio server DHCP come fonte per un indirizzo sono esigenze molto comuni. + +Per assegnare il profilo macvlan a centos-test è necessario procedere come segue: + +`lxc profile assign centos-test default,macvlan` + +Questo dice semplicemente che vogliamo il profilo predefinito e che vogliamo applicare anche il profilo macvlan. + +#### CentOS macvlan + +Nell'implementazione CentOS di Network Manager, sono riusciti a interrompere la funzionalità di macvlan nel kernel, o almeno nel kernel applicato alla loro immagine LXD. È così da quando è stato rilasciato CentOS 8 e nessuno sembra preoccuparsi di trovare una soluzione. + +In poche parole, se si vogliono eseguire container CentOS 8 (o qualsiasi altra release di RHEL 1-for-1, come Rocky Linux), bisogna fare i salti mortali per far funzionare macvlan. macvlan fa parte del kernel, quindi dovrebbe funzionare anche senza le correzioni seguenti, ma non è così. + +##### CentOS macvlan - La Soluzione DHCP + +L'assegnazione del profilo, tuttavia, non modifica la configurazione predefinita, che è impostata su DHCP. + +Per verificarlo, è sufficiente eseguire la seguente operazione: + +`lxc stop centos-test` + +E poi: + +`lxc start centos-test` + +Ora elencate nuovamente i vostri container e notate che centos-test non ha più un indirizzo IP: + +`lxc list` + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +Per dimostrare ulteriormente il problema, dobbiamo eseguire `dhclient` sul container. È possibile farlo con: + +`lxc exec centos-test dhclient` + +Un nuovo elenco utilizzando `lxc list` mostra ora quanto segue: + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 192.168.1.138 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +Questo sarebbe dovuto accadere con un semplice arresto e avvio del container, ma non è così. Supponendo di voler utilizzare sempre un indirizzo IP assegnato da DHCP, si può risolvere il problema con una semplice voce di crontab. Per farlo, è necessario ottenere l'accesso al container tramite shell, inserendo: + +`lxc exec centos-test bash` + +Quindi, determiniamo il percorso completo di `dhclient`: + +`which dhclient` + +che dovrebbe restituire: + +`/usr/sbin/dhclient` + +Quindi, modifichiamo il crontab di root: + +`crontab -e` + +E aggiungere questa riga: + +`@reboot /usr/sbin/dhclient` + +Il comando crontab inserito sopra utilizza _vi_, quindi per salvare le modifiche e uscire è sufficiente utilizzare: + +`SHIFT:wq!` + +Ora uscire dal container e arrestare centos-test: + +`lxc stop centos-test` + +e poi riavviarlo: + +`lxc start centos-test` + +Un nuovo elenco rivelerà che al container è stato assegnato l'indirizzo DHCP: + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 192.168.1.138 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +##### CentOS macvlan - La soluzione per l'IP Statico + +Per assegnare staticamente un indirizzo IP, le cose si fanno ancora più complicate. Il processo di impostazione di un indirizzo IP statico su un container CentOS avviene tramite gli script di rete, che verranno eseguiti ora. L'IP che cercheremo di assegnare è 192.168.1.200. + +Per farlo, dobbiamo ottenere di nuovo l'accesso al container: + +`lxc exec centos-test bash` + +La prossima cosa da fare è modificare manualmente l'interfaccia denominata "eth0" e impostare il nostro indirizzo IP. Per modificare la configurazione, procedere come segue: + +`vi /etc/sysconfig/network-scripts/ifcfg-eth0` + +Che restituirà questo: + +``` +DEVICE=eth0 +BOOTPROTO=dhcp +ONBOOT=yes +HOSTNAME=centos-test +TYPE=Ethernet +MTU= +DHCP_HOSTNAME=centos-test +IPV6INIT=yes +``` + +Dobbiamo modificare questo file in modo che abbia il seguente aspetto: + +``` +DEVICE=eth0 +BOOTPROTO=none +ONBOOT=yes +IPADDR=192.168.1.200 +PREFIX=24 +GATEWAY=192.168.1.1 +DNS1=8.8.8.8 +DNS2=8.8.4.4 +HOSTNAME=centos-test +TYPE=Ethernet +MTU= +DHCP_HOSTNAME=centos-test +IPV6INIT=yes +``` + +Questo dice che vogliamo impostare il protocollo di avvio su nessuno (usato per le assegnazioni IP statiche), impostare l'indirizzo IP su 192.168.1.200, che questo indirizzo fa parte di una CLASSE C (PREFIX=24), che il gateway per questa rete è 192.168.1.1 e che vogliamo usare i server DNS aperti di Google per la risoluzione dei nomi. + +Salvare il file`(SHIFT:wq!`). + +Dobbiamo anche rimuovere il crontab per root, perché non è quello che vogliamo per un IP statico. Per farlo, è sufficiente `crontab -e` e sottolineare la riga @reboot con un "#", salvare le modifiche e uscire dal container. + +Fermare il container con: + +`lxc stop centos-test` + +e riavviarlo: + +`lxc start centos-test` + +Proprio come l'indirizzo assegnato da DHCP, l'indirizzo assegnato staticamente non verrà assegnato quando si elenca il container: + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +Per risolvere questo problema è necessario interrompere Network Manager sul container. La seguente soluzione funziona, almeno per ora: + +`lxc exec centos-test dhclient` + +Poi entrate nel container: + +`lxc exec centos-test bash` + +Installare i vecchi script di rete: + +`dnf install network-scripts` + +Nuke Network Manager: + +`systemctl stop NetworkManager` `systemctl disable NetworkManager` + +Attivare il vecchio servizio di rete: + +`systemctl enable network.service` + +Uscire dal container, quindi arrestare e avviare nuovamente il container: + +`lxc stop centos-test` + +E poi eseguire: + +`lxc start centos-test` + +All'avvio del container, un nuovo elenco mostrerà l'IP staticamente assegnato corretto: + +``` ++-------------+---------+-----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+-----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 192.168.1.200 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 10.199.182.236 (eth0) | | CONTAINER | 0 | ++-------------+---------+-----------------------+------+-----------+-----------+ +``` + +Il problema con macvlan mostrato in entrambi gli esempi è direttamente correlato ai container basati su Red Hat Enterprise Linux (Centos 8, Rocky Linux 8). + +#### Ubuntu macvlan + +Fortunatamente, nell'implementazione di Ubuntu di Network Manager, lo stack macvlan NON è mancante, quindi è molto più facile da distribuire! + +Per prima cosa, proprio come nel caso del container centos-test, dobbiamo assegnare il template al nostro container: + +`lxc profile assign ubuntu-test default,macvlan` + +Questo dovrebbe essere tutto ciò che è necessario per ottenere un indirizzo assegnato da DHCP. Per scoprirlo, fermate e riavviate il container: + +`lxc stop ubuntu-test` + +E poi eseguire: + +`lxc start ubuntu-test` + +Quindi elencare nuovamente i container: + +``` ++-------------+---------+----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 192.168.1.200 (eth0) | | CONTAINER | 0 | ++-------------+---------+----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 192.168.1.139 (eth0) | | CONTAINER | 0 | ++-------------+---------+----------------------+------+-----------+-----------+ +``` + +Riuscito! + +La configurazione dell'IP statico è leggermente diversa, ma non è affatto difficile. Occorre modificare il file .yaml associato alla connessione del contenitore (/10-lxc.yaml). Per questo IP statico, utilizzeremo 192.168.1.201: + +`vi /etc/netplan/10-lxc.yaml` + +E cambiare quello che c'è con il seguente: + +``` +network: + version: 2 + ethernets: + eth0: + dhcp4: false + addresses: [192.168.1.201/24] + gateway4: 192.168.1.1 + nameservers: + addresses: [8.8.8.8,8.8.4.4] +``` + +Salvare le modifiche`(SHFT:wq!`) e uscire dal container. + +Ora fermate e avviate il container: + +`lxc stop ubuntu-test` + +E poi eseguire: + +`lxc start ubuntu-test` + +Quando si elencano nuovamente i container, si dovrebbe vedere il nuovo IP statico: + +``` ++-------------+---------+----------------------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+----------------------+------+-----------+-----------+ +| centos-test | RUNNING | 192.168.1.200 (eth0) | | CONTAINER | 0 | ++-------------+---------+----------------------+------+-----------+-----------+ +| ubuntu-test | RUNNING | 192.168.1.201 (eth0) | | CONTAINER | 0 | ++-------------+---------+----------------------+------+-----------+-----------+ +``` + +Riuscito! + +Negli esempi utilizzati nella Parte 2, abbiamo scelto intenzionalmente un container difficile da configurare e uno facile. Ci sono ovviamente molte altre versioni di Linux disponibili nell'elenco delle immagini. Se ce n'è uno preferito, provare a installarlo, assegnando il modello macvlan e impostando gli IP. + +Questo completa la Parte 2. È possibile proseguire con la Parte 3 o tornare al [menu](#menu). + +## Parte 3: Opzioni di Configurazione del Container + +Ci sono molte opzioni per configurare il container una volta installato. Prima di vedere come visualizzano, però, diamo un'occhiata al comando info per un container. In questo esempio, utilizzeremo il container ubuntu-test: + +`lxc info ubuntu-test` + +Il risultato è simile al seguente: + +``` +Name: ubuntu-test +Location: none +Remote: unix:// +Architecture: x86_64 +Created: 2021/04/26 15:14 UTC +Status: Running +Type: container +Profiles: default, macvlan +Pid: 584710 +Ips: + eth0: inet 192.168.1.201 enp3s0 + eth0: inet6 fe80::216:3eff:fe10:6d6d enp3s0 + lo: inet 127.0.0.1 + lo: inet6 ::1 +Resources: + Processes: 13 + Disk usage: + root: 85.30MB + CPU usage: + CPU usage (in seconds): 1 + Memory usage: + Memory (current): 99.16MB + Memory (peak): 110.90MB + Network usage: + eth0: + Bytes received: 53.56kB + Bytes sent: 2.66kB + Packets received: 876 + Packets sent: 36 + lo: + Bytes received: 0B + Bytes sent: 0B + Packets received: 0 + Packets sent: 0 +``` + +Ci sono molte informazioni utili, dai profili applicati, alla memoria in uso, allo spazio su disco in uso e altro ancora. + +#### Informazioni sulla Configurazione e su Alcune Opzioni + +Per impostazione predefinita, LXD alloca al container la memoria di sistema, lo spazio su disco, i core della CPU e così via. Ma se volessimo essere più specifici? È assolutamente possibile. + +Tuttavia, questo comporta degli svantaggi. Per esempio, se si alloca la memoria di sistema e il container non la usa tutta, allora l'abbiamo sottratta a un altro container che potrebbe averne bisogno. Tuttavia, può accadere anche il contrario. Se un container ha una consumo esagerato in fatto di memoria, può impedire agli altri container di averne a sufficienza, riducendo così le loro prestazioni. + +Tenete presente che ogni azione compiuta per configurare un container _può_ avere effetti negativi da qualche altra parte. + +Piuttosto che scorrere tutte le opzioni di configurazione, utilizzare il completamento automatico delle schede per visualizzare le opzioni disponibili: + +`lxc config set ubuntu-test` e poi premere TAB. + +Mostra tutte le opzioni per la configurazione di un container. Se avete domande su cosa fa una delle opzioni di configurazione, consultate la [documentazione ufficiale di LXD](https://lxd.readthedocs.io/en/stable-4.0/instances/) e fate una ricerca per il parametro di configurazione, oppure cercate su Google l'intera stringa, ad esempio "lxc config set limits.memory" e date un'occhiata ai risultati della ricerca. + +Vediamo alcune delle opzioni di configurazione più utilizzate. Ad esempio, se si vuole impostare la quantità massima di memoria che un container può utilizzare: + +`lxc config set ubunt-test limits.memory 2GB` + +Questo dice che finché la memoria è disponibile per l'uso, in altre parole ci sono 2 GB di memoria libera, il contenitore può usare più di 2 GB se è disponibile. In altre parole, si tratta di un limite variabile. + +`lxc config set ubuntu-test limits.memory.enforce 2GB` + +Ciò significa che il contenitore non può mai utilizzare più di 2 GB di memoria, indipendentemente dal fatto che sia attualmente disponibile o meno. In questo caso si tratta di un limite rigido. + +`lxc config set ubuntu-test limits.cpu 2` + +Questo dice di limitare a 2 il numero di core della CPU che il container può utilizzare. + +Ricordate quando abbiamo impostato il nostro pool di archiviazione nella sezione [Abilitazione di zfs e Impostazione del Pool](#zfssetup) di cui sopra? Abbiamo chiamato il pool "storage", ma avremmo potuto chiamarlo in qualsiasi modo. Se vogliamo dare un'occhiata, possiamo usare questo comando: + +`lxc storage show storage` + +Questo mostra quanto segue: + +``` +config: + source: storage + volatile.initial_source: storage + zfs.pool_name: storage +description: "" +name: storage +driver: zfs +used_by: +- /1.0/images/0cc65b6ca6ab61b7bc025e63ca299f912bf8341a546feb8c2f0fe4e83843f221 +- /1.0/images/4f0019aee1515c109746d7da9aca6fb6203b72f252e3ee3e43d50b942cdeb411 +- /1.0/images/9954953f2f5bf4047259bf20b9b4f47f64a2c92732dbc91de2be236f416c6e52 +- /1.0/instances/centos-test +- /1.0/instances/ubuntu-test +- /1.0/profiles/default +status: Created +locations: +- none +``` + +Questo mostra che tutti i container utilizzano il pool di archiviazione zfs. Quando si usa ZFS, si può anche impostare una quota disco su un container. Per farlo, impostiamo una quota disco di 2 GB sul container ubuntu-test. Lo si fa con: + +`lxc config device override ubuntu-test root size=2GB` + +Come detto in precedenza, si dovrebbero usare le opzioni di configurazione con parsimonia, a meno che non si abbia un container che vuole usare molto più della sua quota di risorse. LXD, nella maggior parte dei casi, gestisce l'ambiente in modo autonomo. + +Esistono naturalmente molte altre opzioni che potrebbero essere di interesse per alcuni. Dovete fare le vostre ricerche per scoprire se uno di questi elementi è utile nel vostro ambiente. + +Questo completa la Parte 3. È possibile proseguire con la Parte 4 o tornare al [menu](#menu). + +## Parte 4: Istantanee del Container + +Le istantanee dei container, insieme a un server di istantanee (di cui parleremo più avanti), sono probabilmente l'aspetto più importante dell'esecuzione di un server LXD di produzione. Le istantanee assicurano un ripristino rapido e possono essere usate per sicurezza quando, ad esempio, si sta aggiornando il software primario che gira su un particolare container. Se durante l'aggiornamento accade qualcosa che interrompe l'applicazione, è sufficiente ripristinare l'istantanea per tornare operativi con un tempo di inattività di pochi secondi. + +L'autore ha utilizzato i container LXD per i server PowerDNS rivolti al pubblico e il processo di aggiornamento di queste applicazioni è diventato molto più semplice, poiché è possibile eseguire lo snapshot del container prima di continuare. + +È anche possibile eseguire l'istantanea di un container mentre è in esecuzione. Inizieremo ottenendo un'istantanea del container ubuntu-test utilizzando questo comando: + +`lxc snapshot ubuntu-test ubuntu-test-1` + +Qui chiamiamo l'istantanea "ubuntu-test-1", ma può essere chiamata come volete. Per assicurarsi di avere l'istantanea, eseguire un "lxc info" del contenitore: + +`lxc info ubuntu-test` + +Abbiamo già visto una schermata informativa, quindi se si scorre fino in fondo, si dovrebbe vedere: + +``` +Snapshots: + ubuntu-test-1 (taken at 2021/04/29 15:57 UTC) (stateless) +``` + +Riuscito! La nostra istantanea è pronta. + +Ora, entrare nel container ubuntu-test: + +`lxc exec ubuntu-test bash` + +E creare un file vuoto con il comando _touch_: + +`touch this_file.txt` + +Uscire dal container. + +Prima di ripristinare il container come era prima della creazione del file, il modo più sicuro per ripristinare un container, in particolare se ci sono state molte modifiche, è quello di fermarlo prima: + +`lxc stop ubuntu-test` + +Quindi ripristinarlo: + +`lxc restore ubuntu-test ubuntu-test-1` + +Quindi riavviare il container: + +`lxc start ubuntu-test` + +Se si torna di nuovo nel container e si guarda, il file "this_file.txt" che abbiamo creato è sparito. + +Quando non si ha più bisogno di un'istantanea, è possibile eliminarla: + +`lxc delete ubuntu-test/ubuntu-test-1` + +**Importante:** è necessario eliminare sempre le istantanee con il contenitore in funzione. Perché? Il comando _lxc delete_ funziona anche per eliminare l'intero container. Se avessimo accidentalmente premuto invio dopo "ubuntu-test" nel comando precedente, E, se il container fosse stato fermato, il container sarebbe stato cancellato. Non viene dato alcun avviso, fa semplicemente quello che gli si chiede. + +Se il container è in esecuzione, tuttavia, viene visualizzato questo messaggio: + +`Error: The instance is currently running, stop it first or pass --force` + +Pertanto, eliminare sempre le istantanee con il contenitore in funzione. + +Il processo di creazione automatica delle istantanee, l'impostazione della scadenza dell'istantanea in modo che scompaia dopo un certo periodo di tempo e l'aggiornamento automatico delle istantanee al server delle istantanee saranno trattati in dettaglio nella sezione dedicata al server delle istantanee. + +Questo completa la Parte 4. È possibile proseguire con la Parte 5 o tornare al [menu](#menu). + +## Parte 5: Il Server Snapshot + +Come indicato all'inizio, il server snapshot per LXD deve essere in tutto e per tutto un mirror del server di produzione. Il motivo è che potrebbe essere necessario passare alla produzione in caso di guasto hardware, e avere non solo i backup, ma anche un modo rapido per ripristinare i container di produzione, consente di ridurre al minimo le telefonate e gli SMS di panico degli amministratori di sistema. QUESTO è SEMPRE un bene! + +Quindi il processo di creazione del server snapshot è esattamente come quello del server di produzione. Per emulare completamente la nostra configurazione del server di produzione, eseguite nuovamente tutta la [Parte 1](#part1) e, una volta completata, tornate a questo punto. + +Sei tornato!!! Congratulazioni, questo significa che avete completato con successo la Parte 1 per il server snapshot. Che bella notizia!!! + +### Impostazione della Relazione tra Server Primario e Server Snapshot + +Dobbiamo fare un po' di pulizia prima di continuare. Innanzitutto, se si opera in un ambiente di produzione, probabilmente si ha accesso a un server DNS che si può utilizzare per impostare la risoluzione IP-nome. + +Nel nostro laboratorio non abbiamo questo lusso. Forse anche voi avete lo stesso scenario. Per questo motivo, aggiungeremo gli indirizzi IP e i nomi di entrambi i server al file /etc/hosts sia sul server primario che sul server snapshot. È necessario farlo come utente root (o _sudo_). + +Nel nostro laboratorio, il server LXD primario è in esecuzione su 192.168.1.106 e il server LXD snapshot è in esecuzione su 192.168.1.141. Si entra in SSH in entrambi i server e si aggiunge quanto segue al file /etc/hosts: + +``` +192.168.1.106 lxd-primary +192.168.1.141 lxd-snapshot +``` +Successivamente, è necessario consentire tutto il traffico tra i due server. Per fare ciò, si modificherà il file /etc/firewall.conf con quanto segue. Per prima cosa, sul server lxd-primario, aggiungere questa riga: + +`IPTABLES -A INPUT -s 192.168.1.141 -j ACCEPT` + +E sul server lxd-snapshot, aggiungere questa riga: + +`IPTABLES -A INPUT -s 192.168.1.106 -j ACCEPT` + +In questo modo è possibile far viaggiare il traffico bidirezionale di tutti i tipi tra i due server. + +Successivamente, come utente "lxdadmin", dobbiamo impostare la relazione di fiducia tra le due macchine. Per farlo, eseguire il seguente comando su lxd-primary: + +`lxc remote add lxd-snapshot` + +Verrà visualizzato il certificato da accettare, quindi lo si eseguirà e verrà richiesta la password. Si tratta della "password di fiducia" impostata durante la fase di [inizializzazione di LXD](#lxdinit). Si spera che teniate traccia di tutte queste password in modo sicuro. Una volta immessa la password, si dovrebbe ricevere questo messaggio: + +`Client certificate stored at server: lxd-snapshot` + +Non fa male farlo fare anche al contrario. In altre parole, impostare la relazione di fiducia sul server lxd-snapshot in modo che, se necessario, le istantanee possano essere inviate al server lxd-primary. È sufficiente ripetere i passaggi e sostituire "lxd-primary" con "lxd-snapshot" + +### Migrazione della Nostra Prima Istantanea + +Prima di poter migrare la prima istantanea, è necessario che su lxd-snapshot vengano creati i profili che abbiamo creato su lxd-primary. Nel nostro caso, si tratta del profilo "macvlan". + +È necessario creare questo profilo per lxd-snapshot, quindi tornare a [LXD Profiles](#profiles) e creare il profilo "macvlan" su lxd-snapshot. Se i due server hanno nomi di interfacce padre identici ("enp3s0", ad esempio), è possibile copiare il profilo "macvlan" in lxd-snapshot senza ricrearlo: + +`lxc profile copy macvlan lxd-snapshot` + +Ora che abbiamo impostato tutte le relazioni e i profili, il passo successivo è quello di inviare effettivamente un'istantanea da lxd-primary a lxd-snapshot. Se avete seguito esattamente la procedura, probabilmente avete cancellato tutte le vostre istantanee, quindi creiamone una nuova: + +`lxc snapshot centos-test centos-snap1` + +Se si esegue il sottocomando "info" per lxc, si può vedere la nuova istantanea in fondo al nostro elenco: + +`lxc info centos-test` + +Che mostrerà qualcosa di simile in basso: + +`centos-snap1 (taken at 2021/05/13 16:34 UTC) (stateless)` + +Ok, incrociamo le dita! Proviamo a migrare la nostra istantanea: + +`lxc copy centos-test/centos-snap1 lxd-snapshot:centos-test` + +Questo comando dice che, all'interno del contenitore centos-test, vogliamo inviare l'istantanea centos-snap1 a lxd-snapshot e copiarla come centos-test. + +Dopo un breve periodo di tempo, la copia sarà completa. Volete scoprirlo con certezza? Eseguire un "lxc list" sul server lxd-snapshot. Che dovrebbe restituire quanto segue: + +``` ++-------------+---------+------+------+-----------+-----------+ +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | ++-------------+---------+------+------+-----------+-----------+ +| centos-test | STOPPED | | | CONTAINER | 0 | ++-------------+---------+------+------+-----------+-----------+ +``` + +Riuscito! Ora proviamo ad avviarlo. Poiché lo stiamo avviando sul server lxd-snapshot, dobbiamo prima fermarlo sul server lxd-primary: + +`lxc stop centos-test` + +E sul server lxd-snapshot: + +`lxc start centos-test` + +Supponendo che tutto questo funzioni senza errori, arrestare il container su lxd-snapshot e riavviarlo su lxd-primary. + +### Il Server Snapshot - Impostazione di boot.autostart su Off per i Container + +Le istantanee copiate su lxd-snapshot saranno disattivate durante la migrazione, ma se si verifica un evento di alimentazione o se è necessario riavviare il server snapshot a causa di aggiornamenti o altro, si verificherà un problema poiché i container tenteranno di avviarsi sul server snapshot. + +Per eliminare questo problema, è necessario impostare i container migrati in modo che non vengano avviati al riavvio del server. Per il nostro container centos-test appena copiato, si procede come segue: + +`lxc config set centos-test boot.autostart 0` + +Eseguire questa operazione per ogni istantanea sul server lxd-snapshot. + +### Automatizzazione del Processo delle Istantanee + +Ok, è fantastico poter creare istantanee quando è necessario, ma a volte _è necessario_ creare manualmente un'istantanea. Si potrebbe anche copiare manualmente su lxd-snapshot. MA, una volta che le cose funzionano e che avete 25-30 container o più in esecuzione sulla vostra macchina lxd-primary, l'ultima cosa che volete fare è passare un pomeriggio a cancellare le istantanee sul server di snapshot, creare nuove istantanee e inviarle. + +La prima cosa da fare è pianificare un processo per automatizzare la creazione di snapshot su lxd-primary. Questa operazione deve essere eseguita per ogni container sul server lxd-primary, ma una volta impostata, si gestirà da sola. La sintassi è la seguente. Si noti la somiglianza con una voce di crontab per il timestamp: + +`lxc config set [container_name] snapshots.schedule "50 20 * * *"` + +Ciò significa che bisogna eseguire un'istantanea del nome del container ogni giorno alle 20:50. + +Per applicare questo al nostro contenitore centos-test: + +`lxc config set centos-test snapshots.schedule "50 20 * * *"` + +Vogliamo anche impostare il nome dell'istantanea in modo che sia significativo per la nostra data. LXD utilizza ovunque UTC, quindi la cosa migliore per tenere traccia delle cose è impostare il nome dell'istantanea con una data/ora in un formato più comprensibile: + +`lxc config set centos-test snapshots.pattern "centos-test-{{ creation_date|date:'2006-01-02_15-04-05' }}"` + +GRANDE, ma di certo non vogliamo una nuova istantanea ogni giorno senza sbarazzarci di quella vecchia, giusto? Riempiremmo il disco di istantanee. Quindi la prossima esecuzione: + +`lxc config set centos-test snapshots.expiry 1d` + +### Automatizzazione del Processo di Copia di Istantanee + +Anche in questo caso, il processo viene eseguito su lxd-primary. La prima cosa da fare è creare uno script che verrà eseguito da cron in /usr/local/sbin chiamato "refresh-containers" : + +`sudo vi /usr/local/sbin/refreshcontainers.sh` + +Lo script è piuttosto semplice: + +``` +#!/bin/bash +# This script is for doing an lxc copy --refresh against each container, copying +# and updating them to the snapshot server. + +for x in $(/var/lib/snapd/snap/bin/lxc ls -c n --format csv) + do echo "Refreshing $x" + /var/lib/snapd/snap/bin/lxc copy --refresh $x lxd-snapshot:$x + done + +``` + + Rendetelo eseguibile: + +`sudo chmod +x /usr/local/sbin/refreshcontainers.sh` + +Cambiare la proprietà di questo script all'utente e al gruppo lxdadmin: + +`sudo chown lxdadmin.lxdadmin /usr/local/sbin/refreshcontainers.sh` + +Impostare il crontab per l'utente lxdadmin per l'esecuzione di questo script, in questo caso alle 10 di sera: + +`crontab -e` + +La voce avrà il seguente aspetto: + +`00 22 * * * /usr/local/sbin/refreshcontainers.sh > /home/lxdadmin/refreshlog 2>&1` + +Salvare le modifiche e uscire. + +In questo modo si creerà un registro nella home directory di lxdadmin chiamato "refreshlog" che permetterà di sapere se il processo ha funzionato o meno. Molto importante! + +La procedura automatica a volte fallisce. Questo accade generalmente quando un particolare container non riesce ad aggiornarsi. È possibile rieseguire manualmente l'aggiornamento con il seguente comando (assumendo centos-test come container): + +`lxc copy --refresh centos-test lxd-snapshot:centos-test` + +## Conclusioni + +L'installazione e l'uso efficace di LXD sono numerosi. È certamente possibile installarlo sul proprio computer portatile o sulla propria workstation senza troppi problemi, in quanto si tratta di un'ottima piattaforma di sviluppo e di test. Se si desidera un approccio più serio con l'uso di container di produzione, la scelta migliore è quella di un approccio basato su server primario e snapshot. + +Anche se abbiamo toccato molte funzioni e impostazioni, abbiamo solo scalfito la superficie di ciò che si può fare con LXD. Il modo migliore per imparare questo sistema è installarlo e provarlo con le cose che si usano. Se trovate utile LXD, prendete in considerazione la possibilità di installarlo nel modo descritto in questo documento per sfruttare al meglio l'hardware per i container Linux. Rocky Linux funziona molto bene per questo! + +A questo punto è possibile uscire dal documento o tornare al [menu](#menu). Se volete.