Ich habe Probleme mit der Installation von Paketen in Form von lokal heruntergeladene RPM-Datei - nur auf Oracle Linux (OEL). Gibt es einen Fehler? Hat das jemand beobachtet? Es wäre ein großer Fehler, also bin ich etwas überrascht.Chef Problem mit lokalen RPM-Paket-Installation auf Oracle Linux (Oel)
Chef Rezept ist ganz einfach:
pkg_src_location = 'https://s3.amazonaws.com/solution-automation-folder/qualys'
pkg = 'qualys-cloud-agent.x86_64.rpm'
local_image = "#{Chef::Config['file_cache_path']}/#{pkg}"
remote_file 'qualys-cloud-agent-image' do
path local_image
source "#{pkg_src_location}/#{pkg}"
end
package 'qualys-cloud-agent' do
source local_image
end
Aus https://github.com/r2oro/oel_pkg_test.git verfügbar ist.
Ich habe beobachtet, dass auf Oracle Linux (OEL) mit folgendem Python-Skript führt ausgelöst wird:
/usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30
Es läuft eine ganze Weile (mehrere hundert Megabyte an Daten herunterzuladen - so weit ich sehen kann - yum Repo-Metadaten) und scheitert schließlich (Küche im Debug-Modus speichert alles auf stdout ...). Auf jeden Fall ist das Ergebnis:
* yum_package[qualys-cloud-agent] action install[2016-12-01T12:35:32+00:00] ERROR: /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py exceeded timeout 900
================================================================================
Error executing action `install` on resource 'yum_package[qualys-cloud-agent]'
================================================================================
Mixlib::ShellOut::CommandTimeout
--------------------------------
Command timed out after 900s:
Command exceeded allowed execution time, process terminated
---- Begin output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ----
STDOUT:
STDERR:
---- End output of /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 ----
Ran /usr/bin/python /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.16.42/lib/chef/provider/package/yum/yum-dump.py --options --installed-provides --yum-lock-timeout 30 returned
Resource Declaration:
---------------------
# In /tmp/kitchen/cache/cookbooks/oel_pkg_test/recipes/default.rb
16: package 'qualys-cloud-agent' do
17: source local_image
18: end
Compiled Resource:
------------------
# Declared in /tmp/kitchen/cache/cookbooks/oel_pkg_test/recipes/default.rb:16:in `from_file'
yum_package("qualys-cloud-agent") do
package_name "qualys-cloud-agent"
action [:install]
retries 0
retry_delay 2
default_guard_interpreter :default
declared_type :package
cookbook_name "oel_pkg_test"
recipe_name "default"
source "/tmp/kitchen/cache/qualys-cloud-agent.x86_64.rpm"
flush_cache {:before=>false, :after=>false}
end
Haben Sie beachten Sie, dass yum flush_cache sollte nicht passieren, aber es tut immer noch? Es ist frustrierend. Diese immer scheitert so in meiner lokalen Küche (mit Vagrant/Virtualbox) oder sogar in AWS Cloud Küche ... Real Instanzen manchmal scheitern manchmal konvergieren ... Aber es ist eine Lotterie. Wie auch immer, warum dieses Cache-Update überhaupt für ein einzelnes lokales rpm-Image passiert !?
Ich versuche rpm_package zu verwenden, aber dies führt zu Problemen mit yum_package Wesen in anderen Rezepten ...
Irgendwelche Gedanken?
Ich versuchte rpm_package zu verwenden, aber (wie oben erwähnt) mit einigen anderen Rezepten zu einem Konflikt führen, die yum_package verwendet, konnten sie mit Fehlermeldung folgenden: „yum-Dump Allgemeinen Fehler: rpmdb unter uns verändert“. Eigentlich passiert dieser Yum-Dump auch auf Centos ... aber es produziert nicht so viele Daten ... – r2oro
Es hört sich so an, als ob dein Paket etwas Wackeliges an der RPM-Datenbank macht, das yum nicht mag. Funktioniert das alles von Hand? – coderanger
Ja, sicher, das RPM-Paket ist in Ordnung. Allerdings mache ich mir wirklich Sorgen über das Verhalten von yum_package. Es wird ausgelöst, dass yum-dump.py nach Repometadaten fragt, die überhaupt nicht benötigt werden (für lokale RPM-Installation). Tatsächlich passiert es auch auf Knoten, deren Caches bereits aktualisiert wurden. Normalerweise wäre das kein Problem, aber bei OEL ist es so, da yum-dump.py wirklich riesig ist und die Dump irgendwann ausläuft. – r2oro