Univention Bugzilla – Bug 28010
Installation von Paketen vereinheitlichen
Last modified: 2012-12-12 21:10:00 CET
Im Zuge des App-Centers wird die Installation von Paketen vereinheitlicht, so dass es ein Kommandozeilen-Tool (und/oder eine eigene Python-Lib) geben wird, mit der man auf eine einfache Weise Pakete installieren und deinstallieren kann. Dieses könnte dann von der Paketverwaltung, von dem App-Center und System-Setup verwendet werden. Es wäre auch denkbar, dass die Statusinformationen für eine Progressbar in eine separate Datei (oder Statusdescriptor) geschrieben werden, damit sie separat von den eigentlichen LOG-Ausgaben behandelt werden können. > http://stackoverflow.com/questions/6050187/write-to-file-descriptor-3-of-a-python-subprocess-popen-object
*** Bug 28094 has been marked as a duplicate of this bug. ***
(In reply to comment #1) > *** Bug 28094 has been marked as a duplicate of this bug. *** Dieses Kommandozeilen-Tool kann dann ebenfalls bei der Installation der entsprechenden Server-Rolle Anwendung finden. So können Fehler in diesem Schritt direkt angezeigt werden.
Ein Schritt nach dem anderen. Zunächst wurde das Setupskript 10software in Python implementiert: univention-system-setup (6.0.3-1) Nun folgt das Skript für die Serverrolle
10role wurde nun durch ein Python-Skript ersetzt (und damit direkt Bug #28094 gelöst). Es sollte geprüft werden, ob die FRACTIONS für den Schritt erhöht werden können... univention-system-setup (6.0.4-1) Funktionen des Skripts können ab jetzt extrahiert werden, um im App-Center Verwendung zu finden.
Funktionen wurden extrahiert und in univention-lib (2.0.0-1) "global" verfügbar gemacht. Nächster Schritt: SetupScripts anpassen.
SetupScripts angepasst in univention-system-setup (6.0.11-1) Nächster Schritt: UMC-Package Management anpassen
UMC Package Management wurde in univention-management-console-module-packages (2.0.0-1) grundlegend überarbeitet und nutzt nun auch den PackageManager.
Der PackageManager hat nun seine eigene Übersetzung (bzw. univention-lib hat jetzt eine) in univention-lib (2.0.1-1)
beim dist-upgrade: Trigger für python-support werden verarbeitet ... /usr/lib/pymodules/python2.5/univention/lib/package_manager.py:239: Warning: 'with' will become a reserved keyword in Python 2.6 Compiling /usr/lib/pymodules/python2.5/univention/lib/package_manager.py ... File "/usr/lib/pymodules/python2.5/univention/lib/package_manager.py", line 239 with self.noninteractive(): ^ SyntaxError: invalid syntax
Wenn per System Setup ein System vom Master zum Memberserver gewandelt wird, dann funktioniert derzeit der autoremove nicht: >>> a.autoremove() __MSG__:Deleting unneeded libkdecore5 __MSG__:Deleting unneeded xserver-xorg-video-voodoo __MSG__:Deleting unneeded libilmbase6 __MSG__:Deleting unneeded ttf-dejavu-extra __MSG__:Deleting unneeded libv4l-0 __MSG__:Deleting unneeded libxfont1 __MSG__:Deleting unneeded libflac8 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/pymodules/python2.6/univention/management/console/modules/setup/setup_script.py", line 356, in autoremove self.package_manager.autoremove() File "/usr/lib/python2.6/contextlib.py", line 34, in __exit__ self.gen.throw(type, value, traceback) File "/usr/lib/pymodules/python2.6/univention/management/console/modules/setup/setup_script.py", line 306, in noninteractive yield File "/usr/lib/pymodules/python2.6/univention/management/console/modules/setup/setup_script.py", line 356, in autoremove self.package_manager.autoremove() File "/usr/lib/pymodules/python2.6/univention/lib/package_manager.py", line 373, in autoremove pkg.mark_delete() File "/usr/lib/python2.6/dist-packages/apt/deprecation.py", line 98, in deprecated_function return func(*args, **kwds) File "/usr/lib/python2.6/dist-packages/apt/package.py", line 1190, in mark_delete fix.resolve() SystemError: E:Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages. >>> Ein direktes apt-get autoremove funktioniert: root@ucs31:~# apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: bind9utils binutils ca-certificates ca-certificates-java consolekit dbus-x11 dictionaries-common ed firefox-en gcc gcc-4.4 ghostscript gsfonts hal hal-info icedtea6-plugin java-common kaboom kde-window-manager kdebase-runtime kdebase-runtime-data kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools keyboard-configuration libaa1 libaccess-bridge-java libaccess-bridge-java-jni libaspell15 libasyncns0 libattica0 libaudio2 libaudit0 libavcodec52 libavutil49 libc-dev-bin libc6-dev libcaca0 libcdio10 libck-connector0 libclucene0ldbl libcupsimage2 libcurl3-gnutls libdbus-1-dev libdbus-glib-1-dev libdirac-encoder0 libdirectfb-1.2-9 libdvdnav4 libdvdread4 libeggdbus-1-0 libenchant1c2a libexiv2-9 libfaad2 libfam0 libflac8 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libglib2.0-dev libglu1-mesa libgomp1 libgraphicsmagick3 libgs8 libgsm1 libhal-storage1 libhal1 libhunspell-1.2-0 libilmbase6 libiodbc2 libiso9660-7 libjack-jackd2-0 libjbig2dec0 libkdc2-heimdal libkde3support4 libkdecorations4 libkdecore5 libkdesu5 libkdeui5 libkdnssd4 libkephal4 libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff2-4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpathsea5 libkpty4 libkrosscore4 libktexteditor4 libkutils4 libkwineffects1a libkworkspace4 liblcms1 libltdl7 libmad0 libmng1 libmodplug1 libmpcdec6 libnepomuk4 libnepomukquery4a libnss3-1d libogg0 libopenexr6 libopenjpeg2 libopts25 liborc-0.4-0 libpaper-utils libpaper1 libpciaccess0 libphonon4 libplasma3 libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-qt-1-0 libpoppler5 libpostproc51 libpulse-mainloop-glib0 libpulse0 libqca2 libqt4-dbus libqt4-designer libqt4-network libqt4-opengl libqt4-qt3support libqt4-script libqt4-sql libqt4-sql-mysql libqt4-svg libqt4-webkit libqt4-xml libqt4-xmlpatterns libqtcore4 libqtgui4 libraptor1 librasqal2 librdf0 libschroedinger-1.0-0 libsdl1.2debian libsdl1.2debian-alsa libslp1 libsmbclient libsndfile1 libsolid4 libsoprano4 libspeex1 libssh-4 libstartup-notification0 libstreamanalyzer0 libstreams0 libsvga1 libtalloc2 libtheora0 libthreadweaver4 libts-0.0-0 libunivention-license0 libutempter0 libv4l-0 libvcdinfo0 libvorbis0a libvorbisenc2 libwavpack1 libwbclient0 libwmf0.2-7 libx11-xcb1 libx86-1 libxaw7 libxcb-atom1 libxcb-aux0 libxcb-dri2-0 libxcb-event1 libxcb-shape0 libxcb-shm0 libxcb-xv0 libxfont1 libxine1 libxine1-bin libxine1-console libxine1-ffmpeg libxine1-misc-plugins libxine1-plugins libxine1-x libxkbfile1 libxml2-utils libxmu6 libxslt1.1 libxss1 libxtst6 libxv1 libxvmc1 libxxf86dga1 libxxf86vm1 linux-libc-dev luatex myspell-de-ch ntp odbcinst odbcinst1debian2 openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib oxygen-icon-theme phonon-backend-xine pkg-config plasma-scriptengine-javascript pm-utils powermgmt-base preview-latex-style python-univention-directory-manager-uvmm python-univention-directory-reports python-univention-license qt4-qtconfig shared-desktop-ontologies soprano-daemon tex-common texlive texlive-base texlive-binaries texlive-common texlive-doc-base texlive-fonts-recommended texlive-lang-german texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-pictures tsconf ttf-dejavu ttf-dejavu-extra tzdata-java univention-directory-reports univention-license-import univention-management-console-module-ipchange univention-newsid unixodbc x11-utils x11-xkb-utils x11-xserver-utils xbitmaps xdg-utils xfonts-base xfonts-encodings xfonts-utils xinit xkb-data xserver-common xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-cyrix xserver-xorg-video-fbdev xserver-xorg-video-geode xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-intel xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-nsc xserver-xorg-video-nv xserver-xorg-video-openchrome xserver-xorg-video-r128 xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-vmware xserver-xorg-video-voodoo xterm xulrunner-1.9.1 zlib1g-dev 0 upgraded, 0 newly installed, 295 to remove and 0 not upgraded. After this operation, 715 MB disk space will be freed. Do you want to continue [Y/n]? Wenn in der autoremove Methode pkg.mark_delete(auto_fix=False) anstatt pkg.mark_delete() aufgerufen wird, dann funktioniert es wie gewünscht.
Ich bekomme aktuell Fehlermeldungen, wenn ein Paket nicht deinstalliert werden konnte, weil es nicht installiert war, beispielsweise für das Paket univention-directory-manager oder samba.
Soweit fertig. Die beiden Pakete Module system-setup und (maßgeblich) packages verwenden beide den gleichen PackageManager. Dieser bietet eine Reihe von Funktionen, die man zum komfortablen Installieren von Paketen aus einem Python-Skript heraus brauchen kann. Beide Pakete (insbesondere packages) funktionieren momentan noch nicht, da die Dojo 1.8 Anpassung noch nicht fertig ist.
Fixed. Dabei eine Reihe von Paketen angefasst, die alle durch die QA dürfen: base/univention-lib (package_manager.py) base/univention-system-setup (neue Setup-Skripte mit dem PackageManager) management/univention-management-console-module-packages (der PackageManager) Natürlich muss der PackageManager im Regelfall funktionieren, insbesondere das Error Handling ist aber auch interessant. Funktioniert das Locking? Wird das auch wieder freigegeben? Funktioniert das noninteractive? Was passiert, wenn man Pakete installieren will, die sich ausschließen? Oder Pakete deinstallieren will, die man braucht (vgl das Rollen-Skript, dass sicherstellen will, dass die eigenen Rollenpakete niemals deinstalliert werden können!!)? Funktionieren update und autoremove? Ist der cache immer auf dem richtigen Stand? Werden eigentlich die relevanten Fehler- und sonstigen Meldungen an den ProgressState des PackageManagers weitergeleitet? Fragen über Fragen. Die Komponente sollte aber schon besonders robust sein. *Eigentlich* sollte der PackageManager auch im univention-updater eingesetzt werden. Da habe ich mich nicht rangewagt.
Ein nicht reproduzierbarer Fehler tritt manchmal gleich zu Beginn des Join(/Setup)-Vorgangs auf: === RUNNING SETUP SCRIPTS (2012-09-13 10:15:42) === /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) W: The config registry variable 'proxy/http' does not exist Traceback (most recent call last): File "/usr/lib/univention-system-setup/scripts/software/10software", line 36, in <module> from univention.management.console.modules.setup.setup_script import AptScript, main, _ File "/usr/lib/pymodules/python2.6/univention/management/console/modules/setup/setup_script.py", line 44, in <module> locale.resetlocale() # needed for external translation (e.g. apt) File "/usr/lib/python2.6/locale.py", line 523, in resetlocale _setlocale(category, _build_localename(getdefaultlocale())) locale.Error: unsupported locale setting /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) Traceback (most recent call last): File "/usr/lib/univention-system-setup/scripts/role/10role", line 39, in <module> from univention.management.console.modules.setup.setup_script import AptScript, main, _ File "/usr/lib/pymodules/python2.6/univention/management/console/modules/setup/setup_script.py", line 44, in <module> locale.resetlocale() # needed for external translation (e.g. apt) File "/usr/lib/python2.6/locale.py", line 523, in resetlocale _setlocale(category, _build_localename(getdefaultlocale())) locale.Error: unsupported locale setting === net/10interfaces (2012-09-13 10:15:42) === Hin und wieder habe ich ihn gesehen, wenn ich folgende Änderungen anwenden wollte: locales: de -> de, en; default/locale: de -> en Das System hatte also noch keine Locale en und versuchte sie zu setzen (oder so?)
Eine Kleinigkeit: derzeit scheinen Umlaute ("Ausf?hren von...") nicht korrekt angezeigt zu werden.
QA: Soweit sieht das super aus. * Paket global verfügbar → OK Der PackageManager ist jetzt in python-univention-lib vorhanden und funktionierte in meinen Tests sehr gut. * Übersetzungen → OK * Appliance-Modus + Wechsel zu Memberserver + Autoremove von Paketen → OK (In reply to comment #14) > Ein nicht reproduzierbarer Fehler tritt manchmal gleich zu Beginn des > Join(/Setup)-Vorgangs auf: > ... > Hin und wieder habe ich ihn gesehen, wenn ich folgende Änderungen anwenden > wollte: locales: de -> de, en; default/locale: de -> en > Das System hatte also noch keine Locale en und versuchte sie zu setzen (oder > so?) → Das konnte ich so nicht reproduzieren Folgende Punkte sind aufgefallen: * Zwei parallele Installationen → es wird ein Traceback angezeigt, vielleicht kann hier eine richtige Fehlermeldung zurückgegeben werden? Hier der Traceback: { "status": "591 ", "message": "Die Ausführung des Kommandos packages/invoke ist fehlgeschlagen: Traceback (most recent call last): File "/usr/lib/pymodules/python2.6/univention/management/console/modules/__init__.py", line 201, in execute func( request ) File "/usr/lib/pymodules/python2.6/univention/management/console/modules/decorators.py", line 183, in _response return function(self, request) File "/usr/lib/pymodules/python2.6/univention/management/console/modules/packages/__init__.py", line 307, in invoke raise umcm.UMC_Error(_('Another package operation is in progress')) UMC_Error: Zur Zeit wird eine andere Paketverarbeitung durchgeführt " } * Es scheint noch Codierungsprobleme zu geben, es kommt jetzt beim Installieren von Paketen "Ausf?hren von dpkg". * Changelog: Internally use a python PackageManager instead of apt-get-wrapper Änderungsvorschlag: Refactoring of the module backend to use the new python class PackageManager instead of apt-get-wrapper.
Mir ist noch ein Fehler aufgefallen, in 10role wird univention-directory-manager als Paket angegeben, das exisitiert allerdings nicht. Gab es das schon vorher? In setup.log gibt es dazu auch eine Fehlermeldung, die allerdings nicht angezeigt wird. Ist das richtig so? __MSG__:Fetched 0 B in 0s (0 B/s) __MSG__:univention-directory-manager: No such package Stopping OpenLDAP: slapd. __ERR__:univention-directory-manager: No such package __MSG__:Fetched 0 B in 0s (0 B/s) __MSG__:Running dpkg __STEP__:100.0
(In reply to comment #17) > Mir ist noch ein Fehler aufgefallen, in 10role wird > univention-directory-manager als Paket angegeben, das exisitiert allerdings > nicht. Gab es das schon vorher? In setup.log gibt es dazu auch eine > Fehlermeldung, die allerdings nicht angezeigt wird. Ist das richtig so? > > __MSG__:Fetched 0 B in 0s (0 B/s) > __MSG__:univention-directory-manager: No such package > Stopping OpenLDAP: slapd. > __ERR__:univention-directory-manager: No such package > __MSG__:Fetched 0 B in 0s (0 B/s) > __MSG__:Running dpkg > __STEP__:100.0 Aber so war das mal. Ich habe mir das Paket nicht ausgedacht. Welches soll denn stattdessen entfernt werden? python-univention-directory-manager?
(In reply to comment #18) > Aber so war das mal. Ich habe mir das Paket nicht ausgedacht. Welches soll denn > stattdessen entfernt werden? python-univention-directory-manager? Das müsste univention-management-console-module-udm sein. Das ist meines Wissens per Default nur auf Master + Backup installiert.
(In reply to comment #19) > (In reply to comment #18) > > Aber so war das mal. Ich habe mir das Paket nicht ausgedacht. Welches soll denn > > stattdessen entfernt werden? python-univention-directory-manager? > > Das müsste univention-management-console-module-udm sein. Das ist meines > Wissens per Default nur auf Master + Backup installiert. Das wird schon deinstalliert: # These packages will be removed if the server role was changed to memberserver or basesystem base_remove_packages = [ 'samba-common', 'samba', 'samba4', 'slapd', 'univention-directory-notifier', 'bind9', 'isc-dhcp-server', 'heimdal-kdc', 'heimdal-servers', 'univention-ldap-acl-slave', 'univention-directory-manager', 'univention-virtual-machine-manager-schema', 'univention-management-console-module-udm', 'nagios3-core', ] Gibt es "Ersatz" für univention-directory-manager? Ansonsten wird es halt gestrichen und nichts weiter deinstalliert. Installiert ist es ja schon mal nicht. Außer vielleicht in komischen Konstellationen, d.h. installiert als 3.0-2, gejoint als 3.1
(In reply to comment #17) > ... In setup.log gibt es dazu auch eine > Fehlermeldung, die allerdings nicht angezeigt wird. Ist das richtig so? Das Paket, das nicht deinstalliert werden kann, wird doch in einer anschließenden Fehlermeldung nach der Einrichtung angezeigt.
univention-directory-manager einfach aus der Liste gestrichen univention-system-setup 6.0.33-1.384.201209181156
(In reply to comment #16) > ... > Folgende Punkte sind aufgefallen: > > * Zwei parallele Installationen → es wird ein Traceback angezeigt, ... → OK > * Es scheint noch Codierungsprobleme zu geben, es kommt jetzt beim Installieren > von Paketen "Ausf?hren von dpkg". → jetzt scheint es zu funktionieren, also OK ... noch unklar, warum es hier manchmal zu Problemen kommt, scheint aber ein generisches Problem zu sein. > * Changelog: ... → OK (In reply to comment #17) > Mir ist noch ein Fehler aufgefallen, in 10role wird > univention-directory-manager als Paket angegeben, das exisitiert allerdings > nicht. Gab es das schon vorher? ... → OK, ist jetzt raus Somit kann der Bug erst einmal zu → VERIFIED
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".