macでmkpasswd
brew install expect
こんだけ。
私的には、
mkpasswd -2 -l 12
とかって感じでよく使ってた記憶がありますね。
アーカイブ : 2013年 4月
brew install expect
こんだけ。
私的には、
mkpasswd -2 -l 12
とかって感じでよく使ってた記憶がありますね。
winをmacに移行したり、色々やった弊害なのか、
それとも開発環境を急に膨らませた弊害なのか、
eclipseが起動しなくなった。
.snapも見つからなかったので、潔くworkspace内の.metadataを削除して
起動するようになった
…というものの、プロジェクトを全てインポートし直さないといけなかったが。
とりあえず痛手になる程ではなかったのでひと安心。
今までは、ノートPC2台を使用していたんだが、
ついに1台に統合する日がやってきた…という所でしょうか。
…まぁ、まだ作業途中ですが。
今までは
【Windows7】hp ProBook 4515s
【Mac os X】MacBook Pro (15-inch ,Mid 2012)
の2台を使用していたのだが、
「Parallels Desktop」なるものを使用すれば、
Windows環境をそっくりそのままMacに移行できる。
…というか、できた。
Parallels Desktop
http://trial.parallels.com/?terr=jp&lang=jp
要は仮想PCですね。
でもこれ、むっちゃ凄いです。
何が凄いって、既に稼働しているWindows環境をそのまま持ってこれる。
これをインストールして、Windows側には
Parallels Transporter Agent for Windowsをインストールする。
(ココの下のほうにある)
で、後はMacはParallels Desktopを、WinはParallels Transporter Agentを起動して
Windowsをそっくりそのままmacに移動させてくる。
…とは言っても、むちゃむちゃ時間かかります。
うちの環境では16時間くらいかかりました。
そして、入れた後にバーチャルPCがネットに繋がらなくて少し苦労しました。
ここに解決方法があったので、手順通りにデバイスマネージャからドライバ削除をして
ちゃんとネットに繋がりました。
で、ネットに繋がると同時にMac側にも恩恵が!
MacのDock内に「Windows 7 Applications」とか出て、一発でWindowsのアプリが起動できます。
仮想PCが起動していない場合、仮想PCの立ち上げから自動でやってくれます。
仮想Windows7のライセンス認証も普通に通ったし、
今の所なんにも問題なし!
これで、ProBook 4515sには完全なバックアップ機として暫く眠ってもらえるようになりました。
そして完全にメイン機はMacBook Proになりましたね。
…必要になったらMacBook Proの中で疑似ProBook 4515sを動かすんですけどね。
いやぁ、BootCamp使うか?とか色々考えていたんですが。
多分こっちが正解だと思う。早めに正規版に上げたいなぁ。
今回、freetype2の一件で時間的&精神的にダメージを食らったので、
同じ事を繰り返さない様に、簡易チェッカーを作ってみた。
実行するとこんな感じになる。
このチェッカーについては、一応ちゃんと動作試験済み。
ただ、「じゃあ実際に必須ライブラリ・任意ライブラリがないと動かないのかどうか」は
知りません。試す気もないですw
適当に保存してPHPとして動かせば、結果がすぐに見れます。
<?php /** * EC-CUBE ソフトウェア要件チェック * Copyright(c) 2013 project-toa Inc. All Rights Reserved. * @version 201304070000 * ソフトウェア要件を一発でチェックする為のものです。 * 適当にウェブサーバにアップして閲覧して下さい。 */ ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <title>EC-CUBE ソフトウェア要件チェック</title> <style type="text/css"> <!-- div#body{margin:20px 50px;} h1{font-size:24px;} p{margin:10px;} div#caution { width:600px; font-size:12px; border:1px solid #000000; } div.border{ width:424px; border:1px solid #000000; margin-bottom:10px; } div.float{ width:200px; height:20px; padding: 5px; float:left; border:1px solid #000000; } br.both{ clear:both; } --> </style> </head> <body> <div id="body"> <h1>EC-CUBE2.12系 ソフトウェア要件チェック</h1> <div id="caution"> ※このチェックツールは、2013/04/07時点のEC-CUBE ver2.12系に対する<br /> ソフトウェア要件に基づいて制作されています。<br /> 最新のソフトウェア要件については、<a href="http://www.ec-cube.net/product/system.php" target="_blank">公式サイト</a>より確認して下さい。<br /> また、「WEBサーバ」「言語」「データベース」の項目につきましては別途ご確認下さい。 </div> <p>1.必須PHPライブラリ</p> <div class="border"> <div class="float">pgsqlまたはmysql</div> <div class="float">pgsql : <?php if(function_exists('pg_connect')){ ?>○<?php }else{ ?>×<?php }?> / mysql : <?php if(function_exists('mysql_connect')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">gd</div> <div class="float"><?php if(function_exists('gd_info')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">freetype2</div> <div class="float"><?php if(function_exists('gd_info')){$gd_info = gd_info();if($gd_info['FreeType Support']){ ?>○<?php }else{ ?>×<?php }}else{ ?>×<?php }?></div> <br class="both" /> <div class="float">mbstring</div> <div class="float"><?php if(function_exists('mb_get_info')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">zlib</div> <div class="float"><?php if(function_exists('gzopen')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">ctype</div> <div class="float"><?php if(function_exists('ctype_alpha')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">spl(PHP5.3.0未満の場合)</div> <div class="float"><?php if(function_exists('spl_classes')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">session</div> <div class="float"><?php if(function_exists('session_cache_expire')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> </div> <p>2.推奨PHPライブラリ</p> <div class="border"> <div class="float">JSON</div> <div class="float"><?php if(function_exists('json_encode')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">xml</div> <div class="float"><?php if(function_exists('xml_set_object')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">OpenSSL</div> <div class="float"><?php if(function_exists('openssl_sign')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">cURL</div> <div class="float"><?php if(function_exists('curl_init')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">hash</div> <div class="float"><?php if(function_exists('hash')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">mhash(PHP5.3.0未満の場合)</div> <div class="float"><?php if(function_exists('mhash')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">mcrypt</div> <div class="float"><?php if(function_exists('mcrypt_generic')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> <div class="float">zip</div> <div class="float"><?php if(function_exists('zip_open')){ ?>○<?php }else{ ?>×<?php }?></div> <br class="both" /> </div> </div> </body> </html>
なんか色々納得いかないなぁと思いつつ、とりあえず自分でソース書いてみた。
/data/page_extends/admin/total/LC_Page_Admin_Total_Ex.php
function init() { parent::init(); // ここから追記 // GDライブラリのインストール判定をより強固に if($this->install_GD) { // FreeTypeが入っていない場合、$this->install_GDをFALSEにする $gd_info = gd_info(); $this->install_GD = $gd_info["FreeType Support"] ? true : false; } // ここまで追記 }
何が言いたいかというと、
なんでGDライブラリが入っているかどうかのチェックはしているのに
freetypeが入っているかどうかのチェックは行っていないのか、ということ。
おかげで、「GDが入っていてもfreetypeが入っていない」環境で統計を開こうとしても
freetype系の処理がエラーになる。
そのくせ、GDが入ってない環境ならエラーにならない(はず)。
というかそもそも「必須PHPライブラリ」って書かれているのに
インストール時にチェックされないよね。。。。。
wordpressだっけ、インストール時にきっちりチェックしてくれるの。
ああいう感じにしたらいいのに。
おかげで何が悪いのか調べるのに結構な時間を要した。
これってどうなの!
…と言いつつ、今は忙しいから開発コミュニティに情報を投げたりしないんだが。
忙しくなくなったら投げるでしょう。きっと。
前回の記事を踏まえて、実作業。
コピーした環境で上げるので、バックアップについては省略します。
【2.12.1→2.12.2】
ファイル数はそんなに多くなかったので、そこまで手間ではなかった。
5〜10分くらいですかね。
動作試験してみると、2.12.3に少し近い感じがするというか、
2.12.2では直っていない不具合が改善されていたりする。
リリース版よりも少しだけ2.12.3に近い、といった所ですかね。
【2.12.2→2.12.3】
ファイル数が多すぎて、30分以上かかったでしょうか…。
テンプレートなどの書き換えをしないように留意して作業しないとなので
かなり気を遣って作業しました。
それにしても、全部手動でマージは手間ですね。
何かスクリプト書いて一括で…ってできたら楽なんでしょうけど。
スクリプトを書く気力もないので、とりあえずやめておきました。
こちらはリリース版の2.12.3と全く同じ感じですが、
いかんせん、とにかく膨大なファイル量だったので
「こんなに頑張ってやる価値あるんだろうか」と少し思いました。
そして、何故か管理画面の売上集計機能でエラーが出た。
2.12.2と2.12.3では出ないのに、2.12.2→2.12.3ではエラーが出るという事は
何かが悪いんだろうけど、ソースの比較をしまくってもわからなかった。
とりあえず、/data/class/pages/admin/total/LC_Page_Admin_Total.phpだけ
2.12.2に戻したら動いたので、それで良いや、ということにした。
あ、どちらのアップデートにも言える事ですが、
独自改修している場合は、当該部分には相当気を遣う必要がありますね。
/data/class_extends内に独自改修していたとしても
class内の元ファイルが更新されているから動作しなくなった、という事は
十分に考えられるので、独自改修していた部分は入念に動作試験したほうが
良い、という事ですかね。
…ついでに、2.12.3の更新ではclass_extends内のファイルも更新対象になっているので
独自改修自体を上書きしてしまわないように、とかですか。
とりあえず、疲れたので今回はここで終了で…。
※実際にこの手順で作業して失敗しても当方は責任を負えませんのでご了承下さい。
EC-CUBE2.12系について私的メモ。
私はあまり今までEC-CUBEに携わってこなかったので、基礎知識が全くないんです。
で、マイナーバージョンアップについての記載がほとんどないので、
「実際何が修正されてるの?」「で、上書きするだけでいいの?」とかが
情報が少ないこともあり、わからなさすぎて困ったわけで。
が、現状で実際に2.12.1 & 2.12.2の管理画面等で不具合に遭遇したりして、不便を感じる。
さっさと2.12.3に上げてしまいたい…。
でも開発コミュニティ内では何やら難しい事が書かれている。
そもそも「難しそう」というか、「じゃあどうすればいいのさ」の答えがどこにもなかった。
ので、面倒だと思いつつ、いろいろ調べてみた。
EC-CUBEのダウンロードページ下部より抜粋
http://www.ec-cube.net/download/
EC-CUBE のバージョン番号は aa.bb や aa.bb.cc の形式になります。
「aa」 は、設計思想を含めた大幅なバージョンアップで更新されます。「bb」 は、機能追加を伴うバージョンアップで更新されます。
(データベース構成やテンプレートファイルの変更を伴います。)「cc」 は、バグフィックス等の機能追加を伴わないバージョンアップで更新されます。
(データベース構成やテンプレートファイルの変更は基本的に実施されません。)
ということは、マイナーバージョンアップは基本的にファイル上書きするだけじゃん。
なんだったんだよあの思わせぶりな書き込みは…と思いつつ、それでも不安だったので
もう少し掘り下げて調べてみた。
【2.12.1→2.12.2】
更新ファイル
http://www.ec-cube.net/download/からダウンロードできる
修正概要(開発trac内)
http://svn.ec-cube.net/open_trac/query?status=closed&group=resolution&milestone=EC-CUBE2.12.2
修正詳細(開発trac内)
http://svn.ec-cube.net/open_trac/changeset?old_path=%2Fbranches%2Fversion-2_12-dev&old=21959&new_path=%2Fbranches%2Fversion-2_12-dev&new=22009
…詳細を流し読みした限りでは、typo修正などの小さめの修正が多めのようですね。
念のために2.12.1と2.12.2で/html/install/sql/create_table_mysql.sqlを比べてみましたが
全く同じ内容だったので、DBに変更がないのも確認できました。
/data/Smarty/templates内の各種ファイルは運用中のものを上書きしないように気をつけないといけないですが、
それ以外は普通に上書きして問題なさそうですね。
何かあってからでは困るから、ちゃんと手順を踏む!という事で作業手順を考えてみますと、
1.EC-CUBEで使用しているデータベースと全ファイルをバックアップする
2.更新ファイル内のdataフォルダ内の各ファイルをマージする
3.動作試験を行う
…という感じでしょうか。
正直データベースはバックアップ取る必要あるんだろうかとも思いましたが、
何かあった際に2.12.1に戻せる、という状態を作っておく事が肝要なので
実際に作業するとしたら、こんな感じになるでしょう。
留意点としては、2.12.1内で独自で改修した部分があれば、それを上書きしてしまわないように
別途注意が必要、というところでしょうか。
※後日、実作業するので何かあれば追記します
【2.12.2→2.12.3】
更新ファイル
http://www.ec-cube.net/download/からダウンロードできる
修正概要(開発tracのチケット)
http://svn.ec-cube.net/open_trac/query?status=closed&group=resolution&milestone=EC-CUBE2.12.3
修正詳細(開発trac内)
http://svn.ec-cube.net/open_trac/changeset?old_path=%2Ftags%2Feccube-2.12.2&old=22013&new_path=%2Ftags%2Feccube-2.12.3&new=22513
こちらは詳細が読みにくいですね…。
色々見てみた限りでは、開発中に年を越した都合でCopyright更新があり、
多めのファイル更新になっているようです。
が、他もそこまで重度の更新はないように見えます。
こちらも念のために2.12.2と2.12.3で/html/install/sql/create_table_mysql.sqlを比べてみましたが
全く同じ内容だったので、DBに変更がないのも確認できました。
ということで、こちらも2.12.1→2.12.2同様、運用中のテンプレート上書きや独自改修部分の上書きに
気をつけて手動マージで問題なさそうです。
1.EC-CUBEで使用しているデータベースと全ファイルをバックアップする
2.更新ファイル内のdataフォルダ内とhtmlフォルダ内の各ファイルをマージする
3.動作試験を行う
ですかね。
まぁ、細かい事を言うならば/html/installフォルダとかは入れる必要ないと思いますが。
※後日、実作業するので何かあれば追記します
2.12.1→2.12.2→2.12.3と、2.12.2→2.12.3と、2.12.3の3本で動作比較する予定です
Homebrewでapacheを入れたは良いが、virtualhost系で困ったので追記。
eclipseのworkspaceはDocument内。
ということで、例えばexample.comの公開ディレクトリを
/Users/XXXXXX/Documents/workspace/YYYYYYYYYYYY/trunk
にしたかったんだけど。
パーミッションの関連でうまく動いてくれない。
かといって、パーミッション側をいじるのも面倒。
ということで、httpd.confをいじって回避することにした。
apacheを動かすUserとGroupを
User XXXXXX
Group Staff
としてやった。
これで見れるので、とりあえず良しとしようかと。
また何か問題が出たら、そのときに考えようと思う。
その時はeclipseのワークスペース設置箇所から変更だな。
やっとこさ、実用レベルのPHPが入れられそうなので。
ここまでの経緯は、macでPHP開発環境の構築とmacでPHP環境構築の続き。を参照。
2013/4/3段階の最新版のPHPは5.4.13と5.3.23。
php-buildには記述がないバージョンなので、それぞれ記述する。
/usr/local/share/php-build/definitions/5.4.13
install_package “http://php.net/distributions/php-5.4.13.tar.bz2”
install_pyrus
install_xdebug_master
/usr/local/share/php-build/definitions/5.3.23
install_package “http://php.net/distributions/php-5.3.23.tar.bz2”
install_pyrus
install_xdebug_master
こんな感じ。
いずれはここからPHP5.1.6と5.2.17も入れたいが、とりあえず今は5.3系と5.4系だけで。
さて、ここで少し脱線。
EC-CUBEを入れる前提でやっているのだが、このまま入れるとPHPからfreetype2が使えない。
freetype2自体はXCodeにも入ってるみたいだけど、何か変更があると嫌なのでHomebrewで入れて、
そこにパスを通してPHPのconfigureを構築しようと思う。
XCodeで入れるって人はここを省略して下へ…。
freetype2をHomebrewで入れる方法はこちらを参照。
/usr/local/Library/Formula/freetype2.rb
require 'formula' class Freetype2 <Formula url 'http://sourceforge.net/projects/freetype/files/freetype2/2.4.4/freetype-2.4.4.tar.gz/download' homepage 'http://freetype.sourceforge.net/index2.html' md5 '9273efacffb683483e58a9e113efae9f' version '2.4.4' # depends_on 'cmake' def install system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}" # system "cmake . #{std_cmake_parameters}" system "make install" end end
上記を設置してから、
brew install freetype2
で完了。
次はPHPのconfigureを書きます。
/usr/local/share/php-build/default_configure_options
–without-pear
–with-gd
–enable-sockets
–with-jpeg-dir=/usr
–with-png-dir=/usr
–enable-exif
–enable-zip
–with-zlib
–with-zlib-dir=/usr
–with-kerberos
–with-openssl
–with-mcrypt=/usr
–enable-soap
–enable-xmlreader
–with-xsl
–enable-ftp
–enable-cgi
–with-curl=/usr
–with-tidy
–with-xmlrpc
–enable-sysvsem
–enable-sysvshm
–enable-shmop
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
–with-pdo-sqlite
–enable-pcntl
–with-readline
–enable-mbstring
–disable-debug
–with-apxs2=/usr/local/sbin/apxs
–with-freetype-dir=/usr/local/include/freetype2
うちの場合はこんな感じ。
freetype2をXCodeのものを使う場合は、最終行が
–with-freetype-dir=/opt/X11/include/freetype2
って感じになるのではないかと。
実際に追記したのは下の2行だけなので、他は必要があれば書き換える感じですかね。
ではインストール。
PHP5.4.13から。
php-build 5.4.13 ~/.phpenv/versions/5.4.13 mv /usr/local/Cellar/httpd/2.2.23/libexec/libphp5.so ~/.phpenv/versions/5.4.13
これでOK。
続いてPHP5.3.23。
php-build 5.3.23 ~/.phpenv/versions/5.3.23 mv /usr/local/Cellar/httpd/2.2.23/libexec/libphp5.so ~/.phpenv/versions/5.3.23
これでOK。
phpenv versionsでちゃんと入ってるか確認して、
phpenv global 5.4.13とかやってCLI側を切り替えて、
php -vでCLI側のバージョン切り替わるか確認して、
phpenv apache-version 5.4.13とかやってapache側を切り替えて、
phpinfo.phpとか作ってapache側のバージョン切り替わるか確認して。
…確認作業についてはサラっと流しました。
細かい確認としては、phpinfoを見る時にGD内のFreeType Support欄があるかどうか、ですかね。
やっとここまで来ました…。
apacheの設定とかも必要ですが、とりあえずPHPに関しては相当カスタマイズできる環境ができたので
うれしい限りです。
なにせ、同じPHPのバージョンでもconfigure optionを変えた版、とかも作って置いておけますしね。
phpenv + php-build、最高です。
以前の記述の追加で。
こことかこことかここを参考にさせて頂いて、macで複数バージョンのPHPを入れるということでがんばってみた。
◆事前準備
brew tap Homebrew/dupes
brew tap josegonzalez/php
◆ついでなのでapacheもbrewから入れておく
brew install httpd
うちの環境ではhttpd.confは/usr/local/etc/apache2/httpd.confにありました。
◆phpenv
brew install –HEAD phpenv
その後、.bashrcに
# phpenv
export PATH=”$HOME/.phpenv/bin:$PATH”
eval “$(phpenv init -)”
と追記して、
source
~/.bashrc
と叩いて読み込み直しして完了、だと思う。
◆php-build
brew install php-build
# php-buildのPATHを追加
$
vi
~/.bashrc
export
PATH=
/usr/local/bin
:$PATH
# 設定したPATHの設定を有効にする
$
source
~/.bashrc
上記を入れて、その後php-buildから各バージョンのPHPを入れる。
php-build X.X.X ~/.phpenv/versions/X.X.X
mv (生成したlibphp5.soのパス) ~/.phpenv/versions/X.X.X
っていう感じで。
php-build –definitions
で出てくるリストは、
/usr/local/share/php-build/definitions
内に追記すれば自分で追加できる。
最新のものとか、ベータ版とか入れる時には自分でここに入れると良いかも。
で、最終的にいろいろやってインストールできたら、
phpenv versions
でインストールされているものが確認できて、
phpenv global X.X.X
でCLI側のPHPが切り替えできる。
CLI側で使用しているPHPのバージョンを調べるのは簡単で、
php -v
って叩けば出てきてくれる。
けど、apache側は上記では切り替えできないので、それ用のスクリプトを用意する。
~/.phpenv/libexec/rbenv-apache-version
#!/usr/bin/env bash
set
-e
[ -n
"$RBENV_DEBUG"
] &&
set
-x
# Provide rbenv completions
if
[
"$1"
=
"--complete"
];
then
echo
system
exec
rbenv-versions --bare
fi
RBENV_VERSION=
"$1"
RBENV_ON_FILE=
"${RBENV_ROOT}/versions"
APACHE_ROOT=
"/usr/local/Cellar/httpd/2.2.22"
APACHE_MODULE_PATH=
"${APACHE_ROOT}/libexec"
# Make sure the specified version is installed.
RBENV_PREFIX_PATH=
"${RBENV_ROOT}/versions/${RBENV_VERSION}"
if
[ ! -d
"$RBENV_PREFIX_PATH"
];
then
echo
"rbenv: version \`${RBENV_VERSION}' not installed"
>&2
exit
1
fi
PHP_MODULE_PATH=
"$RBENV_PREFIX_PATH/libphp5.so"
if
[ ! -f
"$PHP_MODULE_PATH"
];
then
echo
"apache module not found \'${PHP_MODULE_PATH}'"
>&2
exit
1
fi
if
[ ! -d
"$APACHE_MODULE_PATH"
];
then
echo
"Directory not found \'${APACHE_MODULE_PATH}'"
>&2
exit
1
fi
echo
"copy ${PHP_MODULE_PATH} to ${APACHE_MODULE_PATH}"
cp
"$PHP_MODULE_PATH"
"$APACHE_MODULE_PATH"
echo
"Restarting apache..."
sudo
apachectl restart
上記ファイル生成後、
chmod
755
/Users/
***/.phpenv
/libexec/rbenv-apache-version
で実行権限をつけてやる。
上記が終われば、
phpenv apache-version X.X.X
でapache側のPHPが切り替えできる。
apacheの再起動がかかるのと、sudoするからパスワードを聞かれることがあるのはお忘れなく。
とりあえず、入れられること、切り替えができることまでは確認できたので
本当に入れたいバージョンやら、入れたいオプションやらを追求して
改めて開発環境が整うのは…いつだろw