Android開発時のant debugで「libz.so.1: no version information available」エラー(未解決)

CUIにてAndroidアプリのビルド時、以下のワーニングが発生。

/android-sdk-linux/platform-tools/aapt: /lib/libz.so.1: no version information available (required by /Android/android-sdk-linux/platform-tools/aapt)

調べてみたところ、以下のことがわかりました。

  • Android SDK 10 のころからこのワーニングが発生するようになったらしい
  • 現在使われているlibz.so.1.2.3をlibz.so.1.2.5にすればワーニングがなくなるらしい

ということで、libz.so.1.2.5 にして試してみました。

wget http://zlib.net/zlib-1.2.5.tar.gz

tar -xzf zlib-1.2.5.tar.gz

cd zlib-1.2.5

./configure

sudo make

sudo cp -a libz.so.1.2.5 /lib/libz.so.1.2.5

sudo rm -f libz.so

sudo rm -f libz.so.1

sudo ln -s libz.so.1.2.5 libz.so

sudo ln -s libz.so.1.2.5 libz.so.1

すると、ワーニングは消えてスッキリ、と思いきや、次回再起動時のログイン直後にGNOMEが起動しなくなりました。

パネルをbonobo-activationサーバに登録する際にエラーが発生しました。

エラーコード: 3

これを回避する情報を見つけられなかったため、libz.so.1.2.5 を libz.so.1.2.3 に戻しました。幸いなことに ssh は有効でしたので、リモートから libz.so のリンクの貼りなおし。

sudo rm -f libz.so

sudo rm -f libz.so.1

sudo ln -s libz.so.1.2.3 libz.so

sudo ln -s libz.so.1.2.3 libz.so.1

Androidビルド時のワーニングはまだ解決できていない状況ですので、別のアプローチを探してみたいと思います。

mediatomb(DLNAサーバー)のインストールでmysqlエラー(解決)

の記事を参考にDLNAサーバーの導入を行おうとしていましたが、どうもサービスが起動せず、Webブラウザからmediatombの画面を拝むことができなかったので、その解決法をメモしておきます。

ログを見てみる(cat /var/log/mediatomb)

2011-09-10 17:27:57 ERROR: The connection to the MySQL database has failed:

mysql_error (2002): “Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)”

どうやら mysql とのソケット通信用のファイルパスが決め打ちであったため、正しく起動していなかったようです。

vi /etc/mediatomb/config.xml にて

<socket>/mnt/your_setting/mysql.sock</socket>

</mysql>

と <mysql> タグ内に <socket> 設定を自分の環境にあわせることで正しくサービスが動作することを確認できました。

Ubuntu 9.10 を vaio(PCG-FX55G/BP) にインストール、解像度編

古いノートPCの有効活用のため、Ubuntu 9.10 を vaio(PCG-FX55G/BP) にインストールしたのですが、画面解像度が 800×600 になってしまいました。このままでは、1024×768 の液晶を持て余すことに。1024×768 に修正する方法を以下にまとめました。

まず、Ubuntuと自前のノートPCについて調べたところ、以下のことがわかりました。

  • Ubuntu 8.04までは “displayconfig-gtk” というツールを使って画面解像度を変更できたが、現バージョンは削除されて使えない状態である
  • PCG-FX55G/BP は Intel 815EM チップセットが搭載されており、Ubuntu では対応していない
  • /etc/X11/xorg.conf をいじると 1024×768 サイズの解像度に対応できる

インストールした Ubuntu には /etc/X11/xorg.conf ファイルは存在していませんでした。

ファイルを新規作成し、次の内容を記入しました。

https://forums.ubuntulinux.jp/viewtopic.php?pid=32851#p32851 より

Section “Device”

Identifier “Configured Video Device”

EndSection

Section “Monitor”

Identifier “Configured Monitor”

Vendorname “Generic LCD Display”

Modelname “LCD Panel 1024×768″

Horizsync 31.5-48.0

Vertrefresh 56.0 – 65.0

Modeline “1024×768″ 65.0 1024 1048 1184 1344 768 771 777 806 -vsync -hsync

EndSection

Section “Screen”

Identifier “Default Screen”

Device “Configured Video Device”

Monitor “Configured Monitor”

Defaultdepth 24

SubSection “Display”

Depth 24

Modes “1024×768″ “800×600″ “640×480″

EndSubSection

EndSection

設定ファイルを保存後、PCを再起動。

