rpm f�r komplette verzeichnisstr�nge
Hallo ihr, gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert? Nice GreetingZ. ...Lars Strojny ___________________________ Direct Action Treffen Vom 22. - 24.10.2002 in Oberstenfeld Weitere Infrmationen unter: --->www.da-treffen.ch.vu
Am Mittwoch, 25. September 2002 21:51 schrieb lars:
gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert?
rpm -Uvh [Ordner]/*.rpm ^^^^^^^^ Da natürlich den richtigen Ordner/das Verzeichnis angeben. -- Machs gut | http://www.iiv.de/schwinde/buerger/tremmel/ Manfred | http://www.knightsoft-net.de
Hallo lars, lars schrieb am 25.09.2002 (21:51):
gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert?
Eine Konstruktion ähnlich wie find . -name *.rpm -exec rpm -Uhv {} \; (genaue Syntax mußt Du nachschlagen, ungetestet!) sollte das tun, was Du willst. Gruß, Antje -- One Unix to rule them all, One Resolver to find them, One IP to bring them all and in the zone bind them.
Am Don, 26 Sep 2002 schrieb Antje M. Bendrich:
Hallo lars,
lars schrieb am 25.09.2002 (21:51):
gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert?
Eine Konstruktion ähnlich wie find . -name *.rpm -exec rpm -Uhv {} \; (genaue Syntax mußt Du nachschlagen, ungetestet!) sollte das tun, was Du willst.
Dann hast Du aber ein Problem mit Abhängigkeiten, weil Du die RPMs einzeln installierst, wenn Du aber in einem Ordner einen Haufen RPMs mit gegenseitigen Abhängigkeiten rumfliegen hast und sagst rpm -Uvh *.rpm, dann löst rpm dieses Problem selbst und bringt die Installation in die richtige Reihenfolge. Also vielleicht eher so was find -type d -exec rpm -Uvh {}/*.rpm \; (ebenfalls ungetestet) Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
Christoph Maurer wrote:
Am Don, 26 Sep 2002 schrieb Antje M. Bendrich:
lars schrieb am 25.09.2002 (21:51):
gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert?
Eine Konstruktion ähnlich wie find . -name *.rpm -exec rpm -Uhv {} \; (genaue Syntax mußt Du nachschlagen, ungetestet!) sollte das tun, was Du willst.
Dann hast Du aber ein Problem mit Abhängigkeiten, weil Du die RPMs einzeln installierst, wenn Du aber in einem Ordner einen Haufen RPMs mit gegenseitigen Abhängigkeiten rumfliegen hast und sagst rpm -Uvh *.rpm, dann löst rpm dieses Problem selbst und bringt die Installation in die richtige Reihenfolge.
Also vielleicht eher so was find -type d -exec rpm -Uvh {}/*.rpm \; (ebenfalls ungetestet)
Funktioniert aber auch nur, solange die Pakete in den verschie- denen Unterverzeichnissen unabhaengig voneinander sind ;-)) An- sonsten muss man halt alle RPMs in ein Verzeichnis kopieren und anschliessend installieren. Vielleicht so: cd /some/directory/with/RPM/subdirs mkdir /tmp/RPM find . -type f -name "*.rpm" -exec cp -i {} /tmp/RPM/ \; rpm -Uhv /tmp/RPM/*.rpm rm -rf /tmp/RPM Dann koennen alle Pakete voneinander abhaengig sein. Gruesse, Thomson -- Thomas Hertweck, Geophysicist Geophysical Institute, Karlsruhe University (TH)
Am Don, 26 Sep 2002 schrieb Thomas Hertweck:
Christoph Maurer wrote:
Am Don, 26 Sep 2002 schrieb Antje M. Bendrich:
lars schrieb am 25.09.2002 (21:51):
gibt es einen RPM-Befehl mit dem ich einen Ordner auswählen kann und der dann diesen Ordern und alle unterverzeichnisse installiert?
Eine Konstruktion ähnlich wie find . -name *.rpm -exec rpm -Uhv {} \; (genaue Syntax mußt Du nachschlagen, ungetestet!) sollte das tun, was Du willst.
Dann hast Du aber ein Problem mit Abhängigkeiten, weil Du die RPMs einzeln installierst, wenn Du aber in einem Ordner einen Haufen RPMs mit gegenseitigen Abhängigkeiten rumfliegen hast und sagst rpm -Uvh *.rpm, dann löst rpm dieses Problem selbst und bringt die Installation in die richtige Reihenfolge.
Also vielleicht eher so was find -type d -exec rpm -Uvh {}/*.rpm \; (ebenfalls ungetestet)
Funktioniert aber auch nur, solange die Pakete in den verschie- denen Unterverzeichnissen unabhaengig voneinander sind ;-)) An-
Ist richtig, aber genau das ist auch oft der Fall, zumindest bei meinem Ordnungssystem :-) Ich halte meinetwegen alle KDE-rpms in einem und alle gnome-RPMs in einem anderen Ordner... Dein Vorschlag ist aber natürlich allgemeiner gültig. Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
On Thursday 26 September 2002 09:21, Thomas Hertweck wrote:
Christoph Maurer wrote:
Also vielleicht eher so was find -type d -exec rpm -Uvh {}/*.rpm \; (ebenfalls ungetestet)
Funktioniert aber auch nur, solange die Pakete in den verschie- denen Unterverzeichnissen unabhaengig voneinander sind ;-)) An- sonsten muss man halt alle RPMs in ein Verzeichnis kopieren und anschliessend installieren. Vielleicht so:
cd /some/directory/with/RPM/subdirs mkdir /tmp/RPM find . -type f -name "*.rpm" -exec cp -i {} /tmp/RPM/ \; rpm -Uhv /tmp/RPM/*.rpm rm -rf /tmp/RPM
Dann koennen alle Pakete voneinander abhaengig sein.
Oder - ebenfalls ungetestet - so: find . -type f -name "*.rpm" -print0 | xargs -0 rpm -Uhv Hier wird die Gesamtausgabe von find über xargs an rpm weitergereicht. Ich habe jetzt keine Lust, in den manpages zu lesen, will aber darauf hinweisen, dass es möglicherweise wieder das Problem mit den Abhängigkeiten gibt, wenn die Ausgabe von find die Puffergröße überschreitet. Kann aber auch Käse sein, was ich gerade schreibe. ;-) Bye, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
Am Don, 26 Sep 2002 schrieb Stephan Hakuli:
On Thursday 26 September 2002 09:21, Thomas Hertweck wrote:
Christoph Maurer wrote:
Also vielleicht eher so was find -type d -exec rpm -Uvh {}/*.rpm \; (ebenfalls ungetestet)
Funktioniert aber auch nur, solange die Pakete in den verschie- denen Unterverzeichnissen unabhaengig voneinander sind ;-)) An- sonsten muss man halt alle RPMs in ein Verzeichnis kopieren und anschliessend installieren. Vielleicht so:
cd /some/directory/with/RPM/subdirs mkdir /tmp/RPM find . -type f -name "*.rpm" -exec cp -i {} /tmp/RPM/ \; rpm -Uhv /tmp/RPM/*.rpm rm -rf /tmp/RPM
Dann koennen alle Pakete voneinander abhaengig sein.
Oder - ebenfalls ungetestet - so:
find . -type f -name "*.rpm" -print0 | xargs -0 rpm -Uhv
Hier wird die Gesamtausgabe von find über xargs an rpm weitergereicht. Ich habe jetzt keine Lust, in den manpages zu lesen, will aber darauf hinweisen, dass es möglicherweise wieder das Problem mit den Abhängigkeiten gibt, wenn die Ausgabe von find die Puffergröße überschreitet. Kann aber auch Käse sein, was ich gerade schreibe. ;-)
Wird denn bei dem Pipen an xargs der rpm Befehl für alle Ergebnisse des Find-Befehls einmal aufgrufen? Oder für jedes Ergebnis einmal -> Problem mit den Abhängigkeiten! Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen
On Thursday 26 September 2002 13:17, Christoph Maurer wrote:
Am Don, 26 Sep 2002 schrieb Stephan Hakuli:
Oder - ebenfalls ungetestet - so:
find . -type f -name "*.rpm" -print0 | xargs -0 rpm -Uhv
Hier wird die Gesamtausgabe von find über xargs an rpm weitergereicht. Ich habe jetzt keine Lust, in den manpages zu lesen, will aber darauf hinweisen, dass es möglicherweise wieder das Problem mit den Abhängigkeiten gibt, wenn die Ausgabe von find die Puffergröße überschreitet. Kann aber auch Käse sein, was ich gerade schreibe. ;-)
Wird denn bei dem Pipen an xargs der rpm Befehl für alle Ergebnisse des Find-Befehls einmal aufgrufen? Oder für jedes Ergebnis einmal -> Problem mit den Abhängigkeiten!
Ich weiß es nicht genau, aber ich denke, dass rpm einmal aufgerufen wird, und zwar mit den Argumenten, die find via stdout liefert. Man korrigiere mich, wenn ich damit falsch liege, weil ich das jetzt nicht getestet habe. Wie oben erwähnt, kann es allerdings sein, dass bei zu großem stdout von find die Übergabe in mehreren Häppchen erfolgt und hierdurch die Abhängigkeitensprüfung auch fehlschlägt. Ich kenne die Interna der "pipe-erei" nicht, aber vom Prinzip sollte obenstehendes okay sein. Man kann das ja mal testen, indem man ein foo-devel.rpm und foo.rpm (in dieser Reihenfolge!) mit echo über xargs an rpm übergibt. Liest sich schon irgendwie krank. ;-) Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
* On Thu, 26 Sep 2002 at 13:51 +0200, Stephan Hakuli wrote:
On Thursday 26 September 2002 13:17, Christoph Maurer wrote: [...]
Wird denn bei dem Pipen an xargs der rpm Befehl für alle Ergebnisse des Find-Befehls einmal aufgrufen? Oder für jedes Ergebnis einmal -> Problem mit den Abhängigkeiten!
Ich weiß es nicht genau, aber ich denke, dass rpm einmal aufgerufen wird, und zwar mit den Argumenten, die find via stdout liefert. Man korrigiere mich, wenn ich damit falsch liege, weil ich das jetzt nicht getestet habe. Wie oben erwähnt, kann es allerdings sein, dass bei zu großem stdout von find die Übergabe in mehreren Häppchen erfolgt und hierdurch die Abhängigkeitensprüfung auch fehlschlägt. Ich kenne die Interna der "pipe-erei" nicht, aber vom Prinzip sollte obenstehendes okay sein.
xargs ruft rpm ein- oder mehrmals auf. Das hängt von der Anzahl der Argumengte, die via stdin kommen, ab. Die zulässige Länge eines Aufrufs ist ja begrenzt, xargs serviert die Daten dann in Häppchen. Bei mir sind die Häppchen, sollte ich mich nicht vertan haben, ca. 6 kiB groß. In man xargs findet sich noch mehr.
Man kann das ja mal testen, indem man ein foo-devel.rpm und foo.rpm (in dieser Reihenfolge!) mit echo über xargs an rpm übergibt. Liest sich schon irgendwie krank. ;-)
Das geht so in einem Aufruf von rpm durch. -- Adalbert PGP welcome, request public key: mailto:adalbert+key@lopez.at
Hallo, On Thu, 26 Sep 2002, Adalbert Michelic wrote:
* On Thu, 26 Sep 2002 at 13:51 +0200, Stephan Hakuli wrote:
On Thursday 26 September 2002 13:17, Christoph Maurer wrote: [...]
Wird denn bei dem Pipen an xargs der rpm Befehl für alle Ergebnisse des Find-Befehls einmal aufgrufen? Oder für jedes Ergebnis einmal -> Problem mit den Abhängigkeiten! [..] xargs ruft rpm ein- oder mehrmals auf. Das hängt von der Anzahl der Argumengte, die via stdin kommen, ab. Die zulässige Länge eines Aufrufs ist ja begrenzt, xargs serviert die Daten dann in Häppchen.
Jup. Das Problem laesst sich aber recht weitgehend umgehend, so dass man "genug" rpms angeben kann: ==== "eine" oder auch mehrere Zeile(n) *g* === mkdir /tmp/RPMS; \ cd /tmp/RPMS; \ i=0; \ for f in `find /irgendwo/ -name "*.rpm"`; \ do \ i=$[i+1]; \ ln -s "$f" "$i"; \ done; \ rpm -Uvh * ==== rpm ist es vorllig egal, ob die Dateien symlinks sind und wohl auch wie sie heissen, und mit Zahlen als Dateinamen kommt man recht weit, bis die Befehlszeile fuer rpm zu lang wird :) Das geht bis zu mindestens 4000 Dateien, was eigentlich reichen sollte :) -dnh -- 165: SuSE Nürnberger Windows (Andreas Gradert)
participants (8)
-
Adalbert Michelic
-
Antje M. Bendrich
-
Christoph Maurer
-
David Haller
-
lars
-
Manfred Tremmel
-
Stephan Hakuli
-
Thomas Hertweck