[LINUX] Richten Sie einen yum-Repository-Server unter CentOS 7 ein und verweisen Sie lokal und von anderen Servern usw. darauf.

Einführung

Ich glaube nicht, dass es viele andere Artikel wie diesen gibt, die alltäglich sind. Ich weiß nicht, ob jemand zu diesem Zeitpunkt ein lokales Yum-Repository hat. Seit ich kürzlich meinen eigenen RPM-Verteilungsserver gebaut habe, Zusätzlich zum damaligen Memo des Inhalts habe ich mich für die Teilnahme an Linux Advent Calender 2019 entschieden.

Da ich die Details zum Erstellen des öffentlichen Teils des Repositorys im Web vorerst weglassen werde, Verwenden Sie Apache, Nginx usw., um den Repository-Ordner als öffentlich festzulegen. Die Inhalte sind Inhalte für Anfänger. Es ist einfach zu erstellen.

Diese Umgebung

Machen Sie sich bereit, ein Repository zu erstellen

Installieren Sie das Paket "create repo", um das Repository zu erstellen.

# yum install createrepo

Die folgenden Pakete werden auch als Abhängigkeiten installiert.

deltarpm
python-deltarpm

Klicken Sie hier, um die diesmal installierte Version von create repo anzuzeigen

[root@yum-server ~]# rpm -qa | fgrep createrepo
createrepo-0.9.9-28.el7.noarch
[root@yum-server ~]#

Lassen Sie uns ein Repository erstellen

Vorbereitung

Betrachten Sie zunächst den Bereich, in dem Sie die Repository-Datenbank erstellen. In Anbetracht der Festplattengröße wird empfohlen, einen Ort zu erstellen.

Wenn es sich um einen lokalen Server handelt, handelt es sich um einen Bereich mit vielen Plattenkugeln. Wenn es sich um AWS usw. handelt, kann es sinnvoll sein, einen zusätzlichen Bereich einzufügen. Ich glaube nicht, dass es Probleme geben wird, wenn ich es nicht lokal für E / A usw. verwende.

Erstellen Sie ein Verzeichnis

Dieses Mal werden wir den Bereich unten sichern. /var/yum-repo

Außerdem ist es diesmal möglich, für mehrere CentOS-Versionen zu veröffentlichen Ich werde auch die folgende Richtlinie versuchen.

/ var / yum-repo / centos / [CentOS-Versionsnummer] / rpms

Wenn Sie nach Architektur teilen möchten, können Sie nach der CentOS-Versionsnummer "x86_64" verwenden. Ich denke, es wäre besser, durch "Noarch" usw. zu teilen. (Wenn Sie rpmbuild ausführen, wird rpm in Bogenhierarchieeinheiten erstellt, sodass dies gut zu sein scheint.)

Tatsächlich U / min platzieren

Wenn Sie es beispielsweise selbst wieder aufgebaut haben, legen Sie es ab.

Dieses Mal werde ich es als Beispiel verwenden, indem ich die Drehzahl aus dem CentOS-Base-Repository lösche. Es ist praktisch, beim Herunterladen von rpm # yumdownloader [Paketname] usw. zu verwenden. Dieses Mal verwenden wir die "wget" -Rpm, die leicht zu verstehen ist und keine Abhängigkeiten aufweist.

[root@yum-server rpms]# ls -ltr
total 548
-rw-r--r-- 1 root root 560272 May 17 00:48 wget-1.14-18.el7_6.1.x86_64.rpm
[root@yum-server rpms]#

Erstellen Sie Repository-Metadateninformationen

Es ist endlich Zeit für den Befehl "createrpo".

Da die RPM-Dateiinformationen im Verzeichnis unter dem angegebenen Scan importiert werden, Ich denke, es wird einige Zeit dauern, abhängig von der Anzahl. Diesmal war es eins, also wurde es sofort fertiggestellt.

# createrepo -d [Hierarchie zum Erstellen von Metadaten]

[root@yum-server 7]# pwd
/var/yum-repo/centos/7

[root@yum-server 7]# createrepo -d ./
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@yum-server 7]#

Wenn ein Repo erstellt wird, werden "Repo-Daten" in dem durch das Argument angegebenen Verzeichnis erstellt. Die RPM-Informationen unter dem durch das Argument angegebenen Verzeichnis werden abgerufen. XML-bezogene Informationen werden wie folgt gespeichert.

