LinuxSir.cn,穿越时空的Linuxsir!

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

用slackware的pkgtool管理LFS的包

[复制链接]
发表于 2007-4-25 17:06:43 | 显示全部楼层 |阅读模式
我采用slackware和pkgtool 取自slackware
重新照LFS文档写编译脚本,把所有LFS的包编译成安装包
这样重装LFS就不需要再编译,节省了大量的时间,当然我的编译脚本中还有很多问题,
不知道有没有人对此兴趣,
发表于 2007-4-25 17:31:03 | 显示全部楼层
高度关注,强烈兴趣
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-26 08:54:05 | 显示全部楼层

bash 的编译脚本,其它的需要我再贴,脚本还需要再改进,我一个人做不了那么多的事

#!/bin/sh
CWD=`pwd`
TMP=/tmp
NAME=bash
VERSION=3.2
PKG=$TMP/package-$NAME
rm -rf $PKG
mkdir -p $PKG
cd $TMP
rm -rf $NAME-$VERSION
tar -xf $CWD/$NAME-$VERSION.tar.gz
cd $NAME-$VERSION

tar -xf $CWD/bash-doc-3.2.tar.gz
sed -i "s|htmldir - @htmldir@|htmldir = /usr/share/doc/bash-3.2|" Makefile.in
patch -Np1 -i $CWD/bash-3.2-fixes-4.patch
./configure --prefix=/usr --bindir=/bin --without-bash-malloc --with-installed-readline
make
make install DESTDIR=$PKG

删除不需要的文件
rm -rf $PKG/usr/share/locale   
rm -rf $PKG/usr/info
rm -rf $PKG/bin/bashbug
rm -rf $PKG/usr/man/man1/bashbug.1
bzip2 -9 $PKG/usr/man/man?/*.?
ln -sf bash $PKG/bin/sh


# Strip binaries:
{ cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
}

cd $PKG
makepkg -l y -c n $TMP/$NAME-$VERSION.tgz
回复 支持 反对

使用道具 举报

发表于 2007-4-26 09:08:27 | 显示全部楼层
用一个已经有的 包管理做一个 LFS 发行版:)。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-26 09:16:48 | 显示全部楼层
我使用SLACKWARE的PKGTOOL
因为 PKGTOOL全部采用BASH脚本写成 高度可定制,不依赖任何包
当然缺点也很明显,包依赖关系很难
如果有人能用BASH脚本解决这个问题那就是太棒了
回复 支持 反对

使用道具 举报

发表于 2007-4-26 09:36:40 | 显示全部楼层
不是不能,不过也许很麻烦。不挑战了。忽忽。。:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-26 09:57:07 | 显示全部楼层
包依赖关系不一定需要

我的目标是那一个build命令, 就能得到一个 编译好的 包
用一个installpkg -root /安装目标 *

就可以得到一个完整LFS系统

我现在已做到,只需要不断的完善脚本,

我希望别人也有兴趣可以与我共享这些脚本,共同完善
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-26 14:40:13 | 显示全部楼层

重发bash的build 加入了自动下载

#!/bin/sh
CWD=`pwd`
TMP=/tmp
NAME=bash
VERSION=3.2
PKG=$TMP/package-$NAME
# required glibc-2.5
if [ ! -f $CWD/$NAME-$VERSION.tar.gz ]
then
wget http://ftp.gnu.org/gnu/bash/$NAME-$VERSION.tar.gz
fi
if [ ! -f $CWD/$NAME-doc-$VERSION.tar.gz ]
then
wget http://ftp.gnu.org/gnu/bash/$NAME-doc-$VERSION.tar.gz
fi
if [ ! -f $CWD/$NAME-$VERSION-fixes-4.patch ]
then
wget http://www.linuxfromscratch.org/ ... h-3.2-fixes-4.patch
fi

rm -rf $PKG
mkdir -p $PKG
cd $TMP
rm -rf $NAME-$VERSION
tar -xf $CWD/$NAME-$VERSION.tar.gz
cd $NAME-$VERSION

tar -xf $CWD/bash-doc-3.2.tar.gz
sed -i "s|htmldir - @htmldir@|htmldir = /usr/share/doc/bash-3.2|" Makefile.in
patch -Np1 -i $CWD/bash-3.2-fixes-4.patch
./configure --prefix=/usr --bindir=/bin --without-bash-malloc --with-installed-readline
make
make install DESTDIR=$PKG

rm -rf $PKG/usr/share
rm -rf $PKG/usr/info
rm -rf $PKG/bin/bashbug
rm -rf $PKG/usr/man/man1/bashbug.1
bzip2 -9 $PKG/usr/man/man?/*.?
ln -sf bash $PKG/bin/sh


# Strip binaries:
{ cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
}

cd $PKG
makepkg -l y -c n $TMP/$NAME-$VERSION.tgz
回复 支持 反对

使用道具 举报

发表于 2007-4-26 21:04:23 | 显示全部楼层
开LFS牌子的车,还是手动档好些,最好的自动档车是gentoo,LFS改自动档,有挑战性,哈哈~~~说笑~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-27 10:25:07 | 显示全部楼层

你看明白了吗 这个和gentoo决对是不一样

Post by 抽烟斗的狗
开LFS牌子的车,还是手动档好些,最好的自动档车是gentoo,LFS改自动档,有挑战性,哈哈~~~说笑~~~

 gentoo是自动编译的,我的是编译安装包,两者是不一样的,你要搞清楚先,
回复 支持 反对

使用道具 举报

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

本版积分规则

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