LinuxでSkypeAPIをDBusで叩く 
Sunday, October 2, 2011, 10:23 PM - OS / Linux, Misc
Posted by Administrator
LinuxでSkypeAPIをDBus経由で叩こうと試みたときの走り書き

基本的にSkypeの公式で配布されているパッケージ、かつサポートされているディストリビューションならば特に問題にはならないはずだが……
だが、現行最新の2.2をCentOS 5xなどで動かそうとした場合に
skype: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by skype)
で、コケる

この点のみで言えば回避策としてskype_static-2.1.0.47.tar.bz2を使えとhttp://wiki.centos.org/HowTos/Skypeに記述されているが、このバイナリではDBusを使えない、そもそもDBusでAPIを叩けるなんて機能がない
ついでに言うと"使えない"なんてどこにも書いていないし、検索しても出てこない

恐らくSkypeはDBusをlibQtDBus.so経由で利用する(別のバイナリは当然のようにこれを要求してくる)が、skype_static-2.1.0.47.tar.bz2はそう見えない
# ldd skype
linux-gate.so.1 => (0xffffe000)
libasound.so.2 => /lib/libasound.so.2 (0x00273000)
libXv.so.1 => /usr/lib/libXv.so.1 (0x00c94000)
libXss.so.1 => /usr/lib/libXss.so.1 (0x00c9b000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x001b9000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x00c78000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00269000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00cb9000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x001b3000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00131000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00cc9000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x001d2000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00cfa000)
libz.so.1 => /lib/libz.so.1 (0x001e4000)
libgthread-2.0.so.0 => /lib/libgthread-2.0.so.0 (0x00ca0000)
libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x00b9b000)
librt.so.1 => /lib/librt.so.1 (0x00c42000)
libdl.so.2 => /lib/libdl.so.2 (0x00c3b000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00b80000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00354000)
libm.so.6 => /lib/libm.so.6 (0x00c4d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00ca7000)
libc.so.6 => /lib/libc.so.6 (0x00a25000)
libexpat.so.0 => /lib/libexpat.so.0 (0x00101000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00cc4000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00129000)
/lib/ld-linux.so.2 (0x00a06000)

転がってたskype-2.1.0.81-fc10.i586.rpmのバイナリ
# ldd skype
./skype: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./skype)
linux-gate.so.1 => (0xffffe000)
libasound.so.2 => /lib/libasound.so.2 (0x00273000)
libXv.so.1 => /usr/lib/libXv.so.1 (0x00c94000)
libXss.so.1 => /usr/lib/libXss.so.1 (0x00c9b000)
librt.so.1 => /lib/librt.so.1 (0x00c42000)
libQtDBus.so.4 => /usr/lib/qt4/lib/libQtDBus.so.4 (0xf7f25000)
libQtGui.so.4 => /usr/lib/qt4/lib/libQtGui.so.4 (0xf785a000)
libQtNetwork.so.4 => /usr/lib/qt4/lib/libQtNetwork.so.4 (0xf77ff000)
libQtCore.so.4 => /usr/lib/qt4/lib/libQtCore.so.4 (0xf7683000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00b80000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00354000)
libm.so.6 => /lib/libm.so.6 (0x00c4d000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00ca7000)
libc.so.6 => /lib/libc.so.6 (0x00a25000)
libdl.so.2 => /lib/libdl.so.2 (0x00c3b000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00cfa000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x001d2000)
/lib/ld-linux.so.2 (0x00a06000)
libdbus-1.so.3 => /lib/libdbus-1.so.3 (0xf7643000)
libQtXml.so.4 => /usr/lib/qt4/lib/libQtXml.so.4 (0xf75ff000)
libz.so.1 => /lib/libz.so.1 (0x001e4000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xf75d9000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x001b9000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x00c78000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00269000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00cb9000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x001b3000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xf75ce000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00771000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00131000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00cc9000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00cc4000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00129000)
libcap.so.1 => /lib/libcap.so.1 (0xf75c9000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x0075f000)
libexpat.so.0 => /lib/libexpat.so.0 (0x00101000)

見てのとおり同じバージョンでも(47と81の差はあるが)後者はlibQtDBus.so.4を要求してくるが、同時にGLIBCXX_3.4.9を要求してくるので、CentOS 5xで動かすには若干手間がかかることになるので、DBusは諦めてX11 messageを使うことになるだろう

なめてる
add comment ( 1806 views )   |  permalink
最近の俺 
Thursday, April 14, 2011, 06:03 AM - OS, OS / Linux, Misc
Posted by Administrator
3月末から今日までの動き、とそのまとめ

