使用emerge可以管理Portage中的软件甚至整个系统。
当我们谈到(软件)包的时候,我们通常指的是Portage树为Gentoo用户提供的包的名称。Portage树是ebuilds文件的集合,这些文件包含了Portage管理工具维护软件(安装,搜索,查询, …)时所需要的所有信息,并被默认的放置在/usr/portage目录中。
每当您要求Portage对系统中的软件包执行一些操作的时候,它会以系统中的ebuilds文件作为基础。因此您最好定期更新系统Portage树中的ebuild文件,这样Portage才知道新加入了哪些软件,哪些软件发布了安全更新,等等。
# emerge --sync
# emerge --update --deep --newuse world
–update(-u)表示更新 –deep(-D)表示更新关联包 Portage会查找您已经安装的软件包是否有更新版本,但它只会核对那些您已经明确地安装过的软件包(也就是在/var/lib/portage/world文件中列出的包),并不会完整去的检查与这些软件产生依赖关系的包是否也需要更新。如果您想更新系统中的每个软件包,那就加上–deep参数 –newuse 如果USE变量的值变了,就要使用这个参数,通知系统USE参数有变化
如果仅仅移除了一个包,而未将其依赖的包移除,使用emerge –depclean命令来移除依赖包。
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
在使用emerge –depclean前,确保系统完全更新过。 revdep-rebuild工具由gentoolkit包提供;使用前别忘了首先emerge它:
# emerge gentoolkit
1. emerge --sync
2. emerge -vauD --newuse world
3. emerge –depclean
4. revdep-rebuild
# emerge --search softname
# emerge --searchdesc pdf
# emerge gnumeric
# emerge --pretend gnumeric
或
# emerge -p gnumeric
# emerge --unmerge gnumeric
将你不想更新的包的名字加入到/etc/portage/package.mask中。 如你不想升级最新的nginx则加入
www-servers/nginx
如果你想针对某些包设置他们的USE属性,而不是改变全局USE属性,则修改/etc/portage/package.use文件,如:
>=www-servers/nginx-0.7.6 random-index addition fastcgi flv imap pcre perl ssl status sub webdav zlib
>=dev-lang/ruby-1.8.7
dev-db/mysql innodb berkdb
dev-lang/php fpm berkdb bzip2 cli crypt gdbm iconv ipv6 ncurses nls pcre readline reflection session spl ssl unicode zlib curl exif gd json mysql pdo threads xml zip
默认gentoo都是用稳定版的包,如果你想使用最新版本的软件,只要在/etc/portage/package.keywords文件中,对应的包后加入~就可以了。如:
www-servers/lighttpd ~amd64
www-servers/nginx ~amd64
dev-lang/php ~amd64
dev-db/mysql ~amd64
sys-devel/gcc ~amd64
dev-lang/ruby ~amd64
~amd64表明你更新的是64位版本的,如果是x86版本的,使用~x86就可以了。