# [gelöst] Update: linux-headers

## oliver2104

Hallo, habe wieder eine Frage zu einer Meldung nach einem "world-update" 

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

Calculating dependencies... done!

[ebuild     U  ] sys-kernel/linux-headers-3.16 [3.13]

Would you like to merge these packages? [Yes/No]
```

Verwende immer noch, den schon etwas ältern Kernel -> linux-3.12.13-gentoo

und bin damit sehr zufrieden.

Kann ich das oben genannte linux-headers Update unabhängig von der Kernel-Version durchführen

oder ist nacher auch ein Kernel update nötig ?

Anders gefragt müssen die Versionnummer der linux-headers und der linux-sourcen übereinstimmen?Last edited by oliver2104 on Sun Nov 23, 2014 11:05 am; edited 1 time in total

----------

## demiurg

Deine Frage beantworten sich m.E. von allein durch die Macht des "Faktischen"auf Deinem System.

Installiert sind die linux-headers-3.13. Fragt sich nur, ob Du Deinen 3.12. Kernel schon mal gebaut hast, nachdem die headers-3.13 installiert wurden. Ich habe noch keine Probleme gehabt wenn header und eingesetzter Kernel nicht übereingestimmt haben. 

Im Übrigen würde ich doch schon mal auf den aktuellen stable 3.12.30 aktualisieren. Schon wegen dem einen oder anderen Sicherheitspatch der mit dahinter liegt.

Gruß

----------

## oliver2104

Danke für die Antwort,

War wohl ein Denkfehler meinerseits, die linux-headers werden ja nur für

die Neukompilierung des Kernels benötigt.

Habe dann probeweise auf sys-kernel/linux-headers-3.16 upgedatet und meine

bestehende linux-3.12.13-gentoo konfiguration (definiert im Link /usr/src/linux/.config)

problemlos kompiliert und installiert. Insofern wäre meine Frage damit beantwortet:

Die Versionsnummern der linux-headers und der Kernel-Version (linux-sourcen) müssen

nicht notwendigerweise übereinstimmen.

Viele Grüße

----------

## franzf

linux-headers wird NICHT zum Kernel-kompilieren verwendet. linux-headers ist ein Paket, welches von Gentoo erstellt wird. Es bringt die linux-headers für Programme, die auf die kernel-API zugreifen wollen. Z.B. systemd oder xf86-input-evdev. Lasst mal equery d linux-headers laufen, dann seht ihr, was tatsächlich bei euch davon abhängt - der kernel ist sicher nicht dabei  :Wink: 

----------

## Josef.95

Jup, da kann ich franzf nur zustimmen.

Zum ermitteln welche der installierten Pakete wirklich das linux-headers Paket nutzen schaut zb via 

```
emerge -pvc virtual/os-headers
```

Die Version von sys-kernel/linux-headers sollte möglichst gleich oder kleiner der laufenden Kernelversion sein - aber möglichst nicht höher.

----------

## Klaus Meier

Aber selbst wenn die headers nicht zum bauen des Kernels benötigt werden, warum gibt es dann ständig neue und warum haben sie die gleiche Versionssnr. wie der Kernel? Ändert sich die kernel-API? Dann müsste ja eigentlich alle Pakete, die von linux-headers abhängen, neu übersetzt werden. Ändert sich da nichts, warum gibt es neue Headers?

----------

## franzf

 *Klaus Meier wrote:*   

> Aber selbst wenn die headers nicht zum bauen des Kernels benötigt werden, warum gibt es dann ständig neue und warum haben sie die gleiche Versionssnr. wie der Kernel? Ändert sich die kernel-API? Dann müsste ja eigentlich alle Pakete, die von linux-headers abhängen, neu übersetzt werden. Ändert sich da nichts, warum gibt es neue Headers?

 

Bei einer API-Änderung dürfte Neukompilieren problematisch werden  :Wink: 

AFAIK wird aber nichts wirklich Zentrales geändert. Es kommen halt Sachen hinzu. Und die meisten Programme verwenden einen recht stabilen Teil der gesamten Linux API. Um dann aber auf wirklich neue Features zugreifen zu können braucht es auch neue Header  :Wink:  Deshalb geht ein kernel-upgrade (3.x -> 3.(x+1)) immer mit einem linux-headers-update einher. Die API bleibt aber stabil über alle y in 3.x.y, weshalb es keinen (z.B.) linux-headers-3.17.4 gibt.

----------

## Fijoldar

 *franzf wrote:*   

>  Deshalb geht ein kernel-upgrade (3.x -> 3.(x+1)) immer mit einem linux-headers-update einher. Die API bleibt aber stabil über alle y in 3.x.y, weshalb es keinen (z.B.) linux-headers-3.17.4 gibt.

 

Das war bisher aber nicht so. Also die stabile Header Version hat sich oft von der stabilen Kernel Version unterschieden. Bis vor kurzem war z.B. sys-kernel/linux-headers-3.13 stabil, aber der Kernel war schon bei Version 3.14.x. Davor war die Header Version bei Version 3.9, aber es gab andere Kernel Versionen, die stabil waren.

Bisher war das also ziemlich verwirrend, vielleicht haben sie das jetzt aber endlich mit dem Kernel 3.16 geändert.

----------

## franzf

Der Gentoo Kernel-Herd wird schon wissen was er tut. Wahrscheinlich hat sich einfach nichts geändert, darum bestand nicht die Notwendigkeit jedem gleich noch neue linux-headers aufzudrücken.

Früher war das übrigens noch extremer: da gab es bei manchen (sogar recht vielen) kernel updates gar keine neuen linux-headers. Das hat auch sehr irritiert, und die Antwort war eben: Hat sich nix getan! Aber wahrscheinlich haben die User lang genug gemeckert, so dass wir jetzt wenigstens mit jedem kernel update ein headers update bekommen. Zumindest in testing  :Wink: 

----------

## Klaus Meier

Also, ich fasse das jetzt mal mit meinen Worten zusammen. Ich hoffe, ich habe das bis dahin alles richtig verstanden.

Wenn ein neuer Kernel 3.x.y mit einem größeren x erscheint, dann kommen in erster Linie neue Funktionen hinzu. Die APIs werden erweitert. Wenn ich eine Anwendung habe, die einen Kernel ab Version x benötigt, dann brauche ich Kernel und Headers ab dieser Version.

Und wenn sich an den APIs etwas ändert, dann müssen auch die Anwendungen angepasst werden. Sie die Treiber von AMD und Nvidia.

----------

## oliver2104

Möchte egal, ob wichtig oder nicht, noch folgendes hinzufügen:

ich verstehe unter header-files, C-ProgrammCode der aus verschiedenen Gründen,

aus dem eigentlichen SourceCode ausgelagert wurde und beim kompiliern wieder

zur Source hinzugefügt wird. 

Habe daher vermutet, dass solange kein Kompiliervorgang ausgelöst wird

die neue header-Version ein bestehendes System nicht beeinflusst.

Wie auch immer, hab durch diesen Anlass mein System erfolgreich upgedated auf: 

Kernel 3.16.5-gentoo und linux-headers 3.16 

l.g.

----------

## demiurg

Erstmal danke für den Hinweis, dass die linux-headers nichts mit dem Kernel kompilieren selbst zu tun haben.

Ich habe mal auf meinem System geschaut welche Programme die headers nutzen

```

demiurg64@eiche ~ $ equery d linux-headers

 * These packages depend on linux-headers:

media-video/ffmpeg-2.2.10 (v4l ? sys-kernel/linux-headers)

media-video/transcode-1.1.7-r3 (v4l ? >=sys-kernel/linux-headers-2.6.11)

sys-apps/busybox-1.21.0 (>=sys-kernel/linux-headers-2.6.39)

sys-fs/udev-217 (>=sys-kernel/linux-headers-3.7)

sys-fs/udisks-2.1.3 (>=sys-kernel/linux-headers-3.1)

sys-libs/libcap-2.22-r2 (sys-kernel/linux-headers)

sys-libs/mtdev-1.1.4 (>=sys-kernel/linux-headers-2.6.31)

sys-power/acpid-2.0.20 (>=sys-kernel/linux-headers-3)

virtual/os-headers-0 (kernel_linux ? sys-kernel/linux-headers:0)

x11-drivers/xf86-input-evdev-2.8.2 (>=sys-kernel/linux-headers-2.6)

```

Voila - ein buntes "Völkergemisch" und udev benötigt den "Neuesten".

----------

