LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
 
主题工具
旧 08-04-30, 05:11 第 1 帖
jojoyakira
 
 
 
注册会员  
  注册日期: May 2007
  我的住址: Taiwan
  帖子: 9
  精华: 0
 

标题: [分享]在LFS上安裝Gentoo的檔案管理portage


在LFS上安裝Gentoo的檔案管理portage

習慣了使用Gentoo,沒有potage總覺得怪怪的,於是我做了兩次使用ArchLinux安裝portage成功後,今天改在LFS上安裝,
以下是成果。至於ArchLinux安裝portage可參考我在台灣gentoo討論區發的文章。http://forums.gentoo.tw/viewtopic.php?t=44340

資料:
機器是pentium 4,kernel version是2.6.22.5,虛擬機是VirtualBox,ram 512M

分割三區:
代码:
/boot 30M /dev/hda1 swap 512M /dev/hda2 / 5.5G /dev/hda3
由於剛裝好LFS,沒有wget,我就開livecd用它的wget抓source下來編。
先抓wget
livecd開機
代码:
# export LFS=/mnt/lfs # echo $LFS # mkdir -pv $LFS # mount -vt ext3 /dev/hda3 $LFS
抓取最新的套件,通常server上的<package>-latest.tar.bz2會與最新的版本連結,所以我抓wget-latest.tar.bz2,
就是server上的最新版本
代码:
# wget -cP $LFS/sources ftp://ftp.gnu.org/gnu/wget/wget-latest.tar.bz2 # umount $LFS # reboot
取出光碟,進入已安裝好的lfs system。
安裝wget
代码:
# cd /sources # tar xvf wget-latest.tar.bz2 # cd wget-1.11.1 # ./configure --prefix=/usr # make # make install # cd .. # rm -rf wget-1.11.1
然後﹕抓portage,這裡請使用當地最快的mirrors,可至隔壁Gentoo區詢問。
代码:
# wget -cP /root ftp://ftp.isu.edu.tw/pub/Linux/Gento...latest.tar.bz2 # tar xvjf portage-latest.tar.bz2 -C /usr # mkdir -v /usr/lib/portage # mkdir -v /var/tmp/portage # mkdir -v /usr/portage/distfiles
以下這一段詳細參考http://www.gentoo.org/proj/en/portag...ng-portage.xml,不贅述。
代码:
# wget -P /usr/portage/distfiles http://distfiles.gentoo.org/distfile...-2.1.1.tar.bz2 # cd /root # mkdir portage-recover # cd portage-recover # tar xvfj /usr/portage/distfiles/portage-2.1.1.tar.bz2 # cd portage-2.1.1 # cp -vR pym bin /usr/lib/portage/ # cp -v cnf/make.globals /etc # rm -vf /usr/lib/portage/bin/sed # ln -sv /usr/lib/portage/bin/emerge /usr/bin/emerge
注意:這裡的portage修復檔portage-2.1.1.tar.bz2是穩定版,請別抓最新版本。

這裡配置group文件
代码:
# cp -v /etc/group{,.bak} # cat >> /etc/group << "EOF" portage::250:portage EOF
配置passwd文件
代码:
# cp -v /etc/passwd{,.bak} # cat >> /etc/passwd << "EOF" portage:x:250:250:portage:/var/tmp/portage:/bin/fales EOF
配置make.conf文件,USE請留白,別填入任何東西。
代码:
# cat > /etc/make.conf << "EOF" CHOST="i686-pc-linux-gnu" CFLAGS="-O2 -march=pentium4 -mfpmath=sse -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" USE="" GENTOO_MIRRORS="ftp://ftp.isu.edu.tw/pub/Linux/Gentoo ftp://ftp.twaren.net/Linux/Gentoo" SYNC="rsync://ftp.twaren.net/gentoo-portage" EOF
這裡的GENTOO_MIRRORS,與SYNC請使用當地最快的mirrors and server,有興趣的人請到隔壁Gentoo區查看即可。

連結make.profile
代码:
# ln -sv /usr/portage/profiles/default-linux/x86/2007.0/desktop /etc/make.profile
這裡等同於執行 # eselect profile set <num>,由於目前沒有eselect所以手工連結。

