# emerge nicht jedesmal alles neu erstellen

## FrancisA

Hallo, 

1) wie kann ich (bei emerge) verhindern, dass jedesmal alles neu erstellt wird (und obj. Dateien behalten werden)?

Oder habe ich da etwas falsch aufgefasst?

2) wie ist das beim Kernel? da erstellt nach make menuconfig auch jedesmal alles neu

----------

## arfe

 *FrancisA wrote:*   

> Hallo, 
> 
> 1) wie kann ich (bei emerge) verhindern, dass jedesmal alles neu erstellt wird (und obj. Dateien behalten werden)?
> 
> Oder habe ich da etwas falsch aufgefasst?
> ...

 

Ja, Du hast was falsch verstanden. Es wird nicht alles neu erstellt, sondern nur nach Updates oder beim Setzen

eines neuen USE-Flags. 

Siehe: emerge --update --newuse --deep -pv world

oder revdep-rebuild, wenn eine neue Library kompiliert werden muss.

 *Quote:*   

> 
> 
> 2) wie ist das beim Kernel? da erstellt nach make menuconfig auch jedesmal alles neu

 

Nein! Bitte nochmal genau lesen was make menuconfig macht und wann es etwas nicht macht.

Du solltest Dir nochmal genau das Handbuch (handbook gentoo) durchlesen.

Weil solche Basics sollte man schon verstehen und können, bevor man sich mit gentoo auseinandersetzt.

----------

## FrancisA

 *arfe wrote:*   

> 
> 
> Ja, Du hast was falsch verstanden. Es wird nicht alles neu erstellt, sondern nur nach Updates oder beim Setzen
> 
> eines neuen USE-Flags. 
> ...

 

Ok

 *arfe wrote:*   

> 
> 
> Nein! Bitte nochmal genau lesen was make menuconfig macht und wann es etwas nicht macht.
> 
> Du solltest Dir nochmal genau das Handbuch (handbook gentoo) durchlesen.
> ...

 

Ja, hatte ich übersehen. Genau habe ich das nicht gelesen, mehr überflogen (das hole ich nochmals nach), ich wollte einfach möglichst schnell beginnen.

----------

## franzf

1) Ich weiß auch auch nicht, ob wir beide das gleiche meinen. Objekt-Dateien (also das Resultat des kompilierens eines einelnen Source-Files) werden nach erfolgreichem Build entfernt. Willst du das gleiche Programm nochmal neu bauen, beginnt das wieder bei 0. Es wäre absolut unnötige Speicherverschwendung, (und damit für dich unnötiger Arbewitsaufwand fürs regelmäßige händische Aufräumen), wenn alle Build-Directories nach dem erfolgreichen Emerge liegen blieben (in (var/tmp/portage).

Es gibt glaub ich ein Feature "preserve_work" o.Ä., was das Aufräumen nach dem emerge verhindert. Sei aber bitte vorsichtig damit. Ein einzelnes Paket kann samt Sourcen, Icons, sonstige Resourcen, Objekt-Files, fertige Binaries uswusf schon mal jenseits der 1GB-Grenze liegen. Und das dann ein paar mal und deine Partition macht Bumm (Voll, vorher fleißige Fragmentierung usw)

Es gibt aber eine Lösung: ccache. emerge ccache und in den Features CCACHE aktivieren, und die obj-files werden gecached, ein reemergen eines Paketes geht dann (langsamer Prozessor vorausgesetzt) deutlich schneller.

2) make menuconfig ändert nur die Config. Diese Änderung kann aber neben den aktivierten Features noch bei anderen Modulen eine Änderung triggern (evtl. nur durch einen eingebundenen Header), wodurch natürlich auch diese neu gebaut werden müssen. Ein make menuconfig wird aber garantiert nie ein Neubauen aller Module triggern (außer du änderst so viel, dass dies wirklich durch die Konfiguration notwendig wird).

----------

## FrancisA

 *franzf wrote:*   

