7/16/2007

在 Debian 下安装 VMware Workstation

前段时间在自己的本本上安装 VMware 时遇到了两个问题,找了不少资料好歹解决了,现在记录下来了。
我本本的环境如下:
dev@debian:~$ cat /etc/debian_version
lenny/sid
dev@debian:~$ uname -a
Linux debian 2.6.18.4hzy #1 Sat Jun 30 21:28:21 CST 2007 i686 GNU/Linux

VMware 安装文件:VMware-workstation-5.5.1-19175.tar.gz

由于我自己编译的内核,在安装的时候总是提示内核版本不一致,无奈我只好在 /usr/src/linux/include/linux/version.h 中增加 #define UTS_RELEASE "2.6.18.4hzy"
继续安装又提示 “error: conflicting types for 'poll_initwait'”
到 http://ftp.cvut.cz/vmware/ 下载最新的 patch 并安装就 Ok 了。

7/14/2007

Tapioca - Gtalk for Linux

New release of Tapioca, VoIP Linux client, fully supports GTalk voice features, thanks to libjingle library released by Google. One can wonder what this will bring in the future, together with Skype almost abandoning the Linux client and that in many parts of the world people accustomed to Linux are the ones who recommend software...
这是 tapioca 的 Architecture Overview,其中 Gtalk 的语音支持主要靠 libjingle

7/11/2007

在RedHat8.0上安装Oracle9i数据库

1.安装好RedHat8.0操作系统,确保安装了以下的RPM开发包
gcc
cpp
glibc-devel
compat-libstdc++
glibc-kernheaders
binutils
可以使用命令来查看是否已安装了这些包
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils

