Rpm è l'acronimo di Gestione pacchetti RPM :è il gestore di pacchetti di basso livello in uso in tutta la famiglia di distribuzioni Red Hat, come Fedora e Red Hat Enterprise Linux.
Un pacchetto rpm è un pacchetto contenente software che deve essere installato utilizzando questo sistema di gestione dei pacchetti e i pacchetti rpm sono generalmente distribuiti tramite repository software. In questo tutorial impariamo come creare un repository rpm personalizzato e come configurare la nostra distribuzione per utilizzarlo come sorgente software.
In questo tutorial imparerai :
- Come creare un repository rpm
- Come utilizzare il repository come sorgente software
Requisiti software e convenzioni utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Qualsiasi distribuzione della famiglia Red Hat |
Software | dnf, createrepo |
Altro | Privilegi amministrativi per configurare il repository |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede l'esecuzione di determinati comandi linux come un normale utente non privilegiato |
Installazione del software
Per il bene di questo tutorial creeremo il nostro repository personalizzato su una macchina locale con IP 192.168.0.39
che utilizzerà come server http. Su questa macchina, la prima cosa che dobbiamo fare è installare il createrepo
pacchetto. Non è necessario che la distribuzione installata sulla macchina remota sia una distribuzione basata su rpm, purché tale pacchetto sia disponibile. Nel nostro caso, ad esempio, il sistema installato sul server è Debian, quindi per installare il pacchetto è necessario eseguire il seguente comando:
$ sudo apt-get update && sudo apt-get install createrepo
Come abbiamo detto prima, nel nostro esempio specifico vogliamo rendere accessibile il software ospitato sul nostro repository personalizzato tramite il protocollo HTTP, quindi è necessario installare un server HTTP; in questo caso lavoreremo con Apache. Installandolo su Debian, è solo questione di eseguire:
$ sudo apt-get install apache2
Una volta installati i pacchetti, possiamo procedere e creare il nostro repository rpm in pochi, semplicissimi passaggi.
Creazione del repository
L'host virtuale Apache predefinito DocumentRoot
creato quando Apache è installato su Debian è /var/www/html
. A questo punto possiamo scegliere di creare un VirtualHost per il nostro repository, o semplicemente creare la directory del repository come parte
di quella predefinita. Per semplicità, in questo tutorial esploreremo quest'ultima opzione:
$ sudo mkdir /var/www/html/repo
Il repo
directory che abbiamo creato con il comando sopra, all'interno del VirtualHost predefinito DocumentRoot , ospiterà i nostri pacchetti e sarà la base del nostro repository. Per strutturarlo meglio, ora vogliamo creare delle sottodirectory
che prendono il nome dalla distribuzione, dalla sua versione e dall'architettura dei pacchetti che vogliamo rendere disponibili. Supponiamo, ad esempio, di voler utilizzare il repository su Fedora 33 x68_64
, dovremmo eseguire il seguente comando:
$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64
Il passaggio successivo consiste nel popolare il repository. Tutto quello che dobbiamo fare è posizionare i pacchetti che vogliamo rendere disponibili, all'interno della directory del repository appropriata. In questo caso, ad esempio, popolerò il repository con un pacchetto ottenuto compilando l'editor VSCode dal sorgente. Il pacchetto si chiama code-1.56.0-1617183449.el8.x86_64.rpm
. Una volta copiato, la nostra struttura di file dovrebbe apparire così:
repo └── fedora └── releases └── 33 └── x86_64 └── code-1.56.0-1617183449.el8.x86_64.rpm
Con il nostro repository popolato, tutto ciò che vogliamo fare è eseguire createrepo
comando all'interno della directory contenente i pacchetti. In questo caso eseguiremmo:
$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64
Il comando creerà i metadati del repository all'interno di una directory denominata repodata
, in base ai pacchetti contenuti nella directory di destinazione e deve essere riavviato ogni volta che il repository viene aggiornato con nuovi pacchetti o vengono rimossi i vecchi pacchetti. Una volta lanciato il comando, la nostra struttura di directory sarà simile a:
repo └── fedora └── releases └── 33 └── x86_64 ├── code-1.56.0-1617183449.el8.x86_64.rpm └── repodata ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2 ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2 ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2 ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz └── repomd.xml
Il nostro repository è stato creato con successo. Ora dobbiamo configurare la nostra distribuzione per usarla come sorgente software.
Aggiunta del repository come sorgente software
Passiamo alla nostra distribuzione basata su rpm e vediamo come configurarla per utilizzare il nostro repository personalizzato come sorgente software. I file di configurazione del repository si trovano in /etc/yum.repos.d
directory e deve avere il .repo
estensione. Guardando all'interno della directory possiamo vedere quelli già esistenti:
$ ls /etc/yum/repos.d fedora-cisco-openh264.repo fedora-updates-testing-modular.repo fedora-modular.repo fedora-updates-testing.repo fedora.repo rpmfusion-free.repo fedora-updates-modular.repo rpmfusion-free-updates.repo fedora-updates.repo rpmfusion-free-updates-testing.repo
Ora creiamo la nostra configurazione di repository personalizzata. All'interno del file, come insieme minimo di informazioni, dovremmo fornire:
- L'ID del repository
- Il nome del repository
- Un URL di base del repository
- Lo stato del repository
- Se controllare o meno la firma gpg dei pacchetti
Salveremo tali informazioni in un file chiamato ownrepo.repo
, ecco il suo contenuto:
[ownrepo] name=Own repository baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch enabled=1 gpgcheck=0
La definizione riportata tra parentesi ([ownrepo]
) è l'ID del repository e deve essere univoco in tutte le definizioni del repository. Con il name
key abbiamo fornito un nome leggibile dall'uomo per il repository come stringa. Questo è facoltativo; se non viene fornito un nome, l'ID del repository verrà utilizzato anche come nome.
Con il baseurl
key specifichiamo un elenco di URL per il repository. Gli URL devono essere separati da uno spazio o da una virgola. Nel nostro esempio abbiamo fornito solo un singolo URL, ma puoi notare che abbiamo utilizzato due variabili:
- $rilascio
- $ricerca
L'espansione del primo, $releasever
, risulterà nella versione di rilascio del sistema operativo, in questo caso 33
, poiché stiamo installando il nostro repository su un sistema Fedora 33. La seconda variabile, $basearch
, verrà espansa in una stringa che rappresenta l'architettura di base del sistema, che nel nostro caso è x86_64
.
Il enabled
chiave richiede un booleano valore che determina se il repository deve essere considerato attivo o meno. L'ultima chiave che abbiamo usato è gpgcheck
:richiede anche un valore booleano e viene utilizzato per determinare se è necessario eseguire un controllo della firma gpg sui pacchetti installati dal repository. Nel nostro esempio abbiamo semplicemente disabilitato il controllo, poiché il repository è pensato solo per uso personale.
Ora che il nostro repository è configurato, possiamo provare a installare il code
pacchetto da esso, semplicemente eseguendo:
$ sudo dnf install code Own repository 451 kB/s | 13 kB 00:00 Dependencies resolved. ================================================================================================================== Package Architecture Version Repository Size ================================================================================================================== Installing: code x86_64 1.56.0-1617183449.el8 ownrepo 100 M Transaction Summary ================================================================================================================== Install 1 Package Total download size: 100 M Installed size: 294 M Is this ok [y/N]:
Una volta fornita una risposta affermativa alla richiesta e confermata, il pacchetto verrà installato sul nostro sistema.
Conclusioni
In questo articolo abbiamo appreso quanto sia facile creare un repository rpm personalizzato con createrepo
utility e abbiamo visto come creare un file di configurazione dnf sulla nostra distribuzione per utilizzarlo come sorgente software. Abbiamo visto un sottoinsieme minimo di
le chiavi che possono essere utilizzate nella configurazione del repository; per un elenco più dettagliato è possibile consultare la documentazione ufficiale dnf.