|
最近使用Gentoo,发现有很多值得玩味的地方。将我的使用心得写出来供大家分享,这篇文章就是介绍如何根据自己的需要来修改ebuild,从而让系统使用自己的ebuild。
参考文档:
http://www.gentoo.org/proj/en/overlays/userguide.xml
http://www.gentoo.org/doc/zh_cn/ ... l?part=3&chap=5
http://hi.baidu.com/%D0%A1%CF%EF ... bfcf1f6d22ebbe.html
由于我安装PHP的时候disable了PDO,而我需要启用php的pdo功能,从为我探索ebuild冰山一角的开始。
<!--more-->
第一步: 建立相关目录并设置make.conf文件
设置自己的文件ebuild文件放置的目录:
[php]
mkdir -p /usr/local/portage
#修改 /etc/make.conf,添加如下行:
PORTDIR_OVERLAY="/usr/local/portage"
[/php]
第二步 : 复制/usr/portage/dev-lang/php到 /usr/local/portage 目录
[php]
mkdir /usr/local/portage/dev-lang
cp -pR /usr/portage/dev-lang/php /usr/local/portage/dev-lang
[/php]
第三步 : 修改相关文件
/usr/local/portage/dev-lang/php/files/eblits/src_configure-v52.eblit
注释下面的两行
[php]
phpconfutils_extension_with "pdo-sqlite" "sqlite" 1 "/usr"
phpconfutils_extension_with "sqlite" "sqlite" 0 "/usr"
[/php]
/usr/local/portage/dev-lang/php/php-5.2.14.ebuild
将行
[php]
sqlite? ( =dev-db/sqlite-2* pdo? ( =dev-db/sqlite-3* ) )
[/php]
修改为:
[php]
sqlite? ( =dev-db/sqlite-3* pdo? ( =dev-db/sqlite-3* ) )
[/php]
第四步 : 更新 /usr/local/portage/dev-lang/php/Manifest 文件。[因为修改了文件和文件的各种校验和都不在正确]
[php]
ebuild /usr/local/portage/dev-lang/php/php-5.2.14.ebuild digest
[/php]
第五步 : 修改USE并安装emerge安装php
在文件 /etc/portage/package.use 添加下面行
[php]
=dev-lang/php-5* -* cli cgi apache2 ctype fastbuild force-cgi-redirect ftp gd hash iconv ipv6 memlimit mysql nls pcre pic posix pdo reflection session simplexml soap sockets spl ssl tokenizer truetype xml xmlreader xmlwriter xsl zlib unicode ldap bzip2 berkdb bcmath gettext mbstring mcrypt mhash freetype mysqli zip exif cjk sqlite
[/php]
执行安装
[php]
PORTDIR_OVERLAY="/usr/local/portage" emerge -av php
[/php]
第六步 : 验证PHP是否包含了pdo(mysql,sqlite)
添加文件: /var/www/localhost/htdocs/info.php
包含下面内容:
[php]
<?php
phpinfo();
[/php]
然后查看页面是否存在下面的文字:
[php]
pdo_mysql
[/php]
[php]
pdo_sqlite
[/php]
注意:
如果出现下面的错误表示没有执行第4步:
[php]
PORTDIR_OVERLAY="/usr/local/portage" emerge -av php
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] dev-lang/php-5.2.14 USE="apache2 berkdb bzip2 cli crypt ctype filter gd gdbm hash iconv ipv6 json ldap mysql ncurses nls pcre posix readline reflection session simplexml snmp spl ssl tokenizer truetype unicode xml xmlreader xmlwriter zlib -adabas -bcmath -birdstep -calendar -cdb -cgi -cjk -concurrentmodphp -curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -embed -empress -empress-bcs -esoob -exif -fdftk -firebird -flatfile -force-cgi-redirect -frontbase -ftp -gd-external -gmp -imap -inifile -interbase -iodbc -kerberos -kolab -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysqli -oci8 -oci8-instant-client -odbc -pcntl -pdo -pic -postgres -qdbm -recode -sapdb -sharedext -sharedmem -soap -sockets -solid -spell -sqlite -suhosin -sybase-ct -sysvipc -threads -tidy -wddx -xmlrpc -xpm -xsl -yaz -zip" 0 kB [1]
Total: 1 package (1 new), Size of downloads: 0 kB
Portage tree and overlays:
[0] /usr/portage
[1] /usr/local/portage
Would you like to merge these packages? [Yes/No] Yes
>>> Verifying ebuild manifests
!!! Digest verification failed:
!!! /usr/local/portage/dev-lang/php/files/eblits/src_configure-v52.eblit
!!! Reason: Filesize does not match recorded size
!!! Got: 10887
!!! Expected: 10888
[/php] |
|