4.3.1JP Final相当 geany 起動時のメッセージ

4.X系のバグ、トラブル

モデレータ: 暇人, YoN, nyu

返信する
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by みのむし »

4.3.1JP Final相当です。
geany 起動時に以下のメッセージが出ますが、問題なく使用できています。

コード: 全て選択

geany: /usr/lib/libstdc++.so.6: no version information available (required by geany)
geany: /usr/lib/libstdc++.so.6: no version information available (required by geany)
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by シノバー »

みのむし さんが書きました:

コード: 全て選択

geany: /usr/lib/libstdc++.so.6: no version information available (required by geany)
geany: /usr/lib/libstdc++.so.6: no version information available (required by geany)
出ますねえ。defaultbrowserなどでも。
devx_431.sfsを入れた場合に出るようです。devx_431.sfsが無い状態だとと出ません。
The bar master, Shino's Bar
http://shinobar.net/
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by みのむし »

>devx_431.sfsを入れた場合に出るようです。devx_431.sfsが無い状態だとと出ません。

シノバーさん、リプライありがとうございます。
そこまでは気が付きませんでした。
このメッセージは無視して行こうと思います。
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by みのむし »

Fullインストールした環境では、起動時のエラーメッセージが出ません!
何処を調べればいいでしょうか?
なお、gccなどは入っています。
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by シノバー »

みのむし さんが書きました:Fullインストールした環境では、起動時のエラーメッセージが出ません!
:roll:

本家版Frugalインストール+devxでも、このエラーメッセージが出ません。

日本語版4.3.1JP-RC3をベースに本家版initrd.gzを使い、pup-431JP-RC3.sfs→pup-431.sfsとリネーム、devx_431sfsを/mnt/homeに置いて使用した状態も、このエラーメッセージが出ません。

パピーリナックス4.3日本語版リリースノートの4.3.1日本語版での追加
# メインSFSと追加SFSに同じファイルがあった場合、メインSFSよりも追加SFSが優先する。すなわちpetでインストールしたのと同等。(これまで、メインSFSのファイルはpetでは上書きされるが、追加SFSでは上書きされない)
これですね。
devx_431.sfsに含まれるファイルのうちメインSFSと競合するファイルのどれかに問題があるが、本家版の適用順ではそれが隠蔽されているということではないでしょうか?

それがどのファイルであるかが分かれば、それを/initrd/pup_ro2以下から抜き出して、対応する/以下にコピーしてやればよいはず。
(たとえば/initrd/pup_ro2/usr/bin/man を /usr/bin/man にコピーするとメインSFSの日本語版manが復活)

あるいは、devx_431.sfsを展開して、そのうちメインSFSと競合するファイルをすべて取り除いたdevx_431JP.sfsみたいなものを作ればいいのか。

しかし、フルインストールにdevxのファイルを上書きした状態は、むしろ日本語版のほうに近いはずなんですが :?: :?: :?:
どういうやり方でdevxを入れました?
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by シノバー »

シノバー さんが書きました:それがどのファイルであるかが分かれば
分かりました。
/initrd/pup_ro2/usr/lib/libstdc++.so.6.0.9 を /usr/lib にコピーすると治ります。

コード: 全て選択

# ls -l /initrd/pup_ro2/usr/lib/libstdc*
lrwxrwxrwx 1 root root     18 2009-09-16 22:51 /initrd/pup_ro2/usr/lib/libstdc++.so.5 -> libstdc++.so.5.0.6
-rwxr-xr-x 1 root root 730372 2009-09-16 22:59 /initrd/pup_ro2/usr/lib/libstdc++.so.5.0.6
lrwxrwxrwx 1 root root     18 2009-09-16 22:51 /initrd/pup_ro2/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.9
-rwxr-xr-x 1 root root 918876 2009-09-16 22:58 /initrd/pup_ro2/usr/lib/libstdc++.so.6.0.9

コード: 全て選択

