LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1405|回复: 11

让你的 LFS 使用上 apt-get & dpkg

[复制链接]
发表于 2008-11-8 05:54:42 | 显示全部楼层 |阅读模式
一 下载需要的包
dpkg_1.14.22.tar.gz
curl_7.18.2.orig.tar.gz
apt_0.7.17.tar.gz

二 安装 dpkg_1.14.22.tar.gz
  1. ar xvf dpkg_1.14.22.tar.gz
  2. cd dpkg-1.14.22
  3. pushd /usr/include
  4. mkdir ncursesw
  5. cd ncursesw
  6. ln -s ../curses.h curses.h
  7. ln -s ../term.h term.h
  8. popd
  9. /configure --prefix=/usr --with-admindir=/var/lib/dpkg
  10. sed -ie 's/#define ARCHITECTURE ""/#define ARCHITECTURE "i386"/' config.h
  11. make -j3
  12. make PERL_LIBDIR=/usr/lib/perl5/5.8.8 install
  13. touch /var/lib/dpkg/status
  14. touch /var/lib/dpkg/available
  15. touch /usr/sbin/update-rc.d
  16. chmod 755 /usr/sbin/update-rc.d
  17. mkdir -p /etc/alternatives
  18. cd ..
  19. rm -rf dpkg-1.14.22
  20. #dpkg -i mrxvt-common*.deb
  21. #dpkg -i --force-depends mrxvt-mini*deb
  22. tar xvf curl_7.18.2.orig.tar.gz
  23. cd curl-7.18.2
  24. ./configure --prefix=/usr/local/ --with-ssl
  25. make -j3
  26. make install
  27. cd ..
  28. rm -rf curl-7.18.2
复制代码

三 安装 curl
这是安装 apt 的前提,如果你没有装 openssl ,请注意修改
  1. tar xvf curl_7.18.2.orig.tar.gz
  2. cd curl-7.18.2
  3. ./configure --prefix=/usr/local/ --with-ssl
  4. make -j3
  5. make install
  6. cd ..
  7. rm -rf curl-7.18.2
复制代码

四 安装 apt
由于这个包并没有提供 make install 必须手动安装
instapt.sh 这个脚本在后面
在安装前,把 instapt.sh 与 sources.list 和 apt_0.7.17.tar.gz 放在一起
  1. tar xvf apt_0.7.17.tar.gz
  2. cd apt-0.7.17
  3. ./configure --prefix=/usr/local
  4. make
  5. cp ../instapt.sh .
  6. chmod +x instapt.sh
  7. ./instapt.sh
  8. cd ..
  9. rm -rf apt-0.7.17
复制代码

五 instapt.sh 脚本与一个可用的源 [ubuntu 8.10]

