Tìm hiểu các tùy chọn cấu hình / biên dịch của gói trong Gentoo


7

Trên hộp Gentoo Linux mà tôi không quản trị (và tôi không có quyền truy cập root), làm cách nào tôi có thể tìm ra các tùy chọn được sử dụng để biên dịch gói?

(Xin lưu ý rằng tôi chưa bao giờ làm việc với Gentoo trước đây, nhưng có kiến ​​thức làm việc tốt về các bản phát hành dựa trên Debian)


Câu trả lời của noisebleed là câu trả lời đúng.
MattBianco

Câu trả lời:


1

Nếu người quản lý gói portage được sử dụng (nó rất có thể là) thì cờ CPU có thể được tìm thấy trong /etc/make.confkhi CFLAGSCXXFLAGS. Lưu ý rằng các ebuild riêng lẻ có thể lọc các cờ nhất định, vì vậy các cờ bạn nhìn thấy /etc/make.confcó thể không phải là các cờ được sử dụng để biên dịch gói. Nhìn vào ebuild (dưới /usr/portage/<category name>/<program name>/) có thể cho bạn biết nếu đó là trường hợp.

Tất nhiên, điều này giả định rằng nội dung của /etc/make.confkhông thay đổi sau khi biên dịch gói.


/etc/make.confcó thể không phản ánh các tùy chọn được sử dụng khi gói được cài đặt. Xem câu trả lời của tôi.
ồn ào

9

Xin lưu ý rằng các cờ USE hiện tại và cấu hình khác được xác định trong /etc/make.confcó thể đã thay đổi kể từ khi gói được cài đặt. Một cách đáng tin cậy hơn để kiểm tra các tùy chọn cấu hình và biên dịch là kiểm tra var/db/pkg.

Ví dụ cho apache-2.2.22:

$ cat /var/db/pkg/www-servers/apache-2.2.22-r1/CFLAGS
-mtune=native -O2 -pipe -g

3

Điều quan trọng cần lưu ý make.conflà không đáng tin cậy chút nào, để kiểm tra cách gói được biên dịch. Trong thực tế, nó chỉ là một trong những tập tin cấu hình bổ sung trong toàn bộ danh sách.

Từ man make.conf:

USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d"
Determines the precedence of layers in the incremental stacking of the USE 
variable. Precedence decreases from left to right such that env overrides 
pkg, pkg overrides conf, and so forth.

Vì vậy, ưu tiên được xử lý như:

  1. Môi trường shell khi gọi xuất hiện
  2. Gói cài đặt USE cụ thể trong /etc/portage/package.use
  3. làm cho
  4. Mặc định từ hồ sơ đã chọn
  5. Mặc định được đặt trong .ebuildtệp gói
  6. Mặc định phân phối
  7. Cài đặt được xác định trong /etc/env.d

Vì vậy, về cơ bản một cờ USE có thể được đặt mà không được đề cập đến make.conf. Tương tự như vậy đối với CFLAGS (mặc dù thứ tự xử lý của chúng là cố định, nhưng nó hoạt động tương tự)

Tương tự như vậy, cờ USE có thể được che trong một hồ sơ mà không có bất kỳ nguồn nào trong ebuild hoặc bất kỳ nguồn nào khác được đề cập ở trên. Nói tóm lại, dựa trên tập tin cấu hình bạn không thể.

Nếu bạn muốn biết các cài đặt toàn cầu hiện đang được hệ thống sử dụng, hãy sử dụng emerge --info. Điều này sẽ cung cấp cho bạn một lượng lớn các chi tiết. Thông thường CFLAGS không thường xuyên bị ghi đè cho một gói duy nhất, vì vậy bạn có thể xem xét đầu ra dứt khoát.

Nếu bạn muốn biết các cờ USE của một gói cụ thể được cài đặt, bạn có thể sử dụng equery u <package>, miễn là gói gentoolkit được cài đặt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.