ubuntuusers.de

Das geht bestimmt eleganter | bash; brauche glibc version in eine Variable

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

kkarsten62

Anmeldungsdatum:
30. November 2009

Beiträge: 61

Hallo zusammen,

ich benötige die glibc Version in eine Variable in einem bash Script, dass auf diversen Distros laufen soll (Ubuntu, Fedora, Manjaro, openSUSE, ...).

Ich habe mir so beholfen:

1
glib_version=$(ldd --version | sed 1q | sed "s/ldd (GNU libc) //g")

Ggf. sieht die Ausgabe aber auf anderen Distros anders aus und dann passt das fixe Suchen und Ersetzen nicht mehr. Bei Fedora 36 und Manjaro habe ich es getestet, das kommt die richtige Version in die Variable.

Ich denke, dies geht bestimmt sicherer und eleganter.

Danke für einen Tipp.

kkarsten62

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Es gibt nicht DIE glibc-Version. Je nachdem was auf dem Rechner installiert ist, kann da diverses bei rauskommen. Der Anwender könnte bspw. mittels LD_PRELOAD eine andere glibc nutzen, als im System Verwendung findet, ggf. sogar mit anderer Architektur beim cross-compiling. Für ein Normalsystem reicht deine Abfrage aber vollkommen aus, eventuelle Nutzersettings könntest du mit einer Subshell ausgrenzen, Suchmaschine mit env -i bash --norc --noprofile füttern. Was ist denn dein Ziel?

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3782

Version des installierten libc-bin-Paketes:

dpkg -l | grep libc-bin | awk '{print $3}'

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

dingsbums schrieb:

Version des installierten libc-bin-Paketes:

dpkg -l | grep libc-bin | awk '{print $3}'

Das funktioniert allerdings nur bei dpkg (Debian und Ableger). Es gäbe noch pkcon als Alternative, erfordert aber, das PackageKit installiert ist, was auch nicht überall der Fall ist.

kkarsten62

(Themenstarter)

Anmeldungsdatum:
30. November 2009

Beiträge: 61

ChickenLipsRfun2eat schrieb:

... Was ist denn dein Ziel?

Hintergrund: Ich erstelle AppImages mittels Docker. Dazu nutze ich https://github.com/linuxdeploy/. Hier gibt es aber aktuell ein Problem mit der neuen glibc 2.36 (Arch, Manjaro). Zwischenzeitlich will ich einen Workaround (https://github.com/linuxdeploy/linuxdeploy/issues/210) in meine Docker Umgebung einbauen. In dem Workaround will ich die glibc Version in einer bash ermitteln. Da immer ganz definierte Docker Images (FROM ubuntu:22.04, FROM fedora:35, ...) angezogen werden, gehe ich davon aus, dass es darin nur eine glibc Version gibt.

Da es nur ein Workaround ist und ich gerade auch entdeckt habe, dass es wohl bald ein Fix geben wird https://github.com/linuxdeploy/linuxdeploy/pull/211 , ist es nicht mehr so ganz dringend.

Karl ...

kkarsten62

(Themenstarter)

Anmeldungsdatum:
30. November 2009

Beiträge: 61

Ich habe den Workaround nun mit meiner Methode mal eingebaut. Für Manjaro hat es auch geklappt und bis die anderen Distros auf glibc 2.36 sind, wird es sicherlich noch etwas dauern und bis dahin wird es dann einen Fix geben.

dingsbums und ChickenLipsRfun2eat Vielen Dank für Eure Mühe.

kkarsten62

Antworten |