LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2008-4-30 05:11:08 | 显示全部楼层 |阅读模式
在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

分割三區:
  1. /boot 30M  /dev/hda1
  2. swap  512M /dev/hda2
  3. /     5.5G /dev/hda3
复制代码

由於剛裝好LFS,沒有wget,我就開livecd用它的wget抓source下來編。
先抓wget
livecd開機
  1. # export LFS=/mnt/lfs
  2. # echo $LFS
  3. # mkdir -pv $LFS
  4. # mount -vt ext3 /dev/hda3 $LFS
复制代码
抓取最新的套件,通常server上的<package>-latest.tar.bz2會與最新的版本連結,所以我抓wget-latest.tar.bz2,
就是server上的最新版本
  1. # wget -cP $LFS/sources [url]ftp://ftp.gnu.org/gnu/wget/wget-latest.tar.bz2[/url]
  2. # umount $LFS
  3. # reboot
复制代码
取出光碟,進入已安裝好的lfs system。
安裝wget
  1. # cd /sources
  2. # tar xvf wget-latest.tar.bz2
  3. # cd wget-1.11.1
  4. # ./configure --prefix=/usr
  5. # make
  6. # make install
  7. # cd ..
  8. # rm -rf wget-1.11.1
复制代码

然後﹕抓portage,這裡請使用當地最快的mirrors,可至隔壁Gentoo區詢問。
  1. # wget -cP /root [url]ftp://ftp.isu.edu.tw/pub/Linux/Gentoo/snapshots/portage-latest.tar.bz2[/url]
  2. # tar xvjf portage-latest.tar.bz2 -C /usr
  3. # mkdir -v /usr/lib/portage
  4. # mkdir -v /var/tmp/portage
  5. # mkdir -v /usr/portage/distfiles
复制代码

以下這一段詳細參考http://www.gentoo.org/proj/en/po ... -fixing-portage.xml,不贅述。
  1. # wget -P /usr/portage/distfiles [url]http://distfiles.gentoo.org/distfiles/portage-2.1.1.tar.bz2[/url]
  2. # cd /root
  3. # mkdir portage-recover
  4. # cd portage-recover
  5. # tar xvfj /usr/portage/distfiles/portage-2.1.1.tar.bz2
  6. # cd portage-2.1.1
  7. # cp -vR pym bin /usr/lib/portage/
  8. # cp -v cnf/make.globals /etc
  9. # rm -vf /usr/lib/portage/bin/sed
  10. # ln -sv /usr/lib/portage/bin/emerge /usr/bin/emerge
复制代码
注意:這裡的portage修復檔portage-2.1.1.tar.bz2是穩定版,請別抓最新版本。

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

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

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

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

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


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

至於圖我留下相簿連結,有興趣的可以去看看。
http://farm4.static.flickr.com/3159/2452980560_2804643f66.jpg
http://farm3.static.flickr.com/2413/2452980126_67c6c3a710.jpg
http://farm3.static.flickr.com/2167/2452149465_25d852cb6e.jpg
http://farm3.static.flickr.com/2014/2452979700_242293e270.jpg
http://farm3.static.flickr.com/2087/2452978416_7e1b16db70.jpg
http://farm4.static.flickr.com/3189/2452148977_307725700f.jpg
http://farm4.static.flickr.com/3030/2452147743_2ea27257c1.jpg
http://farm3.static.flickr.com/2287/2452148161_3903a029e2.jpg
发表于 2008-4-30 06:29:48 | 显示全部楼层
谢谢分享,可是有个疑问,使用 portage 後,系统自动更新(安装)它认为没有的包,如此系统最终岂不是自动变成不折不扣的 Gentoo 了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-30 08:01:43 | 显示全部楼层
如果不做大動作更新,應該不會,例如:
  1. # emerge -e system
复制代码
  1. # emerge world
复制代码
如果做了這兩個那肯定會。

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

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

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

感謝你的回應
回复 支持 反对

使用道具 举报

发表于 2008-4-30 08:14:29 | 显示全部楼层
I would like BLFS more than any package manager.
Just install what you need, any version, any patch, any where,
回复 支持 反对

使用道具 举报

发表于 2008-5-1 05:43:16 | 显示全部楼层
Post by jojoyakira;1844175
如果不做大動作更新,應該不會,例如:

  1. # emerge -e system
复制代码



  1. # emerge world
复制代码

如果做了這兩個那肯定會。

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

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

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

  1. 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 支持),可是也只能仅让它以手工型式来实行,让自己掌管它的动作,不能让它自动化,否则系统脱变只是时间迟早的问题而矣

