Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Paketabfrage Scripten

1 view
Skip to first unread message

Achim Klausmann

unread,
Dec 31, 2009, 6:28:21 AM12/31/09
to
Moin,

und das wᅵr jetzt noch was im alten Jahr:

Wie kann ich im Script abfragen, ob ein Paket installiert ist?
Ich mᅵchte wissen, ob libaio, libaio-devel, und gcc installiert sind
und ggf die Scriptausfᅵhrung abbrechen.

Distri ist openSUSE 11.x
RPM wird hier die sicherste Lᅵsung sein.

MfG
AK
--
Alles war so schᅵn und unkompliziert...

...als es das Internet noch nicht gab.

Bernd Hohmann

unread,
Dec 31, 2009, 6:50:39 AM12/31/09
to
Achim Klausmann schrieb:

> Wie kann ich im Script abfragen, ob ein Paket installiert ist?

> Ich möchte wissen, ob libaio, libaio-devel, und gcc installiert sind
> und ggf die Scriptausführung abbrechen.
>
> Distri ist openSUSE 11.x
> RPM wird hier die sicherste Lösung sein.

http://www.unix.com/shell-programming-scripting/54508-check-if-rpm-installed.html#post302170163

Bernd

--
Visit http://www.nixwill.de and http://www.spammichvoll.de
jean....@nixwill.de & bernado....@spammichvoll.de

Stefan Reuther

unread,
Dec 31, 2009, 8:20:01 AM12/31/09
to
Achim Klausmann wrote:
> Wie kann ich im Script abfragen, ob ein Paket installiert ist?
> Ich mᅵchte wissen, ob libaio, libaio-devel, und gcc installiert sind
> und ggf die Scriptausfᅵhrung abbrechen.

Wenn die Alternative "Script abbrechen" lautet, wᅵrde ich ja einfach
versuchen, ein Minimalprogramm mittels gcc und libaio zu ᅵbersetzen.
Wenn das klappt, sind die Pakete offenbar verfᅵgbar; warum es klappt,
kann dir dann egal sein (auch, wenn die Pakete auf dem Zielsystem anders
heiᅵen, nicht aus RPMs stammen, oder gar aus hᅵndisch installierten
Tarballs stammen).

So arbeitet jedenfalls configure.


Stefan

Achim Klausmann

unread,
Dec 31, 2009, 11:23:34 AM12/31/09
to
Stefan Reuther schrieb:

> Wenn die Alternative "Script abbrechen" lautet, wᅵrde ich ja einfach
> versuchen, ein Minimalprogramm mittels gcc und libaio zu ᅵbersetzen.
> Wenn das klappt, sind die Pakete offenbar verfᅵgbar; warum es klappt,
> kann dir dann egal sein (auch, wenn die Pakete auf dem Zielsystem anders
> heiᅵen, nicht aus RPMs stammen, oder gar aus hᅵndisch installierten
> Tarballs stammen).
Ich hab's jetzt mal so gemacht:

# Abfrage nach libaio-devel, ORARUN braucht das
P=libaio-devel

rpm -qa "$P" > t1

if [[ $( rpm -qa $P ) =~ ${P} ]]
then
echo " Packet $P ist installiert, es geht weiter."
else
dialog --colors --msgbox \
"\Z1Das Paket $P ist nicht installiert, \
bitte installieren Sie das Paket $P \
nach mit 'yast2 -i libaio-devel' \
oder mit 'zypper in libaio-devel'." 8 50
exit 0
fi

# NOVELLs orarun.rpm installieren
rpm -ivh orarun.rpm > /var/log/XEsilentinstall.log


Aufgabenstellung ist:

Oracle Express Edition unter openSUSE 11.x ohne KDE oder GNOME

libaio und gcc hab ich sowieso schon installiert.
Ab openSUSE 11.2 geht die Installation nicht mehr ohne ORARUN
und das wiederum mᅵchte gerne libaio-devel sehen.

Die Maschinen, die wir draussen bei den Kunden schon laufen haben,
haben eben diese libaio-devel noch nicht installiert, Internetzugang
ist zwar vorhanden aber nicht eingerichtet. Also automatisch per
zypper das Paket installieren geht leider nicht.

Ich probier's hier nochmal in einer VirtualBOx aus.

Achim

David Haller

