Wie kann ich auf einer Gentoo Linux-Box, die ich nicht verwalte (und auf die ich keinen Root-Zugriff habe), die Optionen herausfinden, die zum Kompilieren des Pakets verwendet wurden?
(Bitte beachten Sie, dass ich noch nie mit Gentoo gearbeitet habe, aber gute Kenntnisse über Debian-basierte Distributionen habe.)
Antworten:
Wenn der Portage-Paket-Manager verwendet wird (was höchstwahrscheinlich der Fall ist), befinden sich die CPU-Flags in
/etc/make.conf
asCFLAGS
undCXXFLAGS
. Beachten Sie, dass einzelne Ebuilds möglicherweise bestimmte Flags filtern, sodass die Flags, die Sie sehen,/etc/make.conf
möglicherweise nicht die sind, die zum Kompilieren des Pakets verwendet wurden. Wenn Sie sich das Ebuild (unter/usr/portage/<category name>/<program name>/
) ansehen , können Sie feststellen, ob dies der Fall ist.Dies setzt natürlich voraus, dass der Inhalt von
/etc/make.conf
nach der Kompilierung des Pakets nicht geändert wurde.quelle
/etc/make.conf
spiegelt möglicherweise nicht die Optionen wider, die bei der Installation des Pakets verwendet wurden. Siehe meine Antwort.Bitte beachten Sie, dass sich die aktuellen USE-Flags und andere in definierte Konfigurationen
/etc/make.conf
seit der Installation des Pakets möglicherweise geändert haben. Eine zuverlässigere Methode zum Überprüfen der Konfigurations- und Kompilierungsoptionen ist das Überprüfenvar/db/pkg
.Beispiel für Apache-2.2.22:
quelle
Es ist wichtig zu beachten, dass dies überhaupt
make.conf
nicht zuverlässig ist, um zu überprüfen, wie ein Paket kompiliert wird. Tatsächlich ist es nur eine der zusätzlichen Konfigurationsdateien in einer ganzen Liste.Aus dem
man make.conf
:Die Priorität wird also wie folgt behandelt:
.ebuild
StandardeinstellungenGrundsätzlich können also USE-Flags gesetzt werden, ohne dass dies erwähnt wird
make.conf
. Ebenso für CFLAGS (obwohl ihre Reihenfolge der Verarbeitung festgelegt ist, aber es funktioniert ähnlich)Ebenso können USE-Flags in einem Profil ohne E-Build oder andere oben genannte Quellen maskiert werden. Kurz gesagt, basierend auf Konfigurationsdateien können Sie nicht.
Wenn Sie die resultierenden globalen Einstellungen kennen möchten, die derzeit vom System verwendet werden, verwenden Sie
emerge --info
. Dies sollte Ihnen eine Menge Details geben. Normalerweise werden CFLAGS für ein einzelnes Paket nicht sehr oft überschrieben, sodass Sie diese Ausgabe als endgültig betrachten können.Wenn Sie die USE-Flags eines bestimmten installierten Pakets kennen möchten, können Sie diese verwenden
equery u <package>
, sofern das gentoolkit- Paket installiert ist.quelle