[root@yum-server 7]# ls -ltr
total 4
drwxr-xr-x 2 root root   45 Nov  8 19:41 rpms
drwxr-xr-x 2 root root 4096 Nov  8 19:43 repodata
[root@yum-server 7]# cd repodata/
[root@yum-server repodata]# ls -ltr
total 28
-rw-r--r-- 1 root root 1139 Nov  8 19:43 dedbecb0ef25ebe6b8646e2589dc48e9a2adb34d1d6a677eed9e100ad2cbca54-primary.xml.gz
-rw-r--r-- 1 root root  523 Nov  8 19:43 29d912df4c348eba529c6a9845827f02a8160c094ab0da8892a398fab70c27e0-filelists.xml.gz
-rw-r--r-- 1 root root  893 Nov  8 19:43 b7d1045f4692acfa996b581a68c9483103e0c4edd5b14ae96e92640aeaa68351-other.xml.gz
-rw-r--r-- 1 root root 1512 Nov  8 19:43 d9410596837121203e82f0dabbf83afc8d467d16b15d73c8436bdcfac86db0d6-other.sqlite.bz2
-rw-r--r-- 1 root root 1880 Nov  8 19:43 b80afe3ab58edef03d0043b69da54e041574ee17f3e717ef53d04926194cc67b-filelists.sqlite.bz2
-rw-r--r-- 1 root root 2620 Nov  8 19:43 dc35f95c517d1b9014fa0b21d80be4c28483bfab6dac993443ba195dd232d07a-primary.sqlite.bz2
-rw-r--r-- 1 root root 2969 Nov  8 19:43 repomd.xml
[root@yum-server repodata]#

Damit ist die Metadatenerstellung abgeschlossen.

Wenn Sie sich für diese Repository-Erstellungsrichtlinie entscheiden, wurde das Verzeichnis meiner Meinung nach für jede CentOS-Version erstellt Wenn Sie eine Version für CentOS 6 haben, erstellen Sie dort auch ein Repo.

Yum.conf-Einstellungen für jeden Client-Server

Lokale Server Edition

Ich frage mich ein wenig, ob es auf einem lokalen Server verwendet werden muss, aber es kann gelesen werden, indem eine yum-Repository-Datei wie die folgende erstellt wird.

einstellen
[root@yum-server yum.repos.d]# pwd
/etc/yum.repos.d
[root@yum-server yum.repos.d]#
[root@yum-server yum.repos.d]# vim local.repo
[local-repo]
enabled=0
name= local-repo of the year.
baseurl=file:///var/yum-repo/centos/$releasever
[root@yum-server yum.repos.d]#

Geben Sie den lokalen Dateipfad (Hierarchie, in der die Metadaten vorhanden sind) für den Teil "baseurl" an. Wenn Sie "$ releasever" verwenden, wird auch die Hauptversion des Betriebssystems zugewiesen. Es wird wahrscheinlich im CentOS-Base-Repository verwendet, daher denke ich, dass es irgendwie verstanden wird. Sie können die Details in man yum.conf überprüfen. Übrigens, da es "enabled = 0" ist, wird es normalerweise nicht gelesen.

Siehe das Repository

Ich habe unter yum.repos.d eine lokale Referenz eingerichtet. Überprüfen wir also, ob sie gelesen werden kann.

Da es schwierig ist, die gültigen Flags anderer Basis-Repositorys usw. in der Datei zu ändern, Deaktivieren Sie ein anderes als das diesmal hinzugefügte Repository mit einem Platzhalter im Befehl yum. Stellen Sie sicher, dass Sie über eine Repository-Referenz verfügen, indem Sie nur den Namen des von Ihnen erstellten Repositorys aktivieren.

[root@yum-server 7]# yum --disablerepo=* --enablerepo=local-repo repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                    repo name                                                              status
local-repo/7                                               local-repo of the year.                                                1
repolist: 1
[root@yum-server 7]#

Ich konnte bestätigen, dass es nur ein Paket gibt, auf das sicher verwiesen und verwaltet wird.

Wenn Sie es installieren und überprüfen möchten, können Sie es auch installieren.

[root@yum-server 7]# yum --disablerepo=* --enablerepo=local-repo install wget
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
local-repo                                                                                                       | 2.9 kB  00:00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.14-18.el7_6.1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================================
 Package                    Arch                         Version                                 Repository                        Size
========================================================================================================================================
Installing:
 wget                       x86_64                       1.14-18.el7_6.1                         local-repo                       547 k

Transaction Summary
========================================================================================================================================
Install  1 Package

Total download size: 547 k
Installed size: 2.0 M
Is this ok [y/d/N]:

Remote Server Edition

Und für Fernreferenzen. Legen Sie einfach die Repository-Informationen in dem Client fest, auf den Sie auf das erstellte Repository verweisen möchten, genauso wie auf die lokale Referenz.

Veröffentlichen Sie das Repository

Um remote darauf zu verweisen, veröffentlichen Sie zunächst das Repository-Verzeichnis im Web auf dem Server, auf dem das Repository zuvor erstellt wurde. Bitte verwenden Sie alles, was Sie möchten, wie Apache oder Nginx.

Wie eingangs erwähnt, entfällt hier das Verfahren. Screen Shot 2019-11-08 at 20.10.17.png

Stellen Sie yum auf der Client-Seite ein

Es ist eine Einstellung, die sich anfühlt, als wäre sie lokal festgelegt worden.

