|
|
发表于 2007-8-3 05:16:53
|
显示全部楼层
Post by abcbuzhiming
俺已经把stage3和portage包给下载到自己机器,并且集成到那个最小化installcd上了,按照安装手册,直接挂载解压即可,何必下载呢……
PS:你说到这个我突然想起来一个很重要的事情,国内那些镜像能不能作为我在网络设置中的更新镜像,比如基础区提供的这个地址
http://mirror.lupaworld.com/gentoo/
我看了看基本上这些镜像他们目录的格式都一样啊,难道不能把他们作为的sync镜像吗
你需要弄清楚很多基本概念。
- #include <stdlib.h>
- int main()
- {
- printf("Hello world!");
- exit(0);
- }
复制代码
比如这么一个源程序,我需要执行,就需要调用printf函数,这个函数并不是由操作系统内核提供的,或者换句话说操作系统内核的显示接口并不能这样直接由程序调用,于是由glibc把内核调用做了包装,使得应用程序能够正常运行。
现在再说安装软件包,把上面的程序存成hello.c,再加上编译用的makefile,打包后变成hello.tar.bz2,就是通常你看到的软件包的源代码包的主要内容。这里的hello.c是由文本字符组成的源代码文件,是不能直接执行,需要编译的,通常的linux发行版本都是把源代码编译好后的可执行程序包装在一起,这种叫二进制发布,而gentoo是直接使用由源代码文件制成的包。那么就象我前面说的,这个包不能直接执行,必须经过编译。因此与普通的发行版不同,gentoo安装实际上是先由装编译器开始的。
所谓内核,并不提供通常程序使用的那些函数之类的,内核的作用就是驱动硬件,然后给应用程序提供系统接口,而为了兼容,这些接口也不是直接由应用程序调用的。简单说stage3提供了这些外围的一系列软件和库(详细说其实还不止,这个牵涉到stage 1 2 3的区别,就不多说了),但是未必是最新版本的,最新版本的需要你自己安装。
一个可启动的系统必须包括一个可以执行的二进制的内核,还有上面说的那套软件和包(都是二进制的),对于gentoo来说,为了能使安装进行,并且管理软件包,还需要与portage有关的一系列软件(也都是二进制的),除了内核以外,这些东西都包括在stage3里面。
当你使用emerge gentoo-sources命令的时候,与通常的包不同的是,正如这个包的名字暗示的,它只负责安装内核的源代码,就是一堆文本字符组成的源程序。所以安装的人需要自己编译内核,根据自己的机器做内核的配置,编译好以后,拷贝到/boot,并且设置grub以便从此内核(二进制的)启动。
刚才说了stage3里包括的是portage的软件,二进制的,可以执行,就是说管理软件的程序已经有了,但是巧妇难为无米之炊,你有了能做饭的人,还需要有米下锅。所谓的portage树,里面其实是全套菜谱,就是说里面包括了各种软件如何编译安装的流程脚本,由emerge命令这个巧妇依照相应的脚本来安装相应的软件。而你奇怪的要下载的那些东西,就是真正的米,也就是以tar.bz2形式发布的软件的源代码的包。这些包,有的在emerge过程中从相应的网站上下下来,也可以直接用emerge -f命令,只下载,不安装。下载后的这些米和菜,都扔在/usr/portage/distfiles目录下。所以emerge的过程实际上是检查/usr/portage/distfiles目录下有没有相应的源代码包,如果有,就进入编译安装的过程。
你要想真正避免从网上下载,除了安装好portage的软件系统(厨师),下载解压portage目录树(菜谱系统),还要把软件的源代码包(米和菜)都拷贝到/usr/portage/distfiles目录下。一个说明就是gentoo的内核源代码,gentoo-sources是作为系统其中一个源代码包的,所以emerge gentoo-sources也与其他软件处理方式类似。这些跟stage,跟portage树的快照都没关系。
其实中间细节还有很多,比如GRP安装的问题,还有只编译不安装。这些就不赘述了。 |
|