7

OSX Mavericks にアップグレードした後、DBI/DBD を実行できません。

Perl と MySQL は正常に動作しています (mysql にログインしてテーブルにアクセスできます) が、アップデーターが以前に動作していた Perl モジュールをすべて削除したため、Perl スクリプトは DBI を使用できなくなりました。

/opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/ にインストールされた CPAN を使用して、DBI と DBD::mysql を再インストールしました。モジュール (DBI、DBD、および「auto」内のすべて) を /Library/Perl/5.16/darwin-multi-2level/ にコピーした後 (cpan で使用されるディレクトリが @INC にないため)、スクリプトは内部サーバー エラー ( FatalsToBrowser でも)。

Apacheエラーログには次のように書かれています:

dyld: lazy symbol binding failed: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace

dyld: Symbol not found: _Perl_Istack_sp_ptr
Referenced from: /opt/local/lib/perl5/site_perl/5.12.4/darwin-multi-2level/auto/DBI/DBI.bundle
Expected in: flat namespace
Premature end of script headers: test.pl

ここで何が問題なのですか?ファイルをコピーしたからでしょうか?CPAN を強制的に /Library/Perl/5.16/ に直接インストールするべきでしょうか? どうすればCPANにそうするように伝えることができますか?

何か案は?

4

7 に答える 7

10

Apple は、OS をアップグレードするときに Apache、PHP、または Perl に対して行う変更を気にしないため、私は Mavericks にアップグレードしていません。それらはすべて削除されるだけです。次のリストがうまくいくかどうかはわかりませんが、Lion と Mountain Lion ではうまくいきました。

  • 開始する前に、MySQL x86 64 ビットを適切にインストールして構成する必要があります。
  • App Store から XCode をインストールします。
  • XCode で、Preferences / Downloadsメニューを開き、Command Line Toolsをインストールします。

DBI をインストールします。

  • 次のコマンドでcpanmをインストールしますsudo cpan App::cpanminus
  • DBI をインストールします: sudo cpanm DBI.

DBD::mysql をインストールします。

  • CPAN から必要なファイルを取得します。CPAN ターミナルを開きますsudo perl -MCPAN -e 'shell'
  • 次に、次のコマンドを実行します:get DBD::mysqlおよびexit.
  • Mac 上の MySQL は Linux とは異なる方法でインストールされるため、コンパイルする前にいくつかのエイリアスを作成する必要があります。少なくとも、以前の OS X バージョンではこれが当てはまりました。

cd /usr/ローカル

sudo mkdir lib

CDライブラリ

sudo ln -s /usr/local/mysql/lib/*.dylib .

  • 最後に、ライブラリをインストールしてコンパイルする必要があります。

CD ~/.cpan/build/DBD*/

sudo perl Makefile.PL --testuser='yourmysqluser' --testpassword='yourmysqlpassword'

須藤メイク

sudo make テスト

sudo make install

ではcd ~/.cpan/build/DBD*/*CPAN からダウンロードしたばかりのファイルへの実際のパスを記述する必要があることを意味します。ディレクトリの名前は最新のバージョンによって異なりますが、単純なls.

これがうまくいくことを願っています。


編集

これは私が何度か失敗して作成したものですが、ソースに名前を付ける必要があると思います。

http://bixsolutions.net/forum/thread-8.html

http://coolestguyplanettech.com/downtown/install-and-configure-apache-mysql-php-and-phpmyadmin-osx-108-mountain-lion

警告: mysql_connect(): [2002] そのようなファイルまたはディレクトリはありません (unix:///tmp/mysql.sock 経由で接続しようとしています)

于 2013-10-24T12:57:32.733 に答える
0

Mavericks は Perl 5.16 をインストールしますが、以前の 5.12 バイナリは削除しません。さらに、Perl 5.12 の追加のコピーを保持する他のソフトウェアをインストールしまし/opt/local/binた (MacPorts だったと思います。おそらく cpan のインストールに使用しました)。このディレクトリは私の bash プロファイルにリストされていました。

これは、バイナリのコンパイルに CPAN が 5.12 を使用し、Apache が 5.16 を使用したことを意味します。これが、Web スクリプトがクラッシュしている間、ターミナルでいくつかのことが機能した理由です。

DBI と DBD を手動で削除/opt/local/binして再インストールすると、最終的に問題が解決しました。$PATH

于 2014-01-10T22:56:00.357 に答える
0

Mavericks OS でもこの問題に直面しました。私にとってうまくいった解決策は、ネットで見たいくつかのものを組み合わせたものでした:

  1. コマンド ライン ツールの最新バージョンをインストールします (Apple Web 開発者サイト)。
    $sudo perl -MCPAN -e shell

  2. DBI および DBD:mysql モジュールを cpan で再インストールします。ここで、リポがクラッシュするという問題に直面しました。

  3. CommandLineTools lipo の最新バージョンを使用します。
    $sudo mv /usr/bin/lipo /usr/bin/lipo.orig
    $sudo ln -s /Library/Developer/CommandLineTools/usr/bin/lipo /usr/bin

  4. 最後に、 DBI 、 DBD:mysql モジュールを cpan install DBI 、 cpan install DBD::mysql を使用して再インストールします。

于 2013-11-26T02:37:18.403 に答える
0

カスタムポートを使用してOS X 10.9にアップグレードしたとき、既存のMySQL構成がありました(Boxenを使用しています)。私にとって最も簡単な方法は、ソースのインストールでした。

# extract the archive, etc.    
perl Makefile.PL --testuser=myuser --testpassword=pass --testport=13306
make
make test
# if all went well with the test
make install
于 2013-11-14T21:35:46.390 に答える
0

私にとっては、このstackoverflowページで説明されているように、MySqlを完全にアンインストールし、代わりに古い32ビットバージョンをインストールすることになりました: MySQL pidが終了しました(mysqlを開始できません)

次に、ターミナルに次のように入力するだけで、Perl を 32 ビット モードで実行する必要があります ( AskDifferentの Simon の功績によるものです)。

defaults write com.apple.versioner.perl Prefer-32-Bit -bool yes
于 2014-08-17T13:17:32.947 に答える