Debian Package bereits installiert mit einer bestimmten V.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Debian Package bereits installiert mit einer bestimmten V.

Beitrag von Generic1 » 03.05.2013 14:22:55

Hallo,

ich möchte detektieren, ob ein bestimmtes Debian- Package mit einer bestimmten Version schon installiert ist und je nach dem in if - else eine Ausgabe machen.
Ich hab mir dazu den unteren Code erstellt. Weiß jemand wie ich das mit der Version auch noch detektieren kann?
Vielen Dank,
lg
Generic1

Code: Alles auswählen

newVersionToInstall () {
  
  packageName="mein Package name"

  dpkg -l $packageName
  if [ $? -eq 0 ]; then
     echo "in if - package gibts"   		
  else
     echo "in else - package gibts NICHT"		
  fi
}

newVersionToInstall


Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Cae » 03.05.2013 15:11:18

Code: Alles auswählen

$ dpkg-query -Wf '${Version}\n' dpkg      2>/dev/null || echo nix
1.16.10
$ dpkg-query -Wf '${Version}\n' wurstbrot 2>/dev/null || echo nix
nix
$ 
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Generic1 » 07.05.2013 12:57:52

Vielen Dank!!!

Jetzt hab ich noch ein anderes Problem, ich hab den Namen eines Debian- Packages, z.B. meinDebianPackage-1.2.3.4.deb und ich möchte jetzt schaun, ob dieses Package schon installiert ist.
Mit

Code: Alles auswählen

dpkg-query -Wf '${Version}\n' meinDebianPackage-1.2.3.4.deb  2>/dev/null || echo nix
nix
bekomm ich natürlich "nix" zurück, da die Version + deb im Namen vorhanden ist. Ab dem Minus (-) abschneiden geht auch nicht, da meine Package- Namen unterschiedlich aufgebaut sind (z.B. meinDebianPackage-1.2.3.4.deb oder meinDebianPackage-4.3.2.1-test.deb oder meinDebianPackage-1.2.3.4_all.deb).

Meine Frage wäre jetzt, kann ich mittels Shellscript den Namen des Debian-Packages, welcher im control- File steht, auslesen?

Besten Dank,
lg
Generic1

Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Generic1 » 07.05.2013 13:43:11

Ich hab noch eine andere Variante gefunden, mit der mir sehr geholfen wäre.
Ich hab z.B. folgende Package- Name (sind nicht von mir, daher kann ich das nicht beeinflussen):

Code: Alles auswählen

erstesPackage_1.2.3.4.deb
zweites-Package-2.3.4.5.deb
drittes-Package_5.6.7_test.deb
Ist es mittels Shellscript möglich, vom ersten Zeichen bis zur ersten Zahl -1 (_, -) den Namen zu erhalten, also für den oberen Fall:

Code: Alles auswählen

erstesPackage
zweites-Package
drittes-Package
geht das mittels ShellScript und regex oder ähnlichem?

Besten Dank!!
lg
Generic1

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von rendegast » 07.05.2013 15:29:51

... folgende Package- Name (sind nicht von mir, daher kann ich das nicht beeinflussen):
Du könntest per 'dpkg-deb -I ...deb' die Paketinfo ermitteln.
Die Info dann vielleicht in ein zur Datei passendes Array oder tempfile.
Danach dann weitere Aktionen.


Oder über die Pakete gleich ein Repo erstellen,
Zugriff dann einfach per apt o.ä:

Code: Alles auswählen

$ ll pool/
insgesamt 251064
-rw-r--r-- 1 user user 63654768 Apr 11 09:57 paket1.deb
-rw-r--r-- 1 user user 63709346 Apr 11 08:30 paket2_1.3.4.deb
-rw-r--r-- 1 user user 64729768 Apr 24 08:36 paket4-hardcore.deb
-rw-r--r-- 1 user user     2718 Mai  7 04:52 paket7-233.deb
-rw-r--r-- 1 user user 64981022 Apr 28 07:44 paket9-22-33_alle.deb

$ dpkg-scanpackages -m . > Packages
dpkg-scanpackages: Information: 5 Einträge wurden in Ausgabe-Paketdatei geschrieben.

$ egrep "^Pack|^Ver|^Arch|^File" Packages 
Package: virtualbox-4.2
Version: 4.2.12-84980~Debian~wheezy
Architecture: i386
Filename: ./pool/paket9-22-33_alle.deb
Package: virtualbox-4.2
Version: 4.2.12-84980~Debian~squeeze
Architecture: amd64
Filename: ./pool/paket4-hardcore.deb
Package: virtualbox-4.2
Version: 4.2.10-84104~Debian~wheezy
Architecture: amd64
Filename: ./pool/paket2_1.3.4.deb
Package: virtualbox-4.2
Version: 4.2.10-84104~Debian~squeeze
Architecture: amd64
Filename: ./pool/paket1.deb
Package: virtualbox-oracle-dummy
Version: 4.2-wheezy-dummy
Architecture: all
Filename: ./pool/paket7-233.deb
Zuletzt geändert von rendegast am 07.05.2013 15:42:44, insgesamt 3-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Cae » 07.05.2013 15:38:28

Code: Alles auswählen

$ foo=bar-baz_123-test; echo ${foo%%[_-][0-9]*}
bar-baz
$ 
Aber ist da dpkg -Gi deb nicht passender? Installiert nur, wenn's eine neuere Version ist.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Generic1
Beiträge: 78
Registriert: 15.11.2012 13:41:28

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Generic1 » 16.05.2013 11:28:25

Cae hat geschrieben:

Code: Alles auswählen

$ dpkg-query -Wf '${Version}\n' dpkg      2>/dev/null || echo nix
1.16.10
$ dpkg-query -Wf '${Version}\n' wurstbrot 2>/dev/null || echo nix
nix
$ 
Gruss Cae
Hallo nochmal,

ich hab das jetzt ausprobiert und es klappt bei der ersten abfrage - da bekomm ich nix bei wurstbrot, wenn ich dann wurstbrot installiere, bekomme ich die Version von wurstbrot. Wenn ich dann wurstbrot wieder deinstalliere, bekomme ich keine Antwort mehr von diesem Command (bzw. einen leeren String).
Weiß jemand wieso das ist, wird da in dei dpkg- Datenbank bei der installation was eingetragen was bei der deinstallation nicht mehr gelöscht wird.

lg
Generic1

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Debian Package bereits installiert mit einer bestimmten

Beitrag von Cae » 16.05.2013 16:24:58

Das kann ich hier nicht nachvollziehen, vielleicht tritt das bei purge/nicht purge auf? Nimm' mal das 2>/dev/null weg und guck', was dpkg dazu ausgibt.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten