http://blog.prosight.me/index.php/2009/07/189
使用emerge可以管理Portage中的软件甚至整个系统。
当我们谈到(软件)包的时候,我们通常指的是Portage树为Gentoo用户提供的包的名称。Portage树是ebuilds文件的集合,这
些文件包含了Portage管理工具维护软件(安装,搜索,查询,
…)时所需要的所有信息,并被默认的放置在/usr/portage目录中。
每当您要求Portage对系统中的软件包执行一些操作的时候,它会以系统中的ebuilds文件作为基础。因此您最好定期更新系统Portage树中的ebuild文件,这样Portage才知道新加入了哪些软件,哪些软件发布了安全更新,等等。
更新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
全面world更新的时候,不想更新某些包
将你不想更新的包的名字加入到/etc/portage/package.mask中。
如你不想升级最新的nginx则加入
www-servers/nginx
设置某些包的USE属性
如果你想针对某些包设置他们的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就可以了。