# emerge von lvm2 ergibt merkwürdigen Fehler: [+/-]static-lib

## MiRoSa

Hallo ich komme mit diesem Konflikt nicht weiter:

```
emerge -1 lvm2
```

Ergebnis:

```

Calculating dependencies... done!

The following USE changes are necessary to proceed:

 (see "package.use" in the portage(5) man page for more details)

# required by sys-fs/lvm2-2.02.105-r2[udev]

# required by lvm2 (argument)

>=virtual/udev-208-r1 static-libs

Use --autounmask-write to write changes to config files (honoring

CONFIG_PROTECT). Carefully examine the list of proposed changes,

paying special attention to mask or keyword changes that may expose

experimental or unstable packages.

emerge: there are no ebuilds built with USE flags to satisfy ">=sys-apps/systemd-208:0/1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,gudev?,introspection?,kmod?,selinux?,static-libs(-)?]".

!!! One of the following packages is required to complete your request:

- virtual/udev-208-r1::gentoo (Change USE: -static-libs)

(dependency required by "virtual/udev-208-r1" [ebuild])

(dependency required by "sys-fs/lvm2-2.02.105-r2[udev]" [ebuild])

(dependency required by "lvm2" [argument])

```

Was muss ich ändern um es installiert zu bekommen?

Miro

----------

## frank9999

Hallo,

das virtuelle Paket benötigt eine Useflag Änderung.

Der folgende Befehl löst dieses Problem, in dem er ein Eintrag für das Paket in die zuständige Datei anhängt.

echo ">=virtual/udev-208-r1 static-libs" >>/etc/portage/package.use

Aber warum muss es so eine aktuelle Version von lvm2 sein?

Stable auf AMD64 ist zur Zeit Version 2.02.103, die Version 2.02.105-r2 ist die aktuellste unstable Version.

----------

## ChrisJumper

Herzlich Willkommen bei Gentoo/im Gentoo-Forum MiRoSa!

Verschiedene Dinge:

1.

Zuerst solltest du deine ABI setzen. Ich habe die Einführung irgendwie verpasst und aktuell keine Dokumentation darüber. (Edit: Ah doch hier, das Stichwort lautet Multilib und wurde gossamer-threads.com - gentoo Mailingliste angesprochen.) Kann sein das die nur für die Multilib-Konfiguration benötigt werden. Empfand das ABI-Setting aber als sehr intuitiv, da es sich an die Prozessor-Architektur anlehnt.

Mit Aufkommen dieser Useflags habe ich das ABI einfach in meine /etc/make.conf eingetragen.

Natürlich abhängig von deiner Chiparchitektur und deiner Orientierung (32 Bit oder 64 Bit System etc..) solltest du z.B. für ein reines 32 Bit System zum Beispiel:

ABI_X86="32" setzen, für ein reines 64 Bit System ABI_X86="64" oder für eine Mischung halt ABI_X86="32 64". Ich weiß nicht genau welche Pakete das brauchen, es geht aber um Bibiliotheken und in welcher Form die zur Verfügung gestellt werde. Schließlich kann man eine 32 Bit Programm nicht gegen eine 64 Bit Library liniken/laden.

Das ist aber wohl teilweise eine Ausnahme. Auf einem Reinen 64-Bit System braucht man das nicht. Die ganzen statischen gelinkten  32 Bit Programme die man vielleicht von dritten installiert, bringen eh ihre 32-Bit Libs mit.

Edit: Ich habe an dem vorherigen Absatz ein paar Änderungen vor genommen, denke er verwirrte eher als das er erläutert.

Welche anderen ABI_ Flags es ja noch gibt schlagen dir die relevanten Pakete ja quasi vor.

(Off Topic nebenbei bemerkt fällt mir grad auf: Ich weiß zt gar nicht was das abi_x86_x32 da soll...)

2.

In dem Fall kommen deine widersprüchlichen Angaben daher weil die >=virtual/udev-208-r1 static-libs gesetzt werden soll bei deiner AKTUELLEN emerge Anfrage.

Deine alten Pakete verlangen aber Teilweise noch das es nicht gesetzt ist.

 *Quote:*   

> !!! One of the following packages is required to complete your request:
> 
> - virtual/udev-208-r1::gentoo (Change USE: -static-libs)
> 
> (dependency required by "virtual/udev-208-r1" [ebuild])
> ...

 

probiere mal ein -N oder ein -Nu (für New Useflag und Update).

3.

Wie Frank schon anmerkte würde ich auch bei lvm2 bei der Stabilen Version bleiben wenn du nicht ein wichtiges Feature aus der neueren unstable Version benötigst.

4.

Bei dem Satz bin ich mir ehrlich gesagt nicht sicher:

 *Quote:*   

> emerge: there are no ebuilds built with USE flags to satisfy ">=sys-apps/systemd-208:0/1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,gudev?,introspection?,kmod?,selinux?,static-libs(-)?]".

 

Eigentlich sollte damit die Version sys-apps/systemd-208 gemeint sein. Vielleicht hat portage ein Problem damit das lediglich die sys-apps/systemd-208-r2 oder sys-apps/systemd-208-r3 im portage sind. Oder die Useflags sind nicht entsprechend gesetzt.

