LFS 学习日记(第六章安装基本系统软件之包管理、进入 chroot 环境 )

2010年07月08日 星期四

LFS 依赖关系的简要解释: priority in install of packages
http://linuxfromscratch.org/pipermail/lfs-support/2010-June/038940.html

http://www.linuxfromscratch.org/lfs/view/6.6/chapter06/pkgmgt.html
6.3. Package Management

1、本节只是对流行的包管理技术的一个总结
2、升级问题:除了关键的工具链包(Glibc, GCC 或者 Binutils)和动态链接库升级需要小心外,一般的软件包升级使用 LFS BOOK, BLFS BOOK的指令用于升级是可以的。
3、包管理技术总结:
1)、完全手工
2)、把软件包安装到各自分别的目录,但包多了难以管理
3)、把软件包安装到各自分别的目录
4)、根据时间戳
5)、跟踪安装脚本 quesiton: 为什么可执行文件设置了suid 和 sgid 后就不能使用这种方式
6)、创建包的归档,被许多发行版采用
question: LSB规范的包管理规范内容是什么?
7)、基于用户
todo: 学习 More Control and Package Management using Package Users (v1.2)
http://www.linuxfromscratch.org/hints/downloads/files/more_control_and_pkg_man.txt

4、在其它机器上部署LFS

todo: 为什么在其它机器上部署LFS需要更新下列文件:
/etc/hosts, /etc/fstab, /etc/passwd, /etc/group, /etc/shadow, /etc/ld.so.conf, /etc/scsi_id.config, /etc/sysconfig/network and /etc/sysconfig/network-devices/ifconfig.eth0/ipv4.

translation: Installing in this manner is not usually a trivial task. (这种安装方式通常不是一个简单的任务。)

http://www.linuxfromscratch.org/lfs/view/6.6/chapter06/chroot.html
6.4. Entering the Chroot Environment

为了方便,把书中chroot 切换到$LFS目录的命令写到/usr/sbin/chlfsroot 中,并且,为启动并行编译,将 MAKEFLAGS='-j 2'加在/tools/bin/env -i后面,将 /usr/sbin/chlfsroot 加上可执行属性,用 sudo -E chlfsroot 进入chroot环境,sudo 的 -E 选项是保留环境变量,默认的sudo 只保留几个特定的环境变量。

todo: 学习 sudo 环境变量相关问题 man sudo
sudo -E 将可以有条件的保留当前 sudo 用户的当前环境变量,详见如下 man sudo 的内容,但却并没有仔细学习:
       -E          The -E (preserve environment) option will override the
                   env_reset option in sudoers(5)).  It is only available when
                   either the matching command has the SETENV tag or the
                   setenv option is set in sudoers(5).

question: 此节的chroot后执行的bash 是登录shell (/tools/bin/bash --login),而4.4. Setting Up the Environment 中执行的是非登录shell,问为什么chroot后执行的不是非登录shell呢?

另,把虚拟机的LFS已有的东西复制到上网atom N270 上,环境的设置上,除了同样安装Ubuntu 10.04 的上网本没有重新编译bash,其它的都一样。为了解决 Ubuntu bash总是执行 /etc/bash.bashrc 而导致 lfs 用户不能有书中说的干净的编译环境的问题,把 /etc/bash.bashrc 改名为 /etc/bash.bashrc.disabled ,把 /etc/profile 的引用名也相应改过来。然后在除了 lfs 之外的用户的~/.bashrc 里引用 /etc/bash.bashrc.disabled 以达到与系统等效的效果。实际上,据LFS 邮件列表的朋友反映,就算是让 bash 总是执行 /etc/bash.bashrc 不能得到书中说的纯净的编译环境也不会造成不良后果。