# werden beim Systemupdate die Pakete neu übersetzt?

## superpixel

Hallo zusammen,

was passiert eigentlich wenn ich ein:

emerge --update world

und dabei die nächste gcc Version installiert wird. Werden dann alle Pakete mit der neuen Version neu gebaut?

Viele Grüße

superpixel

----------

## Lensman

Hallo,

nein, werden sie nicht. Erst neue Pakete oder die die noch geupdatet werden, werden mit dem neuen gcc gebaut.

Grüße,

Christian

----------

## superpixel

Hallo,

gibt es eine Möglichkeit, gesetzt dem Fall der gcc-3.4 wäre im Stable-Tree, einen Befehl aufzurufen der sowohl das gcc-Update einspeilt sowie alle Pakete damit neu baut?

Viele Grüße

superpixel

----------

## pablo_supertux

Du könntest alle Packete mit emerge --update --deep world world nochmal installieren, aber ob das Sinn macht? Ich würde eher nicht tun.

Schau hier nach http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1

----------

## hug0

du meinst "emerge --update --deep --emptytree world", oder?

----------

## pablo_supertux

nein, habe ich nicht. Außerdem kenne ich keine Option --emptytree und in der Dokus scheint sie auch nicht zu geben.

----------

## psyqil

 *man emerge wrote:*   

>  --emptytree (-e)
> 
>               Virtually  tweaks  the tree of installed packages to only contain libc; this is great to use together with --pretend.  This allows developers to get a complete overview of the complete dependency tree of a package, and it enables complete trees to be rebuilt using the latest libraries.

 

Edit: Ah, mein Laptop hat wohl noch 'ne ältere Version...  :Very Happy: Last edited by psyqil on Mon Feb 07, 2005 11:47 am; edited 1 time in total

----------

## 76062563

man emerge kennt diese Option schon...

```
--emptytree (-e)

Reinstalls all world packages and their dependencies to the current USE specifications while differing from  the installed

set of packages as little as possible.  You should run with --pretend first to make sure the result is

what you expect.
```

//edit: zu spät   :Sad: 

----------

## pablo_supertux

ich hab nur in der online doku nachgeschaut.   :Embarassed:  (sitze jetzt am Debian Rechner)

----------

## hug0

 *pablo_supertux wrote:*   

> nein, habe ich nicht. 

 

hm, und wegen dem neuen gcc würde "emerge --update --deep" alle files neu übersetzen? wäre mir neu, kann mich aber auch irren...

----------

## nexus780

Nen GCC-update fuehrt nicht dazu das alles neu uebersetzt wird, u.U. wird ueberhaupt nichts mit dem neuen gemacht bis nich gcc-config ausgefuehrt wurde. -Du (==--deep --update) updated nur alles (inkl. deps) soweit neue Versionen da sind. emerge -ea world uebersetzt alles neu.

----------

## hug0

 *nexus780 wrote:*   

> Nen GCC-update fuehrt nicht dazu das alles neu uebersetzt wird, u.U. wird ueberhaupt nichts mit dem neuen gemacht bis nich gcc-config ausgefuehrt wurde. -Du (==--deep --update) updated nur alles (inkl. deps) soweit neue Versionen da sind. emerge -ea world uebersetzt alles neu.

 

meine worte   :Very Happy: 

----------

## frary

Sowas ist im englischen Forum diskutiert worden ( finde es gerade nicht...Stichwort Toolchain ). Nachdem ein neuer Compiler gebaut ist, sollte man wohl

```
emerge linux26-headers && emerge linux26-headers glibc && emerge glibc binutils gcc && emerge binutils gcc
```

 ausführen, damit der gcc ( ähnlich wie beim Bootstrap ) mit sich selbst neu gebaut wird.

Anschließend 

```
emerge -e world
```

Das könnte dann ein Weilchen daueren...ungefähr so lange wie es dir 

```
emerge -ep world|genlop --pretend
```

ausgibt.

Alternativ kannst du auch einige male 

```
emerge -e system
```

ausführen.

An alle, die zuviel Zeit zum kompilieren haben, ist das sinnvoll so?

