Sie sind nicht angemeldet.

1

18.09.2010, 09:33

Hilfe bei regex bearbeiten eines strings in der bash

ich möchte mir teilweise alle oder große Pakete für mein Netbook auf unserem großen PC vorkaun (compilieren) lassen.
Da es bislang niemand schaffte, distcc so einzurichten, dass das compilierte Ergebnis hinterher auf funktionierte überlegte ich mir sowas.
Binhost wäre eine Spur zu übertrieben, da es eigentlich meist so Pakete wie xulrunner, firefox, thunderbird, kdelibs & Co betrifft, wo so eine kleine Möhre gerne mal 5-6h rumwirkt, was der große aber locker in 15min zusammenfrickelt. Da ich auf den Rechnern meist ähnliche Programme verwende wäre das quickpkg wie gerufen.
Mein pkg Ordner ist in /tmp damit er beim Restart gewiped wird. So auch auf dem großen. Das Verzeichnis erreiche ich von überall mit nfs.
Das funktioniert schon wunderbar, nur möchte ich gerne eine Automtisierung der Dateiliste und bearbeite sie mit so Freunden wie awk -F, grep, cut, sed etc.pp
Ich bekomme es hin, dass ich quasi das Atom als einzelnes herausbekomme. Ich erfinde mal eins, um die Komplexität auszudrücken:

dev-libs/ein-kleines-beispiel-3.1.2-r7

hier muss alles hinter Beispiel weg. Reguläre Ausdrücke sind ein Konstrukt, wo sich mein Gehirn stetig weigert es zu verstehen.
Hier brauche ich Eure Hilfe ;)
Was ich möchte:
Schau von hinten nach einem Bindestrich, dem eine Zahl folgt und schneide den Bindestrich samt Rest ab.
Für einen Hardcoreregexer sicher kein Akt, oder?

DANKE!
edit:
erster Gedanke:
atom="${1/%-/d//}
muss ich noch testen ..
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Poedel« (18.09.2010, 10:27)


2

18.09.2010, 13:34

Spontaner Gedanke (ich nutze gern sed)

Quellcode

1
2
$ echo dev-libs/ein-kleines-beispiel-3.1.2-r7 | sed 's/-[0-9].*//g'
dev-libs/ein-kleines-beispiel
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

3

18.09.2010, 22:19

leute ... macht euch das bitte nicht so kompliziert...
use qatom und alles ist fine :D

Beispiel

Quellcode

1
qatom dev-libs/ein-kleines-beispiel-3.1.2-r7

macht volgende ausgabe:

Quellcode

1
dev-libs ein-kleines-beispiel 3.1.2 r7


wenn nur pkg-name haben willst:

Quellcode

1
qatom dev-libs/ein-kleines-beispiel-3.1.2-r7 | awk '{ print $1 "/" $2 }' (dev-libs/ein-kleines-beispiel)

4

19.09.2010, 01:58

wenn du mir dazu sagst, wie ich das dann mit meinem emerge preview verbinde?

emerge -uDNpv world | qatom
geht nämlich nicht ;)
ich will mir den Output von Emerge auf die einzelnen Atome reduzieren, um sie woanders vorbaun zu können.
Das ist eigentlich nur eine Spielerei. Das Problem dabei ist ja, dass es keine configs mitbringt und auch keine erstell :thumbdown:
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

5

19.09.2010, 07:41

um sie woanders vorbaun zu können.

Wäre es hierfür nicht besser genau diese Version vor-zu-bauen? Also einfach =dev-libs/ein-kleines-beispiel-3.1.2-r7 nehmen?
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

6

19.09.2010, 11:32

um sie woanders vorbaun zu können.

Wäre es hierfür nicht besser genau diese Version vor-zu-bauen? Also einfach =dev-libs/ein-kleines-beispiel-3.1.2-r7 nehmen?
Jo, das würde ich auch meinen... ;)

