Archive for the tag 'Gentoo'

利用/dev/shm 加速 portage運作

chenpc May 13th, 2009

原理大致上是利用/dev/shm把portage放到記憶體裡面去。
而portage的特性是容量沒有很大,但是小檔案很多。
而小檔案在硬碟上面操作速度很慢,不管是sync或者是search。

我想要做的是寫一個boot up script,可以在開機的時候把portage tar開。
關機的時候把portage打包起來。

所以情況是
start: HD(portage.tar.gz)->RAM(/dev/shm/portage)
stop: RAM(/dev/shm/portage) -> HD(portage.tar.gz)
不管start or stop都不會讓硬碟作大量的小檔案存取。

作法:


mv /usr/portage /usr/portage.bak
mkdir /dev/shm/portage
ln -sf /dev/shm/portage /usr/portage
emerge --sync

這樣你的portage就在ram裡面了。


/etc/init.d/portage start       --->解開你的portage
/etc/init.d/portage stop        --->備份你的portage

在/etc/conf.d/portage裡面,指定你要備份的目錄。


PORTAGE_DIR=/dev/shm/portage     #放portage的目錄。
BACKUP_DIR=/usr                  #放備份檔的目錄,記得不要放在/tmp,重開機可能會被清掉。

記得/usr/portage/distfiles 和packages 要移出來。
這部份可以在/etc/make.conf裡面用:


PKGDIR="somewhere"
DISTIDR="somewhere"

在make.conf指定,或是用link把他link進去。
http://dsppc16.cs.nctu.edu.tw/~chenpc/portage
這裡是一個run script,放到/etc/init.d下面。
執行


/etc/init.d/portage start|stop|restart

即可
程式已經有稍微防呆,只要portage裡面有檔案他就不會tar 開。
裡面要是沒有檔案,他也不會打包。

目前我還沒遇到問題,但是使用前最好還是確定自己有備份。

效能:
df -h顯示shm吃了大約500MB,但是top看到只加了130MB左右,不知道怎麼回事。
RAM很多的話,可以玩看看。
start的速度大概是5秒。stop的速度也差不多5秒。
而emerge search速度非常快。
我的機器是:E8400,4G RAM,WD6400AACS。

更新SA之後的後續動作

chenpc December 13th, 2008

這裡用Gentoo Linux更新openssl為例:
當openssl出現GLSA的通知信之後,我們跑到機器上更新。

emerge -u1 openssl
-u:是指update
-1:不要加到world list裡面(one shot)

更新完之後,用lsof查看需要重開的服務。

sudo lsof | grep ‘DEL.*lib’ | cut -f 1 -d ‘ ‘ | sort -u
->
這行會列出只用到一些lib已被移除的程式。
irssi
lpd
master
pure-ftpd
qmgr
ssh
sshd

上面這些程式如果你不知道他們是什麼,可以用qfile去看他屬於哪些套件
qfile sshd
->net-misc/openssh (/usr/sbin/sshd)

如果是pure-ftpd,apache,lighttd這些屬於系統服務的程式
請記得要重開才算完成SA更新。

Gentoo ebuild 五分鐘就上手

chenpc December 13th, 2008

這篇主要是講如何使用Gentoo的portage system

先講什麼是system什麼是world

一般來講,你把stage3 tar開的東西就是system。
後來裝的軟體全部都是world。
想看world裡面有什麼可以去看/var/lib/portage/world

1.安裝一個軟體
emerge mutt

2.裝之前先看一下他會裝哪些東西
emerge mutt -pv

[ebuild  N    ] app-misc/mime-types-7  7 kB
[ebuild  N    ] net-mail/mailbase-1  USE=”pam” 0 kB
[ebuild  N    ] mail-client/mutt-1.5.16  USE=”gdbm nls -gnutls”

或許這裡沒有顏色,但是實際是會有顏色的。
暗綠:不會被depend到world裡面。(mailbase,mime-type)
亮綠:他會被depend到world裡面。(mutt)

USE flag的顏色
紅色:enable
藍色:前面會帶一個”-”,表示disable。

3.如果你注意到上面有USE=”xxx”,是的,你可以修改他。
你可以直接改/etc/make.conf,來改變整個世界。
USE=”xxx”
或者是對單一個ebuild作修改
/etc/portage/package.use
===========================
mail-client/mutt gnutls
===========================
4.刪除一個軟體
emerge -C mutt
5.把mutt depend到的mailbase和mime-type砍掉。
emerge –depclean

6.depclean之前最好先看一下….
emerge –depclean -pv

7.升級軟體
emerge -uDN mutt
D和N可以不加
D表示去檢查他相依的ebuild,N表示如果USE flag有更動也要更新。

8.升級整個世界
emerge -uDN world
建議升完世界可以把多餘的東西砍掉。
用emerge –depclean

9.只升級系統
emerge -uDN system
相對於FreeBSD的的make {install,build} world
注意,gentoo 的world包含system

10.尋找一個ebuild
emerge -s mutt
類似FreeBSD的make search name=mutt
但是這個會有點慢,你可以用index過的指令
比方說qsearch mutt or eix mutt

11.看看ebuild的相依性
你可以打開檔案直接看
或者用qdepends mutt

12.尋找系統裡面有安裝的ebuild
qlist -I gcc

13.檢查有沒有libaray遺失
sudo -H revdep-rebuild
這個指令會檢查系統內執行檔所連結到的lib是不是存在
如果不存在他會幫你修復
14.打包binary pkg
qpkg wine
他會把wine打包起來,讓你可以直接用emerge -k wine去重裝。
這個檔案必須放在/usr/portage/packages下面。
注意,如果pkg使用的flag不同,他會重編,不會用你給他的pkg。
你用emerge wine -pv你會看到entry開頭寫binary,否則他會寫ebuild。

15.正常的更新程序
建議是下面這樣子
emerge -uDN world
emerge –depclean
env-update
revdep-rebuild

16.更新portage tree
emerge –sync
後面加-q,他才不會那麼吵。
用vmware裝的話,frame buffer I/O很慢,一定要加-q。

17.檢查系統設定檔
etc-update
這個功能類似FreeBSD的mergemaster

18.重編整個world
emerge -e world
常常是因為你換CFLAG,想要騷包一下重編。
其十大部份情況不需要,如果要,請下這指令。

19.如果上面指令編到一半失敗了
你把失敗原因解決之後,總不能在emerge -e world一次。
因為這指令會重新build全部。
所以你只要emerge –resume,就會重上次失敗的地方開始。

20.使用binary pkg
編的時候加一個-b,比方說emerge -b wine
編好就會有一個pkg可以用,甚至可以給別人用。
也可以在/etc/make.conf加 FEATURES=”buildpkg”
這樣預設就是會編binary pkg出來。
目前linux0在做這樣的事情。
而其他台透過NFS去裝他的binary就好了。
而且其他台裝pkg的方法是emerge -k wine。

21.安裝被keywords mark起來的ebuild
把ebuild名稱加到/etc/portage/package.keywords就可以了。
被keywords mark起來表示”testing”
所以你可以在/etc/make.conf加ACCEPT_KEYWORDS=”~amd64″
這樣就可以把整個世界變成testing。

22.安裝被系統mask起來的ebuld
把ebuild名稱加到/etc/portage/package.unmask
這個步驟通常有危險,因為會被系統unmask表示他真的有問題。

23.重裝軟體
如果你已經裝過該軟體,你只是想把他重編一次。
但是他原來不在world裡面,你如果下emerge librtorrent
這個lib就會被加到world裡面,不再是因為rtorrent而depend到的。
這時後下emerge -1 librtorrent,這樣他會重編,而不會加到world。

24.裝特定版本的軟體
有一個軟體如果你不要最新版,你可以指定版本。
emerge =www-servers/apache-2.2.8 -pv
很多軟體都可以以不同slot存在。

25.如果你不想裝最新版,還有一個方法。
在/etc/portage/package.mask裡面寫
>=www-servers/apache-2.2.8
把版本號比2.2.8大的版本加到mask就好了。

以上25招(完畢

Gentoo Linux 查詢相依性

chenpc December 13th, 2008

裝了portage-utils之後會有”q”系列的工具可以用。
其中有一個工具是qdepend,他會去查詢該ebuild的相依性。
但是其實這不難,因為相依性寫在ebuild裡面,自己打開來看就好了。
常常我們不想安裝某一些東西,比方說xulrunner。
你想要知道到底哪些ebuild需要xulrunner,然後把那些ebuild解決掉。

你可以用qlist和qdepend合併。

qlist -I|qdepends -|grep xulrunner

這樣他會去找出和xulrunner有關的套件。

上次Linux開會提到要把world精簡化。
要把不需要的東西拿掉,用這個方法輔助的話可以節省很多時間。

[Gentoo linux] Firefox use adobe flash 9

chenpc May 29th, 2008

emerge -av net-www/netscape-flash
emerge -av nspluginwrapper
nspluginwrapper --install /usr/lib32/nsbrowser/plugins/libflashplayer.so

nspluginwrapper will wrapper libflashplayer.so to lib64