Bug 28010 - Installation von Paketen vereinheitlichen
Installation von Paketen vereinheitlichen
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - App-Center
UCS 3.0
Other Linux
: P1 enhancement (vote)
: UCS 3.1
Assigned To: Dirk Wiesenthal
Alexander Kläser
: interim-1
: 28094 (view as bug list)
Depends on: 26857
Blocks:
  Show dependency treegraph
 
Reported: 2012-07-20 16:03 CEST by Alexander Kläser
Modified: 2012-12-12 21:10 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2012-07-20 16:03:25 CEST
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
Comment 1 Alexander Kläser univentionstaff 2012-07-27 10:44:44 CEST
*** Bug 28094 has been marked as a duplicate of this bug. ***
Comment 2 Alexander Kläser univentionstaff 2012-07-27 10:46:08 CEST
(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.
Comment 3 Dirk Wiesenthal univentionstaff 2012-07-30 14:54:34 CEST
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
Comment 4 Dirk Wiesenthal univentionstaff 2012-07-31 08:45:39 CEST
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.
Comment 5 Dirk Wiesenthal univentionstaff 2012-08-09 16:33:22 CEST
Funktionen wurden extrahiert und in
  univention-lib (2.0.0-1)

"global" verfügbar gemacht. Nächster Schritt: SetupScripts anpassen.
Comment 6 Dirk Wiesenthal univentionstaff 2012-08-09 16:50:21 CEST
SetupScripts angepasst in
  univention-system-setup (6.0.11-1)

Nächster Schritt: UMC-Package Management anpassen
Comment 7 Dirk Wiesenthal univentionstaff 2012-08-14 14:29:58 CEST
UMC Package Management wurde in
  univention-management-console-module-packages (2.0.0-1)

grundlegend überarbeitet und nutzt nun auch den PackageManager.
Comment 8 Dirk Wiesenthal univentionstaff 2012-08-14 14:31:17 CEST
Der PackageManager hat nun seine eigene Übersetzung (bzw. univention-lib hat jetzt eine) in
  univention-lib (2.0.1-1)
Comment 9 Florian Best univentionstaff 2012-08-22 08:15:23 CEST
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
Comment 10 Stefan Gohmann univentionstaff 2012-09-05 14:56:48 CEST
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.
Comment 11 Stefan Gohmann univentionstaff 2012-09-05 17:25:34 CEST
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.
Comment 12 Dirk Wiesenthal univentionstaff 2012-09-08 23:02:58 CEST
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.
Comment 13 Dirk Wiesenthal univentionstaff 2012-09-10 17:05:02 CEST
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.
Comment 14 Dirk Wiesenthal univentionstaff 2012-09-13 13:09:18 CEST
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?)
Comment 15 Alexander Kläser univentionstaff 2012-09-14 17:56:01 CEST
Eine Kleinigkeit: derzeit scheinen Umlaute ("Ausf?hren von...") nicht korrekt angezeigt zu werden.
Comment 16 Alexander Kläser univentionstaff 2012-09-14 20:03:09 CEST
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.
Comment 17 Alexander Kläser univentionstaff 2012-09-14 20:11:51 CEST
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
Comment 18 Dirk Wiesenthal univentionstaff 2012-09-17 11:00:19 CEST
(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?
Comment 19 Stefan Gohmann univentionstaff 2012-09-17 11:08:47 CEST
(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.
Comment 20 Dirk Wiesenthal univentionstaff 2012-09-17 12:41:24 CEST
(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
Comment 21 Alexander Kläser univentionstaff 2012-09-17 13:13:49 CEST
(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.
Comment 22 Dirk Wiesenthal univentionstaff 2012-09-18 11:59:57 CEST
univention-directory-manager einfach aus der Liste gestrichen

  univention-system-setup 6.0.33-1.384.201209181156
Comment 23 Alexander Kläser univentionstaff 2012-09-18 12:07:02 CEST
(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
Comment 24 Stefan Gohmann univentionstaff 2012-12-12 21:10:00 CET
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".