Gruß

T

[EDIT] Hier der Link:

https://forums.gentoo.org/viewtopic.php?t=282474&highlight=toolchain

----------

## c07

 *frary wrote:*   

> Nachdem ein neuer Compiler gebaut ist, sollte man wohl
> 
> ```
> emerge linux26-headers && emerge linux26-headers glibc && emerge glibc binutils gcc && emerge binutils gcc
> ```
> ...

 

Das ist aber ein bisschen übertrieben. Davon, zweimal direkt hintereinander die linux26-headers zu emergen, werden sie nicht besser. Und der gcc wird auch schon mit einem normalen "emerge gcc" 3 mal hintereinander gebaut. Dass man ihn (und die binutils) nach der glibc nochmal baut (und dann womöglich wieder die glibc), mag einen gewissen Sinn haben, aber ein "emerge -e world" macht das doch ohnehin.

----------

## frary

Naja, das mag sein. Dauert aber recht lag ( bei mir ca. 1 Tag! ). Leider bin ich in der Materie nicht so fit, da ich mir nie Gedanken darüber gemacht habe...

Beim Bootstrap wird aber was ganz ähnliches gemacht. Hat zufällig jemand die Pakete im Kopf, die dabei mehrmals ( 3 mal ) gebaut werden?

```
emerge gcc
```

 baut den gcc 3 mal? 

Zudem ging es in dem Thread wohl darum, das System mit einem Skript auf den Stand zu bringen, auf dem es wäre, wenn man den bootstrap mit eben diesem neuen gcc gemacht hätte...ob das sinnvoll ist ist wieder was anderes.

Vielleicht nochmal präziser: Ersetzt dieser Befehl den bootstrap einigermaßen gut?

----------

## c07

 *frary wrote:*   

> Beim Bootstrap wird aber was ganz ähnliches gemacht. Hat zufällig jemand die Pakete im Kopf, die dabei mehrmals ( 3 mal ) gebaut werden?

 

Gar keine mehr, das ist nur ein Gerücht:

 *http://www.gentoo.org/cgi-bin/viewcvs.cgi/scripts/bootstrap.sh wrote:*   

> Revision 1.43  - (view) (download) (as text) (annotate) - [select for diffs]
> 
> Fri Jun 6 06:09:26 2003 UTC (20 months ago) by drobbins
> 
> Branch: MAIN
> ...

 

 *frary wrote:*   

> 
> 
> ```
> emerge gcc
> ```
> ...

 

Ja, kannst du im Log sehn. Erst einen provisorischen gcc, den auch ein fremder cc bauen kann. Dann noch zwei, wobei (Edit: ab gcc 3.4) normalerweise zwischendurch Profiling-Informationen eingesammelt werden, um ein optimaleres Resultat zu liefern. Aber auch ohne Profiling ist der Standard-gcc-Bootstrap 3-stufig.Last edited by c07 on Tue Feb 08, 2005 1:04 am; edited 2 times in total

----------

## frary

So gesehen ist die Toolchain-Geschichte Mist?!? Oder eben Paranoia!

Danke für den Hinweis, wird mir bei zukünftigen gcc-Versionswechseln ne Menge Zeit sparen.

T

----------

## c07

 *frary wrote:*   

> So gesehen ist die Toolchain-Geschichte Mist?!? Oder eben Paranoia!

 

Man muss schon halbwegs aufpassen, was man in welcher Reihenfolge tut, wenn man die Architektur (CHOST) wechselt. Eben das macht das Bootstrap-Skript. Beim Compilerwechsel kommt es drauf an, wie kompatibel er zum Vorgänger ist. Im Prinzip müsste sich dazu auch das Bootstrap-Skript verwenden lassen. Wenn man das alte Verhalten haben will, kann man danach noch manuell binutils und gcc ausführen. Für die absolute Perfektion müsste man die ganze Kette so lang wiederholen, bis sich nichts mehr ändert (oder man sich in einer ewigen Schleife befindet). Aber gerade bei einem System, das auch zuvor halbwegs aktuell war, ist das wohl mehr oder weniger Selbstzweck.

----------