[システム] – [設定] – [ディスプレイ] で 1024×768 サイズが選択できるようになっていたので選択。

無事に解像度を合わせることができました。調べるのに結構時間がかかりましたが、参考になれば幸いです。

ntpq -p で ”Name or service not known” が出ていた件の解決

サーバの時刻同期のため、ntpd を設定していたのですが、「Name or service not known」が発生していました。

[実行結果]

# ntpq -p

Name or service not known

何が悪いのかとチェックしていましたが、/etc/ntp.conf の設定を見直しても悪いところが見当たらないし、ポート設定も正しいはずなので、この問題を随分放置していました。

しかし、手動で時刻同期するのはやっぱり馬鹿らしいんで、もう一度調べ直したところ、localhost のアドレス解決ができないと上記エラーが出る可能性があることが判明。

以前、何かの設定時に削除したと思われる localhost のアドレス設定ですが、/etc/hosts に早速追加しました。

[/etc/hosts に以下の記述を追加]

127.0.0.1 localhost

[変更後の実行結果]

# ntpq -p

remote refid st t when poll reach delay offset jitter

==============================================================================

ntp1.jst.mfeed. 210.173.176.4 2 u 42 128 7 21.532 -23467. 4.347

ntp2.jst.mfeed. 210.173.160.86 2 u 39 128 7 21.529 -23463. 6.816

ntp3.jst.mfeed. 210.173.160.86 2 u 38 128 7 21.278 -23463. 6.704

今度はちゃんと動作するようになりました。

XOOPS Cube を文字コード EUC でなく、 UTF-8 で動かす

