+ -
当前位置:首页 → 问答吧 → 让你的 LFS 使用上 apt-get & dpkg

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

时间:2008-11-08

来源:互联网

一 下载需要的包
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

代码:
ar xvf dpkg_1.14.22.tar.gz
cd dpkg-1.14.22

pushd /usr/include
mkdir ncursesw
cd ncursesw
ln -s ../curses.h curses.h
ln -s ../term.h term.h
popd

/configure --prefix=/usr --with-admindir=/var/lib/dpkg

sed -ie 's/#define ARCHITECTURE ""/#define ARCHITECTURE "i386"/' config.h

make -j3
make PERL_LIBDIR=/usr/lib/perl5/5.8.8 install

touch /var/lib/dpkg/status
touch /var/lib/dpkg/available
touch /usr/sbin/update-rc.d
chmod 755 /usr/sbin/update-rc.d
mkdir -p /etc/alternatives

cd ..
rm -rf dpkg-1.14.22

#dpkg -i mrxvt-common*.deb
#dpkg -i --force-depends mrxvt-mini*deb

tar xvf curl_7.18.2.orig.tar.gz
cd curl-7.18.2
./configure --prefix=/usr/local/ --with-ssl

make -j3
make install

cd ..
rm -rf curl-7.18.2
三 安装 curl
这是安装 apt 的前提,如果你没有装 openssl ,请注意修改

代码:
tar xvf curl_7.18.2.orig.tar.gz
cd curl-7.18.2
./configure --prefix=/usr/local/ --with-ssl

make -j3
make install

cd ..
rm -rf curl-7.18.2
四 安装 apt
由于这个包并没有提供 make install 必须手动安装
instapt.sh 这个脚本在后面
在安装前,把 instapt.sh 与 sources.list 和 apt_0.7.17.tar.gz 放在一起

代码:
tar xvf apt_0.7.17.tar.gz
cd apt-0.7.17

./configure --prefix=/usr/local

make

cp ../instapt.sh .
chmod +x instapt.sh
./instapt.sh

cd ..
rm -rf apt-0.7.17
五 instapt.sh 脚本与一个可用的源 [ubuntu 8.10]

instapt.sh
代码:
#!/bin/bash

mkdir -p /usr/bin
#mkdir -p /usr/lib/apt/methods
mkdir -p /usr/lib/dpkg/methods/apt
mkdir -p /etc/apt
mkdir -p /etc/apt/apt.conf.d
mkdir -p /etc/apt/sources.list.d
mkdir -p /etc/logrotate.d
mkdir -p /var/cache/apt/archives/partial
mkdir -p /var/lib/apt/lists/partial
mkdir -p /var/lib/apt/periodic
mkdir -p /var/log/apt
mkdir -p /usr/share/bug/apt
mkdir -p /usr/share/lintian/overrides
mkdir -p /usr/local/lib/apt

cp bin/apt* /usr/local/bin/
cp bin/libapt* /usr/local/lib/
cp -r locale/zh_CN/* /usr/share/locale/zh_CN/
cp -r bin/methods /usr/local/lib/apt/
cp ../sources.list /etc/apt
cp scripts/dselect/* /usr/lib/dpkg/methods/apt/

pushd /usr/lib

ln -s /usr/local/lib/libapt-pkg-libc6.7.so.4.6.0 libapt-pkg-libc6.7.so.4.6
ln -s /usr/local/lib/apt apt

popd

sed -ie 's@usr/bin@usr/local/bin@g' /usr/lib/dpkg/methods/apt/update
rm /usr/lib/dpkg/methods/apt/updatee
sed -ie 's@usr/bin@usr/local/bin@g' /usr/lib/dpkg/methods/apt/install
rm /usr/lib/dpkg/methods/apt/installe
sources.list
代码:
deb http://archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ intrepid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ intrepid-proposed main restricted universe multiverse
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后文件内容如下
代码:
Package: gcc-4.3-base
Priority: required
Section: libs
Installed-Size: 164
Maintainer: Ubuntu Core developers <[email protected]>
Architecture: i386
Source: gcc-4.3
Version: 4.3.2-1ubuntu11
Replaces: cpp-4.3 (<< 4.3.2-1)
Size: 105178
Description: The GNU Compiler Collection (base package)
 This package contains files common to all languages and libraries
 contained in the GNU Compiler Collection (GCC).
Original-Maintainer: Debian GCC Maintainers <[email protected]>
当然如果把 apt-get与dpkg 静态编译到一个没有任何东西的小系统上才能体现它的价值..

恩...也许你能做个10Mb的发行版 linux?
上传的图像
1.PNG (18.6 KB, 31 次查看)
2.PNG (34.0 KB, 37 次查看)

作者: sgfree   发布时间: 2008-11-08

LFS 下用 dpkg 已多时

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

作者: d00m3d   发布时间: 2008-11-08

pushd和popd这两个命令好玩!又学到了好东西。

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

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

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

作者: ti8er   发布时间: 2008-11-08

偶用 dpkg 主要是用它来装 OpenOffice,不想编译此怪兽而矣

作者: d00m3d   发布时间: 2008-11-08

引用:
作者: d00m3d
偶用 dpkg 主要是用它来装 OpenOffice,不想编译此怪兽而矣
OpenOffice根本不算什么,编译TeX元字体才是真正地考验,我的机器要10个小时才能编译好文泉驿字体。

大概是240SBU……

作者: ti8er   发布时间: 2008-11-08

还好不用 TeX,原来比 OpenOffice 还 BT

作者: d00m3d   发布时间: 2008-11-08

引用:
作者: d00m3d
LFS 下用 dpkg 已多时

dpkg 还好,apt 就最好不要,太自动了,用後迟早後悔!
为啥要后悔,它会自动帮你做太多决定,如删除一些包,并安装一些包,导致系统崩溃?

作者: think365   发布时间: 2008-11-09

它会自动替换你的 LFS 系统,变成不折不扣的 Debian/Ubuntu!

作者: d00m3d   发布时间: 2008-11-09

引用:
作者: d00m3d
它会自动替换你的 LFS 系统,变成不折不扣的 Debian/Ubuntu!
而且会出很多诡异问题吧,毕竟不是原来的宿主系统,呵呵

作者: think365   发布时间: 2008-11-09

诡异问题倒也未必,因为最终已变成发行版了

作者: d00m3d   发布时间: 2008-11-09

引用:
作者: d00m3d
诡异问题倒也未必,因为最终已变成发行版了
你这样试验过吗?

作者: think365   发布时间: 2008-11-10

无此必要,如果我告诉你从 20 楼跳下来会死人,难度我真的要去试跳乎?

重点是对该工具的操作方式理解,另外看看这里兄弟的回覆也知道结果如何

http://www.linuxsir.org/bbs/thread249407.html

作者: d00m3d   发布时间: 2008-11-11