Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "jeremie2/Prove1"
Differenze tra le versioni 14 e 21 (in 7 versioni)
Versione 14 del 29/09/2024 17.46.08
Dimensione: 16985
Autore: jeremie2
Commento:
Versione 21 del 01/10/2025 19.02.50
Dimensione: 5291
Autore: jeremie2
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
#format wiki
#LANGUAGE it
## page was renamed from GruppoDocumentazione/NuovoRilascio/ScriptHashSHA256Sum
#page created by wilecoyote
<<Indice(depth=2)>>
Linea 4: Linea 5:
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=431132"; rilasci="20.04 22.04 24.10 24.04")>>
<<Informazioni(forum=http://forum.ubuntu-it.org/viewtopic.php?t=641900; rilasci="22.04 24.04 25.04 25.10")>>
Linea 9: Linea 9:
Questa pagina descrive come gestire i repository tramite [[AmministrazioneSistema/Terminale|riga di comando]] ed [[Ufficio/EditorDiTesto|editor di testo]] senza utilizzare gli specific programmi a interfaccia grafica. Il vantaggio sta nel fatto che le informazioni qui riportate risultano utili in qualsiasi delle versioni di Ubuntu esistenti, indipendentemente dall'ambiante grafico utilizzato. Nelle pagine di download di Ubuntu, oltre alle immagini '''iso''' del sistema operativo, è regolarmente presente il file '''SHA256SUM''' con l'elenco delle impronte SHA256Sum di ciascun file `iso`.
Linea 11: Linea 11:
Se invece si desidera utilizzare gli strumenti specifici della propria distribuzione, leggere le seguenti guide: In questa pagina viene mostrato l'utilizzo di uno '''script''' in grado di rilevare dalle pagine di download tutte le impronte SHA256Sum di Ubuntu e derivate a seconda del numero di versione (22.04, 24.04, ecc..).<<BR>>
Per ogni versione verrà creato un file con l'elenco delle hash per le `iso` di Ubuntu e derivate.
Linea 13: Linea 14:
 * [[Repository/Ubuntu|Gestire i repository con Ubuntu]]
 * [[Repository/Kubuntu|Gestire i repository con Kubuntu e Lubuntu]]
= Script =
Linea 16: Linea 16:
= Ubuntu 24.04 e successivi = Il seguente script richiede l'[[AmministrazioneSistema/InstallareProgrammi|installazione]] del pacchetto [[apt://aiohttp-wsgi-serve|aiohttp-wsgi-serve]]. In caso di problemi è possibile utilizzare uno script [[#alternativo|alternativo]].
Linea 18: Linea 18:
A partire da '''Ubuntu 24.04''' il principale file di configurazione è `/etc/apt/sources.list.d/ubuntu.sources` e questo è il suo contenuto subito dopo l'installazione:
 {{{
Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: noble
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
{{{
import aiohttp
import asyncio
Linea 26: Linea 22:
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: multiverse main universe restricted
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
from sys import argv
script, ubu_version = argv

ubuntu_flavours = ("kubuntu", "ubuntu-mate", "xubuntu", "lubuntu", "ubuntu-unity", "ubuntu-budgie", "ubuntustudio", "ubuntukylin", "ubuntucinnamon")


def create_versions_list():
    versions = []
    versions.append("UBUNTU")

    for version in ubuntu_flavours:
        versions.append(version.upper())

    versions.append("SERVER_POWERPC")
    return versions


def create_urls_collection():
    urls = []

    # Link hash Ubuntu
    link = f"https://releases.ubuntu.com/{ubu_version}/SHA256SUMS"
    urls.append(link)

    # Link hash derivate ufficiali di Ubuntu
    for flavour in ubuntu_flavours:
        link = f"https://cdimage.ubuntu.com/{flavour}/releases/{ubu_version}/release/SHA256SUMS"
        urls.append(link)

    # Link hash versioni server alternative, ecc..
    link = f"https://cdimage.ubuntu.com/releases/{ubu_version}/release/SHA256SUMS"
    urls.append(link)

    return urls


async def fetch_page(session, url):
    async with session.get(url) as response:
        if response.status == 200:
            return await response.text()
        else:
            return None


async def main():
    ubu_versions = create_versions_list()
    urls = create_urls_collection()
    async with aiohttp.ClientSession() as session:
        hash_pages = []

        for url in urls:
            hash_pages.append(fetch_page(session, url))

        htmls = await asyncio.gather(*hash_pages)

    for flavour_name, hash_text in zip(ubu_versions, htmls):
        if hash_text is None:
            print(f"{flavour_name}\nNon presente!\n")
        else:
            print(f"{flavour_name}\n{hash_text}")


asyncio.run(main())
Linea 33: Linea 88:
 * '''Types''': definisce il tipo di pacchetto ospitato nel reopository:
  * `deb` per i pacchetti precompilati;
  * `deb-src` per il codice sorgente.
 * '''URIs''': indirizzo del server.
 * '''Suites''': definisce la tipologia dei pacchetti in base al ciclo di rilascio. Ogni versione di Ubuntu ha un nome in codice, ad esempio '''Noble Numbat''' nel caso della 24.04. Viene quindi presa la prima parte del nome '''numbat''' e quindi verranno fatte le seguenti classificazioni:
  * '''noble''': pacchetti presenti al rilascio della nuova versione di Unbuntu;
  * '''noble-updates''': contengono aggiornamenti dei pacchetti;
  * '''noble-backports''': offrono [[Repository/Backports|ulteriori aggiornamenti]] che arrivano da versione successive di Ubuntu;
  * '''noble-security''': aggiornamenti che risolvono bug di siscurezza.
 * '''Components''': ulteriore classificazione in '''main''', '''restricted''', '''universe''', '''multiverse''' [[Repository/Componenti|vedi guida]]
 * '''Signed-By''': chiave pubblica per verificare l'autenticità dei pacchetti.
= Utilizzo =
Linea 45: Linea 90:
== Aggiungere repository == Aprire un [[Ufficio/EditorDiTesto|editor di testo]], incollare il testo dello script riportato nel paragrafo precedente e salvare il file nella propria '''Home''' con il nome `script.py`
Linea 47: Linea 92:
I file relativi a eventuali repository esterni verranno ancora salvati nella directory `/etc/apt/sources.list.d` e le procedure esistenti rimangono pressoché invariate. Vengono elencati qui i comandi da [[AmministrazioneSistema/Terminale|terminale]] per ogni [[Rilasci|versione supportata]]. Ogni comando creerà nella propria '''Home''' un file con all'interno l'elenco delle impronte per una specifica versione di Ubuntu. Ad esempio il file '''hash_24-04.txt''' conterrà l'elenco delle hash SHA256Sum della versione '''24.04'''.
Linea 49: Linea 94:
Se si intende utilizzare un '''PPA''' vale quanto riportato nel [[#ppa|paragrafo dedicato]]. Supponendo ad esempio di voler installare '''[[https://launchpad.net/~mozillateam/+archive/ubuntu/firefox-next|Firefox Beta]]''', alla fine della procedura verrà creato il file `mozillateam-ubuntu-firefox-next-noble.sources` con il seguente contenuto:
 {{{
Types: deb
URIs: https://ppa.launchpadcontent.net/mozillateam/firefox-next/ubuntu/
Suites: noble
Components: main
Signed-By:
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 .
 mI0ESXMwOwEEAL7 "segue lungo codice alfa-numerico"

 -----END PGP PUBLIC KEY BLOCK-----
 * '''25.10''': digitare il comando:{{{
python3 script.py 25.10 > hash_25-10.txt
}}}
 * '''25.04''': digitare il comando:{{{
python3 script.py 25.04 > hash_25-04.txt
}}}
 * '''24.04''': digitare il comando:{{{
python3 script.py 24.04 > hash_24-04.txt
}}}
 * '''22.04''': digitare il comando:{{{
python3 script.py 22.04 > hash_22-04.txt
Linea 63: Linea 107:
Da notare che sarà ancora valido il formato `.list` pertanto per il software ospitato al di fuori di Launchpad vale quanto descritto nella pagina [[Repository/GestioneRepositoryTerzeParti|gestione repository terze parti]]. <<Anchor(alternativo)>>
= Script alternativo =
Linea 65: Linea 110:
= Versioni di Ubuntu fino alla 22.04 = Lo script è meno veloce del precedente, potrebbe richiedere vari secondi per l'esecuzione, tuttavia non richiede pacchetti aggiuntivi in una installazione standard di Ubuntu.
Linea 67: Linea 112:
== Informazioni preliminari == {{{
import urllib.request
import requests
Linea 69: Linea 116:
[[AmministrazioneSistema/InstallareProgrammi/Apt|Apt]] è il programma che gestisce l'installazione dei pacchetti e la lista dei repository. Il file che contiene tale elenco è `/etc/apt/sources.list` e tramite la modifica di questo file è possibile aggiungere, rimuovere o disabilitare i repository. from sys import argv
script, ubu_version = argv
Linea 71: Linea 119:
Anche se Ubuntu conserva di default una [[AmministrazioneSistema/ComandiBase#cp|copia]] del file `sources.list`, è buona norma creare una copia di backup del file prima di modificarlo, in modo tale da poterlo ripristinare in caso di problemi.<<BR>>Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
ubuntu_flavours = ("kubuntu", "ubuntu-mate", "xubuntu", "lubuntu", "ubuntu-unity", "ubuntu-budgie", "ubuntustudio", "ubuntukylin", "ubuntucinnamon")

def print_hash(web_page):
    request = requests.get(web_page)
    if request.status_code == 200:
        web = urllib.request.urlopen(web_page)
        text = web.read().decode('utf_8')
        print(text)
    else:
        print("Non presente!\n")

#STAMPA HASH UBUNTU PRESENTI IN https://releases.ubuntu.com/
print("UBUNTU")
link = f"https://releases.ubuntu.com/{ubu_version}/SHA256SUMS"
print_hash(link)

#STAMPA HASH VARIANTI *BUNTU PRESENTI IN http://cdimage.ubuntu.com/
for i in ubuntu_flavours:
    link = f"https://cdimage.ubuntu.com/{i}/releases/{ubu_version}/release/SHA256SUMS"
    print(i.upper())
    print_hash(link)

#STAMPA HASH VERSIONI SERVER PRESENTI IN https://cdimage.ubuntu.com/releases/
print("SERVER_POWERPC")
link = f"https://cdimage.ubuntu.com/releases/{ubu_version}/release/SHA256SUMS"
print_hash(link)
Linea 74: Linea 147:

<<Anchor(sources.list)>>
== Descrizione del file sources.list ==

Il file `/etc/apt/sources.list` è sostanzialmente un file di testo che contiene i dettagli relativi ai [[Repository#Introduzione|repository]] in uso.<<BR>>
Per controllare la validità del proprio file `sources.list` senza modificarlo, è possibile prenderne visione nel [[AmministrazioneSistema/Terminale|terminale]] con il seguente comando: {{{
cat /etc/apt/sources.list
}}}
Prendendo come esempio il caso di un sistema Ubuntu 22.04 LTS, il contenuto dovrebbe essere simile al seguente: {{{
# deb cdrom:[Ubuntu 22.04.3 LTS _Jammy Jellyfish_ - Release amd64 (20230807.2)]/ jammy main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://it.archive.ubuntu.com/ubuntu/ jammy main restricted
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://it.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://it.archive.ubuntu.com/ubuntu/ jammy universe
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy universe
deb http://it.archive.ubuntu.com/ubuntu/ jammy-updates universe
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://it.archive.ubuntu.com/ubuntu/ jammy multiverse
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy multiverse
deb http://it.archive.ubuntu.com/ubuntu/ jammy-updates multiverse
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://it.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src http://it.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu jammy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted
deb http://security.ubuntu.com/ubuntu jammy-security universe
# deb-src http://security.ubuntu.com/ubuntu jammy-security universe
deb http://security.ubuntu.com/ubuntu jammy-security multiverse
# deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse

# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.
}}}

{{{#!wiki note
Ogni singola riga indica un diverso repository.<<BR>>
Le righe che iniziano con uno o due caratteri hash «#» sono commentate e non influiscono in alcun modo sull'operato del proprio gestore di pacchetti. Vengono utilizzate per riportare dei repository disabilitati oppure semplicemente per fornire informazioni all'utente.
}}}

I repository vengono indicati con la seguente struttura: {{{
tipo posizione rilascio componenti
}}}

 * '''Tipo''': indica il tipo di archivio che può essere:
  * '''deb''': questi repository contengono pacchetti binari o precompilati. Sono indicati per la maggior parte degli utenti.
  * '''deb-src''': questi repository contengono il codice sorgente dei pacchetti e sono utili agli sviluppatori. Nell'esempio precedente, tutti i repository di questo tipo sono commentati '''#''', pertanto non vengono considerati (impostazione consigliata per gli utenti comuni).

 * '''Posizione''': è l'indirizzo presso il quale è reperibile il server o il supporto che ospita i pacchetti. Ad esempio considerando l' '''URI''' (Uniform Resource Identifier) '''http://it.archive.ubuntu.com/ubuntu/''', risulta essere una posizione su Internet (in questo caso un URL, visitabile anche con un comune [[InternetRete/Navigazione#Browser_per_navigare|browser web]], tramite il quale è possibile navigare all'interno delle relative directory).

 * '''[[Rilasci|Rilascio]]''': indica la versione di Ubuntu, tramite il suo ''codename''; ad esempio ''focal'' si riferisce a Ubuntu 20.04 LTS «''Focal Fossa''». In alcuni casi può essere assente o avere un formato differente (ad esempio in alcuni repository non ufficiali).

 * '''[[Repository/Componenti|Componenti]]''': possono essere diversi; vanno separati l'uno dall'altro da uno spazio, ad esempio: {{{
main universe multiverse
}}}

== Abilitare i repository ==

Per abilitare un repository procedere come segue:

 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/apt/sources.list`, quindi cancellare il simbolo hash '''#''' davanti alla riga di interesse.

 0. Salvare la modifica ed aggiornare l'elenco pacchetti, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo apt update
}}}
 Se non si ricevono errori, l'operazione è andata a buon fine.

In caso di errori, invece, è possibile ripristinare la situazione precedente tramite il backup precedentemente creato, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list
sudo apt update
}}}

{{{#!wiki tip
Se si desidera abilitare solo un componente di quelli presenti nella riga interessata, omettere i componenti indesiderati.}}}

== Aggiungere altri repository ==

{{{#!wiki important
Si consiglia di prestare sempre la massima attenzione nella scelta di repository affidabili e compatibili per non compromettere la sicurezza e la stabilità del proprio sistema operativo.}}}

Possono esserci diverse ragioni per aggiungere dei repository non ufficiali alla propria lista. Ad esempio si può avere bisogno di programmi non presenti nei [[Repository#Repository_ufficiali|repository ufficiali]] o disponibili in questi ultimi soltanto in versioni non aggiornate, oppure di software vincolati da licenze e/o brevetti ecc.

A tal fine seguire le procedure indicate di seguito.<<BR>>Dopo tali procedure sarà possibile [[AmministrazioneSistema/InstallareProgrammi#Installare_e_rimuovere_pacchetti_da_repository|installare]] o [[AmministrazioneSistema/Aggiornamenti|aggiornare]] da altri repository il software desiderato.

Per controllare se siano già presenti repository esterni:
 0. Visionare il file `/etc/apt/sources.list` come indicato nel precedente [[#sources.list|paragrafo]], verificando che non siano presenti ulteriori righe oltre quelle relative ai repository ufficiali.
 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
ls /etc/apt/sources.list.d
}}}
 verificando la presenza di eventuali file con estensione `.list`. Analogamente a `/etc/apt/sources.list` è possibile visionare nel [[AmministrazioneSistema/Terminale|terminale]] il contenuto tramite il comando:{{{
cat /etc/apt/sources.list.d/nome_file.list
}}}

{{{#!wiki note
Eventuali righe che iniziano con il simbolo '''#''' sono commentate e non vengono prese in considerazione.
}}}

=== Repository di terze parti ===

Per evitare modifiche accidentali indesiderate al file `/etc/apt/sources.list`, di norma vengono creati dei file dedicati, con estensione `.list` e all'interno di `/etc/apt/sources.list.d/`. Utilizzare la seguente procedura:

 0. Aprire un [[Ufficio/EditorDiTesto|editor di testo]] con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e scrivere il repository desiderato;
 0. Salvare il file all'interno della cartella `/etc/apt/sources.list.d/` indicando come estensione `.list` (ad esempio `virtualbox.list`);
 0. Aggiornare la lista dei repository, digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]: {{{
sudo apt update
}}}

Tuttavia, anche se generalmente sconsigliato, è in alternativa possibile modificare direttamente il file `/etc/apt/sources.list`:

 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] e con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] il file `/etc/apt/sources.list`;
 0. Inserire a fondo pagina il repository desiderato, quindi salvare il file;
 0. Aggiornare la lista dei repository, digitando il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]: {{{
sudo apt update
}}}

{{{#!wiki note
Per Ubuntu 22.04 e successivi si raccomanda di consultare questa [[Repository/GestioneRepositoryTerzeParti|guida]].
}}}

{{{#!wiki tip
Solitamente alcuni programmi installabili [[AmministrazioneSistema/InstallareProgrammi/PacchettiDebian|tramite pacchetto debian]] (quali '''[[InternetRete/Navigazione/GoogleChrome|GoogleChrome]]''', '''[[InternetRete/Navigazione/Opera|Opera]]''', '''[[InternetRete/Telefonia/Skype#Skype_for_Linux|Skype]]''' e altri) provvedono automaticamente a generare un file relativo al proprio repository all'interno della cartella `/etc/apt/sources.list.d/`.
}}}

<<Anchor(ppa)>>
=== Aggiungere repository launchpad ===

Se il repository si trova sulla piattaforma [[https://launchpad.net/|Launchpad]] ed è distribuito sotto forma di '''PPA''' ('''Personal Package Archive'''), allora è possibile eseguire una procedura automatizzata:

 0. Solo se si è su [[Installazione/CdMinimale|sistema minimale]], installare il pacchetto [[apt://software-properties-common | software-properties-common]].
 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]] un comando che abbia la seguente sintassi: {{{
sudo add-apt-repository ppa:utente/nome-ppa
}}}
 avendo cura di sostituire «`utente`» con il nome del profilo launchpad del manutentore del repository e «`nome-ppa`» con il nome del repository (ad esempio `ppa:libreoffice/ppa`);
 0. Aggiornamento della lista dei repository, digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
sudo apt update
}}}

Se la procedura è andata a buon fine, il repository launchpad verrà salvato in un file aggiuntivo all'interno della cartella `/etc/apt/sources.list.d/`.<<BR>>
Per annullare le modifiche effettuate tramite questa procedura, è possibile seguire le istruzioni di [[AmministrazioneSistema/Ppa-purge|questa guida]].

{{{#!wiki tip
Solitamente sulle pagine della piattaforma [[https://launchpad.net/|launchpad]] sono riportate istruzioni relative comandi da eseguire da [[AmministrazioneSistema/Terminale|terminale]].}}}

== Abilitare automaticamente tutti i repository ==

{{{#!wiki important
Questo comando è destinato all'utilizzo di utenti esperti in quanto potrebbe rendere inutilizzabile il proprio file `sources.list` in caso di repository doppi.
}}}

È possibile abilitare automaticamente tutti i repository presenti nel `sources.list` togliendo tutti i caratteri hash «#» seguiti dal termine ''deb'' digitando: {{{
sudo sed -i -e "s/# deb/deb/g" /etc/apt/sources.list
}}}
e aggiornare quindi la lista dei pacchetti: {{{
sudo apt update
}}}

= Risoluzioni problemi =

In caso di errori durante l'[[AmministrazioneSistema/InstallareProgrammi/Apt#update|aggiornamento]] della lista pacchetti, consultare [[AmministrazioneSistema/Aggiornamenti/RisoluzioneProblemi|questa pagina]] per risolvere.
Linea 262: Linea 150:
 * [[AmministrazioneSistema/InstallareProgrammi/Apt|Guida a APT]]
 * [[AmministrazioneSistema/InstallareProgrammi/Aptitude|Guida a aptitude]]
 * [[AmministrazioneSistema/InstallareProgrammi|Guida all'installazione dei programmi]]
 * [[Repository/SourcesList|/etc/apt/sources.list ottimizzato]]
 * [[AmministrazioneSistema/Ppa-purge| Guida a ppa-purge]].
 * [[http://www.debian.org/doc/manuals/apt-howto/index.en.html|Manuale Debian di apt]]
 * [[Installazione/SHA256Sum|Hash sha256]]
 * [[Installazione/SHA256Sum/Hash|Elenco delle hash sha256]]
Linea 270: Linea 154:
CategoryAmministrazione  CategoryInstallazioneSistema


Guida verificata con Ubuntu: 22.04 24.04 25.04 25.10

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Nelle pagine di download di Ubuntu, oltre alle immagini iso del sistema operativo, è regolarmente presente il file SHA256SUM con l'elenco delle impronte SHA256Sum di ciascun file iso.

In questa pagina viene mostrato l'utilizzo di uno script in grado di rilevare dalle pagine di download tutte le impronte SHA256Sum di Ubuntu e derivate a seconda del numero di versione (22.04, 24.04, ecc..).
Per ogni versione verrà creato un file con l'elenco delle hash per le iso di Ubuntu e derivate.

Script

Il seguente script richiede l'installazione del pacchetto aiohttp-wsgi-serve. In caso di problemi è possibile utilizzare uno script alternativo.

import aiohttp
import asyncio

from sys import argv
script, ubu_version = argv

ubuntu_flavours = ("kubuntu", "ubuntu-mate", "xubuntu", "lubuntu", "ubuntu-unity", "ubuntu-budgie", "ubuntustudio", "ubuntukylin", "ubuntucinnamon")


def create_versions_list():
    versions = []
    versions.append("UBUNTU")

    for version in ubuntu_flavours:
        versions.append(version.upper())

    versions.append("SERVER_POWERPC")
    return versions


def create_urls_collection():
    urls = []

    # Link hash Ubuntu
    link = f"https://releases.ubuntu.com/{ubu_version}/SHA256SUMS"
    urls.append(link)

    # Link hash derivate ufficiali di Ubuntu
    for flavour in ubuntu_flavours:
        link = f"https://cdimage.ubuntu.com/{flavour}/releases/{ubu_version}/release/SHA256SUMS"
        urls.append(link)

    # Link hash versioni server alternative, ecc..
    link = f"https://cdimage.ubuntu.com/releases/{ubu_version}/release/SHA256SUMS"
    urls.append(link)

    return urls


async def fetch_page(session, url):
    async with session.get(url) as response:
        if response.status == 200:
            return await response.text()
        else:
            return None


async def main():
    ubu_versions = create_versions_list()
    urls = create_urls_collection()
    async with aiohttp.ClientSession() as session:
        hash_pages = []

        for url in urls:
            hash_pages.append(fetch_page(session, url))

        htmls = await asyncio.gather(*hash_pages)

    for flavour_name, hash_text in zip(ubu_versions, htmls):
        if hash_text is None:
            print(f"{flavour_name}\nNon presente!\n")
        else:
            print(f"{flavour_name}\n{hash_text}")


asyncio.run(main())

Utilizzo

Aprire un editor di testo, incollare il testo dello script riportato nel paragrafo precedente e salvare il file nella propria Home con il nome script.py

Vengono elencati qui i comandi da terminale per ogni versione supportata. Ogni comando creerà nella propria Home un file con all'interno l'elenco delle impronte per una specifica versione di Ubuntu. Ad esempio il file hash_24-04.txt conterrà l'elenco delle hash SHA256Sum della versione 24.04.

  • 25.10: digitare il comando:

    python3 script.py 25.10 > hash_25-10.txt
  • 25.04: digitare il comando:

    python3 script.py 25.04 > hash_25-04.txt
  • 24.04: digitare il comando:

    python3 script.py 24.04 > hash_24-04.txt
  • 22.04: digitare il comando:

    python3 script.py 22.04 > hash_22-04.txt

Script alternativo

Lo script è meno veloce del precedente, potrebbe richiedere vari secondi per l'esecuzione, tuttavia non richiede pacchetti aggiuntivi in una installazione standard di Ubuntu.

import urllib.request
import requests

from sys import argv
script, ubu_version = argv

ubuntu_flavours = ("kubuntu", "ubuntu-mate", "xubuntu", "lubuntu", "ubuntu-unity", "ubuntu-budgie", "ubuntustudio", "ubuntukylin", "ubuntucinnamon")

def print_hash(web_page):
    request = requests.get(web_page)
    if request.status_code == 200:
        web = urllib.request.urlopen(web_page)
        text = web.read().decode('utf_8')
        print(text)
    else:
        print("Non presente!\n")

#STAMPA HASH UBUNTU PRESENTI IN https://releases.ubuntu.com/
print("UBUNTU")
link = f"https://releases.ubuntu.com/{ubu_version}/SHA256SUMS"
print_hash(link)

#STAMPA HASH VARIANTI *BUNTU PRESENTI IN http://cdimage.ubuntu.com/
for i in ubuntu_flavours:
    link = f"https://cdimage.ubuntu.com/{i}/releases/{ubu_version}/release/SHA256SUMS"
    print(i.upper())
    print_hash(link)

#STAMPA HASH VERSIONI SERVER PRESENTI IN https://cdimage.ubuntu.com/releases/
print("SERVER_POWERPC")
link = f"https://cdimage.ubuntu.com/releases/{ubu_version}/release/SHA256SUMS"
print_hash(link)

Ulteriori risorse


CategoryInstallazioneSistema