* package management
* distributions
* features
* strategy

packet management toolchains

a list of packet management systems and their unique features:

  • portage (use flags)
  • yum (redhat)
  • suse (with suse build service)
  • dpkg/apt-get (debian)
  • opkg
  • static build chains (used for windows deployment)

Konzepte, Ansaetze verschiedener Distributionen

Dies sind im Wesentlichen die groessten Distributionen welche sich im Konzept des Paketbaus grundsaetzlich unterscheiden.

Linux allg.

Debian

Hier gib es das Paketformat deb Pakete werden dynamisch gelinkt und die Libraries müssen immer zusammen mit dem Paket verteilt werden. D.h. wenn einzelene Programme neuere Libraries benötigen und alte noch nicht portiert sind, kommt es zu einem nicht auflösbaren Konflikt es sei denn, die gleichnamigen Libraries können parallel installiert werden.

SuSE

Hier werden eigentlich alle Pakete von der Firma Novell erstellt. Hier sollte man sich auf jeden fall den SuSE build service ansehen [7].

Redhat (Fedora Core)

funtoo

a gentoo variant, very interesting

http://www.funtoo.org/en/funtoo/faq/

Gentoo

Es existieren zwei 'installer'. Einmal klassisch das 'portge' und als ersatz 'paludis'.

Hier wird im Prinzip alles direkt aus dem Source uebersetzt. Der Vorteil, man hat immer ein aktuelles System, welches sich optimal an den Rechner und dessen Architektur anpasst.

Gentoo bringt ca. 13k pakete mit, beachtlich!

ls -d /usr/portage/*-*/* | wc -l
13448

Vorteile:

  • Aktuell
  • An das System angepasst
  • Abhaenigkeiten werden vor dem Compilieren, also Uebersetzen, festgelegt

Nachtiele:

  • es gibt kein stable/testing/unstable banche -> ungeeignet fuer long term projects (aka server)
  • Es gibt eigentlich keine zwei gleichen Systeme, da sich jedes im Detail total unterscheidet
  • Das verteilen von Paketen, welche nicht auf dem Zielsystem kompiliert wereden sollen ist umstaendlich, wenn nicht unmoeglich
  • Konzept nicht geeigent fuer die breite Masse an Benutzern


Gentoo core system (emerge -e system)

Wir schauen uns mal an, was z.b. gentoo als core braucht um zu arbeiten. So viel ist das garnicht.

Die untere Ausgabe von emerge zeigt den merge an, also die Reihenfolge in der die Pakete installiert werden.

# emerge -et system -pa
These are the packages that would be merged, in reverse order:

