分类 八毛技术 下的文章

src.rpm源码包直接获取源代码

最近为了编译autoconf,终于找到了Redhat的ftp库:
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Client/en/os/SRPMS/
上面只有src.rpm包,下载下来rpm -ivh后报错:

Src.rpm错误: group mockbuild does not exist

搜了很多结果都说只是权限问题,但是源码可以在/usr/src下面找到。 #$@%$^&%&^%#$%###&*& 为什么我就是无法找到 >_<
后来发现其实有方法可以直接取到里面的源码地:

[root@rhel6 src]# rpm2cpio autoconf-2.63-5.1.el6.src.rpm | cpio -id
2012 块

[root@rhel6 src]# ls -l
总用量 2024
-rw-r--r-- 1 root root 1033682 5月 19 21:44 autoconf-2.63-5.1.el6.src.rpm
-rw-rw-r-- 1 root root 1016280 5月 19 21:48 autoconf-2.63.tar.lzma
-rw-r--r-- 1 root root 1056 5月 19 21:48 autoconf-erlang_fix.diff
-rw-r--r-- 1 root root 11518 5月 19 21:48 autoconf.spec

这里可以看到有个tar.lzma,里面就是源码了。 ^.^

参考:
http://bbs.csdn.net/topics/360123665
http://www.litvip.com/94/

PHP动态编译挂载模块

最近在一台Redhat机器上修复一个phpldapadmin缺少gettext组件的问题的时候,学到一个动态编译挂载PHP模块的方法。

事情起因是这台服务器由前人装了openLDAP和phpldapadmin后,openLDAP是配置完成了,但是phpldapadmin却因为缺少gettext而无法正常运行。而且系统是老旧的Redhat6.1,不知道去哪里找到完整的包来重新编译PHP,所以在网上发现了这个方便的方法。

这种方式需要先找到两个命令:phpize,php-config。
可以通过locate找到它们。
我这里的路径分别是:
/usr/local/bin/phpize
/usr/local/bin/php-config

接着,例如需要编译gettext模块,cd到php源码里面的ext下的gettext目录,执行phpize命令:

[root@rhel6 gettext]# /usr/local/bin/phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626

可以看到有一些信息输出,接着开始编译:

[root@rhel6 gettext]# ./configure --with-php-config=/usr/local/bin/php-config

最后修改php.ini的配置文件载入这个模块:

extension="gettext.so"
;extension=php_gmp.dll
;extension=php_intl.dll
;extension=php_imap.dll

去掉前面的分号后,记得把后缀改成.so,这种方式编译出来的后缀都是.so的。
重启服务器后用phpinfo便可以看到gettext已经载入成功。

参考:
http://bguncle.blog.51cto.com/3184079/1329895
http://lihuipeng007.blog.163.com/blog/static/121084388201071830423/