GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un repository rpm personalizzato su Linux

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

Requisiti software e convenzioni della riga di comando Linux
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.


Linux
  1. Come creare pacchetti rpm

  2. Come configurare il repository YUM in Linux/Centos/Redhat | YUM in Linux/Centos/Redhat

  3. Come aggiungere il repository software Linux di Microsoft

  4. Come creare un utente con una home directory personalizzata in Linux

  5. Come creare una rotazione del file di registro personalizzata tramite logrotate in Linux

Come creare collegamenti simbolici in Linux

Come creare un file in Linux

Come creare collegamenti su desktop Linux

Come creare un montaggio da immagini in Linux

Come creare alias SSH in Linux

Come creare un alias in Linux