Calculating dependencies... done!
[ebuild     U ] sys-libs/glibc-2.8_p20080602-r1 [2.6.1]
[ebuild   R   ]  sys-devel/gcc-4.3.1-r1  USE="(-fixed-point)" 
[ebuild     U ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]        
[ebuild  N    ] virtual/pager-0                               
[ebuild   R   ] sys-apps/which-2.19                           
[ebuild   R   ] sys-process/procps-3.2.7                      
[ebuild   R   ] virtual/editor-0                              
[ebuild     U ] sys-fs/e2fsprogs-1.41.3-r1 [1.41.3]           
[ebuild     U ] sys-process/psmisc-22.6 [22.5-r2]             
[ebuild     U ] sys-apps/busybox-1.13.2 [1.7.4]               
[ebuild   R   ] sys-apps/util-linux-2.14.1                    
[nomerge      ] sys-libs/ncurses-5.6-r2                       
[ebuild   R   ]  sys-libs/gpm-1.20.5                          
[nomerge      ] sys-apps/portage-2.1.6.7                      
[ebuild   R   ]  app-admin/eselect-news-20080320              
[nomerge      ] net-misc/wget-1.11.3 [1.10.2]                 
[nomerge      ]  dev-libs/openssl-0.9.8k [0.9.8j]             
[nomerge      ]   dev-lang/perl-5.8.8-r5                      
[ebuild   R   ]    app-admin/perl-cleaner-1.05                
[nomerge      ] sys-apps/util-linux-2.14.1                    
[nomerge      ]  sys-devel/gettext-0.17                       
[ebuild     U ]   dev-libs/libxml2-2.7.3 [2.7.2-r2]           
[ebuild     U ] sys-apps/groff-1.20.1-r1 [1.19.2-r3] LINGUAS="-ja%" 
[nomerge      ] sys-fs/e2fsprogs-1.41.3-r1 [1.41.3]                 
[ebuild   R   ]  sys-libs/e2fsprogs-libs-1.41.3-r1                  
[ebuild   R   ]   sys-devel/bc-1.06.95                              
[nomerge      ] app-admin/eselect-news-20080320                     
[ebuild   R   ]  app-admin/eselect-1.0.11-r1                        
[nomerge      ] virtual/editor-0                                    
[ebuild     U ]  app-editors/nano-2.1.7-r1 [2.0.6]                  
[nomerge      ] sys-apps/groff-1.20.1-r1 [1.19.2-r3] LINGUAS="-ja%" 
[ebuild   R   ]  x11-libs/libXaw-1.0.4                              
[ebuild   R   ]   sys-apps/ed-1.0                                   
[nomerge      ] virtual/pager-0                                     
[ebuild     U ]  sys-apps/less-418 [409]                            
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]              
[ebuild   R   ]  net-nds/openldap-2.3.43  USE="-kerberos*"          
[ebuild   R   ]  sys-apps/shadow-4.1.2.2                            
[ebuild   R   ] sys-apps/file-4.23                                  
[nomerge      ] sys-apps/busybox-1.13.2 [1.7.4]                     
[ebuild     U ]  sys-libs/pam-1.0.4 [1.0.1]                         
[ebuild     U ]   sys-libs/cracklib-2.8.13 [2.8.12]                 
[ebuild   R   ] sys-apps/coreutils-6.9-r1                           
[nomerge      ] sys-apps/shadow-4.1.2.2                             
[nomerge      ]  sys-libs/cracklib-2.8.13 [2.8.12]                  
[ebuild   R   ]   dev-lang/python-2.5.2-r7  USE="xml%*"             
[ebuild   R   ]    sys-libs/readline-5.2_p13                        
[ebuild   R   ]     app-shells/bash-3.2_p39                         
[ebuild     U ] sys-apps/texinfo-4.13 [4.11-r1]                     
[ebuild   R   ]  sys-libs/ncurses-5.6-r2                            
[ebuild     U ] net-misc/rsync-3.0.5 [3.0.4]                        
[nomerge      ] x11-libs/libXaw-1.0.4                               
[ebuild   R   ]  x11-libs/libXpm-3.5.7                              
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]              
[ebuild   R   ]  x11-apps/xauth-1.0.3                               
[ebuild   R   ]   x11-libs/libXmu-1.0.3                             
[ebuild   R   ]    x11-libs/libXext-1.0.4                           
[ebuild   R   ]    x11-libs/libXt-1.0.5                             
[ebuild   R   ]     x11-libs/libX11-1.1.5                           
[ebuild   R   ]      x11-proto/xcmiscproto-1.1.2                    
[ebuild   R   ]      x11-libs/libXdmcp-1.0.2                        
[ebuild   R   ]      x11-proto/bigreqsproto-1.0.2                   
[ebuild   R   ]      x11-proto/xf86bigfontproto-1.1.2               
[nomerge      ] sys-apps/coreutils-6.9-r1                           
[ebuild   R   ]  sys-apps/acl-2.2.47                                
[ebuild     U ]   sys-apps/attr-2.4.43 [2.4.41]                     
[nomerge      ] x11-apps/xauth-1.0.3                                
[nomerge      ]  x11-libs/libXext-1.0.4                             
[ebuild   R   ]   x11-proto/xextproto-7.0.4                         
[ebuild   R   ]    x11-proto/inputproto-1.5.0                       
[nomerge      ] x11-libs/libXaw-1.0.4                               
[nomerge      ]  x11-libs/libXt-1.0.5                               
[ebuild   R   ]   x11-libs/libSM-1.0.3                              
[ebuild   R   ]    x11-libs/libICE-1.0.4                            
[ebuild   R   ]   x11-proto/kbproto-1.0.3                           
[nomerge      ] x11-apps/xauth-1.0.3                                
[ebuild   R   ]  x11-libs/libXau-1.0.4                              
[nomerge      ] sys-apps/groff-1.20.1-r1 [1.19.2-r3] LINGUAS="-ja%" 
[nomerge      ]  x11-libs/libSM-1.0.3                               
[ebuild   R   ]   x11-libs/xtrans-1.2.3                             
[ebuild   R   ]   x11-proto/xproto-7.0.14                           
[ebuild   R   ]    x11-misc/util-macros-1.1.5                       
[ebuild   R   ]     sys-devel/libtool-1.5.26                        
[ebuild   R   ]      sys-devel/automake-1.10.2                      
[nomerge      ] sys-apps/man-pages-3.18 [3.16]                      
[ebuild   R   ]  app-i18n/man-pages-de-0.5-r1                       
[ebuild   R   ]  sys-apps/man-pages-posix-2003a                     
[ebuild     U ]   sys-apps/man-1.6f-r3 [1.6f-r2] USE="-lzma%"       
[ebuild     U ] net-misc/wget-1.11.3 [1.10.2]                       
[ebuild   R   ] sys-devel/make-3.81                                 
[ebuild     U ] app-arch/tar-1.20 [1.19]                            
[ebuild     U ] sys-apps/gawk-3.1.6 [3.1.5-r5]                      
[ebuild     U ] sys-apps/net-tools-1.60_p20071202044231-r1 [1.60-r13]
[ebuild   R   ] sys-apps/kbd-1.13-r1                                 
[ebuild     U ] app-arch/gzip-1.3.12-r1 [1.3.12]                     
[ebuild   R   ] sys-apps/grep-2.5.1a-r1                              
[ebuild     U ] sys-apps/module-init-tools-3.5 [3.4]                 
[ebuild   R   ] sys-apps/findutils-4.4.0                             
[nomerge      ] net-misc/rsync-3.0.5 [3.0.4]                         
[ebuild   R   ]  dev-libs/popt-1.10.7                                
[nomerge      ] sys-devel/libtool-1.5.26                             
[ebuild   R   ]  sys-apps/help2man-1.36.4                            
[ebuild   R   ]   dev-perl/Locale-gettext-1.05                       
[nomerge      ] sys-devel/gcc-4.3.1-r1  USE="(-fixed-point)"         
[ebuild   R   ]  media-libs/libart_lgpl-2.3.20                       
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]               
[ebuild     U ]  dev-libs/openssl-0.9.8k [0.9.8j]                    
[ebuild   R   ]   sys-apps/diffutils-2.8.7-r2                        
[ebuild   R   ] sys-devel/bison-2.3                                  
[ebuild   R   ] sys-devel/flex-2.5.35                                
[ebuild   R   ] sys-apps/sed-4.1.5-r1                                
[ebuild   R   ] sys-devel/binutils-2.18-r3                           
[ebuild   R   ]  sys-devel/gettext-0.17                              
[ebuild   R   ] sys-devel/autoconf-2.63                              
[nomerge      ] sys-devel/binutils-2.18-r3                           
[ebuild   R   ]  sys-devel/binutils-config-1.9-r4                    
[nomerge      ] sys-apps/file-4.23                                   
[nomerge      ]  dev-lang/python-2.5.2-r7  USE="xml%*"               
[nomerge      ]   dev-libs/openssl-0.9.8k [0.9.8j]                   
[ebuild   R   ]    app-misc/ca-certificates-20080809                 
[ebuild     U ] sys-apps/man-pages-3.18 [3.16]                       
[ebuild   R   ] sys-fs/udev-124-r1                                   
[ebuild   R   ]  sys-apps/baselayout-1.12.11.1                       
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]               
[ebuild     U ]  sys-auth/pambase-20081028 [20080318] USE="sha512%* -ssh%" 
[nomerge      ] sys-devel/autoconf-2.63                                    
[nomerge      ]  dev-lang/perl-5.8.8-r5                                    
[ebuild   R   ]   perl-core/PodParser-1.35                                 
[ebuild   R   ]   perl-core/Test-Harness-3.10                              
[ebuild   R   ]    dev-lang/perl-5.8.8-r5                                  
[ebuild   R   ]     sys-devel/libperl-5.8.8-r2                             
[ebuild     U ] net-misc/iputils-20071127 [20070202]                       
[ebuild   R   ] app-arch/cpio-2.9-r2                                       
[ebuild   R   ] app-arch/bzip2-1.0.5-r1                                    
[ebuild   R   ] sys-devel/patch-2.5.9                                      
[nomerge      ] sys-apps/grep-2.5.1a-r1                                    
[ebuild     U ]  dev-libs/libpcre-7.8 [7.7-r1] USE="bzip2*"                
[nomerge      ] sys-libs/glibc-2.8_p20080602-r1 [2.6.1]                    
[ebuild     U ]  sys-libs/timezone-data-2009b [2008i]                      
[nomerge      ] sys-devel/automake-1.10.2                                  
[ebuild   R   ]  sys-devel/automake-wrapper-3-r1                           
[nomerge      ] sys-apps/baselayout-1.12.11.1                              
[ebuild   R   ]  virtual/init-0                                            
[nomerge      ] sys-devel/autoconf-2.63                                    
[ebuild   R   ]  sys-devel/autoconf-wrapper-6                              
[nomerge      ] app-misc/ca-certificates-20080809                          
[ebuild   R   ]  sys-apps/debianutils-2.28.5                               
[nomerge      ] sys-apps/portage-2.1.6.7                                   
[nomerge      ]  dev-lang/python-2.5.2-r7  USE="xml%*"
[ebuild   R   ]   app-admin/python-updater-0.5
[ebuild     U ]   dev-db/sqlite-3.6.10 [3.6.6.2]
[nomerge      ] sys-devel/gcc-4.3.1-r1  USE="(-fixed-point)"
[ebuild   R   ]  dev-libs/mpfr-2.4.1_p1
[ebuild   R   ]  app-arch/zip-2.32-r1
[ebuild   R   ]  app-arch/unzip-5.52-r2
[nomerge      ] sys-apps/portage-2.1.6.7
[ebuild   R   ]  app-misc/pax-utils-0.1.19
[ebuild   R   ]  sys-apps/sandbox-1.2.18.1-r3
[nomerge      ] virtual/init-0
[ebuild   R   ]  sys-apps/sysvinit-2.86-r10
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]
[ebuild   R   ]  sys-apps/tcp-wrappers-7.6-r8
[nomerge      ] sys-apps/sed-4.1.5-r1
[nomerge      ]  sys-devel/gettext-0.17
[ebuild   R   ]   dev-libs/expat-2.0.1-r1
[nomerge      ] sys-devel/gcc-4.3.1-r1  USE="(-fixed-point)"
[ebuild   R   ]  sys-devel/gcc-config-1.4.0-r4
[ebuild   R   ]  dev-libs/gmp-4.2.4
[nomerge      ] sys-devel/automake-1.10.2
[nomerge      ]  sys-apps/help2man-1.36.4
[nomerge      ]   dev-lang/perl-5.8.8-r5
[ebuild   R   ]    sys-libs/gdbm-1.8.3-r3
[nomerge      ] sys-apps/net-tools-1.60_p20071202044231-r1 [1.60-r13]
[nomerge      ]  sys-devel/gettext-0.17
[ebuild   R   ]   virtual/libiconv-0
[ebuild     U ] sys-devel/gnuconfig-20080928 [20080123]
[ebuild   R   ] sys-kernel/linux-headers-2.6.27-r2
[ebuild     U ] sys-devel/m4-1.4.12 [1.4.11]
[ebuild   R   ]  app-arch/lzma-utils-4.32.7
[ebuild   R   ] sys-libs/zlib-1.2.3-r1
[nomerge      ] net-misc/openssh-5.1_p1-r2 [4.7_p1-r6]
[nomerge      ]  sys-libs/pam-1.0.4 [1.0.1]
[ebuild   R   ]   virtual/libintl-0
[ebuild   R   ]  dev-util/pkgconfig-0.23
[ebuild   R   ] sys-apps/portage-2.1.6.7

