mp3splt を実行して “undefined symbol: mp3splt_u_check_if_directory” と出力されたときの対処法

公開日: : 最終更新日:2014/08/14 プログラム , , ,

mp3 ファイルを分割してくれる mp3splt というライブラリがあります。

mp3 ファイルを分割したい要件があったので動作検証してみると “undefined symbol: mp3splt_u_check_if_directory” と出力されてエラーになってしまいました。この記事はこのエラーの対処法です。

同じエラーメッセージでも環境によってこの記事の内容では解決しない場合もあるかと思うので、環境についてもメモしておきます。

icatch-medium_4301351732

photo credit: Philippe Put via photopin cc

目次

1. mp3splt を実行した環境

実行環境は 64 ビット版の CentOS 6.5 です。さっさと OS のインストールを終わらせたかったので “Minimal” でインストールしました。

インストール後に行った設定は、別記事で紹介した以外のものだけです。

  1. 検証用の CentOS をインストールした直後に行う初期設定手順
  2. yum のリポジトリ ATrpms を参照できるように設定する

なので、ほぼ何も入っていない状態に近いと思います。

2. 原因は最新バージョンの mp3splt ではないから?

上の設定で、ATrpms リポジトリを追加したのは、mp3splt は yum の ATrpms リポジトリで入手できると CentOS のフォーラムに書いてあったからです。

ATrpms リポジトリはデフォルトで disabled にしてあるので、yum を次のように実行しました。

[hoge@CentOS6 ~]$ sudo yum --enablerepo=atrpms -y install mp3splt
:
:
Installed:
  mp3splt.x86_64 0:2.4.1-9.el6                                                                      
Dependency Installed:
  flac.x86_64 0:1.2.1-6.1.el6                     libid3tag.x86_64 0:0.15.1b-11.el6                
  libmad0.x86_64 0:0.15.1b-4.el6                  libmp3splt.x86_64 0:0.9.0-13.el6                 
  libogg.x86_64 2:1.1.4-2.1.el6                   libtool-ltdl.x86_64 0:2.2.6-15.5.el6             
  libvorbis.x86_64 1:1.2.3-4.el6_2.1             

Complete!

インストールできたので、再生時間15分の mp3 ファイルを5分間隔で分割するために以下のコマンドを実行してみると、、、

[hoge@CentOS6 mp3splt]$ mp3splt 15min.mp3 -t 5.00
mp3splt 2.4.1 (14/11/11) - using libmp3splt 
        Matteo Trotta <mtrotta AT users.sourceforge.net>
        Alexandru Munteanu <io_fx AT yahoo.fr>
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Searching for plugins ...
Scanning plugins in the directory _/usr/lib64/libmp3splt0_
Looking at the file _libsplt_mp3.so.0_

Looking at the file _libsplt_ogg.so.0.0.0_

Looking at the file _libsplt_flac.so.0.0.0_

Looking at the file _libsplt_ogg.so.0_

Looking at the file _libsplt_mp3.so.0.0.0_

Looking at the file _libsplt_flac.so.0_

Checking if _/usr/lib64/libmp3splt0/libsplt_mp3.so.0_ is like _/usr/lib64/libmp3splt0/libsplt_ogg.so.0_ 
Checking if _/usr/lib64/libmp3splt0/libsplt_flac.so.0_ is like _/usr/lib64/libmp3splt0/libsplt_ogg.so.0_ 
Checking if _/usr/lib64/libmp3splt0/libsplt_flac.so.0_ is like _/usr/lib64/libmp3splt0/libsplt_mp3.so.0_ 
Scanning plugins in the directory _/home/hoge/.libmp3splt_
Scanning plugins in the directory _./_

Trying to open the plugin _/usr/lib64/libmp3splt0/libsplt_ogg.so.0_ ...
 - success !

Trying to open the plugin _/usr/lib64/libmp3splt0/libsplt_mp3.so.0_ ...
 - success !

Trying to open the plugin _/usr/lib64/libmp3splt0/libsplt_flac.so.0_ ...
 - success !

Number of plugins found: _3_
plugin filename = _/usr/lib64/libmp3splt0/libsplt_ogg.so.0_
plugin name = _ogg vorbis (libvorbis)_
plugin version = _1.000000_
extension = _.ogg_

plugin filename = _/usr/lib64/libmp3splt0/libsplt_mp3.so.0_
plugin name = _mp3 (libmad)_
plugin version = _1.000000_
extension = _.mp3_

plugin filename = _/usr/lib64/libmp3splt0/libsplt_flac.so.0_
plugin name = _flac (libflac)_
plugin version = _1.000000_
extension = _.flac_

Setting silence log fname to _mp3splt.log_
mp3splt: symbol lookup error: mp3splt: undefined symbol: mp3splt_u_check_if_directory

っと、この記事のタイトルにもなっているように “undefined symbol: mp3splt_u_check_if_directory” と出力されエラーになってしまいました。。。

そこで、このエラーメッセージで検索してみると、mp3splt の メーリングリスト に次の書き込みを見つけました。

rhel6 is difficult to maintain, because the environment is “too old”. However, I have several versions, and maybe one works for you. If you could check which works, I can update the packages in ATrpms.

mp3splt / Mailing Lists