期待楼主的意见。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-1 08:06:28 | 显示全部楼层
Post by d00m3d;1844524
实不相瞒,在下用过 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文件
  1. # cd /usr/portage/sys-libs/zlib/
  2. # ls
  3. # less zlib-1.2.3-r1.ebuild
复制代码
內容如下:(節錄)
  1. # Copyright 1999-2007 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $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 $
  4. inherit eutils flag-o-matic toolchain-funcs
  5. DESCRIPTION="Standard (de)compression library"
  6. HOMEPAGE="http://www.zlib.net/"
  7. SRC_URI="http://www.gzip.org/zlib/${P}.tar.bz2
  8.         http://www.zlib.net/${P}.tar.bz2"
  9. LICENSE="ZLIB"
  10. SLOT="0"
  11. KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd"
  12. IUSE=""
  13. RDEPEND=""
  14. src_unpack() {
  15.         unpack ${A}
  16.         cd "${S}"
  17.         epatch "${FILESDIR}"/${P}-visibility-support.patch #149929
  18.         # Make sure we link with glibc at all times
  19.         epatch "${FILESDIR}"/${PN}-1.2.1-glibc.patch
  20.         # Needed for Alpha and prelink
  21.         epatch "${FILESDIR}"/${PN}-1.2.1-build-fPIC.patch
  22.         epatch "${FILESDIR}"/${PN}-1.2.1-configure.patch #55434
  23.         # fix shared library test on -fPIC dependant archs
  24.         epatch "${FILESDIR}"/${PN}-1.2.1-fPIC.patch
  25.         epatch "${FILESDIR}"/${PN}-1.2.3-r1-bsd-soname.patch #123571
  26.         epatch "${FILESDIR}"/${PN}-1.2.3-LDFLAGS.patch #126718
  27.         sed -i -e '/ldconfig/d' Makefile.in
  28. }
  29. ......
复制代码
這三行代表描述,官網網址,下載處
  1. DESCRIPTION="Standard (de)compression library"
  2. HOMEPAGE="http://www.zlib.net/"
  3. SRC_URI="http://www.gzip.org/zlib/${P}.tar.bz2
  4.         http://www.zlib.net/${P}.tar.bz2"
复制代码
這一行是適用機器,加上"~"代表測試
  1. KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd"
复制代码
以下代表沒延伸功能與沒有其他相依套件
  1. IUSE=""
  2. RDEPEND=""
复制代码
這一段代表它要打的patch
  1.         epatch "${FILESDIR}"/${P}-visibility-support.patch #149929
  2.         # Make sure we link with glibc at all times
  3.         epatch "${FILESDIR}"/${PN}-1.2.1-glibc.patch
  4.         # Needed for Alpha and prelink
  5.         epatch "${FILESDIR}"/${PN}-1.2.1-build-fPIC.patch
  6.         epatch "${FILESDIR}"/${PN}-1.2.1-configure.patch #55434
  7.         # fix shared library test on -fPIC dependant archs
  8.         epatch "${FILESDIR}"/${PN}-1.2.1-fPIC.patch
  9.         epatch "${FILESDIR}"/${PN}-1.2.3-r1-bsd-soname.patch #123571
  10.         epatch "${FILESDIR}"/${PN}-1.2.3-LDFLAGS.patch #126718
  11.         sed -i -e '/ldconfig/d' Makefile.in
复制代码
如果用來查詢,我覺得很方便。
像這個軟件沒有相依我覺得可以直接做emerge,不過要自己動手操作也行。

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

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

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

感謝你的回應
回复 支持 反对

使用道具 举报

发表于 2008-5-1 20:53:42 | 显示全部楼层
其实,,直接弄个chroot,只做 eix-sync 就是了,要查就 chroot eix,很简单的,没必要动主系统的啊:)。

不过楼主的精神值得赞赏,很详细,很好。谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-1 22:54:15 | 显示全部楼层
Post by 晨想;1844681
其实,,直接弄个chroot,只做 eix-sync 就是了,要查就 chroot eix,很简单的,没必要动主系统的啊:)。

不过楼主的精神值得赞赏,很详细,很好。谢谢。
說的是,有道理,小弟受教了!
回复 支持 反对

使用道具 举报

发表于 2008-5-3 15:55:33 | 显示全部楼层
有机会,我也是试试这个,多谢
回复 支持 反对

使用道具 举报

发表于 2008-5-11 23:01:22 | 显示全部楼层
干脆大一统算了。。。

不过估计还要段时间。。。!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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