archlinux

mac os x

Mac os X hat kein Paketmanagement und ist meiner meinung sogar schlampiger designed als Windows XP. Z.b. kann man waerend der Installation eine Auswahl an Sprachen im Language-pack configurator auswaehlen. Wenn man dann nachdem Mac os X installiert ist die install cd (leopard) einlegt, dann sind wieder alle Sprachen auswaehlbar und nicht wie man erwarten wuerde etwa nur die noch installierbaren.

Das System ist so designed, dass der Nutzer wenig Aufwand hat neue Software zu installieren, diese vermuellt aber das System sehr stark.

ms windows

Unter MS Windows gibt es zwei Zweige für deployment:

  • Systemupdates
  • Userprogramme

Systemupdates

Systemupdates, also "service packs", haben eine gewisse Ordnung. Allerdings kann ich mich erinnern, dass man diese in der falschen Reihenfolge installieren/deinstallieren kann. Siehe dazu [6].

Es gibt hier keine wirkliche Ordnung und keine höhere Abstraktion im Sinne von "Paketmanagement". Man sollte sich darunter ehr ein Paket voller "fixes/hotfixes" vorstellen was mehr oder weniger gut andere files überschreibt also ersetzt.

Userprogramme

Unter den userprogrammen hat sich das Konzept des "install shields" etabliert. Allerdings hat windows allg. eine "registry" und diese wird im Normalfall nicht richtig deinstalliert. (entsprechen den files unter /etc bei linux)