意訳すると、「古いから他のバージョンを試してみろよ」って感じでしょうか。
それが解決策だっていうのは何だか釈然としませんが、分割できればいいので素直に最新の mp3splt を入れ直すことにしました。

3. RPM から最新バージョンの mp3splt をインストールする

メーリングリストの書き込みに最新の mp3splt の RPM を配布しているサイトのリンクが載っていました。
ここにもそのサイトのリンクを貼っておきます。

まずは、yum でインストールした mp3splt をアンインストールします。

[hoge@CentOS6 mp3splt]$ sudo yum remove mp3splt
:
:
Removed:
  mp3splt.x86_64 0:2.4.1-9.el6                                                                      
Complete!

次に RPM を wget でダウンロードします。

[hoge@CentOS6 mp3splt]$ wget http://orion.lcg.ufrj.br/RPMS/myrpms-el6-x86_64/lcgrpms/mp3splt-2.6-13.el6.x86_64.rpm
:
:
2014-08-05 05:01:48 (28.5 KB/s) - `mp3splt-2.6-13.el6.x86_64.rpm' へ保存完了 [54164/54164]

最後にこの RPM を rpm コマンドでインストールします。

[hoge@CentOS6 mp3splt]$ sudo rpm -ivh mp3splt-2.6-13.el6.x86_64.rpm
警告: mp3splt-2.6-13.el6.x86_64.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 5549a96e: NOKEY
準備中...                ########################################### [100%]
   1:mp3splt                ########################################### [100%]

これで最新版の mp3splt に置き換わりました。

4. mp3splt を使って mp3 ファイルを5分間隔で分割する

最新版の mp3splt をインストールしたので、先ほどもチャレンジしたように mp3 ファイルを5分間隔で分割してみます。

[hoge@CentOS6 mp3splt]$ mp3splt 15min.mp3 -t 5.00                         
mp3splt 2.6 (20/07/13) - using libmp3splt 0.9.0
        Matteo Trotta <mtrotta AT users.sourceforge.net>
        Alexandru Munteanu <m AT ioalex.net>
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
 Processing file '15min.mp3' ...
 info: file matches the plugin 'mp3 (libmad)'
 info: MPEG 1 Layer 3 - 48000 Hz - Joint Stereo - 128 Kb/s - Total time: 15m.00s
 info: starting time mode split
   File "15min_00m_00s__05m_00s.mp3" created                   
   File "15min_05m_00s__10m_00s.mp3" created                   
   File "15min_10m_00s__15m_00s.mp3" created                   
   File "15min_15m_00s__15m_00s_9h.mp3" created                
 time split ok

今度は見事に成功して分割されました。
分割された mp3 を再生してみましたが、確かに5分で分割されていました。

5. まとめ

以上、”undefined symbol: mp3splt_u_check_if_directory” と出力されたときの対処法でした。

  • mp3splt は ATrpms リポジトリからでもインストールできる
  • yum でインストールされるライブラリは常に最新版とは限らないようだ
  • yum を使って最新版のライブラリをインストールしたい場合は、ひとまず配布されているライブラリのバージョンを確認する

6. その他 Linux に関する記事

その他の Linux に関する記事は次の通りです。
気になる記事があったらぜひチェックしてみてください!

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch-2015-006-1

バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増えた。だが、アノテーションで実装

記事を読む

icatch-_9692711856-resized

シェルスクリプトでメールを送信する

このブログを運用している Linux サーバの監視スクリプトを作成した記事を書きました。 ロード

記事を読む

no image

GoogleGuavaのRangeを使って範囲判定を簡潔に書く

次のような判定処理を if 文で書くことがよくある。 もし 100 よりも大きければ(=大小判定

記事を読む

icatch-back-scratcher_3553512020_mini-thumbnail

Sublime Text3 で JavaScript を書くために設定したプラグインとキーバインド

プロフィール にもあるように、ボクは Java をメインとしたプログラマです。 IDE には Ecl

記事を読む

icatch_4365495446-resized

CentOS6.5にGitをソースコードからインストールする

CentOS 6.5 の64ビット版を "Minimal" でインストールした環境で、git sta

記事を読む

icatch-8587724648_24926df337_z-resized

yum のリポジトリ ATrpms を参照できるように設定する

あるツールの動作検証をしようと調べたところ、そのツールは ATrpms リポジトリが提供しているとの

記事を読む

icatch-thumbup_3507728739_mini-thumbnail

Sublime Text3 に SublimeLinter-jshint をインストールしてみた

エディタに Eclipse を使って Java のプログラムを書くことが多いんですが、JavaScr

記事を読む

icatch_5428744075-resized

scp を使ってファイルのコピーを実行したら “command not found” と表示されたときの対処法

CentOS が起動しているサーバに scp を使ってファイルをコピーしようとコマンドを実行したら

記事を読む

no image

より安全にパスワードを保存するために考えること

知ってる人にとっては当たり前のことだろうが、あまり深く考えたことがなかったので調べてみた。 前提

記事を読む

20140811-00

64ビット版のCentOSをVMwareにインストールできない場合の対処法

Linux で検証したい作業が多かったので VMware に検証環境を作りました。OS は Cent

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


八 × 8 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