Ein wenig Off-Topic
Poedel, beachte auch das die vorgebauten Pakete passend zur CHOST gebaut werden müssen, und auch die Optimierungen der
CFLAGS und CXXFLAGS sollten passend zum Zielsystem gewählt werden.

7

20.09.2010, 16:41

Zitat

Zitat

um sie woanders vorbaun zu können.

Wäre es hierfür nicht besser genau diese Version vor-zu-bauen? Also einfach =dev-libs/ein-kleines-beispiel-3.1.2-r7 nehmen?

Nein. Dann werden sie ja nicht gelöscht, wenn sie nicht mehr gebraucht werden.

edit:
Idiot, es geht ja ums Bauen. Ignoriert meinen Kommentar.

8

21.09.2010, 03:18

Zitat


emerge -uDNpv world | qatom
geht nämlich nicht ;)

LoL, ich muss mir Grad son klein Kind vorstelln:
"Geht nicht *heul* :Kreis in Dreieck rein-drück versuch:*

nunja topic:
mir scheint das du sowieso von der falschen seite vorgehst.
versuche mal deine kleine box via nfs o. iscsi zu mounten und dann führste einfach auf deinen großen die updates aus.

@topic: binhost (auch von poedel)
wieso ist binhost bloated ?
mini_httpd installieren, www-root nach /tmp/<dein pkg dir> ändern (um bei dein setup zu bleiben)
und dann die große Kiste als binhost bei den tinyboxen einrichten.
wenn noch sparsamer sein willst kannst du dir was mit netcat zurechtbasteln.

Zitat


Ignoriert meinen Kommentar.

Ok, was hast du gesagt ?

Zitat


Poedel, beachte auch das die vorgebauten Pakete passend zur CHOST gebaut werden müssen, und auch die Optimierungen der
CFLAGS und CXXFLAGS sollten passend zum Zielsystem gewählt werden.

beim binpkg emergen meckert dieser ja zum Glück fleißig drüber wenn man ein packet mergen will was nicht ins eigene System passt ;)


Damit niemand behauptet ich hätte gegen das Thema gearbeitet:

Quellcode

1
emerge -uDNpv world --nospinner | sed -ne '/\[ebuild\ /{s/\[ebuild\ *[udnfr]*\ *\]\ */\ /pi}' | cut -d " " -f 2 | xargs -n1 qatom

!

(momentan einer der ekligen'sten Wege die mir grad einfällt, wahrscheinlich kann man noch paar for's einbauen, aber das muss dann jeder selbst wissen)

9

21.09.2010, 08:40

naja, das Thema scheint ja doch zu einigen Gedanken gefordert zu haben.
Eigentlich bin ich das Ding so angegangen, weil man sagte, dass diese Atom Dinger nicht so schnell seien. Das Emergieren von kleinen bis mittelgroßen Paketen geht allerdings dennoch erstaunlich zügig, wo ich dazu tendiere, große Pakete wie firefox oder thunderbird direkt als bin Version zu emergieren oder etwaige andere wie qt-qui mit emerge -B atom auf dem großen vorzukaun, in ein nfs freies Verzeichnis zu moven und von dort rüberzuschieben und mit emerge -k atom(e) zu basteln.
Scheinbar ist das ausreichend.
zu der chost Anmerkung von Josef hätte ich noch eine Frage:
Der Chost und die Cflags geben doch eigentlich in erster Linie an, mit welchen Mitteln der Compiler zur Tat zu schreiten in der Lage ist.
Meine Einschätzung wäre gewesen, dass es egal sei und es nur auf die Architektur und die verwendeten Use-Flags ankommt, konkret im Falle von emerge -B atom.
Für mich persönlich ist das Thema so gelöst. Um keinen vor weiteren Kommentaren abzuhalten werde ich noch etwas damit warten, es auch als gelöst zu taggen ;)
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

10

21.09.2010, 22:03

emerge -uDNpv world | qatom
geht nämlich nicht


Quellcode

