# Downgrade von unstable auf stable

## pdobner

Hi Leute,

ich habe ein Problem: vor kurzem übernahm ich einen Gentoo Mail/Webserver, welcher immer mit ACCEPT_KEYWORDS="~x86" aktualisiert wurde. Warum ist mir nicht ganz klar, da keine speziellen Anwendung drauf laufen, welches dies erfordern würden.

Meine Frage dazu: Wie ist es möglich, ohne gröbere Probleme wieder zu einem stable System zu kommen bzw. hat schon jemand Erfahrungen damit gemacht?

Danke, philip

Hier noch meine emerge --info :

Portage 2.2_rc1 (default-linux/x86/2007.0/server, gcc-4.3.1, glibc-2.8_p20080602-r0, 2.6.22.1 i686)

=================================================================

System uname: Linux-2.6.22.1-i686-Intel-R-_Xeon-TM-_CPU_3.00GHz-with-glibc2.0

Timestamp of tree: Fri, 18 Jul 2008 21:30:02 +0000

app-shells/bash:     3.2_p39

dev-lang/python:     2.4.4-r4, 2.5.2-r5

dev-python/pycrypto: 2.0.1-r6

sys-apps/baselayout: 2.0.0

sys-apps/openrc:     0.2.5

sys-apps/sandbox:    1.2.18.1-r3

sys-devel/autoconf:  2.13, 2.62-r1

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1

sys-devel/binutils:  2.18-r3

sys-devel/gcc-config: 1.4.0-r4

sys-devel/libtool:   2.2.4

virtual/os-headers:  2.6.25-r4

ACCEPT_KEYWORDS="x86 ~x86"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-march=nocona -O3 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d"

CXXFLAGS="-march=nocona -O3 -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="distlocks parallel-fetch preserve-libs sandbox sfperms strict unmerge-orphans userfetch"

GENTOO_MIRRORS="http://gentoo.inode.at http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"

LC_ALL="en_GB.UTF-8"

LDFLAGS=""

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/portage"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="acl apache2 calendar cgi cli cracklib crypt dba dri exiscan-acl fortran gd gdbm gpm iconv imagemagick innodb ipv6 isdnlog ldap mailwrapper mbox midi mudflap mysql ncurses nls nptl nptlonly openmp pam pcre perl php5 pppd python readline reflection session sharedmem snmp spl ssl sysvipc tcpd truetype unicode vim x86 xml xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 	emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m 	maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 i810 imstt 	mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage 	siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware 	voodoo"

Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

----------

## gimpel

Ein glibc downgrade dürfte u.U. mehr kaputt machen als stabilisieren.

----------

## ChrisJumper

Hallo philip,

also ich würde... sofern das System keinen "instabilen" Eindruck macht, einfach die aktuellen wichtigen Pakete die du gerne einmal als "stable" hättest. Mit <= in "package.mask" und package.keywords,  Eintragen/Freigeben. Dann ACCEPT_KEYWORDS="~x86" auskommentieren. Und schauen ob sich keine Kritischen Pakete wie glibc downgraden wollen die dann auch so anpassen.

Naja und dann mit der Zeit... wenn die Versionen irgendwann mal wieder Stabel sind kannst du auch die Begrenzungen aus package.mask nehmen.

Aber vielleicht gibt es ja noch eine bessere Methode. Für einzelne Pakete klappt das hervorragend, aber wenn das ganze system betroffen ist.. gibt es vllt. mehr zu beachten.

Grüße

----------

## revilootneg

Hey philip,

in Anlehnung an die Vorposter folgender Vorschlag:

Das System wird hierbei möglichst sanft (und damit eben auch langsam) stabilisiert.

Du erstellst dir aus deinen derzeit installierten Paketen mit Versionsnummern eine package.keywords, die nur genau diese Versionsnummer als ~x86 markiert. Dazu kann etwa folgendes Skript dienen:

```
for category in `ls /var/db/pkg`; do

        for package in `ls /var/db/pkg/$category`; do

                echo "=$category/$package ~x86"

        done

done

```

und der Beispieloutput dazu schaut dann so aus:

```
[...]

=app-admin/eselect-1.0.10 ~x86

=app-admin/eselect-blas-0.1 ~x86

=app-admin/eselect-cblas-0.1 ~x86

=app-admin/eselect-ctags-1.5 ~x86

=app-admin/eselect-emacs-1.5 ~x86

=app-admin/eselect-esd-20060719 ~x86

=app-admin/eselect-fontconfig-1.0 ~x86

=app-admin/eselect-lapack-0.1 ~x86

=app-admin/eselect-oodict-20061117 ~x86

=app-admin/eselect-opengl-1.0.6-r1 ~x86

=app-admin/eselect-vi-1.1.5 ~x86

=app-admin/eselect-wxwidgets-0.8 ~x86

[...]

```