[root@yum-client ~]# cat /etc/yum.repos.d/local.repo
[local-repo]
enabled=0
name= local-repo of the year.
baseurl=http://[Öffentliche Webadresse]/centos/$releasever
[root@yum-client ~]#

Überprüfen Sie auch, ob das Repository auch hier gelesen werden kann.

[root@yum-client ~]# yum --disablerepo=* --enablerepo=local-repo repolist
Geladenes Plug-In:fastestmirror
Loading mirror speeds from cached hostfile
local-repo                                                                                                       | 2.9 kB  00:00:00
local-repo/7/primary_db                                                                                          | 2.6 kB  00:00:00
Repository-ID Repository-Name Status
local-repo/7                                                  local-repo of the year.                                               1
repolist: 1
[root@yum-client ~]#

Ich konnte mich aus der Ferne darauf beziehen!

Zum Schluss installieren wir wget.

[root@yum-client ~]# yum --disablerepo=* --enablerepo=local-repo install wget
Geladenes Plug-In:fastestmirror
Loading mirror speeds from cached hostfile
Abhängigkeiten auflösen
-->Transaktionsbestätigung durchführen.
--->Paket wget.x86_64 0:1.14-18.el7_6.Installieren Sie 1
-->Abhängigkeitsauflösung abgeschlossen.

Die Abhängigkeit wurde behoben

========================================================================================================================================
Paketarchitektur-Versions-Repository-Kapazität
========================================================================================================================================
Während der Installation:
 wget                       x86_64                       1.14-18.el7_6.1                         local-repo                       547 k

Transaktions zusammenfassung
========================================================================================================================================
Installation 1 Paket

Gesamtdownloadkapazität: 547 k
Installationskapazität: 2.0 M
Is this ok [y/d/N]: y
Downloading packages:
wget-1.14-18.el7_6.1.x86_64.rpm                                                                                  | 547 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Während der Installation: wget-1.14-18.el7_6.1.x86_64                                                                             1/1
Während der Überprüfung: wget-1.14-18.el7_6.1.x86_64                                                                             1/1

Installation:
  wget.x86_64 0:1.14-18.el7_6.1

Hat vervollständigt!
[root@yum-client ~]#

Fügen Sie Pakete hinzu, um Informationen in der Datenbank wiederzugeben

Wenn Sie Ihrem Repository ein Paket hinzufügen möchten, müssen Sie es aktualisieren.

# createrepo --update ./
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Spawning worker 4 with 1 pkgs
Spawning worker 5 with 0 pkgs
Spawning worker 6 with 0 pkgs
Spawning worker 7 with 0 pkgs
Spawning worker 8 with 0 pkgs
Spawning worker 9 with 0 pkgs
Spawning worker 10 with 0 pkgs
Spawning worker 11 with 0 pkgs
Spawning worker 12 with 0 pkgs
Spawning worker 13 with 0 pkgs
Spawning worker 14 with 0 pkgs
Spawning worker 15 with 0 pkgs
Spawning worker 16 with 0 pkgs
Spawning worker 17 with 0 pkgs
Spawning worker 18 with 0 pkgs
Spawning worker 19 with 0 pkgs
Spawning worker 20 with 0 pkgs
Spawning worker 21 with 0 pkgs
Spawning worker 22 with 0 pkgs
Spawning worker 23 with 0 pkgs
Spawning worker 24 with 0 pkgs
Spawning worker 25 with 0 pkgs
Spawning worker 26 with 0 pkgs
Spawning worker 27 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
#

schließlich

――Wenn Sie Ihren eigenen Build erstellen oder ihn intern veröffentlichen müssen, können Sie ihn problemlos erstellen. Lassen Sie es uns also tun.

Recommended Posts

Richten Sie einen yum-Repository-Server unter CentOS 7 ein und verweisen Sie lokal und von anderen Servern usw. darauf.
Von der Einführung von Flask unter CentOS bis zum Service unter Nginx und uWSGI
So richten Sie einen lokalen Entwicklungsserver ein
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Richten Sie einen einfachen lokalen Server auf Ihrem Mac ein
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
[Teil 1] Lassen Sie uns einen Micra-Server unter Linux einrichten
Wenn es schwierig ist, beim Senden von E-Mails mit Python lokal einen SMTP-Server einzurichten.
So richten Sie WSL2 unter Windows 10 ein und erstellen eine Lernumgebung für Linux-Befehle
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Richten Sie die Python-Umgebung unter CentOS ein
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
Stellen Sie die Lambda-Funktion ein und lassen Sie sie mit S3-Ereignissen arbeiten!
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
Richten Sie mit CentOS Linux 8 + Apache mod_ssl einen Reverse-Proxy für den https-Server ein
Eine Geschichte über einen Anfänger, der sich bemüht, CentOS 8 einzurichten (Verfahrensnotiz)
Starten Sie die Webkamera, machen Sie ein Standbild und speichern Sie es lokal
[Python] Senden Sie das von der Webkamera aufgenommene Bild an den Server und speichern Sie es