install shield

Einfaches Management, nicht geeignet fuer updates im Sinne von "apt-get update; apt-get upgrade". Kein Zentrales Paketmanagement, alle installierten Programme kuemmern sich selbst um ev. Updates. Das fuehrt zum SETI@home Phaenomen, alle wollen nach-hause-telefonieren.


openmoko, SHR

I own a openmoko neo freerunner and i'm very happy with it. I use it as:

  • phone
  • offline wikipedia
  • dictionary
  • calculator
  • gps device (with openstreetmap maps)
  • listen to music (not yet but to come)

The reason writing this is that it is yet another very good example of how work can be quadruplicated not using a base dependency graph to build software. Using [12] for software updates shows exactly how not to do it. The developers operating this service are very eager to do it right but never the less the software stack kind of sucks since if you fix a) then b) and c) get broken.... the usual Linux phenomenon I came along on several occasions using debian.

Please don't get this wrong - i love openmoko and shr and opkg.org is a very good service but the point is that a software stack should be build with a better tool. However i like that one can give comments to packets which are build from external - this is a concept i've been thinking about ever since and i mentioned it in the features section already.

pda / mobiles

basiert auf:

  • linux
linux auf pdas unterscheidet sich eigentlich nicht wesentlich von desktop distributionen. nur meist weniger pakete und updates zerschiessen oefter das system
  • symbian
