设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 发行版讨论区 —— LinuxSir.cn
›
LFS(LinuxfromScratch)
›
[==LFS精华系列==]在lfs里安装portage
返回列表
查看:
2663
|
回复:
7
[==LFS精华系列==]在lfs里安装portage
[复制链接]
sleeve
sleeve
当前离线
积分
314
IP卡
狗仔卡
发表于 2003-3-19 16:38:15
|
显示全部楼层
|
阅读模式
最近把 portage 安装到 LFS 里.这是我的安装过程..
再此之前按BLFS安装python2.2 和 到网上下载rsync 安装
首先找个 portage 的 ebuild.. 按 ebuild 里的下载地址下载 portage-2.0.47-r10 这是我下载的版本..
解压后..从 ebuild 的 src_compile() 开始按照 ebuil 的脚本安装.
最好你能看明白 ebuild 文件..和 shell script 没什么区别.
src_compile() {
cd ${S}/src; gcc ${CFLAGS} tbz2tool.c -o tbz2tool
cd ${S}/src/sandbox-1.1
if [ "${ARCH}" = "x86" ]; then
make CFLAGS="-march=i386 -O1 -pipe" || die
else
make || die
fi
在这里 ${S} 代表解压后源代码的路径.
(1) 在 ${S}/src 目录里执行 gcc tbz2tool.c -o tbz2tool
因为我们并没有建立过portage.在目录/etc里没有make.conf 和 make.globals..所以不要 ${CFLAGS} ..也可以用自己的优化参数代替.
(2) 在 ${S}/src/sandbox-1.1目录里执行 make CFLAGS="-march=i386 -O1 -pipe"
src_install() 这段太长了.我就不列...
有几个命令介绍一下 insinto /etc 代表下面的 newins 和 doins 命令复制文件到 /etc 这个目录
newins 和 doins 就是把命令之后的文件安装(复制)到 insinto 指定的目录
(3) 把 ${S}/cnf 里的 make.globals make.conf etc-update.conf dispatch-conf.conf 这几个文件复制到/etc
目录里
(4) 在 ${S}/src/python-missingos 目录里执行以下命令:
chmod +x setup.py
./setup.py install --root /
在--root / 里是默认的安装路径.就是ebuild file在/usr/portage
(5) 在${S}/pym 目录里.把xpak.py portage.py output.py 这几个文件复制到/usr/lib/python2.2/site-packages
目录里.
(6) 建立 /usr/lib/portage/bin 这些目录. 并把 ${S}/bin 里的文件都复制到 /usr/lib/portage/bin 把全部文件
设置为可执行.复制刚才编译的 ${S}/src/tbz2tool 到 /usr/lib/portage/bin ..在目录 /usr/lib/portage/bin 里
执行 ln -s emake /usr/lib/portage/bin/pmake 建立个连接
(7) 在 ${S}/src/sandbox-1.1 里执行 make DESTDIR=/ install 安装 sandbox 库到 /lib 里
(8) 为/usr/lib/portage/bin 里的文件做个连接到 /usr/bin 或 /usr/sbin 下面就是从ebuild里拿出来的:
dosym ../lib/portage/bin/emerge /usr/bin/emerge
dosym ../lib/portage/bin/pkgmerge /usr/sbin/pkgmerge
dosym ../lib/portage/bin/ebuild /usr/sbin/ebuild
dosym ../lib/portage/bin/ebuild.sh /usr/sbin/ebuild.sh
dosym ../lib/portage/bin/etc-update /usr/sbin/etc-update
#dosym /usr/lib/portage/bin/portage-maintain /usr/sbin/portage-maintain
dosym ../lib/portage/bin/env-update /usr/sbin/env-update
dosym ../lib/portage/bin/xpak /usr/bin/xpak
dosym ../lib/portage/bin/repoman /usr/bin/repoman
dosym ../lib/portage/bin/tbz2tool /usr/bin/tbz2tool
dosym ../lib/portage/bin/g-cpan.pl /usr/bin/g-cpan.pl
dosym ../lib/portage/bin/quickpkg /usr/bin/quickpkg
dosym ../lib/portage/bin/regenworld /usr/sbin/regenworld
dosym ../lib/portage/bin/emerge-webrsync /usr/sbin/emerge-webrsync
dosym ../lib/portage/bin/dispatch-conf /usr/sbin/dispatch-conf
dosym newins /usr/lib/portage/bin/donewins
dosym 就是建立符号连接 ..上面列出的都需要建立符号连接..我为了省事..把/usr/lib/portage/bin加
到PATH里.(因为我emerge rsync 之后就运行 emerge --nodeps portage..)
(9) 执行 python -c 'import portage; portage.counter_tick_core("/")' 作用我不知道..在ebuild
file里的pkg_postinst() ..好像是建立/var/cache/edb/counter.如果不可以的话..就自己建立.
(10) 建立/var/tmp 和/var/cache/edb目录 ..
在/var/cache/edb 目录里用cat建立个新文件: counter
我原来是用 touch 建立的..结果在emerge rsync 的时候出错了..这文件的作用我不知道..可以参考我的:
[root@sleeve /var/cache/edb]# cat counter
81[root@sleeve /var/cache/edb]#
(11) 在/etc/passwd 里加入这一行:
portage:x:250:250:portage:/var/tmp/portage:/bin/false
在/etc/group 里加入这两行
wheel:x:10:root
portage::250:portage
主意用户组和用户的ID.不要和现存的相同..当然你也可以用useradd和groupadd 建立..因为portage
在编译软件的时候是用portage这个用户去编译的.
建立/var/tmp/portage 这个目录..并把这目录的所有权改为portage
现在应该可以执行emerge rsync了....如果有出现问题的话.详细看看出错信息..或贴出来..
rsync后..按照 /usr/portage里tar 的ebuild 下载重新安装tar.记住打上gentoo给的patch. 不是所有人都需要
做这步.因为我的LFS里的tar不支持 --no-same-owner 选项.emerge在下载软件解压会用到该选项设置解压
文件后的用户属性. 需要在/usr/portage/profiles/ 把 default-x86-1.4 做个符号连接到/etc 为make.profile
建立 /etc/env.d 目录.. 该目录是env-update命令用到的.env-update会根据/etc/env.d 目录里的文件内容设置
/etc/ld.so.conf文件..因为emerge 安装一个软件后都会执行env-update..就会把/etc/ld.so.conf里的库路径更新
至于这目录里的文件可以自己建立..文件名格式和文件内容格式都很简单.这是我的你可以参考一下:
[root@sleeve /etc/env.d]# ls
00basic 100i18n 10xfree 45qt-docs3 49kdelibs-3.1 70less
01hostname 10mozilla 40vim 46gnome 50qtdir3 90vmware
05gcc 10rar 45qt3 46gnome2 56kdedir-3.1 99kde-env
[root@sleeve /etc/env.d]# cat 45qt3
PATH=/opt/qt-3.1.1/bin
ROOTPATH=/opt/qt-3.1.1/bin
LDPATH=/opt/qt-3.1.1/lib
QMAKESPEC=linux-g++
[root@sleeve /etc/env.d]# cat 49kdelibs-3.1
PATH=/opt/kde/bin
ROOTPATH=/opt/kde/sbin:/opt/kde/bin
LDPATH=/opt/kde/lib
CONFIG_PROTECT=/opt/kde/share/config
[root@sleeve /etc/env.d]# cat 10xfree
PATH=/usr/X11R6/bin
ROOTPATH=/usr/X11R6/bin
LDPATH=/usr/X11R6/lib
MANPATH=/usr/X11R6/man
INFODIR=/usr/X11R6/info
XINITRC=/etc/X11/xinit/xinitrc
CONFIG_PROTECT=/usr/X11R6/lib/X11/xkb
[root@sleeve /etc/env.d]# cat ../ld.so.conf
# ld.so.conf autogenerated by env-update; make all changes to
# contents of /etc/env.d directory
/usr/local/lib
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2
/usr/lib/mozilla
/usr/X11R6/lib
/opt/qt-3.1.1/lib
/opt/gnome/lib
/opt/gnome2/lib
/opt/kde/lib
重要的是文件里LDPATH的设置..env-update 根据这变量设置/etc/ld.so.conf
我用emerge安装了整个gnome2.没出现问题..但gnome2不太好用.我又用emerge把gnome2给删除了.
因为LFS里有很多软件的安装路径和gentoo不同.所以很多软件在configure总有找不到已经安装的包.
例如 gentoo 里的qt 是安装在/usr/qt/3里..而lfs是安装在/opt/qt3里..我还不熟悉gentoo的安装目录设置..
所以就 ln -s /opt/qt3 /usr/qt/3 这样解决.
安装了好几个包管理软件..比较麻烦的就是portage..debian的apt&dpkg 还好..但用了一下apt&dpkg 就觉
得 passion 老大说得没错..debian是为懒人设计的.的确..我只要用 apt-get 就可以把现在的lfs变成debian了.
而..emerge system..就..呵呵..gentoo.....最近论坛老在讨论那个linux好..其实都一样..有某方面的改善无非是
些拆东墙补西墙的东西...都是GNU的软件..都是那个内核.这么多的发行版最大的区别就在于包管理..
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-3-19 17:42:21
|
显示全部楼层
好文章!对发行版的分析也很准啊,其实都是一个妈的孩子。
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-4-12 03:47:35
|
显示全部楼层
doexe ${S}/src/tbz2tool
你好像漏了一点。
我也装上了,不过不想搞成gentoo的,只好用-O来emerge了。
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-4-12 14:11:29
|
显示全部楼层
sleeve,你能用portage编译需要qt的程序么?我已经改过了env.d下面和kde,qt相关的东东,不过编译qt的程序老是找不到库,手动编译就行了,奇怪ing
回复
支持
反对
使用道具
举报
显身卡
sleeve
sleeve
当前离线
积分
314
IP卡
狗仔卡
楼主
|
发表于 2003-4-12 15:15:15
|
显示全部楼层
可以..我的已经说过了呀...
因为LFS里有很多软件的安装路径和gentoo不同.所以很多软件在configure总有找不到已经安装的包.
例如 gentoo 里的qt 是安装在/usr/qt/3里..而lfs是安装在/opt/qt3里..我还不熟悉gentoo的安装目录设置..
所以就 ln -s /opt/qt3 /usr/qt/3 这样解决.
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-4-12 15:37:17
|
显示全部楼层
是啊,呵呵,但你这样用symlink的话,前缀有点问题啊,因为你的程序是装在/usr/qt/3下的,如果没有了这个,就不能运行了.而如果是装在/opt/qt下,那么就不会这样,取消了symlink,也还能运行的.
回复
支持
反对
使用道具
举报
显身卡
sleeve
sleeve
当前离线
积分
314
IP卡
狗仔卡
楼主
|
发表于 2003-4-12 16:36:33
|
显示全部楼层
如果不是kde包带的多数装到/usr里去..
gentoo都会把一些大包放到特定的目录....还好大的包就那几个而已
竟然 USE 能添加 qt 或其他的支持..能否设置qt的路径呢..
要不安装前改ebuild看看..也只能 这样了..
回复
支持
反对
使用道具
举报
显身卡
tram
tram
当前离线
积分
7281
IP卡
狗仔卡
发表于 2003-4-13 15:31:58
|
显示全部楼层
嘿嘿,我现在这样用portage:
装了个kportage,然后只用portage来下载软件包(frechonly),再看一下ebuild,有没有什么patch,最后手动来装。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表