XOOPS の Package_Legacy_2_1_6 を UTF-8 対応でインストールした際のメモ。

  1. XOOPS Cube日本サイト(http://jp.xoops.org/)からパッケージをダウンロード
     今すぐダウンロード >>
     XOOPS Cube Legacy 2.1.6
    あたりからダウンロードする。
  2. ファイルを解凍すると以下の3つのフォルダができる
    1. html・・・htmlフォルダの中身をWebに公開する場所にコピー(public_htmlやpublic_html/xoopsなど)
    2. extras・・・extras/extra_languages/ja_utf8/html/ フォルダを上記htmlフォルダと同じ場所に上書きコピー
    3. docs・・・とくに使わない(無視)
  3. ブラウザ経由でpublic_htmlなどに公開されている場所にアクセスし、最初のインストール時の言語選択画面で「japanese」でなく、「ja_utf8」を選択して次へを選択(ここで躓いていた)
  4. あとは親切なXOOPSインストール方法マニュアルサイト通りに進めればOK
    XOOPS Cubeインストール – XOOPS入門 がオススメ

ホームページが軽くなりました

私のWikiページ(だらだらぶろg DaDaDa!Wiki)は、前からものすごくレスポンスが悪かったのですが、ようやく犯人を見つけました。それが、Wikiの logparanoiaプラグイン で使われていた、gethostbyaddr関数 です。

この関数はIPアドレスからホスト名の取得を行うものですが、ホスト名の取得を行わないようにしたら今までとは打って変わって軽くなりました。スペックや回線速度の問題なのかと思っていたのですが、これですっきりしました(^-^)

Apacheのバーチャルホストとユーザディレクトリの共存

Apacheを使ったサーバ1台で、複数サイトを同時運用したい場合に使えるのがバーチャルホスト機能です。IPアドレスが1つしか使えない状況下では、ドメイン名ベースで見せるページを振り分けることができます。バーチャルホスト機能は非常に便利なのですが、ここで問題が一つ発生します。それは、

「UserDir機能との共存ができない」

というものです。UserDir機能は、public_html以下のフォルダをチルダ+ユーザ名で公開することで、複数ユーザのページを扱う際の手間を一気に解消できる機能です。しかし、バーチャルホストと併用することでゴースト現象が発生してしまいます。ゴースト現象とは、その「チルダ+ユーザ名」が本来のドメイン以外からでもアクセスできてしまうことを言います。本来の
http://ex000.com/~user でアクセスするものが、
http://ex111.com/~user からでもアクセスできてしまうのです。

本題の解決策ですが、httpd.confでUserDir機能を使用していた場所をコメントアウトし、UserDirを使用したいバーチャルホスト内でのみ指定を行う ことで問題を回避することができます。

なお、バーチャルホストでドメイン名ベースでの指定を行ったサーバに対して、IPアドレスでアクセスを行った場合には、httpd.confのバーチャルホストの一番上で設定したホストが実行されます。

【設定例】

(httpd.confファイル)

NameVirtualHost *:80

<VirtualHost *:80>

  ServerName ex000.com

  DocumentRoot /home

  UserDir public_html

</VirtualHost>

<VirtualHost *:80>

  ServerName ex111.com

  DocumentRoot /www/htdocs

</VirtualHost>

そもそもの原因は、「通常のUserDir指定だと、適用範囲がバーチャルホスト全体になってしまうから」のようです。しかし、バーチャルホスト内で宣言を行うことで、UserDirを使うドメイン、使わないドメインと切り分けることができます。

なお、バーチャルホストでドメイン名ベースでの指定を行ったサーバに対して、IPアドレスでアクセスを行った場合には、httpd.confのバーチャルホストの一番上で設定したホストが実行されます。今回の設定例だと ex000.com が実行されることになります。

【ゴースト現象に関する参考URL】

mod_monoのインストール

Vine Linux 4.0にmonoをインストールしました。一筋縄とはいきませんでした。導入するとASP.NET 1.1が動くみたいです。2.0は対応中のようです。情報は2006.12.17のものです。

(1) monoをインストール

mono本家ダウンロードページ(英語)

から、Linux Installer for x86 (All distributions)Mono (Version No.) Installer (Stable) を選択してダウンロードします。私がダウンロードしたのは 1.2.2.1_1 Installer (Stable) でした。

$ cd (ダウンロードしたディレクトリ)
$ ./mono-1.2.2.1_1-installer.bin

上記のコマンドでエラーが起きて終了してしまった場合は、オプション –mode xwindow を付けます。

$ ./mono-1.2.2.1_1-installer.bin --mode xwindow

あとはフォルダ /opt の下にmonoがインストールされます。コマンド mono と xsp のパスが通っているかチェックします。

 

  • 【確認】.bashrc に コマンド mono と xsp のパスが通っているか

    $ cat /root/.bashrc
    :
    export PATH="/opt/mono-1.2.2.1/bin:$PATH"

(2) apxsをインストール

既に、この段階で mono と xps(簡易サーバ) の動作は可能です。これをApache2と連携させます。

Apache2上でmonoを動かすモジュールであるmod_monoはmakeが必須です。makeするためにApache2側で必要なapxs(Apacheの拡張機能)をインストールします。

$ apt-get install apache2-devel

【参考】apxsとはなんですか?(はてな)

(3) mod_monoのダウンロードとmake

mod_monoは mono本家ダウンロードページ(英語)Source Code (Stable) から mod_mono-1.2.1.tar.gz を取得します。

$ tar zxvf mod_mono-1.2.1.tar.gz
$ cd mod_mono*/
$ ./configure
$ make
$ make install 

makeは関連ファイルがきちんと定義されていないと、エラーが返ってきて失敗します。ここが敷居が高いと呼ばれる理由だと思われます。エラーが起こった場合は、./configureに対するオプションをしっかりと定義する必要があります。

–prefix=/xxx/yyy mod_monoのファイルをインストールする基準パス
–with-mono-prefix=/xxx/yyy mono実行ファイル、mod-mono-server.exeが正しく実行されるデフォルトパス
(mod_monoのプレフィックスがmonoとは異なる場合)
–with-apxs=/xxx/yyy/apxs apxs実行ファイルの完全パス
(複数のApache(例えば1.3と2.0)の開発用ファイルをインストールしている場合)
–with-apr-config=/xxx/yyy Apache2のapr-configツールの完全パス
(Apache2向けのいくつかのヘッダファイルが見つからない場合)

make が通ったら make install で完了です。あとはApache2のhttpd.confにmonoを使用するための記述をするだけです。

httpd.conf の設定(LoadModuleの一番下あたりに追加)

LoadModule mono_module modules/mod_mono.so
Alias /test "/opt/mono-1.2.2.1/lib/xsp/test"
AddMonoApplications default "/test:/opt/mono-1.2.2.1/lib/xsp/test"
<Location /test>
SetHandler mono
</Location>

Apache2をリスタートして「http://127.0.0.1/test/index.aspx」にアクセスしてXSPテストページが表示されれば成功です。あとはAliasの部分をASP.NETを使いたいディレクトリを指定します。うまくいかない場合、Mod mono – MonoWebJPを参考にしてください。