LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: d00m3d

[毁灭系列] 为 LFS 加入 Debian 支持 (第一部 dpkg)

[复制链接]
发表于 2008-5-1 13:53:05 | 显示全部楼层
刚我试了一下, dpkg 的 configure 从不知道哪个版本开始, 在没有安装 dpkg 时不能正确检测出系统架构(ARCHITECTURE), 反正 1.10.28 还是正常的, 到了 1.13.25(etch 里面用的版本)就不正常了
你可以在安装完 dpkg 之后再重新编译一次, 然后再安装, 或者在 configure 之后, 手动修改 config.h, 把里面的
  1. #define ARCHITECTURE ""
复制代码
改成
  1. #define ARCHITECTURE "i386"
复制代码
然后再make, 可以用一个 sed 命令来搞定这个:
  1. sed -ie 's/#define ARCHITECTURE ""/#define ARCHITECTURE "i386"/' config.h
复制代码
这里的 i386 要根据自己的情况来设定

在 1.14.18 版里面,  dpkg 似乎是带了些 .pm 的文件(perl 的库或者是模块? 不懂perl, 不知道:sorry), 安装的时候, 会把这些库错误地放到 prefix 指定的目录下面, 所以安装的时候, 而且 configure 也不像宣称的那样, 支持 PERL_LIBDIR环境变量, 至少我用 LFS LiveCD 编译的时候, 是不行的, 如果不指定 PERL_LIBDIR, configure 似乎是使用 perl -MConfig 来判断的, 这似乎要用到 Config.pm, 这个文件至少在 LFS LiveCD 上是没有的(目前我的机器上还没有 LFS, 不知道 LFS 里面是不是也没有这个文件), 所以安装的时候需要用
  1. make PERL_LIBDIR=/usr/lib/perl5/5.8.8 install
复制代码
来安装, 这个地方的 PERL_LIBDIR 要根据你自己的情况来设定, 要是在 LFS 里面有 Config.pm, configure 能正确地判断 PERL_LIBDIR, 那应该就不用了.

除了 d00m3d 兄说的那几个文件要 touch 出来之外, 还需要建立一个目录: /etc/alternatives, 有些软件安装的时候会在下面存放东西 似乎是用来决定例如像 /bin/sh 这样的链接究竟指向 /bin/bash 还是 /bin/dash 的问题时用的, 不太了解 debian, 所以不确定

另外, 在安装完 .deb 的包之后, 再用 dpkg -r 或者 dpkg -P 删除的时候, 删除最后一个 deb 包的时候, 会出现 "cannot remove `/.'" 的错误, 至少我在试着安装了 mrxvt-mini 和 mrxvt-common 之后, 删除这两个的时候, 最后删除的总是出现这样的错误
回复 支持 反对

使用道具 举报

发表于 2008-5-2 10:37:31 | 显示全部楼层
1.14.18下面没有你说的config.h啊,有config.h.in。我查了config.h.in文件,也没有#define ARCHITECTURE "",我在没有重新编译的情况下,建了你说的那个/etc/alternatives,安装mrxvt-mini的时候,还是提示相同的错误。
回复 支持 反对

使用道具 举报

发表于 2008-5-2 12:06:17 | 显示全部楼层
要在运行了 configure 之后,才会产生 config.h 的
回复 支持 反对

使用道具 举报

发表于 2008-5-2 21:04:44 | 显示全部楼层
首先thx LanEast兄的帮助。
其次,对安装过程做个简单的说明:
1. 对于LanEast兄解答的“make PERL_LIBDIR=/usr/lib/perl5/5.8.8 install”,这个至关重要,不太了解debian,可能情况正如LanEast兄所说的一样。另外对于“#define ARCHITECTURE "i386"”,因为1.14.18在.configure之后,已经自动识别了cpu的架构,config.h不需要再修改。其他的/etc/alternatives目录就如LanEast兄所说做即可。
2. 剩下的如毁灭兄所做即可。
3. 在安装mrxvt-mini的时候,虽然提示了这个包需要libc6和libx11-6的依赖,但不管依赖它也还是安装上了。想必不是我的系统里没有这个包,大概是debian版本识别包的问题了。
4. 在安装openoffice时,没有出现问题,成功安装。为了好用图形化工具管理,在dpkg -i *.deb之后,又用KPackage重新安装了一次,让它有个记录,日后卸载也好管理。
5. 经过测试,目前没有问题。KPackage没有记录下安装过的包记录,不知道这玩意怎么个意思。
回复 支持 反对

使用道具 举报

发表于 2008-5-2 21:51:11 | 显示全部楼层
自动识别 CPU 是因为你已经装了一次 dpkg 了, 这就是为什么开始的时候你前一遍安装的 dpkg 在安装程序的时候出现
package architecture (i386) does not match system ()
错误的原因, 就像我上面回的那样, 在不安装 dpkg 的情况下, 安装 dpkg 不能识别系统架构:yun:
回复 支持 反对

使用道具 举报

发表于 2008-5-2 22:01:17 | 显示全部楼层
Post by LanEast;1844966
自动识别 CPU 是因为你已经装了一次 dpkg 了, 这就是为什么开始的时候你前一遍安装的 dpkg 在安装程序的时候出现
package architecture (i386) does not match system ()
错误的原因, 就像我上面回的那样, 在不安装 dpkg 的情况下, 安装 dpkg 不能识别系统架构:yun:


我记得提示不匹配系统是在安装mini那个包时才发生的,似乎和编译安装dpkg时是没有关系的吧?具体的也懒得再去追究了,现在能用就好了。
回复 支持 反对

使用道具 举报

发表于 2008-5-3 16:35:17 | 显示全部楼层
Post by d00m3d;1844525
非也,俺在 LFS 下是用 paco 管理包的,dpkg 只是附助,便於安装哪些不愿意自行编译的怪兽级软件,如 OpenOffice.org 之类而矣

以前我在 Debian 下也会借助 checkinstall 做个 deb 包来用 dpkg 安装,现在也干脆在 Debian 下使用 paco,所以我用的系统都不纯净,哈哈!

俺常言:系统是供人使用的,应该是我玩它,不是它玩我!

"现在也干脆在 Debian 下使用 paco"----有空把具体步骤列出来,我也想试试,多谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-14 23:22:17 | 显示全部楼层
旧版的 paco-1.x 比较简单好装,可是新版就多了很多依赖,特别是 gtkmm,cairomm 之类的,麻烦得很,功能上也不见得有何突破

想简单一点的就用 1.x 好了,基本上看它自带的文档,满足基本的依赖就行了
回复 支持 反对

使用道具 举报

发表于 2008-8-10 11:08:00 | 显示全部楼层
引用:
  1. Makefile 的修改,用这个语句就可以了:
  2. sed -i -e '251s/man/\./' Makefile.in
  3. configure 之前用。我这里测试没问题。
复制代码


小弟不才,不过我觉得上面的sed语句有问题啊,这个只是编辑了251行而已啊,跟方法一的效果应该是不同的吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-10 11:37:07 | 显示全部楼层
現在 dpkg 的版本已更新了,不用再修改都能順利通過了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表