Wenn diese /etc/portage/package.keywords erstellt ist, kannst du ACCEPT_KEYWORDS="~x86" aus make.conf rausschmeißen. Zum Test: Ein emerge -uDNpv world sollte jetzt am System nichts verändern und insbesondere keine Downgrades auslösen!

Damit ist nur der derzeitige Systemzustand auf ~x86 gehalten. Zukünftige Pakete werden nur dann installiert, wenn sie wirklich als x86 markiert sind.

Wenn du für bestimmte Pakete den ganzen Vorgang beschleunigen willst, kommentier den entsprechenden Eintrag in package.keywords einfach aus und downgrade.

----------

## schmutzfinger

Ich würde mir überlegen die Kiste komplett neu aufzusetzen. Wenn der Rechner wirklich nur Web/Mail/SSH anbietet dann ist das alles nicht so komplex. Man kopiert sich die die configs und die mails in ein backup und setzt neu auf.

Damit hast du auf einen Schlag auch noch die anderen Fehler beseitigt, die dein Vorgänger gemacht hat. Downtime ist wahrscheinlich ein Problem aber wenn du noch Platz für ein paar neue Partitionen hast sollte das nicht so schlimm sein. Da kannst du das neue System bauen während das alte läuft. Wenn /var ne extra Partition ist dann musst nichtmal mails und webcontent kopieren, wenn nicht kannst du dir überlegen /var im laufenden Betrieb auf ne extra Partition umzuziehen. Also das sollte mit 1-3 reboots (10min Downtime) machbar sein.

Das macht einmal Arbeit aber dann hast du nach ein paar Stunden ein "stabiles" System. Die anderen Vorschläge gehen zwar auch aber das bereitet dir noch min 1 Jahr Kopfschmerzen, immer mal wieder ein wenig. Mein Motto wäre da auf jeden Fall es einmal richtig zu machen.

----------

## rc

 *gimpel wrote:*   

> Ein glibc downgrade dürfte u.U. mehr kaputt machen als stabilisieren.

 

Funkioniert auch überhaupt nicht.

Emerge selbst sagt dazu folgendes:

 *emerge wrote:*   

> 
> 
>  * Sanity check to keep you from breaking your system:
> 
>  *  Downgrading glibc is not supported and a sure way to destruction
> ...

 

Viele Grüße

rc

----------

## toralf

 *revilootneg wrote:*   

> 
> 
> Du erstellst dir aus deinen derzeit installierten Paketen mit Versionsnummern eine package.keywords, die nur genau diese Versionsnummer als ~x86 markiert.

 Hhm, m.E. reicht es völlig aus, Einträge in der Art "=Kategorie/Paketname" in /etc/portage/package.keywords einzutragen, alos z.B.:

```

=app-emulation/wine-1.1.0

=net-print/foomatic-filters-3.0.20070501

```

----------

## firefly

 *toralf wrote:*   

>  *revilootneg wrote:*   
> 
> Du erstellst dir aus deinen derzeit installierten Paketen mit Versionsnummern eine package.keywords, die nur genau diese Versionsnummer als ~x86 markiert. Hhm, m.E. reicht es völlig aus, Einträge in der Art "=Kategorie/Paketname" in /etc/portage/package.keywords einzutragen, alos z.B.:
> 
> ```
> ...

 

öhm dann will portage ein downgrade machen, da ja die installierte version maskiert ist  :Wink:  und das ist glaube ich nicht gewollt  :Wink: 

----------

## toralf

 *firefly wrote:*   

> öhm dann will portage ein downgrade machen, da ja die installierte version maskiert ist  und das ist glaube ich nicht gewollt 

 Ups, daran habe ich nicht gedacht, hatte "nur" unstable Pakete im Sinn, nicht jedoch die maskierten.

----------

## hitachi

Ich würde die Vorschläge von ChrisJumper und revilootneg befolgen. So habe ich das auch mal bei einem übernommenen PC gemacht. Es dauert dann aber doch etwas bis alle Programme irgendwann mal als stabel gelten.

----------

## pdobner

Danke erstmals für die Ratschläge von euch allen und sorry für die späte Antwort - war auf Urlaub   :Very Happy: 

Da das System im Prinzip stabil läuft, und mich nur die teilweise auftretenden kleinen Probleme beim Update nerven, habe ich die Variante von ChrisJumper bzw. revilootneg gewählt. Jetzt heißts halt warten...

----------