unread,
Jan 1, 2010, 4:41:38 AM1/1/10
to
Bernd Hohmann <bernd.hohma...@freihaendler.com> wrote:
> Achim Klausmann schrieb:
>> Wie kann ich im Script abfragen, ob ein Paket installiert ist?
>> Ich mᅵchte wissen, ob libaio, libaio-devel, und gcc installiert sind
>> und ggf die Scriptausfᅵhrung abbrechen.
>>
>> Distri ist openSUSE 11.x
>> RPM wird hier die sicherste Lᅵsung sein.
>
> http://www.unix.com/shell-programming-scripting/54508-check-if-rpm-installed.html#post302170163

Hm. FUD.

[..]$ PS1='($?) '
(0) rpm -q foo
package foo is not installed
(1) rpm -q yasm
yasm-0.8.0-1_dh_1
(0) rpm4 -q foo
package foo is not installed
(1) rpm4 -q yasm
yasm-0.8.0-1_dh_1
(0) rpm --version
RPM version 3.0.4
(0) rpm4 --version
RPM version 4.0
(0) ssh otherhost
[..]$ PS1='($?) '
(0) rpm -q foo
package foo is not installed
(1) rpm -q kernel-default
kernel-default-2.6.31.5-0.1.1.x86_64
(0) rpm --version
RPM version 4.7.1
(0) head -n 1 /etc/SuSE-release
openSUSE 11.2 (x86_64)
(0) logout
(0) rpm -q --queryformat '%{version} %{buildtime:date}\n' -f $(which rpm)
3.0.4 Wed 20 Sep 2000 05:54:18 PM CEST
(0) . ~/.bashrc

Reichen ~10 Jahre als Referenzzeitraum (das System ist nochmal gut ein
Jahr ᅵlter)?

Mich dᅵnkt, in o.g. Forum wurde Unfug verbreitet.

Im Zweifelsfall muᅵ man aber so oder so wg. der Paket-Versionen der
Abhᅵngigkeiten usw. eh 'rpm --test -i $PAKET' verwenden. Und auch das
liefert passende Exitcodes. Ah. Ja. Da fliegt doch noch was
unpassendes auf der Platte rum:

(0)# rpm --test -i uucp.rpm
error: failed dependencies:
[..]
(1)#

Geht doch! Und mehr:

(1)# rpm -e yasm-devel-0.8.0
(0)# rpm --test -i yasm-devel-0.8.0-1_dh_1.i686.rpm
(0)# rpm -i yasm-devel-0.8.0-1_dh_1.i686.rpm
(0)# rpm --test -i yasm-devel-0.8.0-1_dh_1.i686.rpm
package yasm-devel-0.8.0-1_dh_1 is already installed
(1)# rpm -i yasm-devel-0.8.0-1_dh_1.i686.rpm
package yasm-devel-0.8.0-1_dh_1 is already installed
(1)#

Savvy?

-dnh

--
Fachsimpelt nen Chirurg mit nem Automechaniker. Sagt der A: "Manchmal
fᅵhle ich mich auch wie ein Chirurg." Sagt der C: "Dann versuchensema,
bei laufendem Motor die Ventile zu wechseln." -- Reiner Kersten

Achim Klausmann

unread,
Jan 2, 2010, 1:46:05 AM1/2/10
to
Moin David,

David Haller schrieb:

Hm, hab ich jetzt alles nicht verstanden.
Das hat sich aber auch erledigt. Ich krieg die
Oracle-XE auch ohne Orarun und damit ohne libaio-devel installiert.

Trotzdem Danke

Achim

David Haller

unread,
Jan 2, 2010, 8:08:13 PM1/2/10
to
Achim Klausmann <achim.k...@t-online.de> wrote:
> David Haller schrieb:
>> [..]$ PS1='($?) '
>> (0) rpm -q foo
>> package foo is not installed
>> (1)
[..]

> Hm, hab ich jetzt alles nicht verstanden.

Am Anfang jeder Zeile steht der Exit-Status ($?) des vorangegangenen
Befehls in Klammern. Wenn du's also nochmal anguckst, siehst du, daᅵ
rpm durchaus passende Exit-Codes liefert.

-dnh

--
"Stef, if you were any stupider you'd be on life support."
-- Miranda on userfriendly

Juergen P. Meier

unread,
Jan 5, 2010, 4:31:40 AM1/5/10
to
Achim Klausmann <achim.k...@t-online.de>:

> Wie kann ich im Script abfragen, ob ein Paket installiert ist?
> Ich mᅵchte wissen, ob libaio, libaio-devel, und gcc installiert sind
> und ggf die Scriptausfᅵhrung abbrechen.
> Distri ist openSUSE 11.x
> RPM wird hier die sicherste Lᅵsung sein.

rpm -q $PAKETNAME

Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)

0 new messages