Wenn ich Gentoo auf meinen Root-Servern einsetze, will ich nicht einmal die Woche oder einmal am Tag einen cronjob mit
Code: Select all
emerge sync && emerge --update --newuse --deep world
durchführen. Automatisch schonmal gar nicht, wäre auf einem Server viel zu riskant, IMHO.
Und auch so muss man nicht jedes Update das in Portage einfließt direkt installieren. Bei Servern kommt es eher drauf an, dass sie zuverlässig und mit neusten Sicherherheits-Patches laufen, und nicht endlos mit Updates beschäftigt sind, mit allen damit verbundenen Problemen (zusätzliche Systemlast, downtime, Probleme mit wenig getesteten Updates, ständige Konfigurations-Anpassungen...).
Natürlich muss man sicherheitskritische Updates einspielen - sofern das eigene System hierfür tatsächlich anfällig ist, in vielen Fällen auch kritische Bug-Fixes. Das trifft vor allem für Pakete wie den Kernel, Server-Software, öffentliche PHP-Scripte und verwendete Bibliotheken zu. Auf der anderen Seite muss man aber nicht unbedingt jedes gcc, glibc, baslayout oder wget Update mitnehmen. Allgemein macht es auch eher selten Sinn überhaupt eine Software zu aktualisieren, wenn man deren neue Features nicht braucht, solange keine sicherheits- oder stabilitäts-kritischen Bugs behoben wurden. Natürlich muss man dabei Gentoo ein bisschen aufpassen, dass man da nicht zu sehr hinterherhinkt, allerdings habe ich hier bisher keine schlechten Erfahrungen gemacht, die unterstützten Versionen in Portage sind IMHO meist gut durchdacht.
Aber wie macht man das jetzt am besten in der Praxis? Ich würde mal schätzen, dass ich nur wenige % der Updates die mir
Code: Select all
emerge --update --newuse --deep --pretend --verbose world
anzeigt wirklich benötige. Ist mit -pv allerdings hilfreich für eine Ã?bersicht für welche Pakete welche Updates verfügbar sind. Heute mache ich das so, dass ich mit regelmäßig diese Ausgabe per mail zuschicke, die vorhandenen Updates ansehe, und ggfs. Pakete manuell aktualisiere. Meistens halte ich mich aber mit Hilfe von http://www.gentoo-portage.com auf dem neusten Stand, da kann man nämlich seine installierten Pakete angeben, und erhält dann regelmäßig Mails und/oder RSS-Meldungen bei Updates dieser Pakete.
Wie macht Ihr das?
Wenn ich ein Paket gefunden habe das ich aktualisieren will (z.B. PHP), aktualisiere ich das meist wie folgt:
Code: Select all
emerge php
Das aktualisiert natürlich nur dieses eine Paket. Aber wenn ich --update oder auch --deep verwende, will emerge so viele unnötige Pakete aktualisieren (z.B. GCC, Perl...), und wieso soll ich unbedingt alle Pakete die PHP oder eines der benötigten Pakete braucht aktualisieren, wenn die vorhandenen noch OK sind (also keine sicherheitskritischen Bugs enthalten) und alles funktioniert?
Bei solchen Paketen ist das ganze noch sehr einfach. Aber es kommt ja immer wieder vor, dass auch Probleme in Bibliotheken wie zlib oder openssl gefunden werden, die von sehr vielen Programmen gelinkt werden.
Gut, einige der Abhängigkeiten kennt man und kann entsprechende Pakete neu kompilieren/emergen, und sonst behelfe ich mir mit equery aus dem gentoolkit:
Code: Select all
# equery depends openssl
[ Searching for packages depending on openssl... ]
dev-db/mysql-4.0.25-r2
dev-lang/python-2.3.3-r1
dev-lang/php-5.1.0_rc1
mail-mta/postfix-2.1.5-r1
net-libs/libwww-5.4.0-r2
net-misc/curl-7.11.0
net-misc/openssh-3.9_p1-r1
net-misc/neon-0.24.7
net-misc/wget-1.9.1-r3
Ich gucke mir dann halt die Abhängigkeiten an, und lasse emerge halt Sachen wie openssh, postfix, mysql... neu kompilieren.
Oder übersehe ich hier ein praktisches Feature in Portage? Fast alle Tipps/Anleitungen zu Portage Updates finde ich erhlich gesagt total übertrieben, zumindest für einen Server.
Wie macht Ihr das?
Weiß jemand was über den aktuellen Stand von emerge security? Das wäre sehr praktisch in meinen Augen. Allerdings wird vermutlich auch das nicht die entsprechenden Abhängigkeiten berücksichtigen. Und glsa-check finde ich irgendwie etwas unhandlich.
Viele Grüße
Andreas