Jedenfalls habe ich Gefühlt diese Fehlermeldung wenn ein anderes Paket eine veraltete nicht existierende Konfiguration von einem anderen Paket nachfragt (update anomalie durch alte installierte Pakete und nicht aktuelles Update des Portage-Baums). Oder wenn das Paket gar nicht mehr existiert.

In dem Fall ist es aber einfach, installiere einfach Systemd-208-r2 und prüfe diese seltsamen Useflags/setze sie entsprechend. :D

5.

Generell würde ich behaupten man setzt static-libs lieber bei Dingen wie lvm2, die für den Boot-Vorgang nützlich sind, als das die dynamischen libs nachher fehlen und das System nicht bootet. Hier stelle ich via  $ equery u systemd aber fest das systemd gar kein static-libs Useflag mehr besitzt. Ja dann hat sich das wohl erledigt. Mach mal ein Update von Portage.

6.

Die Virtuellen Pakete blocken manchmal saublöd (sie wenn ich Manuel z.b. udev entferne werden sie nicht automatisch entfernt/zurückgesetzt) wenn du weißt was du machst entferne die einfach kurz, bevor du lvm2 neu baust.

----------

## MiRoSa

 *frank9999 wrote:*   

> 
> 
> echo ">=virtual/udev-208-r1 static-libs" >>/etc/portage/package.use
> 
> 

 

führt zu:

```

Calculating dependencies... done!

emerge: there are no ebuilds built with USE flags to satisfy ">=sys-apps/systemd-208:0/1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,gudev?,introspection?,kmod?,selinux?,static-libs(-)?]".

!!! One of the following packages is required to complete your request:

-  

(dependency required by "virtual/udev-208-r1" [ebuild])

(dependency required by "sys-fs/lvm2-2.02.105-r2[udev]" [ebuild])

(dependency required by "lvm2" [argument])

```

Ok, eine Meldung ist weg, aber es emerged auch nicht

Ich glaube, es ist ein USE-Flag-Problem, da kenne ich mich allerdings nicht wirklich aus (außer wie man sie setzt oder nicht setzt (make.conf und package.use))

systemd verlangt virtual/udev-208-r1::gentoo (Change USE: -static-libs)

und lvm2 verlangt das alte udev ...

Ich habe es auch mit lvm2-2.02.103 versucht; gleiches Ergebnis...

----------

## Josef.95

Hm, du hast vermutlich >=sys-apps/systemd-208:0 installiert, und versuchst nun sys-fs/lvm2[static-libs] (mit USE= static-libs) zu bauen?

Falls ja, das wird so wahrscheinlich nicht funktionieren können, da sys-fs/lvm2[static-libs] dann virtual/udev[static-libs] als Abhängigkeit zieht, welches dann mit dem installierten >=sys-apps/systemd-208:0 kollidiert, da >=sys-apps/systemd-208:0 die geforderte virtual/udev[static-libs] dep nicht erfüllen kann (weil es in >=sys-apps/systemd-208:0 kein USE=static-libs mehr gibt)

Zugegeben, die deps sind nicht wirklich leicht zu durchschauen  :Smile: 

Interessant wäre mit welchen USE-Flags du versuchst sys-fs/lvm2 zu bauen, und ob sys-fs/udev oder systemd installiert ist.

/edit:

Oder ein wenig einfacher formuliert: Wenn du >=sys-apps/systemd-208:0 installiert hast (oder es woanders her als Abhängigkeit gefordert wird)

dann muss virtual/udev mit USE=-static-libs installiert sein,

somit kann sys-fs/lvm2 dann nur mit USE=-static-libs installiert werden.

----------

## MiRoSa

Ich habe es mit Eurer Hilfe gelöst! Danke!

Lösung:

```

echo "sys-fs/lvm2 -udev" >>/etc/portage/package.use

```

Dann übersetzt es wenigstens, was das für Folgen im Betrieb hat, weiß ich noch nicht

----------

## Josef.95

Hehe, mit den von den Maintainern im Profil und ebuild vorgegebenen Flags hätte es auch funktionieren sollen  :Wink: 

```
$ emerge -pv =sys-fs/lvm2-2.02.105-r2 virtual/udev

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R    ] virtual/udev-208-r1  USE="gudev kmod -introspection (-selinux) -static-libs" 0 kB

[ebuild  N     ] sys-block/thin-provisioning-tools-0.2.8-r2  USE="{-test}" 0 kB

[ebuild  N     ] sys-fs/lvm2-2.02.105-r2  USE="readline thin udev -clvm -cman -device-mapper-only -lvm1 -lvm2create_initrd (-selinux) -static -static-libs" 0 kB

Total: 3 packages (2 new, 1 reinstall), Size of downloads: 0 kB
```

----------

## haegar87

Anmerkung: Falls du die stati Variante für einen initramfs brauchst, kannst du auch die nicht-static Variante nehmen.

Dann müssen nur die libs mit in die init... hat bei mir funktioniert.

Nötige libs lassen sich einfach via ldd /sbin/lvm ermitteln.

----------

