|
楼主 |
发表于 2011-9-19 20:11:55
|
显示全部楼层
Post by timemars;2152407
1、当然
2、假如你全部软件都是用portage来管理的话,那它是能自动找到相应的库的,假如是自己手动安装的那就无能为力了,portage会当作还没有安装,那就会自动安装。
3、- [ebuild R ] media-video/mplayer-1.0_rc4_p20110322 USE="X a52 alsa ass dts dvd enca encode faac faad gif iconv ipv6 jpeg mmx mp3 network opengl osdmenu png rtc shm sse sse2 ssse3 theora tremor truetype unicode vorbis x264 xscreensaver xv xvid -3dnow -3dnowext -aalib (-altivec) -amr (-aqua) -bidi -bindist -bl -bluray -bs2b -cddb -cdio -cdparanoia -cpudetection -custom-cpuopts -debug -dga -dirac -directfb -doc -dv -dvb -dvdnav -dxr3 -esd -fbcon -ftp -ggi -gsm -jack -joystick -jpeg2k -ladspa -libcaca -libmpeg2 -lirc -live -lzo -mad -md5sum -mmxext -mng -mpg123 -nas -nut -openal -oss -pnm -pulseaudio -pvr -quicktime -radio -rar -real -rtmp -samba -schroedinger -sdl -speex -tga -toolame -twolame -v4l -v4l2 -vdpau (-vidix) -vpx (-win32codecs) -xanim -xinerama -xvmc -zoran" VIDEO_CARDS="-mga -s3virge -tdfx -vesa" 8,129 kB
复制代码 不敢说能把所有参数全包括进来了(例如软件安装在哪里就没有USE能指定),但你觉得这个USE的数量对于mplayer这个软件来说足够没有?假如真有某个功能无法用USE来指定,而用户又想自定义,那自己写个ebuild放overlay里面吧。
make.conf里面的USE是全局的,也就是说,你安装的所有软件包,假如有那个USE,那就会打开/关掉;假如没有这个USE,那就跟这个软件包没关系。- ryan@timemars ~ $ cat /etc/portage/package.use
- app-admin/conky imlib
- app-arch/p7zip rar
- app-emulation/libvirt qemu virt-network
- dev-lang/php gd xml fpm mysql mysqli cjk cgi curl
- gnome-base/gnome-applets gstreamer
- media-libs/libpng apng
- media-video/mplayer x264 xvid aac dts -dvdnav -rar -real -quicktime -cdio -live -dv -dirac -schroedinger -speex -toolame -twolame
- net-misc/networkmanager dhclient nss
- sys-apps/portage python3
复制代码 这个是LOCAL的,针对某一个软件包进行设置。例如我全局禁了gstreamer,但又想对gnome-applets这个包使用gstreamer
gentoo的定制性嘛,一方面你可以使用USE来控制安装的软件所具有的功能,一方面你可以用package.mast、package.unmask、package.keywords等来控制安装的软件的版本,一方面你可以自己写ebuild来添加portage里面没有的软件或版本
非常感谢你的解答
1.我想问一下,从以前手工编译到转到GENTOO下来,如果一个软件的ebuild中,默认编译参数已被合理设计,如果你发现没有实现某个功能(这在手工编译下很常见,特别是编译几个组件为一套整体时),你的作法是不是在package.use中针对性的增加你想要的USE?
2.
记得以前编译postfix+sasl+mysql+...记不清了,单独按默认编译来的话,这几个软件是相互独立”的“,需要在原先基础上添加相关的支持参数再编译
那在gentoo下,如果emerge来做的话,也有可能每个软件是成功编译安装的,因为依赖性不是强制的,但最后可能几个不能相互成一整体动作
记得有人用debian的port几条安装指令就OK了,我没用过debian,相来是和gentoo里的portage一样,那如此看来,应该是gentoo的在ebuild中对上面三个软件作了修改吧,也就是说portage中的各软件,ebuild文件可以重新设定了默认参数,和直接网上下载的源代码编译用的参数不一样,请教?
3.
按你的想法,emerge某个软件时是GLOBAL USE和LOCAL USE的并集,是吗?
平常手动编译时不加任何参数也可以编译成功(不是全部),那换到GENTOO下来讲,是不是这样:emerge一个软件,在真正编译时是 默认参数方式 (+/-)GLOBAL USE (+/-)LOCAL USE。对于你的例子mplayer,它列出的USE应该是这个软件能用到的所有USE,而不是默认编译用到的,是不是?,至于当全局USE为空时,是以怎样的USE真正去编译mplayer是写在ebuild文件中的,是吧?
全局USE只是一种选择性的约束,各个软件都有自己的ebuild,以这个为准绳,全局USE只是一种额外的"监督",当这个“监督”管的USE很多时,每个软件也被约束的多
4.官网上USE强调“可选”,那么LOCAL和GLOBAL并没有严格的界限,你可以用一个LOCAL的USE标记加入到/etc/make.conf中,其他软件在编译时会忽略掉这个标记,是这样吗?
另外就像3楼说的,有专人维护,USE“足够”多供用户使用~ |
|