# [solved] Pakete bauen ohne installation möglich?

## DerWuff

Hallo,

seit einiger Zeit läuft einer meiner Server nun mit Gentoo und ich bin sehr zufrieden damit. Jedoch würde ich gerne eine Sache ändern. Derzeit mache ich alle 1-7 Tage manuell ein Update der Maschine mittels eines Update-Scripts  hier aus dem Forum oder mit "emerge --quiet --sync && emerge -avD world".

Was mir nun fehlt wäre eine Möglichkeit / Befehl um die Pakete bereits bauen zu lassen, ohne dass diese Installiert werden. So könnte ich diese nachts erstellen lassen um dann am Tag darauf zu kontrollieren, ob ich die Updates will und diese dann erst installieren. Würde mir viel Zeit sparen und nachts hat der Server sowieso nicht viel zu tun.

Gibt es hierzu eine Möglichkeit?

Danke im Voraus!

Beste Grüße

PS: Ja ich habe meines Erachtens die Doku gelesen und herumprobiert.Last edited by DerWuff on Thu Sep 27, 2007 12:44 pm; edited 2 times in total

----------

## 69719

ebuild /usr/portage/sys-apps/baselayout/baselayout-1.12.9-r2.ebuild package

oder

emerge --update --deep --newuse --buildpkgonly world

und die ausrede mit demlesen zählt nicht...

----------

## DerWuff

Drum sagte ich ja "meines Erachtens"

Danke für "--buildpkgonly", das hab ich aus irgendeinem Grund überlesen.

Problem erledigt.

----------

## Anarcho

Problem ist nur: Die Abhängigkeiten müssen dennoch installiert sein, sonst kann er das Paket ja nicht bauen.

----------

## DerWuff

Jop, aus diesem Grund hatte ich über --buildpkgonly drüber weggelesen. Ich wollte zwar eine Lösung die da mehr kann, aber sowas (wie mir nun klar ist) ist eben nicht möglich.

Meistens sind es Updates für Pakete wie php, die keine größeren Abhängigkeitenupdates gleichzeitig haben. Trotzdem sind es immer rund 10-15 Minuten zum bauen der Pakete, die man hier vielleicht nachts laufen lassen könnte. Ich installiere sowieso alle Updates, die notwendig sind, aber ich habe gerne im Blick was passiert.

----------

## Necoro

Wenn es dir nur darum geht, alles im Blick zu haben, bietet sich auch logging an ... =)

----------

## misterjack

 *Quote:*   

> Pakete builden ohne installation möglich?

 

Also bitte, es heißt immernoch Pakete bauen  :Rolling Eyes: 

----------

## 69719

sollte das erfüllen was du meinst...

```

#!/bin/bash

PKGS=$(emerge mc -p|grep ebuild|awk {'print $4'})

for PKG in $PKGS; do

   CATEGORY=$(echo $PKG|cut -d '/' -f 1)

   PACKAGE=$(echo $(echo $PKG|cut -d '/' -f 2)|cut -d '-' -f 1)

   VERSION=$(echo $(echo $PKG|cut -d '/' -f 2)|cut -d '-' -f 2-)

   ebuild /usr/portage/$CATEGORY/$PACKAGE/$PACKAGE-$VERSION.ebuild package

done

```

Ich finde aber die Idee nicht so prickelnd, da es dann gegen die Installierten Bibliotheken und nicht die neuen Bibliotheken die in den Packages sind gelinkt wird..., daher wird wohl danach ein revdep-rebuild nötig sein.

----------

## DerWuff

 *Necoro wrote:*   

> [...] logging [...]

 

Ich trau dem ganzen noch nicht so, dass ich's voll automatisieren würde... ich hab Gentoo nun seit 6 Monaten und bis jetzt noch keine größeren Probleme festgestellt, aber bisschen skeptisch bin ich schon  :Wink: 

 *misterjack wrote:*   

> [...]Pakete bauen

 

Sorry  :Razz:  ist korrigiert.

 *escor wrote:*   

> sollte das erfüllen was du meinst [...]

 

Ich danke dir vielmals! Da ich --buildpkgonly noch nicht probiert habe (habe erst gestern abend ein update gemacht), wollte ich (nicht übel nehmen, ich weiss es nicht besser!) fragen wo denn der unterschied dazu im gegensatz zu deinem Skript liegt? Bricht emerge ab, wenn die Abhängigkeiten nicht korrekt erfüllt sind?

Ein revdep-reuild mache ich nach jedem größeren Update und nach jedem Update eines Serverdienstes. Letztens wollte Apache, da ein paar libs falsch gelinkt waren, nicht mehr starten, seitdem mache ich das regelmäßig. Vielleicht überflüssig, aber damit erspare ich mir Ärger mit dem System...

Ich werde die Möglichkeiten mal die kommenden Tage ausprobieren (heute gab es laut gentoo-portage.com keine Updates für mich, lohnt es sich auch nicht), danke allen Postern!

----------

## 69719

emerge --buildpkgonly funktioniert nur, wenn er pakete aktualisiert.

also wenn eine neue abhängigkeit z.b. alsa dazukommt und er die alsa-libs installieren will, bricht er mit einer fehlermeldung ab.

```

gendevel ~ # emerge -B mc            

Calculating dependencies  ... done!

!!! --buildpkgonly requires all dependencies to be merged.

!!! Cannot merge requested packages. Merge deps and try again.

```

mein script hingegen schaut nach welche pakete installiert würden und erstellt für jedes paket das binary paket.

trotz dessen rate ich dir davon ab, denn kein machaniker würde einen neuen motor in ein altes auto einbauen ohne die restlichen, abhängigen komponenten vorher in das system einzubringen.

----------

## DerWuff

Ah ich verstehe, danke für die Klärung. Insofern ist also das --buildpkgonly an sich gar nicht so doof, da er abbricht, wenns wirklich müll ergeben würde.

Trotzdessen danke für dein Script.

Ich denke, da es keine wirkliche Lösung geben kann, werde ich wohl weiterhin manuell updaten. Der vollen Automatisierung traue ich nicht soooo ganz. Mal sehen.

----------

## Max Steel

richtig so, und alle paar Monate würde ich mal ein emerge -avuDN --with-bdeps=y world machen, da die Buildtime dependecies nicht nochmal upgedatet werden wenn es nicht mit Versionsnummer im Ebuild steht.

mit --with-bdeps=y werden diese auch miteinbezogen.

----------

## wols

Hallo,

als Anregung mal mein händisches Vorgehen (kannst du ja per Cron nachts machen lassen):

Ich habe unter /mnt/gentoo/build/i586 eine chroot-Umgebung in der ich Pakete baue (System im System, eigene make.conf).

Dort gilt 'PKGDIR=/usr/local/portage/packages'.

Dazu ein Skript /root/bin/g-chroot-i586.

```
#! /bin/bash

#

# g-chroot-i586

#

################################################################################

mount -t proc none /mnt/gentoo/build/i586/proc

mount -o bind /dev /mnt/gentoo/build/i586/dev

mount -o bind /usr/portage /mnt/gentoo/build/i586/usr/portage

chroot /mnt/gentoo/build/i586 /bin/bash

# emerge --metadata

#

# build, build, build :-)

umount /mnt/gentoo/build/i586/usr/portage

umount /mnt/gentoo/build/i586/dev

umount /mnt/gentoo/build/i586/proc
```

Danach findest du in /mnt/gentoo/build/i586/usr/local/portage/packages die Pakete.

----------