RHEL5.6/6がリリースされて随分経つが、クローンのCentOSは同バージョンがリリースされる気配がない
実際5.4(か、5.3)当時からコミュニティ内での揉め事がいくつかニュースになっていたりもする
そんなこんなで多少雲行きも怪しくなってきたので、RHELのsrpmを自前で全てmakeしてyum Repositoryを作る事にした
これでクローンディストリビューションに頼る事はなくなるし、単純な話RHELの方がcoolだ

ところがsrpmを全てmakeするには依存問題がある、上から順番にmakeしても通らない
make errorが出なくなるまでsrpm make -> installを繰り返し続けるのも手だが、頭の良い方法とはお世辞にも言えないし、時間も食う、そしてシステムが肥大化してしまうなどの問題を抱える事になる
なのでrpm makeをしつつ依存関係が出た場合は対象をinstallして再実行という方法を採る

だが、x86_64 なシステム上での/libの存在、これが欠けたとしても動くのかという疑問
今更i386やi686のyum Repositoryを作ろうとは思わないが、全く無いというのは困るのではないか?
と、なるとi686なrpmも作る必要はあるが、そもそもこれが依存関係のエラーを吐かない、そしてmakeは当然コケる
必要そうなi686のrpmをインストールすると状況が変化したりと問題に拍車を掛けるが、最終的にはmakeできない
仮にmakeできたとしても依存関係のエラーメッセージが潰れている以上、総当たりしかなくなるので詰みだ
大体x86_64環境下でi686をmakeするよりもi686環境下で行う方が正確で労力も少ない

しかしi686なmakeサーバを用意するには実機不足、となれば当然VMの出番と言いたいところだが、以前稼働していたVMware ESXiなサーバはI/Oが遅いとか様々な問題を抱えているのでKVMへ移行しようとして放置中だ
KVMを稼働させる上でKVMのみな小さいディストリビューションがほしいというのが本心で、単純にそれが見付かっていなかったので何もしていなかったというのが正しい
実際必要に駆られているので、真面目に探してみるとoVirtという面白そうなものを見付けた
情報こそ少ないが、これはどうもVMware ESXに対するVMware Infrastructure、oVirt Nodeに対するoVirt Serverというソフトウェアのようで、1cdなisoも存在している事から恐らく希望に合致するであろうものであると予測できる

ところがoVirtには相当な癖があり、その内容は省略 (その内容)
またNodeをPXEでロードさせる、DNSに登録されている(正引き逆引きできる)必要がある、なのでDHCPがどうのこうのと既存のネットワークで試験するには余りに手間が多すぎるし、危険も伴う

こうなると専用のセグメントを用意する必要があるが、そんな簡単には作れないし、それを運用可能なシステムや機器の準備がない
そうして必要に駆られてネットワークの大幅変更、相当前から実用したいなあと思っていたpfSenseを導入するなどし、微妙に打ちにくい172.16.から172.22.へアドレスを全変更
セグメント増加によってpfSenseに任せた方が効率がいいdhcpd, named, ntpdなどを再設定し、一応は元に戻った

というところで今に至る
add comment ( 1995 views )   |  permalink
rhel6 usually daemon manage (chkconfig) 
Friday, April 1, 2011, 03:57 AM - OS / Linux
Posted by Administrator
chkconfig abrtd off
chkconfig acpid off
chkconfig atd off
chkconfig auditd off
chkconfig cgconfig off
chkconfig cgred off
#chkconfig cpuspeed off
#chkconfig crond off
#chkconfig haldaemon off
chkconfig ip6tables off
chkconfig iptables off
#chkconfig irqbalance off
#chkconfig kdump off
chkconfig lvm2-monitor off
#chkconfig mdmonitor off
#chkconfig messagebus off
chkconfig netconsole off
chkconfig netfs off
#chkconfig network off
chkconfig postfix off
chkconfig psacct off
chkconfig rdisc off
chkconfig restorecond off
chkconfig rhnsd off
#chkconfig rsyslog off
chkconfig saslauthd off
#chkconfig smartd off
#chkconfig sshd off
#chkconfig sysstat off
#chkconfig udev-post off

add comment ( 2047 views )   |  permalink
Sun Ray Walk Through 
Saturday, February 5, 2011, 07:30 AM - OS, OS / Linux
Posted by Administrator
亡きSun MicrosystemsのSun Ray
……を最低限度、動作させるまでの殴り書き

個人的な話としてSun Microsystemsの製品は嫌いなのでSolarisではなくGNU/Linuxを使う
嫌いなのにSun Ray?大人の事情ってやつです

さて、公式でSun Ray Server Software (SRSS)はSolarisのほか、RHELとSUSEで動作すると言っているが、RHEL Clone(CentOSなど)やUbuntuでも問題なく動作はする
まあ、当たり前の話なのだが