hat den groessten marktanteil bei "smart phones" (2008) und wenn nokia das wirklich open source macht, dann bin ich mal gespannt wie andere open source projekte damit umgehen. ich sollte mir zwecks software-deployment die platform mal ansehen
  • win CE
hier mach ich mir kein kopf - das gibt es eh bald nicht mehr

various

  • linux router (z.b. fritzbox usw)
    • die fritzbox baut zwar auf linux auf hat aber ein sehr sehr proprietaeres entwicklermodell und ich wette 100 euro, dass wenn ich nur lange genug suche ich ein bug finde mit dem man von 'remote' mit der fritzbox lustige sachen machen kann. das entwicklermodell ist schlicht absurd wenn man sieht die bauen auf open source software auf.

bios updates

hier gibt es eigentlich keinen standard um updates dieser art zu verteilen. im pc bios fall heute mittels fat16 partitionieren usb sticks (sehr modern). i.A. aber mit dos oder win32 patcher die eine proprietaere platform voraussetzen.

  • normales bios
  • core bios (aka linux bios)

firmware updates

  • hal bei madwifi
  • dvd driver updates
  • usb devices aller art haben das oft (z.b. m-audio midisport)

zusammengefasst: sehr effektive methode ein geraet vor guter opensource integration zu schuetzen da der open source treiber meist ohne die unfreie firmware garnicht tut.

http://www.ssi.gouv.fr/site_article185.html

Powered by MediaWiki