1
# emerge --color n --nospinner -uDNpv world | grep "^\[ebuild" | sed 's/^\[ebuild[[:blank:][:alnum:]]*] //' | cut -d " " -f 1 | while read PACKAGE; do qatom ${PACKAGE}; done
und von da an weiter ...

Kannst du damit was?


edit: uups ... habe zu spät die Post von Xaiyu gesehen ... ah ... halt das Gleiche mit leichtem südlicheren Akkzent. =)
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

11

21.09.2010, 22:52

ui, dyle gibt mir die Ehre :thumbsup:
ehm, ne Basis ist akut alles. Nur sind einige Informazis im Netz etwas kontrovers.
Da auf jedem System die Useflags variieren können brauche ich ein pkg, was alle Möglichkeiten beinhaltet.
Quickpgk macht das nicht, es packt "as is" so wie es auch compiliert wurde.
emerge -B atom packt es scheinbar komplett, so dass man auf dem Ziel beliebige Useflags aktivieren kann.
Bei deinem Stringspiel fehlt der Slash zwischen der Kategorie und der Ebuildbezeichnung.
Und wenn wir die Versionsnummer dahinterpacken, müssen wir es auch syntaktisch korrekt mit einem Bindestrich machen.
Um es zu komplettieren müssete man (sofern -B nicht alle useflags einpackt) in etwas sowas pro Zeile haben:
USE="a b c d" emerge -B kate-gorie/atom-3.2-r3

edit:
gestern hatte ich nur Zeit zu testen, inwieweit -B Dependencies verpackt und mußte mich wundern.
Auf dem PC ist kein Inkscape installiert.
emerge -B inkscape
sagte aber: Calculate dependencies first!
und ich: "That's not my job, ***hole!"
Hallo, bin ich der Paketmanager oder du?!

Gurgeln führte mich auch zu keiner Lösung, inwieweit Pakete mit -B erstellt alle Versionen von UseFlag Kombis handlen können.
Es scheint auch niemand zu wissen. Also muss ich es wohl mal ausprobieren *G*
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Poedel« (22.09.2010, 08:21)


12

22.09.2010, 10:07

Da auf jedem System die Useflags variieren können brauche ich ein pkg, was alle Möglichkeiten beinhaltet.
Wenn es konfliktäre USE gibt, wie willst du denn die automatisch lösen?
Bsp.

Quellcode

1
2
3
4
5
6
7
$ grep -A 5 pkg_config /usr/portage/app-forensics/aide/aide-0.13.1.ebuild 
pkg_config() {
        if use mhash && use postgres ; then
                eerror "We cannot emerge aide with mhash and postgres USE flags at the same time."
                eerror "Please remove mhash OR postgres USE flags."
                die "Please remove either mhash or postgres USE flag."
        fi

.. und da gibt es ja einige davon, was bei einigen Sachen geht und nicht geht. Ich erinner mich auch das das "thread" USE mit apache und PHP auch manchmal ganz arg Kopfweh machen kann.

Bedenke: du baust ja binaries und somit ist das jeweilige Feature drinnen!

Zitat

emerge -B atom packt es scheinbar komplett, so dass man auf dem Ziel beliebige Useflags aktivieren kann.
Bei deinem Stringspiel fehlt der Slash zwischen der Kategorie und der Ebuildbezeichnung.
Ja. Ich dachte ja auch du machst von da an selber weiter. Liegt ja alles auf dem Tablett auf. Ich würde jetzt ein awk reinpacken und vorne und hinten und mitten drinnen noch ein paar hübsche Slashes, Bindestriche und dergleichen reinsetzen damit es lustig wird. =)

Zitat

...


Zitat

edit:
gestern hatte ich nur Zeit zu testen, inwieweit -B Dependencies verpackt und mußte mich wundern.
Auf dem PC ist kein Inkscape installiert.
emerge -B inkscape
sagte aber: Calculate dependencies first!
und ich: "That's not my job, ***hole!"
Hallo, bin ich der Paketmanager oder du?!


Naja:

