IHLFS:检查你正在安装的(还有更多)
介绍
作为一个LFS(请参阅: Linux从头开始 )用户我对我的系统上安装的软件包感兴趣。
关于LFS的简短介绍:LFS不是像Suse或RedHat这样的分发,LFS社区旨在提供设置自己的Linux系统的指南。 在网站上描述了非常详细的如何从头开始构建自己的Linux系统。 每个软件包都通过编译和安装源进行安装。
在LFS社区,有一些调查如何跟踪安装的包。 目前还没有这样的工具。
Jhalfs是自动化构建LFS系统的最新工具,可以使用Paco(参见: paco.sf.net )。
Paco基于LD_PRELOAD
机制,例如Gentoo使用相同的技术。 这种技术看起来很有前途,但有一些严重的缺点。
我一直在寻找另一种跟踪命令的方式
make install
在我的系统上 我已经找到了这个解决方案,感谢Pierre Hebert的出色主意。 他介绍了LFS网站的“Hints”部分或镜像(请参阅: 在线提示 “TRIP,LFS(和其他Linux系统的TRIvial Packager)”),您如何实现对任意安装命令。 使用它,您可以跟踪每个添加的文件,每个修改和文件或目录删除。 它不仅适用于上面提到的“make install”命令,还可以跟踪RMP所做的命令。
我开发的工具IHLFS是非常基本的,并且基于与TRIP相同的技术。 它可以预览您的系统的外观,如果您安装了文件或整个软件包或任何您想要添加到您的系统。 当不满意的东西看起来的方式 - 例如你想要零件安装在不同的地方 - 你可以随时回去。
名称IHLFS代表:
从头开始安装Helper Linux
这是通过创建系统的精确副本(一种虚拟系统)完成的。 在这个副本中,你完全可以自由地在做什么,对原始系统绝对没有影响。 每当用户有选择将虚拟系统中的修改“移动”或“刷新”为真实系统。
这种技术的另一个用途是为用户创造一个环境,他认为他是一个真正的系统,并以这种方式行事。 但在此期间,他可以做他喜欢的事情,而不会对系统造成任何危害。
基本技术
这可能听起来像是魔术,但实际上只有通过结合所有可用于Linux的技术才可能。
通过使用文件系统Unionfs,chroot和一些精心挑选的重新安装的目录,您可以设置此虚拟系统。
Unionfs
最重要的部分是使用unionfs。 Unionfs可以让您创建一个文件系统,这是至少两个其他的联合。 有关更多信息,请访问www.unionfs.org 。 现在,通过让新文件系统成为只读模式的原始文件系统(根),以及readwrite模式下的临时文件系统(缓存),您将拥有一个与原始文件系统完全相同的文件系统,但是您可以在其中修改,删除和/或添加文件,而无需对原始系统执行任何操作。 这是不可能的,因为根是唯一的安装。 每个修改都是由存储在缓存中的unionfs。
原始系统和新创建的系统之间的唯一区别是路径:在新系统中,它始终以联合的挂载点的路径开始。 这就是为什么下一步是必要的。
Chroot
通过chrooting到此挂载点,您输入绝对是您的系统的副本的环境。 你可以做任何你喜欢的,甚至删除关键的目录和文件。 测试吧 看看你的系统卡住之前可以走多远。
(Re)安装
您需要做的另外一件事是(重新)安装诸如/ dev,/ proc和/ sys之类的几个关键目录。 这是因为联合文件系统不保留现有的装入点。
还建议重新安装一些特殊的目录,如/ tmp。 该目录由configure脚本和make命令用于存储中间结果。 您不希望ihlfs程序将其注册为严重更改。 这也是构建源代码的目录。
要求
当然你最近需要一个Linux版本。 寻找支持的内核的网站和您需要的Unionfs的版本。 不同的内核意味着一个不同版本的unionfs。
您的内核必须支持加载模块。
还有一个分区,有足够的空间挂载缓存。 在这一刻,这是一个单独的分区。
我比较了我的普通系统和虚拟系统中的构建性能,我没有看到显着的差异
最后,IHLFS使用任何Linux系统上的命令(如tar,chroot,modprobe,mount,bash,find,grep和bzip2)。
安装
从我的网站下载软件包:
wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2
将归档文件解压缩到合适的目录中:
tar -xjf ihlfs-1.0.tar.bz2
cd ihlfs-1.0
安装ihlfs通过
./install.sh
脚本。 它只是创建一些目录并复制一些文件。
它是如何工作的
在启动之前,请确保缓存的文件系统将被安装。 并检查配置文件/etc/ihlfs/ihlfs.conf中
的设置。 当一切顺利时,启动程序:
ihlfs
你会收到一些消息,当一切都ok的时候会显示一个提示:
/:>
现在你可以输入任何你喜欢的命令。 注意,联合不支持保存挂载点。 这可能会导致像源代码这样的效果,它们通常构建您的软件不可用。
当您想查看到目前为止的更改时,键入:
list
这显示了更改的摘要。
当您要将所有更改从缓存移动到根目录时,请输入:
flush
此命令还创建将被覆盖,修改或删除的文件和目录的备份以及将要安装的所有内容的备份。
删除所有更改通过:
clean
最后,停止会话与:
quit or exit
例子
这里有一些简单的例子。 添加文件:
~:>touch /tmp/test4ihlfs
~:>list
在查看器中给出mcview
:
Summary. -------- There are no added, deleted, modified or overwritten files and/or directories found!
这是可以预料的, / tmp目录
绕过联合。
现在在其他地方创建一个文件:
~:>touch /var/tmp/test4ihlfs
~:>list
Summary. -------- Added files. ------------ /var/tmp/test4ihlfs
联系
如果您发现错误或想法如何能以更好的方式完成,请让我知道! 我的电子邮件地址是steon在bononline dot nl。 但在你进一步之前,我想说,我知道我编程的东西的方式可能并不总是最有效的。 我故意这样做了。 当涉及到程序设计时,我更喜欢易读的效能。
去做
此包尚未完成。 任何知道包装经理的人都可以指出:
- 将编辑器的选择放在配置文件中
- 现在ihlfs只有一种模式:交互式。 它为用户创建一个环境。 命令行模式如:
ihlfs --command "make install"
也应该是可能的。
- 添加标志来标识packagename和版本安装。
- 添加一些示例与各种命令