# ls -l /initrd/pup_ro5/usr/lib/libstdc* # pup_ro? の数字は環境により異なる
-rw-r--r-- 1 root root 7889502 2007-12-22 22:35 /initrd/pup_ro5/usr/lib/libstdc++.a
-rwxr-xr-x 1 root root     943 2007-12-22 22:35 /initrd/pup_ro5/usr/lib/libstdc++.la
lrwxrwxrwx 1 root root      18 2009-10-16 09:32 /initrd/pup_ro5/usr/lib/libstdc++.so -> libstdc++.so.6.0.9
lrwxrwxrwx 1 root root      18 2009-10-16 09:32 /initrd/pup_ro5/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.9
-rwxr-xr-x 1 root root  806764 2007-10-22 18:55 /initrd/pup_ro5/usr/lib/libstdc++.so.6.0.9
メインSFS内の libstdc++.so.6.0.9 のサイズは 918876バイト
devx_431.sfs内の libstdc++.so.6.0.9 のサイズは 806764バイト

他にもそういうものがあるんだろうなあ……。
The bar master, Shino's Bar
http://shinobar.net/
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by みのむし »

>分かりました。
>/initrd/pup_ro2/usr/lib/libstdc++.so.6.0.9 を /usr/lib にコピーすると治ります。
>...

シノバーさん、ご苦労様でした。
確認しました所、同じ結果でした。
コピー後、エラーメッセージが出なくなり治りました。
なお、コピー直後は wbar が機能しなくなりますので
「メニュー|Xサーバをリスタート」する必要がありました。

Fullインストールした環境)

コード: 全て選択

# cd /usr/lib
# ls -l libstdc*
-rw-r--r-- 1 root root 7889502 2007-12-22 22:35 libstdc++.a
-rwxr-xr-x 1 root root     943 2007-12-22 22:35 libstdc++.la
lrwxrwxrwx 1 root root      18 2009-11-14 13:03 libstdc++.so -> libstdc++.so.6.0.9
lrwxrwxrwx 1 root root      18 2009-11-14 13:03 libstdc++.so.5 -> libstdc++.so.5.0.6
-rwxr-xr-x 1 root root  730372 2009-09-16 22:59 libstdc++.so.5.0.6
lrwxrwxrwx 1 root root      18 2009-11-14 13:03 libstdc++.so.6 -> libstdc++.so.6.0.9
-rwxr-xr-x 1 root root  918876 2009-09-16 22:58 libstdc++.so.6.0.9
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
loserdog
記事: 29
登録日時: 09/11/15(日) 18:21

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by loserdog »

エラーメッセージが出なくなったからOKというのは・・・
私の分かる範囲で説明しますが、当方PuppyLinux初心者で、本家版、日本語版とも、開発環境等詳細には知らないので、その辺を考慮して読んで下さい。 (ついでに「みのむし」さん、先日は失礼しました。ちょっと言葉が足りなかったかと反省しています。その時は通りすがりに一言という感じでしたが、もう少しPuppyLinux日本語版を学ぼうという気になり、いろいろ読んでいる途中です) ーー ちょっと長くなったので、最後の段落だけ読んでみて下さい。で、分からなかったら残りを読む。

まづ、本家の開発がUbuntuベースに移行したことから、バイナリ(binary executable)とライブラリの両方が、版違い(というか、distro違い)のものが混在している可能性がある。これは理論的には問題ない筈だが、実装段階ではさまざまな理由で「問題無い」事が担保されていない。じっさいglibcやlibc++において、新しい版は古い版を完全にサポートしていなくてはいけないのに、それが守られていなかったケースが過去にある。(<- backward compatibility). これは開発者のモラルの問題だから、われわれユーザにはどうしようもない。(ソースコードがあるんだから、自分で何とかしろって事かな)

しかし今回のように、同じ版で問題が起こるのは本当に問題だ。ただ、可能性としては、ライブラリ作成時にある種の関数を省いたモノを作ったとする。そしてその関数を参照しないアプリケーションを実行するなら問題ない。 また、その関数を参照するものでも、実際にその関数を呼び出す使い方をしなければ問題無い。 実際に、ライブラリーのシンボルを呼び出すコマンドで、両方の版を調べてdiffすれば
分かる。(すみませんが、そのコマンドは失念。ググっても簡単に出てこなかった. たしかplain textの部分を抜き出して パイプ|でソートsortして、diffだったかな)

