gentoo:emerge如何使用USE安装额外的包扩展,vim如何安装lua支持?
ubuntu的apt-get,arch的pacman,继承自redhat的yum
通过配置源都可以从国内外镜像上获得软件包,并且交给这些包管理器来处理依赖,下载依赖等等
在使用mac os x那段时间,我一般是用brew和apple store来管理包和程序的
后来有段时间我使用windows,坚持使用360,虽然大家都说他流氓,但是十多年的感情了!从奇虎到现在,我发现他的“包管理器”:软件管家,还是不错的(滑稽)!
反正我已经习惯了使用在线包管理器的方式,节省大量的时间去写自己的程序
安装完gentoo之后也迅速开始学习它的包管理器:emerge!
Gentoo 的包管理工具称为portage(类似于 yum 和 apt). 而 emerge (类似于Debian的apt-get,Redhat 的yum 和 Suse的zypper命令)是作为portage的前端使用 portage 的命令。
portage下的“小数据库”
/usr/portage下是Portage树是ebuilds文件的集合,这些文件包含了Portage管理工具维护软件(安装,搜索,查询,编译 …)时所需要的所有信息,当运行emerge命令时参考此数据库
在/usr/portage中我们看到所有emerge可用与管理的包,cd进去还能看到里面的包
使用emerge安装软件的时候:
emerge app-editors/vim
emerge后面紧跟的第一层也就是这个目录中第一层可用包,第二层对应了包下一层软件包
make.conf
cd /etc/portage
cat ./make.conf
此文件记录了编译时用到的参数,CFLAGS,CXXFLAGS,MAKEOPTS等参数,一般不需要修改。
但有一个USE的变量很常用
USE
一个软件不止是程序,还有文档,插件扩展,UI支持等等,而use就是可以添加删除这些额外福利的变量。
两种方式使用USE:
1. 可以直接修改make.conf里的USE变量。
2. emerge命令前使用,相当于临时变量(推荐)
例:
vim需要使用neocomplete插件,就要lua支持,此时我们如果手动编译vim需要加上–with-lua。
重新来安装vim,emerge使用USE添加一些支持,lua,ruby等
查看可用USE可用扩展包
emerge -pv app-editors/vim
可以看到USE:
红色表示会安装的,蓝色并带有“-”号表示不会安装的,
安装vim,添加lua,ruby,cscope,python,perl常用支持:
USE="cscope lua ruby python perl" emerge --ask app-editors/vim
看到刚刚蓝色的使用USE已经添加进去并变成红色了,表示会被一起安装进去
而且,留意多出一个依赖包cscope需要下载下来,而他的USE=”-emacs”,表示去掉对emacs的支持,那是留给emacs党用的,vim党不需要(滑稽
这样vim能使用neocomplete了!
卸载软件
emerge -C vim
移除不影响系统功能的软件(清理系统)
emerge --clean
emerge -c
卸载可以移除的依赖(深度清理)
emerge --depclean
安装特定版本的软件
emerge "=python-3.2"
emerge "
升级软件
emerge -u opera
emerge --update opera
升级系统软件
emerge -u system
升级整个系统
emerge -u world
world 来自 /var/lib/portage/world
当然,可以加个 p (再加个v就完美了),看看看是不是自己想要的:
emerge -pvu world
避免升级覆盖掉版本更高的软件
emerge -uU world
emerge --update --upgradeonly world
安装了masked 软件包,升级时可能会降级处理的
查看某软件包可用的USE参数
emerge -pv php
这个就非常有用了
临时设置USE 并以临时的USE 变量emerge 软件包
USE="-minimal" emerge -1 xinit
注意:添加不需要“+”号
如果想以某种规则(USE)永久性的安装某软件包,那么在 /etc/portage/package.use 文件里添加如下一行内容:
echo x11-apps/xinit -minimal >> /etc/portage/package.use
添加后,就会 以 USE=”-minimal” 安装 xinit 了, 而且是永久性的(除非删掉此行)
不存在 /etc/portage/ 目录的话,手动创建