标题: [分享]在LFS上安裝Gentoo的檔案管理portage
http://linuxsir.org/bbs/thread328022.html


在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
# 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
# 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 rsync2.
安裝sandbox來修正沒有sandbox的錯誤。
代码:# emerge -av sandbox3.
與server同步portage
代码:# emerge --sync4.
更新 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

如果不做大動作更新,應該不會,例如:
代码:# emerge -e system和
代码:# emerge world如果做了這兩個那肯定會。

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

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

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