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.
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 ~]#
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.
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.)
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]#
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.
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.
[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.
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]:
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.
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.
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 ~]#
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
#
――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.