Gentoo Linux portage USE flags:刪除預設值與沒有預設值有什麼區別,預設值如何比較,no-multilib?
Gentoo Linux
portage
依靠 USE 標誌來定制軟體的編譯選項。下面是一個範例,展示瞭如何在文件中組織USE 標誌make.conf
:# ************ USE ************** # ******** profile 'kde' ******** MYPROFILE="apache2 mysql" HW="3dnow -bluetooth directfb fbcon hddtemp lm_sensors mmx nvidia smp svga xcomposite xvmc" SYSTEM="caps -cups curl -fortran java nsplugin -oss syslog" NET="-ipv6 -isdnlog -ldap ppp wifi" CMDL="bash-completion gpm offensive vim-syntax" KDE="htmlhandbook plasma semantic-desktop" GNOME_DEPS="gstreamer -gtk" DEV="tidy vhosts" MMEDIA="aalib cdda cddb css dvb exif ffmpeg fontconfig gd gimp gphoto2 imagemagick libcaca lame matroska mplayer musicbrainz quicktime theora v4l v4l2 xine xpm xscreensaver" USE="${MYPROFILE} ${HW} ${SYSTEM} ${NET} ${CMDL} ${GNOME_DEPS} ${KDE} ${DEV} ${MMEDIA}"
並且此配置旨在升級(由於優先級)包含預設標誌的累積 13.0配置文件,例如:
(This example is the sum of the settings in base, default/linux, default/linux/x86 and default/linux/x86/13.0/) USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3 mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv xvid"
- 通過
-useflag
在make.conf
文件中使用來刪除對預設值中出現的功能的支持與在累積預設值中完全沒有功能並且在 make.conf 文件中沒有任何相關內容之間有什麼區別?- 源自預設配置文件的應用程序能否與在標準 Linux 發行版之一中編譯的標準應用程序相關聯?(預設配置文件是接近某個“標準”還是已經是一個非常定制的子集?)
- 現在為整個建構選擇一個 no-multilib配置文件真的是一個問題嗎?
通過在 make.conf 文件中使用 -useflag 刪除對出現在預設值中的功能的支持與在累積預設值中完全沒有功能並且在 make.conf 文件中沒有任何相關內容之間有什麼區別?
比這更複雜的是,Portage 看到的 USE 標誌的順序是由
USE_ORDER = "env:pkg:conf:defaults:pkginternal:repo:env.d"
(預設,可以在 中覆蓋/etc/{,portage/}make.conf
;man make.conf
更多細節見)決定的,這意味著所有這些位置都會覆蓋在該變數中後面提到的位置中設置的內容。為了簡化這一點,您的問題是關於**
pkginternal
這裡repo
**;分別是內部包 USE 標誌和儲存庫,您會注意到這裡的包可以覆蓋儲存庫中的預設值。當包顯式使用
+flag
或-flag
語法時會發生這種情況,在這種情況下會進一步考慮使用;但是,如果只flag
使用不帶後綴的,則使用來自儲存庫(或 env.d)的預設設置。如果不存在預設設置,則禁用該預設設置;這是有道理的,因為配置文件可以啟用某些功能,並且預設情況下啟用每個功能會啟用太多功能。
如果您將其冒泡(傳遞**
conf
**,即/etc/{,portage/}make.conf
);同樣的情況繼續適用,任何地方都不存在的預設設置意味著 USE 標誌被禁用。源自預設配置文件的應用程序能否與在標準 Linux 發行版之一中編譯的標準應用程序相關聯?(預設配置文件是接近某個“標準”還是已經是一個非常定制的子集?)
在標準的 Linux 發行版中,您將獲得一個啟用了許多功能的軟體包;但是,在 Gentoo 上,您可以選擇要啟用的功能。大多數人想要的最理智的 USE 標誌是線上的;但除此之外,對不同類型的格式、協議、功能等的支持,您需要專門打開它。
為了更好地了解這一點;看看 USE 中的標誌
emerge -pv media-video/vlc
。獲得更詳細的描述列表;做emerge gentoolkit
,然後equery u media-video/vlc
。附帶說明一下,您會發現在桌面配置文件中啟用了一些與桌面相關的 USE 標誌;以及在伺服器配置文件中啟用的與伺服器相關的 USE 標誌,等等……
現在為整個建構選擇一個 no-multilib 配置文件真的是一個問題嗎?
對此不做評論,您可以嘗試在論壇上詢問利弊;為了安全起見,我執行了一個 multilib 配置文件。我想說這只有在您執行一個您知道不需要 32 位應用程序的系統時才真正有意義。您可以通過存在的列表注意到沒有桌面或伺服器特定的存在:
$ find /usr/portage/profiles/ -name '*no-multilib*' /usr/portage/profiles/hardened/linux/amd64/no-multilib /usr/portage/profiles/arch/amd64/no-multilib /usr/portage/profiles/default/linux/amd64/10.0/no-multilib /usr/portage/profiles/default/linux/amd64/13.0/no-multilib
因此,選擇此類配置文件也會使您失去桌面/伺服器可以提供的預設設置;然而,預設值的數量是相當有限的,如果你真的認為你的工作流程需要一個 no-multilib 配置文件,你可以很好地在你的 make.conf 中複製它們。