instapt.sh
  1. #!/bin/bash
  2. mkdir -p /usr/bin
  3. #mkdir -p /usr/lib/apt/methods
  4. mkdir -p /usr/lib/dpkg/methods/apt
  5. mkdir -p /etc/apt
  6. mkdir -p /etc/apt/apt.conf.d
  7. mkdir -p /etc/apt/sources.list.d
  8. mkdir -p /etc/logrotate.d
  9. mkdir -p /var/cache/apt/archives/partial
  10. mkdir -p /var/lib/apt/lists/partial
  11. mkdir -p /var/lib/apt/periodic
  12. mkdir -p /var/log/apt
  13. mkdir -p /usr/share/bug/apt
  14. mkdir -p /usr/share/lintian/overrides
  15. mkdir -p /usr/local/lib/apt
  16. cp bin/apt* /usr/local/bin/
  17. cp bin/libapt* /usr/local/lib/
  18. cp -r locale/zh_CN/* /usr/share/locale/zh_CN/
  19. cp -r bin/methods /usr/local/lib/apt/
  20. cp ../sources.list /etc/apt
  21. cp scripts/dselect/* /usr/lib/dpkg/methods/apt/
  22. pushd /usr/lib
  23. ln -s /usr/local/lib/libapt-pkg-libc6.7.so.4.6.0 libapt-pkg-libc6.7.so.4.6
  24. ln -s /usr/local/lib/apt apt
  25. popd
  26. sed -ie 's@usr/bin@usr/local/bin@g' /usr/lib/dpkg/methods/apt/update
  27. rm /usr/lib/dpkg/methods/apt/updatee
  28. sed -ie 's@usr/bin@usr/local/bin@g' /usr/lib/dpkg/methods/apt/install
  29. rm /usr/lib/dpkg/methods/apt/installe
复制代码

sources.list
  1. deb http://archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
  2. deb http://archive.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
  3. deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
  4. deb http://archive.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse
  5. deb http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
  6. deb-src http://archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
  7. deb-src http://archive.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
  8. deb-src http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
  9. deb-src http://archive.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse
  10. deb-src http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
复制代码

下面是两张图
[atttach]
1.PNG
[/attach]

[attach]
2.PNG
[/attach]

其实安装apt很容易,麻烦的是他的包依赖关系。
在安装完成后 /var/lib/dpkg/available 是空的,这个文件记录了曾经安装过的包。
不想重头把系统整一通的话,必须想办法搞定这个文件,在我安装了个gcc-4.3-base后文件内容如下
  1. Package: gcc-4.3-base
  2. Priority: required
  3. Section: libs
  4. Installed-Size: 164
  5. Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
  6. Architecture: i386
  7. Source: gcc-4.3
  8. Version: 4.3.2-1ubuntu11
  9. Replaces: cpp-4.3 (<< 4.3.2-1)
  10. Size: 105178
  11. Description: The GNU Compiler Collection (base package)
  12. This package contains files common to all languages and libraries
  13. contained in the GNU Compiler Collection (GCC).
  14. Original-Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
复制代码

当然如果把 apt-get与dpkg 静态编译到一个没有任何东西的小系统上才能体现它的价值..

恩...也许你能做个10Mb的发行版 linux?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-11-8 07:28:53 | 显示全部楼层
LFS 下用 dpkg 已多时

dpkg 还好,apt 就最好不要,太自动了,用後迟早後悔!
回复 支持 反对

使用道具 举报

发表于 2008-11-8 10:41:10 | 显示全部楼层
pushd和popd这两个命令好玩!又学到了好东西。

我是装上了dpkg,但是就是装不上apt,提示说未知的系统包类型。看了楼主的过程,估计是我很多地方没有设置造成的。

不过经过一段时间的使用后,我现在根本不用dpkg了,更不想用apt。我觉得只有源代码编译才是真正的安装正道!

我还一个个删除了dpkg安装的软件,比如w3m和wget,然后再从源代码重新编译安装。因为用dpkg安装的老是有莫名其妙的问题,比如w3m无法调用vim,wget的列表文件功能用不了等等。
回复 支持 反对

使用道具 举报

发表于 2008-11-8 12:14:28 | 显示全部楼层
偶用 dpkg 主要是用它来装 OpenOffice,不想编译此怪兽而矣
回复 支持 反对

使用道具 举报

发表于 2008-11-8 12:24:44 | 显示全部楼层
Post by d00m3d;1905778
偶用 dpkg 主要是用它来装 OpenOffice,不想编译此怪兽而矣


OpenOffice根本不算什么,编译TeX元字体才是真正地考验,我的机器要10个小时才能编译好文泉驿字体。

大概是240SBU……
回复 支持 反对

使用道具 举报

发表于 2008-11-8 12:29:00 | 显示全部楼层
还好不用 TeX,原来比 OpenOffice 还 BT
回复 支持 反对

使用道具 举报

发表于 2008-11-9 13:33:52 | 显示全部楼层
Post by d00m3d;1905704
LFS 下用 dpkg 已多时

dpkg 还好,apt 就最好不要,太自动了,用後迟早後悔!

为啥要后悔,它会自动帮你做太多决定,如删除一些包,并安装一些包,导致系统崩溃?
回复 支持 反对

使用道具 举报

发表于 2008-11-9 13:36:38 | 显示全部楼层
它会自动替换你的 LFS 系统,变成不折不扣的 Debian/Ubuntu!
回复 支持 反对

使用道具 举报

发表于 2008-11-9 13:42:56 | 显示全部楼层
Post by d00m3d;1906191
它会自动替换你的 LFS 系统,变成不折不扣的 Debian/Ubuntu!

而且会出很多诡异问题吧,毕竟不是原来的宿主系统,呵呵
回复 支持 反对

使用道具 举报

发表于 2008-11-9 14:51:06 | 显示全部楼层
诡异问题倒也未必,因为最终已变成发行版了
回复 支持 反对

使用道具 举报

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

本版积分规则

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