# emerge & ebuild

## Cosmicboy

Hi leutz,

habe jetzt seit ein paar Tagen Gentoo drauf und ich bin bis jetzt begeistert!

Aber kann mir jemand die Sache mit emerge und ebuild erklären bzw. hier eine Seite nennen, wo ich das nachlesen kann?

Habe nämlich mal auf eigener Faust versucht Apache mit PHP zu installieren. Also ein "emerge -s apache" und emerge -s php" um nach den Paketen zu suchen.

Danach einzeln emerge net-www/apache und emerge dev-lang/php eingegeben.

Bei PHP zog der sich irgendwelche Klamotten aus dem Netz (z. B. X_Server) und ich konnte mir das nicht erklären.

Also habe ich das wie in der Desktop-Anleitung gemacht! Nur dort steht ein emerge net-www/apache dev-lang/php. Soweit verstehe ich das ja auch, nur wird danach noch ein ebuild gemacht und da verstehe ich den Zusammenhang nicht!

Kann mir jemand Licht ins dunkel bringen?

Danke

Thorsten

----------

## Scandium

Ich verstehe deine Frage nicht 100%ig aber vielleicht hilft dir das:

1. Ein ebuild ist vom prinzip mit nem deb oder rpm vergleichbar, das Paket an sich halt (jedoch nicht vergleichbar in der Funktionsweise !)

Der Unterschied liegt daran dass das .ebuild nicht das Sourcepaket ist sondern nur ein shell script wo download url etc. gespeichert sind

2. Die Sachen dass er X usw. ziehen will mag an deinen USE Settings liegen. Schau mal in

/etc/make.conf

bei USE= und schreib da USE='-X' hin ob's dann geht (dann werden keine optionalen X Pakete mehr geladen wenn es zu dem Paket das du emerged welche gibt.)Last edited by Scandium on Sun Jul 07, 2002 5:14 pm; edited 1 time in total

----------

## Cosmicboy

Eigentlich wollte ich nur wissen, was mache ich genau mit dem emerge und was mit dem ebuild?

Wenn ich ich mit dem emerge mir ein Paket vom Server hole, dann kompiliert der doch automatisch und es ist danach doch lauffähig!

Nur was macht der ebuild? Das versethe ich nicht!

Ach ja, wenn du schon die USE-Wariable ansprichst! Wie kann ich diese denn elegant nutzen! Das habe ich auch noch nicht ganz verstanden...

Danke schonmal

Thorsten

----------

## Beforegod

Hi Cosmic,

verstehe emerge als Programm für die "Paketverwaltung". Die Pakete sind die einzelnen eBuilds. 

In diesen eBuilds steht, wo die Source gezogen werden, welche Abhängigkeiten es hat, welche Pakete gezogen werden können (bei entsprechender USE Variable).

Pakete installierst Du mittels emerge Paketname.

Sprich in Deinem Falle 

emerge apache php

Zu der USE Variable :

Die USE Variable steht als optimale Komponennte zur Verfügung, das heisst wenn Du z.b erwünscht das alle Pakete die mit Sound zu tun haben (und es auch unterstützen) mit ALSA kompiliert werden sollen, steht in Deiner USE Variable "alsa" dabei, und genauso umgekehrt. Soll es nirgends mitkompiliert werden, steht in Deiner Variable "-alsa"

Da Du ja einen Server aufsetzen willst, empfiehlt es sich eine Ansammlung von USE Variablen in die Datei /etc/make.conf zu schreiben.

Für Dich empfiehlt sich folgendes :

USE="-X mmx apm crypt berkdb encode gdbm libg++ motif ncurses nls pam readline ssl tcpd -xv -arts -kde -gnome cups"

Aber am besten schaust Du mal selber was Du alles brauchst

----------

## Cosmicboy

Hi Beforegod,

vielen Dank! Das hilft mir um einiges weiter...

Aber kannst du mir bitte diese Zeilen aus dem Dektop HOWTO erklären:

# ebuild /var/db/pkg/dev-lang/php-4.1.2-r7/php-4.1.2-r7.ebuild config

# ebuild /var/db/pkg/net-www/mod_ssl-2.8.8/mod_ssl-2.8.8.ebuild config

Warum muß ich denn das eingeben? Was passiert da?

Danke

Thorsten

----------

## Beforegod

Hiermit umgehst Du den Weg mit emerge. ebuild ist sozusagen der "Rohmodus". Es sollte normalerweise auch mit emerge gehen..

Ich weiss nicht genau, aber mit ebuild kannst Du auch sog. maskierte Pakete einspielen, die über emerge nicht funktionieren..

Maskierte Pakete sind pakete die noch getestet werden, sprich es ist ein ebuild vorhanden, allerdings ist es nocht nicht in der Datenbank von emerge mitaufgenommen (ums grob zu sagen). Mittels ebuild kannst Du das Paket trotzdem installieren und benutzen, allerdings ist das immer ein gewisses risiko.

----------

## Cosmicboy

Hi beforegod,

gibt es irgendwo eine Beschreibung zu den Internas von Gentoo oder hast du dir das alles selbst zusammengefummelt?

CU 

Thorsten

----------

## Beforegod

Teils, Teils,

ds meiste findest Du auch auf der Homepage von Gentoo 

(Portage Manual, Portage User Guide) 

So kleinere Einzelheiten kommst Du irgendwann selber drauf oder Du findest diese Tipps hier im Forum (bzw. Chat!)

----------

## Cosmicboy

Das hört sich an, als wenn ich dir noch Fragen stellen dürfte   :Laughing: 