以下是在做emerge時需要備用的。
代码:
# mkdir -v /etc/portage # cd /etc/portage # touch package.keywords # touch package.unmask
修復coreutils使用portage的編譯障礙。
代码:
# ln -sv /usr/bin/expr /bin
安裝portage所需要的python
代码:
# wget -cP /sources http://www.python.org/ftp/python/2.5...-2.5.2.tar.bz2 # tar xvf Python-2.5.2.tar.bz2
這裡編譯可以參考<<BLFS-6.2.0>>page-426
我們編的是2.5.2版的與書中2.4.4版不同,不用打patch。
代码:
# cd Python-2.5.2 # ./configure --prefix=/usr --enable-shared # make # make test(我有做make test,結果有個小錯誤,我沒理它) # make install # cd .. # rm -rf Python-2.5.2
最後﹕
1.
因為現在整個portage沒辦法上線更新,所以先做# emerge rsync,記得USE="-nls -acl -openmp"要加!
現在首要讓portage上線更新,不必要所有都編,這樣一加只要編兩個套件就好,一是popt另一個就是rsync。
代码:
# USE="-nls -acl -openmp" emerge -av rsync
可以做一次emerge --metadata以保證 metadata 的格式符合 portage 2.1
代码:
# emerge --metadata
2.
安裝sandbox來修正沒有sandbox的錯誤。
代码:
# emerge -av sandbox
3.
與server同步portage
代码:
# emerge --sync
4.
更新 portage。
代码:
# emerge -av portage
這樣就會列出相依套件,只要按下yes,就會把所有套件安裝上。

我在這邊做個示範:(會的人別罵我)
我在這裡按n(no)
它的第一個相依是zlib
代码:
# emerge -av lib
這裡由於有兩個套件都叫zlib,它會要你選擇,然後:
代码:
# emerge sys-libs/zlib
第二個套件是gpm,相依是ncurses-5.6-r2,所以:
代码:
# emerge -av gpm
會出現兩個套件,我直接按y(yes)
它會自動下載,編譯並安裝套件。

其實我一般都直接按y(yes)讓它download上百M的套件回來編譯安裝,就休息泡茶去了。^^


詳細portage使用方法,請到隔壁Gentoo區查閱。

至於圖我留下相簿連結,有興趣的可以去看看。
http://farm4.static.flickr.com/3159/...2804643f66.jpg
http://farm3.static.flickr.com/2413/...67c6c3a710.jpg
http://farm3.static.flickr.com/2167/...25d852cb6e.jpg
http://farm3.static.flickr.com/2014/...242293e270.jpg
http://farm3.static.flickr.com/2087/...7e1b16db70.jpg
http://farm4.static.flickr.com/3189/...307725700f.jpg
http://farm4.static.flickr.com/3030/...2ea27257c1.jpg
http://farm3.static.flickr.com/2287/...3903a029e2.jpg

此帖于 08-05-05 08:48 被 jojoyakira 编辑. 原因: 加上一行指令
  jojoyakira 当前离线   回复时引用此帖
旧 08-04-30, 06:29 第 2 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 14,367
  精华: 10
 

谢谢分享,可是有个疑问,使用 portage 後,系统自动更新(安装)它认为没有的包,如此系统最终岂不是自动变成不折不扣的 Gentoo 了?







