设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 发行版讨论区 —— LinuxSir.cn
›
Gentoo Linux
›
[原创]以user权限在任意Linux发行版上装Gentoo Prefix ( ...
返回列表
查看:
3321
|
回复:
7
[原创]以user权限在任意Linux发行版上装Gentoo Prefix (以Portage管理包的运行环境)
[复制链接]
galaxy001
galaxy001
当前离线
积分
191
IP卡
狗仔卡
发表于 2008-12-23 14:15:44
|
显示全部楼层
|
阅读模式
参考文献:
http://www.gentoo.org/proj/en/gentoo-alt/prefix/
http://www.gentoo.org/proj/en/ge ... otstrap-solaris.xml
http://www.gentoo.org/proj/en/gentoo-alt/prefix/ecopy.xml
目的很简单,没有root权限,要装软件,configure到一半,缺lib,又要去装lib,……,每次还要改prefix,麻烦。
官网有2个例子,分别是针对Solaris 10和Mac OS X的,我遇到的集群是Cent OS 4.5的,CPU是Xeon 5335。
$ lsb_release -a
LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: CentOS
Description: CentOS release 4.5 (Final)
Release: 4.5
Codename: Final
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU E5335 @ 2.00GHz
stepping : 7
...
复制代码
建议非苹果机的就按Solaris 10的那个来。
首先找个可写的路径,假设是 ~/gentoo
$ export EPREFIX="$HOME/gentoo"
$ export PATH="$EPREFIX/usr/bin:$EPREFIX/bin:$EPREFIX/tmp/usr/bin:$EPREFIX/tmp/bin:$PATH"
复制代码
下载
http://overlays.gentoo.org/proj/ ... refix.sh?format=txt
得到bootstrap-prefix.sh。
$ chmod 755 bootstrap-prefix.sh
$ ./bootstrap-prefix.sh $EPREFIX tree
$ ./bootstrap-prefix.sh $EPREFIX/tmp wget
$ ./bootstrap-prefix.sh $EPREFIX/tmp sed
$ ./bootstrap-prefix.sh $EPREFIX/tmp python
$ ./bootstrap-prefix.sh $EPREFIX/tmp coreutils
$ ./bootstrap-prefix.sh $EPREFIX/tmp findutils3
$ ./bootstrap-prefix.sh $EPREFIX/tmp tar
$ ./bootstrap-prefix.sh $EPREFIX/tmp patch
$ ./bootstrap-prefix.sh $EPREFIX/tmp grep
$ ./bootstrap-prefix.sh $EPREFIX/tmp gawk
$ ./bootstrap-prefix.sh $EPREFIX/tmp bash
$ ./bootstrap-prefix.sh $EPREFIX portage
$ export LDFLAGS="-L${EPREFIX}/usr/lib -R${EPREFIX}/usr/lib -L${EPREFIX}/lib -R${EPREFIX}/lib"
$ export CPPFLAGS="-I${EPREFIX}/usr/include"
复制代码
想装64位的就在 LDFLAGS 后面加上64位的库路径, -R 和 -L 都加。
我是:
$ export LDFLAGS="-L${EPREFIX}/usr/lib -R${EPREFIX}/usr/lib -L${EPREFIX}/lib -R${EPREFIX}/lib -R/usr/lib64 -L/usr/lib64 -R/lib64"
复制代码
还要:
$ export CC="gcc -m64"
$ export CXX="g++ -m64"
$ export HOSTCC="gcc -m64"
复制代码
gcc设好了。
再让bash去认新$PATH :
$ hash -r
复制代码
$ export USE="-nls -berkdb -gdbm"
$ emerge --oneshot sed
$ emerge --oneshot --nodeps wget
$ emerge --oneshot =bash-3.2_p17-r1
复制代码
这里如果说"1 config files in XXX need updating"之类就先无视。
$ emerge --oneshot --nodeps baselayout-prefix
$ emerge --oneshot --nodeps flex
$ emerge --oneshot --nodeps binutils-config
$ emerge --oneshot --nodeps binutils
$ emerge --oneshot --nodeps gcc-config
$ emerge --oneshot --nodeps gcc
复制代码
注意一定要按顺序一个个来,因为emerge无法正确排这个顺序。
$ unset LDFLAGS CPPFLAGS CHOST CC CXX HOSTCC
$ emerge --oneshot coreutils
$ emerge --oneshot findutils
$ emerge --oneshot tar
$ emerge --oneshot grep
$ emerge --oneshot gawk
$ emerge --oneshot patch
$ emerge --oneshot make
复制代码
接着是装新portage,同时覆盖旧的:
$ rm $EPREFIX/usr/share/man/man1/{env-update,quickpkg,dispatch-conf,repoman,emerge,emaint,ebuild,etc-update}.1
$ env FEATURES="-collision-protect" emerge --oneshot portage
复制代码
基本系统完成。
$ rm -Rf $EPREFIX/tmp/*
$ hash -r
$ emerge --sync
$ emerge -u system
复制代码
自己写make.conf,比如:
$ echo 'USE="unicode nls"' >> $EPREFIX/etc/make.conf
$ echo 'CFLAGS="-O2 -pipe"' >> $EPREFIX/etc/make.conf
$ echo 'CXXFLAGS="${CFLAGS}"' >> $EPREFIX/etc/make.conf
复制代码
我的是:
USE="unicode nls -alsa"
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
PORTAGE_TMPDIR=/var/tmp
MAKEOPTS="-j8"
PORTAGE_ELOG_CLASSES="warn error log"
复制代码
然后就是 -e 了:
$ unset USE
$ emerge -e system
复制代码
我是开screen后干的 -e 。
最后:
$ cd $EPREFIX/usr/portage/scripts
$ ./bootstrap-prefix.sh $EPREFIX startscript
复制代码
然后把生成的startscript
拷到自己方便的地方。
执行 ./startscript 就可以用了。
如果装的包不在
svn+http://overlays.gentoo.org/svn/proj/alt/trunk/prefix-overlay
复制代码
那就要用 ${EPREFIX}/usr/portage/scripts/ecopy 来从主库中弄:
% export PATH="${PATH}:${EPREFIX}/usr/portage/scripts"
% cd "${EPREFIX}"/usr/local/portage/my-overlay
% ecopy app-office/openoffice
复制代码
当然要在make.conf中加上:
PORTDIR_OVERLAY=/home/xxx/gentoo/usr/local/portage/my-overlay
复制代码
我没有直接用${EPREFIX},建议还是写绝对路径。
由于必须指定完整的包名,像"app-office/openoffice"这样,所以,谁知道如何弄一份列表?
或者是把portage-20081220.tar.bz2只解压路径,不解压文件 ?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
galaxy001
galaxy001
当前离线
积分
191
IP卡
狗仔卡
楼主
|
发表于 2008-12-23 14:17:26
|
显示全部楼层
加一句,~/.bashrc 还是会处理的,所以可以用来写些东西。
回复
支持
反对
使用道具
举报
显身卡
number5
number5
当前离线
积分
118
IP卡
狗仔卡
发表于 2008-12-23 14:23:13
|
显示全部楼层
不错,我期待有这样的工具很久了
回复
支持
反对
使用道具
举报
显身卡
zhllg
zhllg
当前离线
积分
8505
IP卡
狗仔卡
发表于 2008-12-23 15:16:42
|
显示全部楼层
我才刚发现有个精彩程度投票的功能
回复
支持
反对
使用道具
举报
显身卡
axlrose
axlrose
当前离线
积分
1466
IP卡
狗仔卡
发表于 2008-12-23 17:11:02
|
显示全部楼层
太好了,没想到楼主出精华贴了
狂赞一下
再 [ code ] [ /code] 适当排版一下就更巴适了
回复
支持
反对
使用道具
举报
显身卡
galaxy001
galaxy001
当前离线
积分
191
IP卡
狗仔卡
楼主
|
发表于 2008-12-23 19:00:42
|
显示全部楼层
官网说大部分ebuild可以自动转换。我遇到3个不行的。 flagedit、libconf和R。
自己解决了前2个,第三个只好交bug了……
flagedit是要加patch,libconf只改ebuild就可以了。
回复
支持
反对
使用道具
举报
显身卡
zhou3345
zhou3345
当前离线
积分
2756
IP卡
狗仔卡
发表于 2009-2-17 10:30:14
|
显示全部楼层
[color="Silver"]发现在教育网还缓存有 for linux 的文档,不知道为什么官方文档不更新维护了
http://edu.gentoo-cn.org/proj/en ... bootstrap-linux.xml
原来已经有更好的文档了,直接bin安装:
http://dev.gentoo.org/~darkside/ ... ootstrap-gentoo.xml
正在安装 prefix ,本来想发帖的,没想楼主抢先了。
回复
支持
反对
使用道具
举报
显身卡
fiag
fiag
当前离线
积分
247
IP卡
狗仔卡
发表于 2009-7-1 21:19:50
|
显示全部楼层
这贴总结的好,比官方文档还好用。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
服务器架设、应用、维护
LFS(LinuxfromScratch)
Debian Linux
SuSE Linux
开源软件专题讨论
Linux 基础讨论区(新手速成)
硬件设备 Linux 驱动
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表