Quellcode

1
2
3
4
5
$ man -P $(which cat) emerge | grep -A 4 buildpkgonly                                                                                                 
       --buildpkgonly (-B)
              Creates binary packages for all ebuilds processed without  actu‐                                                                                        
              ally  merging the packages.  This comes with the caveat that all                                                                                        
              build-time dependencies must already be emerged on the system.


Schätze du bist da im Caveat, hm? --nodeps ... ?

Zitat

Gurgeln führte mich auch zu keiner Lösung, inwieweit Pakete mit -B erstellt alle Versionen von UseFlag Kombis handlen können.
Es scheint auch niemand zu wissen. Also muss ich es wohl mal ausprobieren *G*


Ich glaube schlichtweg, daß das für alle Pakete einfach nicht möglich ist.
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

13

22.09.2010, 10:35

bejae mal einfach alles ;)

cavecat? yep.
stimmt, steht ja da *G*
okay.

also der Emerge Befehl wird ja auf dem System ausgeführt, wo es hin soll und in einer Datei gespeichert.
Den Inhalt derer will ich dann mit emerge -B auf dem Sklaven bauen und die pakete hinterher wieder zurück zum Clienten ins PKGDIR kopieren.
Got ir?
USE="" emerge -B kate-gorie/atom-3.2-r7 --nodeps
würde am ehesten dem Vorhaben entsprechen.

Nun, ich bau mir das vom Tablett schon selbst zusammen, für dich wäre es sicher intuitiver ;p

DANKE!!!

EDIT***


Beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
poedel@pcslap ~ $ USE="kde" emerge -pv amarok

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N    ] dev-db/mysql-init-scripts-1.2  0 kB
[ebuild  N    ] media-libs/taglib-1.6.1-r1  USE="asf mp4 -debug -examples -test" 1,079 kB
[ebuild  N    ] x11-libs/qt-xmlpatterns-4.6.2  USE="(-aqua) -debug -pch" 0 kB
[ebuild   R   ] x11-libs/qt-qt3support-4.6.2  USE="accessibility exceptions kde* (-aqua) -debug -pch -phonon" 0 kB
[ebuild  N    ] x11-libs/qt-test-4.6.2  USE="exceptions iconv (-aqua) -debug -pch" 0 kB
[ebuild  N    ] media-libs/qimageblitz-0.0.4  USE="mmx sse sse2 -3dnow (-altivec) -debug" 55 kB
[ebuild  N    ] sys-apps/ed-1.4  89 kB
[ebuild  N    ] dev-perl/Net-Daemon-0.43  28 kB
[ebuild  N    ] perl-core/File-Spec-3.31  132 kB
[ebuild  N    ] media-libs/taglib-extras-1.0.1  USE="-debug" 31 kB
[ebuild  N    ] kde-base/phonon-kde-4.4.5  USE="alsa xine (-aqua) -debug (-kdeenablefinal) (-kdeprefix)" 7,161 kB
[ebuild  N    ] dev-perl/PlRPC-0.2020-r1  18 kB
[ebuild  N    ] x11-libs/qt-opengl-4.6.2  USE="exceptions qt3support (-aqua) -debug -pch" 0 kB
[ebuild  N    ] x11-libs/qt-webkit-4.6.2-r1  USE="dbus exceptions kde (-aqua) -debug -pch" 0 kB
[ebuild  N    ] virtual/perl-File-Spec-3.31  0 kB
[ebuild  N    ] x11-libs/qtscriptgenerator-0.1.0  USE="kde -debug" 366 kB
[ebuild  N    ] dev-perl/DBI-1.609  499 kB
[ebuild  N    ] dev-db/mysql-5.0.90-r2  USE="berkdb community embedded perl ssl -big-tables -cluster -debug -extraengine -latin1 -max-idx-128 -minimal -profiling (-selinux) -static -test" 22,807 kB
[ebuild  N    ] virtual/mysql-5.0  0 kB
[ebuild  N    ] dev-perl/DBD-mysql-4.01.3  127 kB
[ebuild  N    ] media-sound/amarok-2.3.1-r2  USE="embedded opengl player utils -cdda -daap -debug -ipod (-kdeenablefinal) -lastfm -mp3tunes -mtp -semantic-desktop" LINGUAS="de -af -bg -ca -ca@valencia -cs -da -el -en_GB -es -et -fr -it -ja -lt -lv -nb -nds -pa -pl -pt -pt_BR -ru -sk -sl -sr -sr@ijekavian -sr@ijekavianlatin -sr@latin -sv -th -tr -uk -zh_CN -zh_TW" 9,594 kB


