fragen stichworte

Installieren von YUM-Paketen auf einem CentOS 6-System mit Airgap (offline)

Ich habe ein CentOS 6-System, das aus Sicherheitsgründen mit Luftspalten versehen ist. Es war möglicherweise noch nie mit dem Internet verbunden, und wenn dies der Fall ist, wurde es seit langem nicht aktualisiert.

Ich möchte alle .rpm-Pakete auf einem Laufwerk ablegen, damit sie offline installiert werden können, ohne das Internet abzufragen. Bei meiner Test-VM stelle ich jedoch fest, dass yum ständig hängt und versucht, ein Online-Repository zu aktualisieren, obwohl der lokale Pfad angegeben ist.

Gibt es auch eine Möglichkeit, ein Paket und alle Abhängigkeiten für dieses Paket mithilfe von yum-utils/yumdownloader zu packen? Im Moment fehlen noch einige Abhängigkeiten (z. B. wenn ich die gcc-c ++ - RPM ziehe, werden cpp und gcc gezogen, nicht aber cloog-ppl, mpfr oder ppl)

Ich habe bereits eine -Lösung wie diese ausprobiert, aber ich kann nicht davon ausgehen, dass es bereits einen Abhängigkeitsbaum gibt oder dass yum aktuell ist.

Bei einer Neuinstallation des Docker-Images bekomme ich beim ersten Versuch, yum (mit deaktiviertem Internet) auszuführen, einen Fehler Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

antworten

Wenn Sie Bedenken hinsichtlich der Kompatibilität zwischen der installierten Version und dem neuesten Stable haben, möchten Sie möglicherweise Ihre Centos-Version in /etc/redhat-release ermitteln und Pakete von http://vault.centos.org/ verwenden. Beachten Sie jedoch, dass sie keine Sicherheitsupdates oder Fehlerbehebungen enthalten.

Um Pakete herunterzuladen, verwenden Sie die offiziellen Redhat-Anweisungen: https://access.redhat.com/solutions/10154

yum install yum-plugin-downloadonly
yum install --downloadonly --downloaddir=<directory> <package>

oder

yum install yum-utils
yumdownloader --resolve

Sie können sich auch die Replizierung des Yum-Verlaufs auf vm ansehen, auf die Sie rpms mit den folgenden Techniken herunterladen möchten: https://unix.stackexchange.com/a/83115

The easiest way, and it's worked for a long time is:

yum-debug-dump => gives file.
yum-debug-restore <file-from-debug-dump>

...which works much like the get/set selections dpkg command, AIUI. Also note that if you are replaying history you can use:

yum history addon-info last saved_tx => gives file
yum load-tx <file-from-addon-info>

...instead of having to parse it yourself.

Bearbeiten:

Um alle RPMS aus dem Verzeichnis zu installieren, verwenden Sie cd und verwenden Sie einfach rpm -ivh *.rpm, wenn Sie sie installieren möchten, oder rpm -Uvh *.rpm, wenn einige heruntergeladene Dateien neuer sind als die bereits vorhandenen, und Sie können die Aktualisierung problemlos durchführen.

edit: NOPE, so einfach ist nichts. Dieser Fehler wird immer noch auf einem neuen Stapel angezeigt: Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

Wenn ich Yum gerade lange genug auf das Internet zugreifen lasse, um es selbst zu konfigurieren, funktioniert Folgendes:

Zuerst konnte ich alle Abhängigkeitspakete mit Aufrufen von

herunterziehen

yum install -y --downloadonly --downloaddir=$pkgdir <package>

und

yum reinstall -y --downloadonly --downloaddir=$pkgdir <package>

, um zu erzwingen, dass bereits installierte Pakete ihre .rpm und Abhängigkeiten abrufen. Nachdem ich mir mein Tarball mit Paketen besorgt hatte, legte ich es auf ein neues System.

Zuerst habe ich sed -i 's/enabled=1/enabled=0/' '/etc/yum/pluginconf.d/fastestmirror.conf' ausgeführt, um das Fastmirror-Plugin zu deaktivieren.

Anschließend konnte ich alle Pakete installieren, die ich benötigte, indem ich in das Verzeichnis mit den Paketen cd'ing abspeicherte und dann

aufrief

yum install --disablerepo=\* packag*

in der Reihenfolge, die für die Abhängigkeiten erforderlich ist. Das sah irgendwie aus wie

yum install --disablerepo=\* epel*
yum install --disablerepo=\* ius*
yum install --disablerepo=\* libstd*
yum install --disablerepo=\* mpfr*
yum install --disablerepo=\* cpp*
yum install --disablerepo=\* libgcc*
yum install --disablerepo=\* libgomp*
yum install --disablerepo=\* libg*
yum install --disablerepo=\* ppl*
yum install --disablerepo=\* cloog*
yum install --disablerepo=\* gcc*
yum install --disablerepo=\* atlas*
yum install --disablerepo=\* python*

Und voila! Ich konnte python3.5 auf einem vollständig luftgefüllten System ausführen.