> 1) Ich weiß auch auch nicht, ob wir beide das gleiche meinen. Objekt-Dateien (also das Resultat des kompilierens eines einelnen Source-Files) werden nach erfolgreichem Build entfernt. Willst du das gleiche Programm nochmal neu bauen, beginnt das wieder bei 0. Es wäre absolut unnötige Speicherverschwendung, (und damit für dich unnötiger Arbewitsaufwand fürs regelmäßige händische Aufräumen), wenn alle Build-Directories nach dem erfolgreichen Emerge liegen blieben (in (var/tmp/portage).
> 
> Es gibt glaub ich ein Feature "preserve_work" o.Ä., was das Aufräumen nach dem emerge verhindert. Sei aber bitte vorsichtig damit. Ein einzelnes Paket kann samt Sourcen, Icons, sonstige Resourcen, Objekt-Files, fertige Binaries uswusf schon mal jenseits der 1GB-Grenze liegen. Und das dann ein paar mal und deine Partition macht Bumm (Voll, vorher fleißige Fragmentierung usw)
> 
> Es gibt aber eine Lösung: ccache. emerge ccache und in den Features CCACHE aktivieren, und die obj-files werden gecached, ein reemergen eines Paketes geht dann (langsamer Prozessor vorausgesetzt) deutlich schneller.
> ...

 

Hallo Franz, 

ich war fast ein bisschen eingeschüchtert (oder emfpand es als Vorwurf, den ich so nicht ganz akzeptieren kann) von der vorletzten Antwort in diesem Thread (ich habe die Dokus schon gelesen, aber auch nciht übermässig genau).  :Wink:  Das habe ich gemeint, dass obj Dateien entfernt werden (auch mit gutem Grund, eben wie Du geschrieben hast, weil die Platte dann bald einmal zugemüllt wäre. Die meisten Sachen will man eh nur einmal compilieren. Aber die Frage zielt auch daraufhin hinaus, angenommen ich möchte etwas patchen. Bleibt das beim nächsten Update dann wahrscheinlich (nicht) bestehen. Kann man so etwas permanent machen?

 *franzf wrote:*   

> 
> 
> 2) make menuconfig ändert nur die Config. Diese Änderung kann aber neben den aktivierten Features noch bei anderen Modulen eine Änderung triggern (evtl. nur durch einen eingebundenen Header), wodurch natürlich auch diese neu gebaut werden müssen. Ein make menuconfig wird aber garantiert nie ein Neubauen aller Module triggern (außer du änderst so viel, dass dies wirklich durch die Konfiguration notwendig wird).

 

Ok, danke, alles klar.

----------

## franzf

 *FrancisA wrote:*   

> Bleibt das beim nächsten Update dann wahrscheinlich (nicht) bestehen. Kann man so etwas permanent machen?

 

man make.conf -> FEATURES -> keepwork

----------

## FrancisA

 *franzf wrote:*   

>  *FrancisA wrote:*   Bleibt das beim nächsten Update dann wahrscheinlich (nicht) bestehen. Kann man so etwas permanent machen? 
> 
> man make.conf -> FEATURES -> keepwork

 

Danke nochmals.

----------

## Josef.95

Bezüglich Patches einspielen ist evtl. auch folgender Tipp noch ganz interessant - Wie man einen Patch einspielt

----------

## musv

 *FrancisA wrote:*   

> angenommen ich möchte etwas patchen. Bleibt das beim nächsten Update dann wahrscheinlich (nicht) bestehen. Kann man so etwas permanent machen?

 

1. Du gehst in das Verzeichnis des Ebuilds, z.B. /usr/portage/app-office/openoffice

```
ebuild openoffice unpack
```

2. Jetzt gehst du in /var/tmp/portage/xxx und machst dort Deine Änderungen. Anschließend

```
diff OriginalDatei GeänderteDatei > Patch.diff
```

3. Den Patch steckst du jetzt in: /usr/portage/app-office/openoffice/files

4. In /usr/portage/app-office/openoffice editierst du das entsprechende Ebuild (Patch eintragen). Aschließend führst du für das modifzierte Ebuild aus:

```
ebuild openoffice-xxx.ebuild digest
```

Und damit Dein Patch auch nach dem nächsten Sync noch bestehen bleibt, kopierst du am besten das modifizierte Ebuild ins Overlay-Verzeichnis /usr/local/portage/irgendwas).

Willst du nur einen bereits vorhandenen Patch anwenden, ohne das Ebuild umzuschreiben.

```
ebuild openoffice-3.xxx.ebuild unpack

cd /var/tmp/portage/app-office/xxx

patch xxx

cd /usr/portage/app-office/openoffice

ebuild openoffice-3.xxx.ebuild compile

ebuild openoffice-3.xxx.ebuild install

ebuild openoffice-3.xxx.ebuild qmerge
```

----------

## FrancisA

 *musv wrote:*   

>  *FrancisA wrote:*   angenommen ich möchte etwas patchen. Bleibt das beim nächsten Update dann wahrscheinlich (nicht) bestehen. Kann man so etwas permanent machen? 
> 
> 1. Du gehst in das Verzeichnis des Ebuilds, z.B. /usr/portage/app-office/openoffice
> 
> ```
> ...

 

Cool, lauter wertvolle Tips, danke, das ist wirklich ein freundliches und hilfsbereites Forum.  :Wink: 

----------

## firefly

wobei man die vorgehensweise von musv ein problem hat.

Das ebuild wird im portage tree verändert. Diese Änderung ist aber bei dem nächsten sync weg.

----------

## Finswimmer

 *firefly wrote:*   

> wobei man die vorgehensweise von musv ein problem hat.
> 
> Das ebuild wird im portage tree verändert. Diese Änderung ist aber bei dem nächsten sync weg.

 

Nein, denn:

 *musv wrote:*   

> 
> 
> Und damit Dein Patch auch nach dem nächsten Sync noch bestehen bleibt, kopierst du am besten das modifizierte Ebuild ins Overlay-Verzeichnis /usr/local/portage/irgendwas). 
> 
> 

 

----------