__________________
nO ^^4+73R wH1<h d!5+R0z j00 42E U$1N9 7r% LpHZ 4+ l3457 oN(&
  d00m3d 当前离线   回复时引用此帖
旧 08-04-30, 08:01 第 3 帖
jojoyakira
 
 
 
注册会员  
  注册日期: May 2007
  我的住址: Taiwan
  帖子: 9
  精华: 0
 

如果不做大動作更新,應該不會,例如:
代码:
# emerge -e system

代码:
# emerge world
如果做了這兩個那肯定會。

抱歉,我原本寫一堆東西,結果時間花太長,登出了都不曉得,一轉跳畫面,都掉光了。

簡單點我的建議是,可以到gentoo多查一下portage的資料再決定是否裝上它。
它只是套件管理,方便讓人查詢與更新套件。

例如:emerge portage你可以使用下列指令來取代。-pv optinos讓你可以掌握套件的相依性,又不會真的安裝上。p=pretend假裝,v=verbose:冗長,簡單的說就是假裝安裝並列出安裝套件。
代码:
emerge -pv portage
感謝你的回應

此帖于 08-04-30 08:06 被 jojoyakira 编辑. 原因: 錯字改正
  jojoyakira 当前离线   回复时引用此帖
旧 08-04-30, 08:14 第 4 帖
whitelilis
 
whitelilis 的头像
 
 
版主  
  注册日期: Jul 2004
  帖子: 739
  精华: 1
 

I would like BLFS more than any package manager.
Just install what you need, any version, any patch, any where,
:P







__________________
我的博客:http://drunkedcat.cublog.cn

新机器:HP6535sNH361PA:Athlon 64x2(2.1Gx2),2G Ram, 集成 ati3200, 320G硬盘,bcm4312 b/g 无线,
OS:gentoo 基本系统
X: xorg + xmonad + conky + urxvt
开发:emacs + vim + texlive2005 + svn + ghc + jdk
网络:firefox-bin + pidgin
多媒体:mplayer

Haskell : type代表一种数据collection,class代表一种结构,instance只是让数据与某种结构结合后的结果,让一个type instance了某个class就构成了一个范畴。从范畴论的思维来说,联系是普遍的,变是不变的.它的意思是说,对象与对象之间不是孤立而是普遍联系的,我们所研究的对象总是千变万化的,但是连接对象之间的关系是永恒不变的。
fibs = 0 : 1 : [ a + b | (a, b) <- zip fibs (tail fibs)]
  whitelilis 当前离线   回复时引用此帖
旧 08-05-01, 05:43 第 5 帖
d00m3d
 
d00m3d 的头像
 
 
资深版主  
  注册日期: Nov 2004
  帖子: 14,367
  精华: 10
 

引用:
作者: jojoyakira
如果不做大動作更新,應該不會,例如:
代码:
# emerge -e system

代码:
# emerge world
如果做了這兩個那肯定會。

抱歉,我原本寫一堆東西,結果時間花太長,登出了都不曉得,一轉跳畫面,都掉光了。

簡單點我的建議是,可以到gentoo多查一下portage的資料再決定是否裝上它。
它只是套件管理,方便讓人查詢與更新套件。

例如:emerge portage你可以使用下列指令來取代。-pv optinos讓你可以掌握套件的相依性,又不會真的安裝上。p=pretend假裝,v=verbose:冗長,簡單的說就是假裝安裝並列出安裝套件。
代码:
emerge -pv portage
感謝你的回應
实不相瞒,在下用过 Gentoo 一段短时间,大概是 1.4 到 2004.3 之间,对 Gentoo 也有点基本认识

我觉得 Portage 的不断更新,其软件包的依赖关系始终会延伸到系统的核心里,因此,尽管现在不执行 emerge -e system 或者 emerge world 等命令,日後基於包之间的相互依赖,系统还是会被取缔,结果由 LFS 变成 Gentoo,这不过是迟早的问题而矣

记得以前 VirusCamp 兄弟就在 LFS 装过 portage,而他的系统也真的变成了 Gentoo

因此,我认为 LFS 系统引入别的发行版的包管理系统本身无可厚非,(呵呵,我自己也在 LFS 下加入了 Debian 的 dpkg 支持),可是也只能仅让它以手工型式来实行,让自己掌管它的动作,不能让它自动化,否则系统脱变只是时间迟早的问题而矣

期待楼主的意见。
  d00m3d 当前离线   回复时引用此帖
旧 08-05-01, 08:06 第 6 帖
jojoyakira
 
 
 
注册会员  
  注册日期: May 2007
  我的住址: Taiwan
  帖子: 9
  精华: 0
 

引用:
作者: d00m3d
实不相瞒,在下用过 Gentoo 一段短时间,大概是 1.4 到 2004.3 之间,对 Gentoo 也有点基本认识

我觉得 Portage 的不断更新,其软件包的依赖关系始终会延伸到系统的核心里,因此,尽管现在不执行 emerge -e system 或者 emerge world 等命令,日後基於包之间的相互依赖,系统还是会被取缔,结果由 LFS 变成 Gentoo,这不过是迟早的问题而矣

记得以前 VirusCamp 兄弟就在 LFS 装过 portage,而他的系统也真的变成了 Gentoo

因此,我认为 LFS 系统引入别的发行版的包管理系统本身无可厚非,(呵呵,我自己也在 LFS 下加入了 Debian 的 dpkg 支持),可是也只能仅让它以手工型式来实行,让自己掌管它的动作,不能让它自动化,否则系统脱变只是时间迟早的问题而矣

期待楼主的意见。
老實說,我也沒太大把握它不會變成Gentoo。
不過拿portage來調查一下相依,搜尋套件,可以省去不少google的時間。
例如:搜尋zlib,下# emerge -s zlib,我們可以找到8個含zlib關鍵字的套件,
假設我要的是sys-libs/zlib,這表示在/usr/portage/sys-libs/zlib下有個ebuild文件
代码:
# cd /usr/portage/sys-libs/zlib/ # ls # less zlib-1.2.3-r1.ebuild
內容如下:(節錄)
代码:
# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-libs/zlib/zlib-1.2.3-r1.ebuild,v 1.12 2007/05/14 23:51:14 vapier Exp $ inherit eutils flag-o-matic toolchain-funcs DESCRIPTION="Standard (de)compression library" HOMEPAGE="http://www.zlib.net/" SRC_URI="http://www.gzip.org/zlib/${P}.tar.bz2 http://www.zlib.net/${P}.tar.bz2" LICENSE="ZLIB" SLOT="0" KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd" IUSE="" RDEPEND="" src_unpack() { unpack ${A} cd "${S}" epatch "${FILESDIR}"/${P}-visibility-support.patch #149929 # Make sure we link with glibc at all times epatch "${FILESDIR}"/${PN}-1.2.1-glibc.patch # Needed for Alpha and prelink epatch "${FILESDIR}"/${PN}-1.2.1-build-fPIC.patch epatch "${FILESDIR}"/${PN}-1.2.1-configure.patch #55434 # fix shared library test on -fPIC dependant archs epatch "${FILESDIR}"/${PN}-1.2.1-fPIC.patch epatch "${FILESDIR}"/${PN}-1.2.3-r1-bsd-soname.patch #123571 epatch "${FILESDIR}"/${PN}-1.2.3-LDFLAGS.patch #126718 sed -i -e '/ldconfig/d' Makefile.in } ......
這三行代表描述,官網網址,下載處
代码:
DESCRIPTION="Standard (de)compression library" HOMEPAGE="http://www.zlib.net/" SRC_URI="http://www.gzip.org/zlib/${P}.tar.bz2 http://www.zlib.net/${P}.tar.bz2"
這一行是適用機器,加上"~"代表測試
代码:
KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd"
以下代表沒延伸功能與沒有其他相依套件
代码:
IUSE="" RDEPEND=""
這一段代表它要打的patch
代码:
epatch "${FILESDIR}"/${P}-visibility-support.patch #149929 # Make sure we link with glibc at all times epatch "${FILESDIR}"/${PN}-1.2.1-glibc.patch # Needed for Alpha and prelink epatch "${FILESDIR}"/${PN}-1.2.1-build-fPIC.patch epatch "${FILESDIR}"/${PN}-1.2.1-configure.patch #55434 # fix shared library test on -fPIC dependant archs epatch "${FILESDIR}"/${PN}-1.2.1-fPIC.patch epatch "${FILESDIR}"/${PN}-1.2.3-r1-bsd-soname.patch #123571 epatch "${FILESDIR}"/${PN}-1.2.3-LDFLAGS.patch #126718 sed -i -e '/ldconfig/d' Makefile.in
如果用來查詢,我覺得很方便。
像這個軟件沒有相依我覺得可以直接做emerge,不過要自己動手操作也行。

如果不想看ebuild也可以,只要下指令
代码:
emerge -pv zlib
也可以得到相同的資訊。
記得要常常emerge --sync更新套件資訊,這個動作只會用來更新portage tree而不會去更動到系統。

我想,光用來查詢應該不會把系統換成Gentoo吧!

其實,我就是看到d00m3d兄的大作[毁灭系列] <<为 LFS 加入 Debian 支持 (第一部 dpkg)>>
才興起為LFS加上portage的念頭。其中,d00m3d兄也提出別太常使用apt,很可能會把LFS變成Debian,
這個小弟銘記在心,我只是單純apt用不習慣,想改用portage,運氣好才安裝成功的

感謝你的回應
  jojoyakira 当前离线   回复时引用此帖
旧 08-05-01, 20:53 第 7 帖
晨想 帅哥
 
晨想 的头像
 
 
资深版主  
  注册日期: Feb 2003
  我的住址: P.R.China
  帖子: 9,637
  精华: 9
 

其实,,直接弄个chroot,只做 eix-sync 就是了,要查就 chroot eix,很简单的,没必要动主系统的啊:)。