Sun Microsystemsを買収したOracleがOracle Enterprise Linux(OEL)なるRHEL Cloneを製品として販売しているので、今回はこれを使う

Oracle Enterprise Linux(OEL) 5.6 x86-64
Sun Ray Software 5.1.1 (srss4.2/srwc2.1)

OELは.isoこそ入手できるが、RHEL同様上納金を支払わなければyumリポジトリが使えない
なのでパッケージのインストールは自分で.repoを書くなどしてディスクを使用する必要がある
# cat >/etc/yum.repos.d/media.repo
[media]
name=OEL$releasever - Media
baseurl=file:///media/OEL/Server/
file:///media/cdrom/Server/
file:///media/cdrecorder/Server/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
^D

# mkdir -p /media/cdrom
# mount -t iso9660 -r /dev/cdrom /media/cdrom


必要になるパッケージをインストール
ディストリビューションによって多少の違いはあるが、Sun Rayを使おうとする技術者からすれば、不足していたとしても障害にならないだろう
# yum -y install kernel-devel
# yum -y install gcc
# yum -y install glib
# yum -y install dhcp
# yum -y install openldap-clients
# yum -y install gdbm
# yum -y install libXfont
# yum -y install compat-libstdc++-33


OELは標準でkernel-uekを使用している
このままでは一部の.hが不足してコンパイルに失敗してしまう
面倒臭いので普通のkernelを使用する
# sed -i 's/^default=.*/default=1/' /boot/grub/menu.lst

セキュリティは無視する、大体分野が別だ
# service iptables stop;chkconfig iptables off
# service ip6tables stop;chkconfig ip6tables off
# sed 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux


後はささっと走る
# mkdir -p /home/sunray
# cd /home/sunray
## V24138-01.zip(srs5.1.1)を持ってくる

# unzip V24138-01.zip
# unzip srss_4.2.zip
# unzip srwc_2.3.zip

# ./srss_4.2/Supplemental/Java_Runtime_Environment/Linux/jre-6u13-linux-i586.bin
# ln -s `pwd`/jre1.6.0_13 /usr/java

# ./srss_4.2/utinstall
# reboot
## srss4.2から再起動後コンパイルされるので、正常か否かはログを確認する必要がある
# cat /var/log/SUNWut/utctl*.log

# export PATH=${PATH}:/opt/SUNWut/sbin

## ここらは環境によって読み替えて
# hostname oel-srss
# echo `ifconfig eth0|perl -lne 'if(/inet addr:([^\s]+)/){print $1}'` `hostname` >>/etc/hosts
# utadm -A 172.16.2.0
# chkconfig dhcpd on

# tar zxf ./srss_4.2/Supplemental/Apache_Tomcat/apache-tomcat-5.5.20.tar.gz
# ln -s `pwd`/apache-tomcat-5.5.20 /opt/apache-tomcat
# ln -s libldap-2.3.so.0 /usr/lib/libldap.so.199
# ln -s libgdbm.so.2 /usr/lib/libgdbm.so.3
# ln -s liblber-2.3.so.0 /usr/lib/liblber.so.199
# utconfig
# utrestart -c

# ./srwc_2.3/installer

# export PATH=${PATH}:/opt/SUNWuttsc/sbin

# ln -s libstdc++.so.6 /usr/lib/libstdc++.so.5
# echo /lib/libssl.so.0.9.8e|uttscadm -c -g utkiosk


後はWebから(http://172.16.2.198:1660/など)
Advanced->System Policy->Non-Card Users->Sun Desktop Access Client Enabled
でOracle Virtual Desktop Clientが使用できるようになる

Windowsへ接続するなら
Advanced->Kiosk Mode->Edit

> Session: Sun Ray Connector for Windows OS
> Timeout: 12000
> Maximum CPU Time:
> Maximum VM Size:
> Maximum number of Files:
> Maximum File Size:
> Locale:
> Arguments: -k jp106 -l ja_JP -n `date +%s.%N` -u Administrator -A 24 -M all -r sound:high 172.16.2.254
こんな感じの設定でよい
-m -bは勝手に付加される、少なくともsrss4.1では付加されなかった

/opt/SUNWut/sbin/utuserを叩けばTokenの情報を取れるので
> Arguments: -k jp106 -l ja_JP -n `date +%s.%N` -A 24 -M all -r sound:high -u `/opt/SUNWut/sbin/utuser -p ${SUN_SUNRAY_TOKEN}|awk 'BEGIN{ORS=" "} /User Name/ || /Other Info/ {print \$4}'`
と、いう方法も可能
やれば動的に複数台のサーバを使い分けることもできる

ここの部分に仕込むことで多少の遊び幅はあるが……

気が向いたら続きを書く
add comment ( 4654 views )   |  permalink

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |