USE Flags در Gentoo
آشنایی کامل با USE Flags، نحوه مشاهده، تنظیم و سفارشیسازی بستهها در زمان کامپایل.
USE Flags چیست؟
USE Flags مکانیزم منحصربهفردی در Gentoo است که با کمک آن میتوانید قابلیتهای هر بسته را در زمان کامپایل روشن یا خاموش کنید. وقتی بستهای مانند www-client/firefox کامپایل میشود، میتوانید تعیین کنید که آیا پشتیبانی از Wayland، PulseAudio یا AV1 فعال باشد. این کار باینری نهایی را سبکتر، سریعتر و امنتر میکند.
بهعنوان مثال، اگر فقط از Wayland استفاده میکنید، میتوانید پشتیبانی X11 را بهطور کامل از GTK حذف کنید:
# نصب GTK فقط با Wayland و بدون X11
USE="wayland -X" emerge gui-libs/gtkانواع USE Flags
USE Flags به دو دسته اصلی تقسیم میشوند:
۱. سراسری (Global)
این پرچمها در /etc/portage/make.conf تعریف میشوند و روی همهٔ بستهها اعمال میشوند:
# /etc/portage/make.conf
USE="wayland pulseaudio bluetooth nls ipv6 -systemd -X"۲. محلی (Per-package)
این پرچمها در /etc/portage/package.use/ تعریف میشوند و فقط روی یک بستهٔ خاص اعمال میشوند:
# فعال کردن PulseAudio فقط برای Firefox
echo "www-client/firefox pulseaudio" > /etc/portage/package.use/firefoxمشاهده USE Flags
مشاهده USE Flags سراسری فعال
emerge --info | grep ^USE
# خروجی:
# USE="X wayland pulseaudio alsa bluetooth nls ipv6 ..."مشاهده USE Flags یک بسته خاص
equery uses www-client/firefox
# خروجی:
# - -acl : ACL support
# + +alsa : ALSA audio support
# - -debug : Enable debugging
# + +pulseaudio : PulseAudio audio supportعلامت + به معنای فعال بودن و علامت - به معنای غیرفعال بودن است. علامت اول، وضعیت فعلی و علامت دوم، وضعیت پیشفرض ebuild را نشان میدهد.
نحوه تنظیم USE Flags
روش ۱: در make.conf
سادهترین راه، تعیین USE Flags در /etc/portage/make.conf است:
USE="wayland pulseaudio bluetooth nls"
USE="${USE} -systemd -X -doc"روش ۲: در package.use
برای کنترل دقیقتر، از پوشهٔ /etc/portage/package.use/ استفاده کنید:
# ایجاد فایل تنظیمات برای یک بسته
mkdir -p /etc/portage/package.use
echo "www-client/firefox pulseaudio wayland -ffmpeg" > /etc/portage/package.use/firefox
# یا فایل کلی
echo "dev-lang/python gdbm" >> /etc/portage/package.use/globalاولویت USE Flags
ترتیب اعمال USE Flags از کم به زیاد به این شکل است: پیشفرض ebuild، سپس Profile، سپس make.conf و در نهایت package.use. به این ترتیب تنظیمات per-package همیشه اولویت بالاتری دارد.
روش ۳: موقت در خط فرمان
میتوانید USE Flags را بهصورت موقت در دستور emerge تعیین کنید:
USE="wayland -X" emerge gui-libs/gtkاحتیاط با USE موقت
USE Flags موقت فقط برای همان نصب اعمال میشوند و در بهروزرسانی بعدی از بین میروند. برای ماندگاری، حتماً از make.conf یا package.use استفاده کنید.
جدول USE Flags رایج
| پرچم | توضیح | تأثیر |
|---|---|---|
X | پشتیبانی از X11 | فعال کردن کتابخانههای X11 |
wayland | پشتیبانی از Wayland | فعال کردن Wayland |
pulseaudio | سرور صوت PulseAudio | اتصال به PulseAudio |
alsa | پشتیبانی از ALSA | صوت مستقیم ALSA |
bluetooth | پشتیبانی از بلوتوث | قابلیت اتصال بلوتوث |
nls | بومیسازی رشتهها | ترجمههای زبانی |
doc | ساخت مستندات | نصب فایلهای راهنما |
test | اجرای تستها در زمان build | افزایش زمان کامپایل |
debug | اطلاعات دیباگ | باینری حجیمتر و کندتر |
ipv6 | پشتیبانی از IPv6 | فعال کردن پروتکل IPv6 |
systemd | ادغام با systemd | فقط در پروفایل systemd |
openssl | استفاده از OpenSSL | کتابخانه رمزنگاری |
مثال کاربردی: نصب GTK فقط با Wayland
فرض کنید میخواهید gui-libs/gtk را بدون پشتیبانی X11 نصب کنید:
# ۱. بررسی USE Flags فعلی GTK
emerge --info gui-libs/gtk | grep ^USE
# ۲. تعیین USE Flags در package.use
echo "gui-libs/gtk wayland -X -xinerama" > /etc/portage/package.use/gtk
# ۳. نصب با تأیید
emerge --ask gui-libs/gtk
# ۴. اعمال تغییرات در کل سیستم (اگر USE را در make.conf تغییر دادید)
emerge --ask --update --deep --newuse @worldتفاوت --newuse و --emptytree
پرچم --newuse فقط بستههایی را بازسازی میکند که USE Flags آنها تغییر کرده است. پرچم --emptytree کل سیستم را از نو کامپایل میکند و بسیار زمانبر است. برای تغییرات کوچک از --newuse استفاده کنید.
خطاهای رایج USE Flags
۱. تغییر USE بدون --newuse
اگر USE Flags را در make.conf تغییر میدهید اما --newuse اجرا نمیکنید، تغییرات اعمال نمیشوند:
# اشتباه: تغییر USE بدون اعمال مجدد
# (فقط بستههای جدید با USE جدید نصب میشوند)
# درست: اعمال تغییرات USE در کل سیستم
emerge --ask --update --deep --newuse @world۲. تضاد USE Flags
گاهی دو پرچم با هم ناسازگارند، مانند pulseaudio و alsa در برخی بستهها:
!!! USE flag 'pulseaudio' conflicts with USE flag 'alsa' in www-client/firefoxراهحل: یکی را انتخاب کنید و دیگری را با علامت منفی غیرفعال کنید:
echo "www-client/firefox pulseaudio -alsa" > /etc/portage/package.use/firefox۳. حذف قابلیت وابسته
اگر USE Flag یک کتابخانه را غیرفعال کنید، بستههایی که به آن وابستهاند ممکن است شکست بخورند. راهحل: پس از تغییر USE از revdep-rebuild استفاده کنید:
emerge --ask --update --deep --newuse @world
revdep-rebuildهشدار — تغییرات بیگدار USE
هرگز USE Flags سراسری را بدون فکر تغییر ندهید. برای مثال، حذف nls یا ipv6 از make.conf میتواند دهها بسته را دچار مشکل کند. همیشه پیش از تغییر، وابستگیها را با emerge --pretend --update --newuse @world بررسی کنید و از --emptytree با احتیاط استفاده کنید.
خلاصه و مرحله بعد
USE Flags قویترین ابزار سفارشیسازی Gentoo هستند؛ با آنها میتوانید بستهها را دقیقاً مطابق نیاز خود بسازید. نکتهٔ کلیدی این است که تغییرات را در package.use بهصورت per-package نگه دارید و از make.conf فقط برای پرچمهای واقعاً سراسری استفاده کنید.
در مرحلهٔ بعد، اگر با Portage آشنایی کامل ندارید، آن را بخوانید. برای آشنایی با مفاهیم کلی سیستم، آموزش معماری Gentoo را ببینید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.