Bei einem "emerge --pretend Paketname" sind verschiedene Buchstaben für die Abhängigkeiten zu sehen!

Einmal ein grünes N oder ein gelbes R.

Was bedeutet dies und welche Buchstabenmöglichkeiten und Kombinationen gibt es noch?

CU

Thorsten

----------

## dek

Also mir sind folgende bekannt:

N: Neues Paket, ist noch nicht installiert.

R: Paket ist bereits installiert, wird nochmals installiert. Sinnvoll wenn du beispielsweise deine USE Variable oder deine Compilerflags geändert hast.

U: Eine ältere Version ist bereits installiert, wird durch die neuere ersetzt. Die ältere Version ist danach immer noch auf der Festplatte, aber quasi nicht aktiv.

B: Hab ich bis jetzt erst einmal gesehen. War als ich Gnome2 installiert habe. Kann ich nichts genaues zu sagen. Irgendwie blockiert..

Es ist sinnvoll ab und an mal ein "emerge -pc" durchzuführen. Das listet sämtliche Pakete auf die doppelt vorhanden sind und welche entfernt werden sollen. Falls dir das zusagt (ist eigentlich immer korrekt) kannst du mit einem "emerge -c" die älteren Pakete sauber aus deinem System entfernen.

----------

## schnebeck

Die Beachtung von USE liegt aber in der Hand des ebuild-Scriptes. So wird z.B. bei einem "emerge mplayer" ein X nachinstalliert auch wenn in der USE-Variable -X enthalten ist. 

Bye

  Thorsten

--

BTW: kportagemaster ist ganz nett  :Wink: 

----------

## Cosmicboy

Hi,

vielen Dank für eure Tipps!

Gibt es sonst noch etwas, worauf ich achten sollte? (Bekomme nämlich den "vi" nicht ans laufen. Beim starten erhalte ich immer einen "segement irgendwas").

CU

Thorsten

----------

## spyro

wie kann ich am besten kde wieder aus meinem gentoo entfernen ?

```
 emerge unmerge kde 
```

hat nich wirklich viel gebracht. starten kann ich das immernoch.

ich würde es gerne wieder _komplett_ runterwerfen da ich es nicht 

benutze.

.spyro

----------

## spaci76

emerge -c kde-base/kde

würde ich mal probieren

cu spaci76

----------

## spyro

funktioniert leider nicht.  :Sad: 

muss doch ne möglichkeit geben sowas komplett wieder zu entfernen.

.spyro

----------

## maystorm

 *spyro wrote:*   

> funktioniert leider nicht. 
> 
> muss doch ne möglichkeit geben sowas komplett wieder zu entfernen.

  Hier scheint das Portage-System noch ein wenig verbesserungsbedürftig zu sein.

Es sieht so aus, dass die Abhängigkeiten nur in eine Richtung geprüft werden, d.h., Gentoo kann feststellen, welche Abhängigkeiten ein bestimmtes Paket besitzt und welche anderen Pakete zuzätzlich zu installieren sind.

Die umgekehrte Logik scheint (noch) nicht implementiert zu sein, d.h., man kann nicht feststellen, welche anderen Pakete von einem bestimmten Paket abhängen. Und dieses Wissen ist zwingend erforderlich, um ein Paket samt seiner Abhängigkeiten zu deinstallieren.

Grundsätzlich sollte es möglich sein, mit Hilfe der qpkg-Kommandos aus dem gentoolkit-Paket ein entsprechendes Script zu schreiben, dass eben diese Paketabhängigkeiten wieder auflöst, aber ich bin noch nicht dazu gekommen, so etwas zusammenzuhacken, obwohl mir das auch unter den Nägeln brennt.

Da bleibt zur Zeit nur: manuell prüfen. Mit emerge -p -e kde bekommst Du eine Liste aller Abhängigkeiten von KDE. Jetzt musst Du "nur" noch herausfinden, welche dieser Abhängigkeiten Du gefahrlos entfernen kannst, ohne andere Pakete zu "broken".

----------

## spyro

wenn ich die USE flags angepasst hab, muss ich dann noch irgendwas machen um das zu aktualisieren ? oder liest der die automatisch bein nächsten emerge aus ?

.spyro

----------

## franco

Hi,

Du kannst mit

emerge -e -p kde

feststellen, von welchen Paketen kde rekursiv alles abhaengig ist und dann alle die unmergen, die Du denkst nicht mehr zu brauchen. Spaetestens bei glibc wuerde ich dann aber vorsichtig werden  :Wink:  Option -p ist dasselbe wie --pretend und -e simuliert, dass er denkt, Du haettest garkeine Pakete installiert. emerge --help listet Dir auch mal alle vernuenftigen Optionen mit etwas Text dazu auf.

Gruesse,

Franco

----------

## spyro

ich habn 

```

emerge -u system 

```

und 

```

emerge -u world

```

gemacht.

jetzt hab ich unter /usr/src/ statt meinem alten 'linux-2.4.19-gentoo-r5' noch ein 'linux-2.4.19-gentoo-r7'.

muss ich jetzt nen neuen kernel backen ?

oder was mach ich damit ?

.spyro

----------

## franco

Es hat sich ganz am Ende des Versionsstrings nur die Revision des Ebuilds geaendert. Die Kernelversion ist dieselbe geblieben. Wenn Du mit Deinem aktuellen Kernel zufrieden bist und alles so funktioniert, wie Du Dir das vorstellst, dann besteht da wohl erst einmal kein Handlungsbedarf.

Gruesse,

Franco

----------