2.从Oracle官方网站下载Oracle9i安装文件并使用如下命令解包
(ftp://ftp.lib.tsinghua.edu.cn/)
zcat lnx_920_disk1.cpio.gz | cpio –idmv
zcat lnx_920_disk2.cpio.gz | cpio –idmv
zcat lnx_920_disk3.cpio.gz | cpio –idmv
然后会有Disk1 Disk2 Disk3三个子目录。

3.设置内核参数
echo `expr 1024 \* 1024 \* 512` > /proc/sys/kernel/shmmax,对于shmmax文件的修改,系统重新启动后会复位。可以通过修改 /etc/sysctl.conf 使更改永久化
编辑/etc/sysctl.conf
kernel.shmmax=536870912
kernel.shmmax的计算方法为:kernel.shmmax = 1024*1024*RAM(M)/2 (至少)

接下来,打开/etc/security/limits.conf文件,将下列数据添加到 limits.conf的末尾并保存:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

这是设置Oracle对文件的要求。

4.创建Oracle用户帐号和安装目录
在shell下,作为root

groupadd dba
groupadd oinstall
useradd –g oinstall –G dba oracle
passwd oracle

mkdir /opt/oracle
mkdir /opt/oracle/product
mkdir /opt/oracle/product/9.2.0
chown –R oracle.oinstall /opt/oracle
mkdir /var/oracle
chown oracle.dba /var/opt/oracle
chmod 755 /var/opt/oracle

5.设置环境变量
编辑/home/oracle/.bash_profile文件,添加下列行

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export LD_ASSUME_KERNEL=2.4.2
export ORACLE_SID=ora9i
export ORACLE_TERM=xterm
$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICAN.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/asmin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH

export PATH=$PATH:$ORACLE_HOME/bin

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH

6.安装
进入Disk1目录
./runInstaller
当link进行到61%时出现一个关于ins_oemagent错误,选择ignore,安装完后修复
当link进行到84%时出现一个关于ins_ctx错误,编辑$ORACLE_HOME/ctx/lib/env_ctx.mk文件,把$(LDLIBFLAG)dl加到以下位置
INSO_LINK=-L$(CTXLIB)$ (LDLIBFLAG)m $(LDLIBFLAG)dl处。
安装完成

修复第一个错误
在shell下,oracle用户
cd $ORACLE_HOME/network/lib
make –f ins_client.mk install
编辑$ORACLE_HOME/ctx/lib/ins_ctx文件
13—14行处
$(LINK) $(CTXHXOBJ) $(INSO_LINK)

$(LINK) –ldl $(CTXHXOBJ) $(INSO_LINK)
make -f ins_client.mk install

7.启动数据库、监听程序、web server
启动数据库
Sqlplus “ / as sysdba”
SQL>startup

启动监听程序
lsnrctl

启动web server
cd $ORACLE_HOME/Apache/Apache/bin
./startJServ.sh

8.手工建库
先写个initcihz.ora ,放到dbs,如果你的sid是cihz的话
启动instance:
SQL> startup nomount
ORACLE instance started.

Total System Global Area 70062220 bytes
Fixed Size 450700 bytes
Variable Size 62914560 bytes
Database Buffers 6553600 bytes
Redo Buffers 143360 bytes
SQL>

SQL> CREATE DATABASE cihz
USER SYS IDENTIFIED BY cihz
USER SYSTEM IDENTIFIED BY cihz
LOGFILE GROUP 1 ('/opt/oracle/oradata/cihz/redo01a.log','/opt/oracle/oradata/cihz/redo01b.log') SIZE 5M,
GROUP 2 ('/opt/oracle/oradata/cihz/redo02a.log','/opt/oracle/oradata/cihz/redo02b.log') SIZE 5M,
GROUP 3 ('/opt/oracle/oradata/cihz/redo03a.log','/opt/oracle/oradata/cihz/redo03b.log') SIZE 5M
MAXLOGFILES 15
MAXLOGHISTORY 10
MAXDATAFILES 1024
MAXINSTANCES 255
CHARACTER SET ZHS16GBK
DATAFILE '/opt/oracle/oradata/cihz/system01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/opt/oracle/oradata/cihz/temp01.dbf'
SIZE 500M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/opt/oracle/oradata/cihz/undo01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE DATABASE cihz
*
ERROR at line 1:
ORA-30014: operation only supported in Automatic Undo Management mode


出错了,在init里增加如下:

UNDO_MANAGEMENT=AUTO
UNDO_TABLESPACE=undotbs


SQL> shutdown
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.

Total System Global Area 70062220 bytes
Fixed Size 450700 bytes
Variable Size 62914560 bytes
Database Buffers 6553600 bytes
Redo Buffers 143360 bytes
SQL> CREATE DATABASE cihz
USER SYS IDENTIFIED BY cihz
USER SYSTEM IDENTIFIED BY cihz
LOGFILE GROUP 1 ('/opt/oracle/oradata/cihz/redo01a.log','/opt/oracle/oradata/cihz/redo01b.log') SIZE 5M,
GROUP 2 ('/opt/oracle/oradata/cihz/redo02a.log','/opt/oracle/oradata/cihz/redo02b.log') SIZE 5M,
GROUP 3 ('/opt/oracle/oradata/cihz/redo03a.log','/opt/oracle/oradata/cihz/redo03b.log') SIZE 5M
MAXLOGFILES 15
MAXLOGHISTORY 10
MAXDATAFILES 1024
MAXINSTANCES 255
CHARACTER SET ZHS16GBK
DATAFILE '/opt/oracle/oradata/cihz/system01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/opt/oracle/oradata/cihz/temp01.dbf'
SIZE 500M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/opt/oracle/oradata/cihz/undo01.dbf'
SIZE 500M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE DATABASE cihz
*
ERROR at line 1:
ORA-01213: MAXINSTANCES may not exceed 63


SQL>
*
ERROR at line 1:
ORA-01501: CREATE DATABASE failed
ORA-01222: MAXINSTANCES of 63 requires MAXLOGFILES be at least 126, not 15

按照错误提示修改过来就行了。

建立其他表空间:


CREATE TABLESPACE users LOGGING
DATAFILE '/opt/oracle/oradata/cihz/users01.dbf'
SIZE 100M
EXTENT MANAGEMENT LOCAL;

CREATE TABLESPACE tools LOGGING
DATAFILE '/opt/oracle/oradata/cihz/tools01.dbf'
SIZE 100M
EXTENT MANAGEMENT LOCAL;

接下来的数据字典:
@/opt/oracle/product/9.2.0.1/rdbms/admin/catalog.sql
@/opt/oracle/product/9.2.0.1/rdbms/admin/catproc.sql

9.测试

CREATE TABLESPACE cihz
DATAFILE '/opt/oracle/oradata/cihz/cihz01.dbf'
SIZE 500M ;


create user cihz identified by cihz
default tablespace cihz
TEMPORARY TABLESPACE temp


SQL> conn cihz/cihz
ERROR:
ORA-01045: user CIHZ lacks CREATE SESSION privilege; logon denied


Warning: You are no longer connected to ORACLE.
SQL> conn system/cihz
Connected.
SQL> grant connect ,resource to cihz;

Grant succeeded.

SQL> conn cihz/cihz
Error accessing PRODUCT_USER_PROFILE
Warning: Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
Connected.
SQL>

SQL> conn system/cihz
Connected.
SQL> @/opt/oracle/product/9.2.0.1/sqlplus/admin/pupbld.sql
DROP SYNONYM PRODUCT_USER_PROFILE


Synonym created.

SQL> conn cihz/cihz
Connected.
SQL> create table test(
2 a number,
3 b varchar2(20),
4 c blob
5 );

Table created.

SQL> insert into test (a,b)values (2,'asf');

1 row created.

SQL>


注:
1)如果是用光盘安装,不要进入Disk1目录再执行installer,最好是用/Disk1/installer &,否则当提示要换盘的时候会因为你有个终端窗口处于此目录下而不能umount光驱。
2)swap分区要尽量大点,以免到了创建数据库阶段的时候,出现“out of momery”的错误。

参考文档:
http://www.puschitz.com/
http://www.eygle.com

7/09/2007

我在水木上看到“SUN 公司 GNOME 技术讲座”的帖子,于是发信给公司的一位同事,又约好另一位同事,然后决定一同前往。于6.27号下午三人风雨兼程地赶到了清华的 FIT 楼,由于开始找错了路,在大雨中走了3分钟才到达目的地,同事戏称为 FIT 楼为 Faint 楼 :)

讲座是 SUN 工程研究院的组织的,主讲人: Harry 和 Tim,议题1: GNOME Destkop Development Platform Overview,介绍了 GNOME 整个构架中的各个部分。议题2: HAL & D-BUS 介绍了 HAL 和 D-BUS 及其在桌面系统中的应用。 Open solaris 系统中,HAL 的下一层叫 DevFsAdm,不像 Linux 中是 udev/hotplug 等,因为他们各自的内核不同。

整个讲座只是一个概要性的介绍,并无深入到具体的细节。

了解到 SUN 在 GNOME community 中是做了并正在做很多贡献的,比如 Accessibility 技术( ATK/Gail/Orca),GDM 都是 SUN 的工程师在开发和维护的,当然,在其它很多 GNOME 的组件中他们也贡献了很多 patch 等,至少我在 Eovlution 的某些版本中就看到了来自 SUN 的 patch 记录。