müßte dann sein:

Quellcode

1
2
3
emerge -B --nodeps =dev-db/mysql-init-scripts-1.2
USE="asf mp4 -debug -examples -test" emerge -B --nodeps =media-libs/taglib-1.6.1-r1
usw.
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Poedel« (22.09.2010, 11:10)


14

22.09.2010, 12:02

Huhh..., von der Option "--nodeps" würde ich doch abraten. (ist eh stets kritisch und mit vorsicht zu genießen!)

Zitat von »man emerge«

--buildpkgonly (-B)
Creates binary packages for all ebuilds processed without actually merging the packages. This comes with the caveat that all
build-time dependencies must already be emerged on the system.

15

22.09.2010, 12:22

die Dependencies errechnet ja der Rechner, worauf es installiert wird.
Der Sklave soll ja nur baun, ohne weitere Deps
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de

16

22.09.2010, 12:55

die Dependencies errechnet ja der Rechner, worauf es installiert wird.
Der Sklave soll ja nur baun, ohne weitere Deps
Sorry nein, ich meine das kann so nicht funktionieren...
Zb ein bauen von firefox, ohne das deren eigentlicher Unterbau wie xulrunner (und deren weiteren Abhängigkeiten) nicht vorhanden ist wird nicht funktionieren können. Selbst wenn du emerge mit "--nodeps" dazu zwingst wirst du doch wenn überhaupt nur ein unvollständiges binarie erhalten welches auf dem Zielsystem nicht funktionieren kann.

BTW:
Beachte auch das ein bin-Paket welches mit bestimmten USE-Flags gebaut wurde nicht später auf dem Zielsystem mit anderen USE-Flags installiert und/oder genutzt werden kann als mit denen es einst gebaut wurde.
Sprich sollten USE-Flags geändert werden müssen wird man ein neues bin Paket bauen müssen..
Man kann ja nicht erwarten das ein bin-Paket welches ohne eine Funktion gebaut wurde (USE-FLAG)
diese nicht eingebaute Funktion auf den Zielsystem bereitstellen kann... (das kann schlicht nicht gehen!)

Poedel, ich würde dir eher raten diese ganze Geschichte zu vergessen und statt dessen zb ein funktionierendes distcc zu nutzen ;)

17

22.09.2010, 13:06

ich habe das ganze netbook so gebaut. Gehen tut es perfekt. Nur hätte ich es gerne etwas automatischer.
Warum sollte es auch nicht gehen?
Das Netbook sagt, welche Pakete es als Abhängigkeit mit welchen Useflags benötigt.
Genau nur diese Pakete werden vom Sklaven gebaut, ohne dass dieser sich um etwaige Abhängigkeiten seinerseits kümmern muss.
Nichts anderes macht ja der binhost, nur dass ich mir den Spaß mir ftp und Freigaben etc. erspare und nur die Pakete bauen lasse, die ich brauche, und nicht, was im Portage täglich neu kommt auf Teufel heraus bauen lasse.
Wie gesagt, die deps gibt ja das netbook aus, wenn ich den Emergevorgang pretende. Diese Pakete bekommt er genau so, wie er sie haben will vom Powerslave (iron maiden) vorgekaut. Läuft wie hulle ;)
System:
i7 P2600 @ 3,4GHz
jabber: poedel@jabber.ccc.de