不过楼主的精神值得赞赏,很详细,很好。谢谢。







__________________
我的wiki: http://wiki.linuxgnu.org

马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa
  晨想 当前离线   回复时引用此帖
旧 08-05-01, 22:54 第 8 帖
jojoyakira
 
 
 
注册会员  
  注册日期: May 2007
  我的住址: Taiwan
  帖子: 9
  精华: 0
 

引用:
作者: 晨想
其实,,直接弄个chroot,只做 eix-sync 就是了,要查就 chroot eix,很简单的,没必要动主系统的啊:)。

不过楼主的精神值得赞赏,很详细,很好。谢谢。
說的是,有道理,小弟受教了!
  jojoyakira 当前离线   回复时引用此帖
旧 08-05-03, 15:55 第 9 帖
jhbfx
 
 
 
注册会员  
  注册日期: Apr 2008
  帖子: 41
  精华: 0
 

有机会,我也是试试这个,多谢
  jhbfx 当前离线   回复时引用此帖
旧 08-05-11, 23:01 第 10 帖
carbonjiao
 
carbonjiao 的头像
 
 
注册会员  
  注册日期: Mar 2004
  我的住址: 广州番禺
  帖子: 793
  精华: 4
 

干脆大一统算了。。。

不过估计还要段时间。。。!!!







__________________
Archlive <http://archlive.googlecode.com>
Archlive-pkg <http://archlive-pkg.googlecode.com>
Acer TravelMate 3282WXMI
Asus A8Tc
[url=http://tool.115.com/ip][img]http://tool.115.com/live/myip[/img][/url]
  carbonjiao 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 13:19


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org