じっさいglibc++を作成するさい、./configure でversionシンボルをoffにするオプションがあるようだ。 アプリケーションによっては、特定のバージョン意外だと走るのを嫌がって実行できなかったりする。これを防ぐ為のようだ。<ー たんなる予想。

ライブラリのサイズが違う事をシノバーさんが指摘されて居ますが、
一方がubuntuで他方がslackwareならターゲットオプションがi386とi486の違いという事に由来しているのかも知れない。もちろん他のコンパイルオプションを調べる必要がある。

ライブラリの版が一緒で、コンパイルオプションも同じなのにサイズが違う事もある。 考えられる例は、デバグオプションでコンパイルして、コピーを準備。一方はそのまま、他方をstripすれば全く同じでサイズが異なる。 ただし、今回のものはサイズの違いが小さいので、stripの可能性は低い(普通二倍から5倍くらいサイズに差が出る)。

とにかくpup_431.sfs からlibc++をコピーでは全くお門違いの解決方法(というか解決とは言わない)。 geanyをちゃんとdevx_431.sfsを使用してコンパイルし直す事が正解。その為のdevxだと理解しています。 たんなる想像ですが、ビルドマシンでは、その古いlibc++がdevxに含まれているlibc++に上書きされていない状態でコンパイルされたのでは? 特に430以降Initrdのro2の取扱いが変更されたとシノバーさんが指摘されている事から、その変更がされていないマシンでビルドされたと仮定すると、今回の問題の原因が推測できます。 で、生成されたバイナリをpup_431.sfsに入れる時は必ずその時使用したdevxのlibc++をstripして同梱する。 
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 4.3.1JP Final相当 geany 起動時のメッセージ

投稿記事 by シノバー »

シノバー さんが書きました:パピーリナックス4.3日本語版リリースノートの4.3.1日本語版での追加
# メインSFSと追加SFSに同じファイルがあった場合、メインSFSよりも追加SFSが優先する。すなわちpetでインストールしたのと同等。(これまで、メインSFSのファイルはpetでは上書きされるが、追加SFSでは上書きされない)
これですね。
devx_431.sfsに含まれるファイルのうちメインSFSと競合するファイルのどれかに問題があるが、本家版の適用順ではそれが隠蔽されているということではないでしょうか?
う少し丁寧に述べてみます。

本家版/日本語版共通に
  1. メインSFS内の libstdc++.so.6.0.9 のサイズは 918876バイト
  2. devx_431.sfs内の libstdc++.so.6.0.9 のサイズは 806764バイト
メインSFS内のものとdevx内のものが一致していないという、本家(Barryさん)の問題がそもそもです。
これがなぜ起こったのかは詳しく追求せず、とりあえず1では問題なく、2を悪者とします。

本家版と日本語版との違いは initrd.gz(の中にあるinitスクリプト)にあります。
メインSFSとdevxをともに使った場合、本家版は 1を採用します。
これに対し日本語版では 2を採用します。
結果本家版ではエラーメッセージは出ないが日本語版では出る(それ以外の不具合はいまのところ発見されていない)。

日本語版initがなぜ2を採用するのか、メインSFSのファイルを追加SFSのファイルで置き換えることができるのかというと、それにはメリットからです。

たとえばメインSFSに問題があったとき、修正PETは作れるが、本家版だと修正SFSというものは使えません。メインSFSのファイルをPETは上書きできるが、追加SFSはできないからです。
たとえば NVIDIAグラフィックドライバのPETというものがあります。これをSFSにしたものを作った場合、日本語版なら適用できますが本家版には適用できません。NVIDIAドライバを動作させるにはメインSFS内の一部モジュールを入れ替える必要があるからです。

それ(日本語版init)が便利だというものもありますが、PETとSFSで適用のされ方が(本家のinitでは)変わるというのを私は嫌います。

日本語版initのこのような動作は 4.3.1JP-beta版以降でテスト中のものです。devxにからむ今回のものは些細な問題と認識しています。しかし、ほかに深刻な問題があるようなら撤回しなければいけません。
The bar master, Shino's Bar
http://shinobar.net/
返信する