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.
> 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
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
# 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
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
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
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
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)