ALB開発メモ

注意: ALBおよびALTAのインストールは、2013年1月よりChefを用いて自動化されています。インストール方法、アップデート方法、ALBおよびALTAの利用方法などの情報は、ALB・ALTAサポートページ(非公開)から提供します。サポートページには、ALB/ALTAの利用者および、今後ALBパーソナル版を含めてALB/ALTAの導入を考えている方が参加できます。参加希望は、support@anagix.comまでご連絡ください。

ALBサーバをubuntu 16.04にchef localmodeで入れるメモ

2018/08/10 1:55 に 森山誠二郎 が投稿   [ 2018/08/11 3:24 に更新しました ]

1. Berkshelfを使う
 ~/chef-repo/Berksfileを以下のように作る:
source 'https://supermarket.chef.io'

cookbook 'mysql'
cookbook 'selinux'
cookbook 'apt'
cookbook 'apache2'
cookbook 'logrotate'
cookbook 'windows'
cookbook 'seven_zip'
cookbook 'screen'
 berks vendor cookbooks を実行すると、~/chef-repo/cookbooksに各cookbookが入る。また、Bersfile.lockにバージョン情報が入る。
2.alb2_serverロールのインストール
 ~/chef-repo/roles/alb2_server.jsonを作成
 実行は: chef-client -z -j roles/alb2_server.json
3. alb2のGemfileに関連したトラブル
 ・json-1.8.3問題
  Gemfile.lockがjson-1.8.3になっていて、ruby2.5.1でnative installがコンパイルエラーになる。-> bundle update
 ・ffi-yajl 1.4.0問題
  Gemfileにgem 'chef'があり、バージョンが古いため、ffi-yajl 1.4.0にロックしていて、ruby2.5.1でnative installがコンパイルエラーになる。
         -> gem 'chef' をコメントアウトし、bundle update
4. mysql
   /sbin/status missing -> apt-get install upstart
   mysql did not start automatically -> service mysql start
   mysqld password not set --> set password for root@localhost=password('anagixalb');
5. start vncserver does not seem to work --- why execute ./vncserver start at /etc/init.d?
   /etc/init.d/vncserver from template is weird
6. gyazo cookbook had template statement for printenv.cgi but it was not defined under templates/default
   -> commented out
7. alb_db_backup cookbook did not have templates/default/alb_db_backup
8.mysqlのsocketが、/var/run/mysql-default/mysqld.sockになってたのを、/var/run/mysqld/mysqld.sockに変更した。my.cnfがおかしい??

gemをシステムワイドに入れる

2018/08/07 19:12 に 森山誠二郎 が投稿

いつから仕様が変わったのかもともとなのかわからないが、rootになってgem installした場合、user-installつまり、/root/.chefdk/gem/ruby/2.5.0(たとえば)にインストールされてしまう。

参考:https://github.com/rubygems/rubygems/issues/1394
   Make ruby gem install to user-install by default #1394

そこで、システムワイドに入れるには、--no-user-installを使う。
システムワイドに入れる例:
    gem install cztop iruby --no-user-install -N

-Nは--no-ri,--no-rdocのようだ。


ubuntuでnokogiriには、liblzmaが必要

2018/08/06 9:23 に 森山誠二郎 が投稿

dockerのubuntu 16.04での話。nokogiriにはlibxml2-dev, libxslt-devが必要だと思ってたが、
nokogiri 1.6.7.2の場合、それらだとエラーになる。組み込みのlibxml2を使うには、
liblzmaが必要だった。

chef-client -zを使ったchef作業

2017/08/30 0:29 に 森山誠二郎 が投稿   [ 2017/10/28 20:22 に更新しました ]

1.まずALTA
 alta_env_linuxで、wine_ltspice にREADME.mdがないので、
     chef generate cookbook cookbooks/wine_ltspice/
 recipeの指定を以下のmenu.json に作る

   "run_list": [
       "recipe[alta_env_linux]"
   ]
}

 sudo chef-client -z -j menu.json で実行

注意:上記を実行すると、 FATAL: Cannot load configuration from ./menu.json
 が出る!
 → sudo chef-client -z -j /home/ubuntu/chef-repo/menu.json
  のようにjsonをフルパスで与えればよい( see: https://stackoverflow.com/questions/45079652/fatal-cannot-load-configuration-after-chef-client)

AWSにALBサーバを立てる

2017/08/25 8:45 に 森山誠二郎 が投稿   [ 2017/08/31 8:06 に更新しました ]

[時刻UTC→JST]
    # timedatectl set-timezone Asia/Tokyo

[AWSの立ち上げ]
1.まずは無料ではじめる
 サインイン
 いつものパスワードでアカウント作成、連絡先情報を入力、支払いはANAカードを使用
 携帯電話に本人確認がくるので4桁のPIN番号入力
 サポートプラン: ベーシック
 アカウント準備できたら、emailが来る。開始方法をクリックすると10分間チュートリアル
2.コンソールへログイン
 email/いつものパスワードでログイン
 仮想マシーンの起動: EC2インスタンスを今すぐ始める
 EC2インスタンスの名前の指定: anagix1
 (なぜかわからんが、米国東部(オハイオ)リージョンになってる!)
 オペレーションシステムの選択: 今回はUbuntu Server 16.04 LTSにしてみる
 インスタンスタイプ: 無料のt2.micro (1 コア vCPU (最大 3.3 GHz)、1 GiB メモリ RAM、8 GB ストレージ)
 プライベートキーをDropbox/MinimalFabに保存
3.このインスタンスを作成を実行
 EC2コンソールに進む
 インスタンスへの接続は、接続タブをクリックすると表示される
 インスタンスの状態が、初期化しています、2/2のcheckに合格しました、にかわった
4.SSHでアクセスする
 そのままでは入れなかったので、セキュリティグループのインバウンドのルールを自分のグローバルIPのみに変更した

[chefとかインストール]
1.emacs
2.curl https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chefdk -c stable で、chefdk 2.1.11-1がインストールされた
 Rubyのバージョンは、2.4.1p111すげえ。RAILSとHoboが大丈夫かやや心配
3.chef-client --local-modeを試してみる
 参考: https://learn.chef.io/modules/learn-the-basics/ubuntu/aws/set-up-a-machine-to-manage#/
ここまでで、ディスク使用量 22%

[RDS (mysqlサービス)]を使う
コンソールから、すべてのサービスを展開表示し、RDSを選択
”今すぐはじめる”で、MySQL-compatible editonを選択
本番稼働用か、開発/テスト用を選択できるが、無料枠はの開発/テストを選び、次のステップ
インスタンスの仕様は、無料枠では以下のようになる:
(無料利用枠では、ングルの db.t2.micro インスタンスと 20 GB までのストレージを提供しています)
  DBインスタンスのクラス: db.t2.micro - 1v CPU, 1GIB RAM
       マルチAZ配置: いいえ、しか選べない
  ストレージタイプ: 汎用(SSD)しか選べない
  ストレージ割り当て: 5 GB
以下のように設定
  DBインスタンス識別子: albdb
  マスターユーザの名前: anagix
  マスターパスワード: anagixalb
  パスワードの確認: 同じのを入れる
[詳細設定]の設定
ネットワーク&セキュリティ(変更不可)
  VPC: デフォルトVPC(vpc-63d2fe1a)
  サブネットグループ: default
  パブリックアクセス可能: はい
  アベイラビリティ-ゾーン: 指定なし
  VPCセキュリティグループ: default(VPC)
データ・ベースの設定
  データ・ベースの名前: alb_production
  データ・ベースのポート: 3306
  DBパラメータグループ: default.mysql5.6
  オプショングループ: default.mysql5.6
  タグをスナップショットへコピー: チェックせず
  IAMのDBパラメータ認証を有効にする: 指定なし
  暗号を有効化: いいえ
バックアップ
  バックアップの保存期間: 7日
  バックアップウィンドウ: 指定なし
モニタリング
  拡張モニタリングを有効にする: いいえ
メンテナンス
  マイナーバージョン自動アップグレード: はい
  メンテナンスウィンドウ: 指定なし
以上で、DBインスタンスの作成
DBインスタンスの表示をクリックすると、DBインスタンスの起動状況が表示される
  ステータスは、作成中から、更新ボタンで、バックアップ中に変わった
[mysql-clientのインストール]
  apt-get install mysql-client  (これでディスクは25%)
[RDBへの接続]ここまできたところで、やりなおすことにした。
理由: 1.リージョンがでたらめ、やはりASIA・Tokyoで作り直したい
   2.順序として、VPCをつくり、そのなかにRDS,EC2という順序にすべきだった。

なので、以下やりなおし。
1.EC2の移動
 インスタンスのコンソールで、アクション→イメージ→イメージの作成
2.RDSコンソールで、米国東部(北部バージニアに作ってしまった)DBインスタンスを削除
 VPCの作成
  CIDRは、172.31.0.0/16になってしまって、編集できないので、このままで行く
 サブネットの作成
  名前タグ: anagix
  VPC: vpc-8f351ceb
  VPC CIDR: 172.31.0.0/16
  アベイラビリティゾーン: ap-northeast-1a を選択
  IPv4 CIDRブロック: 172.31.0.0/24
 インターネットゲートウェイ
  albgwという名前で、作成し、VPCにアタッチ
 ルートテーブル
  すでにrtb-6d9c4d0a というルートテーブルIDが存在するので、サブネットの関連付けを編集
  送信先を 0.0.0.0/0、ターゲットを作成したalbgwにして保存
 セキュリティグループの作成
  名前タグ: anagixで作成 グループ名:anagix
  インバウンドのルール
4.RDSをMySQLで作成
  今回は、Ubuntu 16.04のmysql-clientが5.7なので、5.7.17を選ぶ
  DBインスタンス識別子: albdb
  マスターユーザの名前: rootに変更
  マスターパスワード: anagixalb
  データ・ベースの名前: alb_production
 ここで、DBインスタンスの起動エラー
DB Subnet Group doesn't meet availability zone coverage requirement. Please add subnets to cover at least 2 availability zones. Current coverage: 1 (Service: AmazonRDS; Status Code: 400; Error Code: DBSubnetGroupDoesNotCoverEnoughAZs; Request ID: b9a3e7da-8a51-11e7-9fec-dfe649870939)
 対策として、subnetを追加すればOKだった
アベイラビリティゾーン: ap-northeast-1c
  IPv4 CIDRブロック: 172.31.1.0/24
5.EC2の作成
 今回は、1で作成したイメージをまず、AMIで、Asia(Tokyo)にリージョン移動する。
 リージョン表示をかえると、新しいAMI IDが表示され、状態は pending
  新しいインスタンスを作成する際、イメージをMyAMIから選ぶ
 注意: 自動割り当てパブリックIPを、”有効化”にすること (これはここでしか出来ない)
6.EC2へのログイン
chmod 400 anagix1n.pem
ssh -i "anagix1n.pem" ubuntu@ec2-13-114-3-219.ap-northeast-1.compute.amazonaws.com
7. MySQLの接続
 セキュリティグループ(Created from the RDS management console)というやつのソースを、172.31.0.0/16に変更した
mysql -h albdb.c........amazonaws.com -P 3306 -u root -p で接続できた!
8.ボリューム(EBS)無料枠30Gの追加
 コンソールのボリュームから、ボリュームの作成を実行
 ボリュームのアタッチ
  作成したボリュームを選択し、アクション→アタッチ
   インスタンスは、調べなくても自動的に探してくれる
   デバイスが、/dev/sdf と表示された。
 こんな注が: ここで入力された (および詳細情報に表示される) デバイス名が /dev/sdf から /dev/sdp であっても、新しい Linux カーネルによっては内部でデバイスの名前が /dev/xvdf から /dev/xvdp に変更されることがあります。
 EC2のインスタンスで、lsblkを実行すると、xvdfが増えていることが確認できた。
 mkfs -t ext4 /dev/xvdf の後、 mount /dev/xvdf /usr/local/anagix_tools
9.セキュリティグループの変更
 ネットワークインタフェースのセキュリティグループはlaunch-wizard-2というもので、22からのみIN BOUNDを許す設定だった
 (このままでは80でアクセスできない)
 コンソールからネットワークインタフェースに行き、ap-northeast-1aリージョンのセキュリティグループを、最初に3で作ったanagixに変更した
 混乱を避けるため、不要になったセキュリティグループを削除した
10. swapの作成
https://sys-guard.com/post-11945/ にしたがって、fallocateを使ってswapをつくる

【chef-client local-modelを使ったALB2サーバインストール】
1.sudo chef-client -z -j ./roles/alb2_server.json
 でロールを実行できる。ロールの記述は以下のjson
{
   "name": "alb2_server",
   "description": "ALB2 server",
   "chef_type": "role",
   "json_class": "Chef::Role",
   "default_attributes": {
   },
   "override_attributes": {
   },
   "run_list": [
       "recipe[screen]",
       "recipe[anagix_init]",
       "recipe[openssl]",
       "recipe[alb2_install]",
       "recipe[git]",
       "recipe[gyazo]",
       "recipe[alb_db_bkup]",
       "recipe[my_apache2_for_alb2]"
   ]
}
2.recipeの更新
 過去に作成したrecipeにはREADME.mdのないものなどあり、そのままではchefの実行でエラーになる
 例えば alb2_installの場合、以下のように再度generateすれば、テンプレートのファイルが作成される
   chef generate cookbook cookbooks/alb2_install
 berkshelfの使い方
  ~/chef-repo に以下のBerksfileを作成し、berks vendor cookbooksを実行する
source "https://api.berkshelf.com"

 cookbook 'git', '~> 4.5.0'
 cookbook 'runit', '> 0.13.0'
 cookbook 'openssl'
3.cookbooksの修正
 ・gitをrecipeから外した: どうしてもundefined method `set' for Chef::Platform:Classというエラーが取れない
https://github.com/chef-cookbooks/git/issues/119にしたがい、gitを6.0.0にupdateしてもダメ
 ・cookbooks/anagix_init/templates/defaultから、.gitconfig, .screenrcなどが欠落していたので復活(原因不明)
 ・cookbooks/anagix_init/attributes/default.rbに、default['anagix_home'] = '/home/anagix' を設定
 ・passwdファイルが定義されてないというので、anagix_init/files/passwd を作る(こんなの初めて!)
注意: attributes/default.rb~ が残っていると、以下のようなエラーが発生する
   Recipe Compile Error in /home/ubuntu/.chef/local-mode-cache/cache/cookbooks/alb2_install/attr\ ibutes/default.rb~

4.gem、Gemfileの修正
  ruby2.4にしたために、Railsを4.2.9、Hoboを2.2.5にした。
5.mysqlデータ・ベースのコピー
 RDSとはいえ、基本的にかわらない。sqlをmysqldumpで作成しておき、EC2のインスタンスから
 mysql -h xxx -u root -p alb_production < sqlファイル で、作成する。かなり遅かった。
6.Bundle execで起動できるまで
 ・rake assets:precompileを実行し、app/views/taglibs/auto以下を生成
 ・Railsで"Sorry, you can't use byebug without Readline."のエラーが出た時の対処法 に書いてあるようにGemfileに
  gem 'rb-readline'
  を入れる必要があった
 ・ActionView::Template::Error (undefined method `assets_precompile='というエラーは、Gemfileで、sprockets-railsの2.3.3縛りと、respondersの2.1.0縛りを削除し、bundle updateすると解消した。
respondersは、2.1.0のままじゃないと、"protected method `render' called for #<[controller name]>"の
エラーになった(参考: https://groups.google.com/forum/#!topic/hobousers/8j9kCBAaqI4 )
7.起動はしたものの、不具合対策
  config/environments/production.rb で以下のオプション変数の名称を_assetsから_filesに変更する必要があった。(Rails4.2で変更になっていた)
config.serve_static_files = true
 ここで、rails 4.2.8で、Ruby 2.4に対応したことが発覚(http://www.softantenna.com/wp/software/rails-4-2-8/)
 Ruby2.4+Rails4.2.9+Hobo2.2.5への移行を試みたが、どうしてもapp/views/projects/show.drymで、以下のエラーになる。
ActionView::Template::Error (The asset "changetab.js" is not present in the asset pipeline.)
 changetab.jsは、public/javascripts/changetab.jsに置いているにもかかわらずchangetab.jsをass/javascriptから
 探そうとしているように見える。gem 'sprockets-rails', '2.3.3' のバージョン指定を外すと、3.2.0が入ったので
 原因はそれかも知れない。
Ruby2.4+Rails4.2.9+Hobo2.2.5+sprockets_rails2.3.3を試みるも、以下のエラーになる。
ActionView::Template::Error (undefined method `assets_precompile=' for #<#<Class:0x00000009ff\
a830>:0x007f6274d84c70>
 ほとんどあきらめたが、sprockets-railsを3.1.0にすると動いた。
Ruby2.4+Rails4.2.9+Hobo2.2.5+srockets-rails3.1.0でしばらく動かしてみる。

[ALBサーバの立ち上げ]
1.8180/8183ポートを使うよう /etc/apache2/sites-available/000-default.confを変更
2.a2enmod rewrite でモジュール追加
     RewriteEngine on 
       RewriteRule ^(.*)$ https://aws.anagix.com:8183$1 [R,L]
 が有効になる。
 注意: ロードバランサーでは、Rewriteが80/443では問題ないのに、8180/8183では正しく動作せず、loginの際などに、以下のエラー
400 Bad request: "You're speaking plain HTTP to an SSL-enabled server port."
 phusion/passengerにすれば8180/8183でも正しく動作する。
3. Phusion/passngerのインストール
 apt-get install passengerすると、/usr/bin/rubyも入ってしまうが、これは避けられないと諦める。
 Railsで使うRubyを指定するために、PassengerRuby /opt/chefdk/embedded/bin/ruby の記述が
 必要だが、これを8183側でなく8180側に書いたのでハマる。
Apache2.4で、アクセス制限の記述方法が変更されていたにかかれているように、apacheが2.2から2.4で、アクセス許可設定の方法が変わっている
You don't have permission to access / on this serverというエラーがでたので、とりあえず、<Directory />に対し、Require all granted した。

WindowsにQUCS-S、XyceとXyceの波形ビューア(BeSpice Wave)をインストール

2017/08/23 6:11 に 森山誠二郎 が投稿   [ 2017/08/23 16:37 に更新しました ]

1.Qucs-S
https://ra3xdh.github.io/からWindowsインストーラーをダウンロードし実行
 実行モジュールは、
   c:/Program Files (x86)/Qucs-S/bin/qucs-s.exe
 現状のalta/alta_slave.rbでは、以下のように変更する必要あり:
      qucs_path = File.join(ENV['QUCSDIR']||'c:/Program Files (x86)/Qucs-S', 'bin')
      command = File.join(qucs_path, 'qucs-s.exe')
 また、シンボリックリンクができないのでmodelsを以下のようにコピーする:
            if /mswin32|mingw/ =~ RUBY_PLATFORM
              FileUtils.cp_r '../models', 'models'
            else
              FileUtils.ln_s '../models', 'models'
            end
2.Xyce
https://xyce.sandia.gov/ からダウンロード。一度サインアップしていればemailアドレスだけでOK.
  c:/Xyce 6.7 OPENSOURCE にインストールした。
  BeSpiceで波形を見ることができるようにするためには、c:/Xyce 6.7 OPENSOURCE/bin/runxyce.batの最後の行を以下の
 ように変更する(-rオプションをつける)。でもこれをやると、qucs内で波形表示できなくなる(要調査)。
   "%~dp0\Xyce.exe" -r raw %*
3.BeSpice評価版
http://www.analogflavor.com/en/bespice/downloads/ からダウンロードしインストール。
 c:/Program Files (x86)/Analog Flavor EURL/BeSpice Wave/bin/bspwave.exe がデフォルト

WSLにALBサーバをインストール

2017/05/12 1:51 に 森山誠二郎 が投稿   [ 2017/06/13 19:36 に更新しました ]

2017にリリースされたWindows 10 creators update のBash on Windows (Ubuntu 16.04ベース)にALB2.0.3をインストール。
対応した問題
1。~anagix/.vnc/passwd がないエラー -> 手動で作成
2。ユーザanagixで実行した場合anagixのパスワードがかわってしまう
3。mysqlで、/sbin/statusがないというエラー
 -> mysql cookbookが古かった。https://github.com/chef-cookbooks/mysql からもってくる。
  alb2_installのrecipeで、ubuntu16.04の場合は、mysqlを5.7に指定する必要がある。
 また、alb2_install/metadata.rbのなかで、mysqlへのdependencyを以下のように変更する必要があった。
   depends 'mysql', '~> 8.0'
    参考: https://supermarket.chef.io/cookbooks/mysql
   Chef::Provider::MysqlServiceSystemdの指定はできなかった。
4.mysqlの起動エラー
 chefインストール直後はmysql動いていたが、WSLを再起動し、手動で service mysql startできない。
 /var/run/mysql-default(記憶違いかも知れない)を作成し解決。依然、
 No directory, loggin in with HOME=/ とでるのは、ユーザがmysqlでホームがないからではないか。
    → /etc/passwdのmysqlのところを見ると、ホームが/nonexistentとなっているので
usermod -d /var/lib/mysql-default/ mysql で変更。
起動は、service mysql-default start
5.nokogiri 1.6.7.2のインストールが/usr/local/anagix_tools/alb2でbundle installではうまくいかない
 ~/work/alb2からだとOK.原因不明。以下のGEM_HOMEと関係しているかも。
6.chef-repo/cookbooks/anagix_initのtemplateの.bashrc_anagix.erbで、
 export GEM_HOME=/usr/local/anagix_tools/lib/ruby/gems/2.1.0
 していた。そのため、bundle exec rails実行時に、incompatible library versionになっていた。
7.mysql2 gemのバージョン(0.3.16)が古いため、以下のエラー:
  Gewm Load Error is: uninitialized constant Mysql2::Client::SECURE_CONNECTION
    0.4.6に上がったが、railsのバージョン4.2.4とあわずエラー。0.3.21を指定してクリア。
    mysql -S /var/run/mysql-default/mysqld.sock -u root -p でアクセスできる
8.taglibs/autoがないので、rake assets:precompile

9.mysql 5.7が異常に遅いので、mariadbを試した
 apt-get install mariadb-server
   注意: mysqlを完全にapt-get removeする必要あり。
 mariadb 5.7は、ユーザ管理が異なる。UserIDとパスワードは、/etc/mysql/debian.cnf-5.7に
 debian-sys-maintが定義されている。これを使ってmysql -u debian-sys-manit -pでログインし、
 anagixというユーザ(mariadbではパスワードはLinuxのログインパスワードと同じ)を登録し、
 データベースへのアクセスのprivelegeをgrantする(詳細は記録し忘れた)
anagixではscreenを使えなかったが、chmod o+w /run したら使えるようになった。
   

RHEL6への64bit版ruby,alb2インストール

2017/04/01 3:23 に 森山誠二郎 が投稿   [ 2018/04/05 1:15 に更新しました ]


For some reason, rootになれないので、yum installはできない前提。
1.zlibとic4c-58(sharlock_holmes)は、ソースからprefix=/usr/local/anagix_toolsにインストール
 zlibをインストールせずにrubyをbuild-rubyできる。しかし、zlibがリンクされないため、bundlerのインストールで以下のエラーになる:
 gem install bundler --no-ri --no-rdoc
ERROR:  Loading command: install (LoadError)
        cannot load such file -- zlib
 zlibインストール後、build-rubyしなおしたが、rubyを実行すると以下のようなエラーになる。
/usr/local/anagix_tools/ruby233/bin/ruby: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/anagix_tools/ruby233/bin/ruby)
/usr/local/anagix_tools/ruby233/bin/ruby: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/anagix_tools/ruby233/bin/ruby)
 なので、以下に続く。
2.rubyは、別マシーンのcentos6.8でbuild-rubyし、/usr/local/anagix_tools/ruby233にコピーした
    It worked あ
 wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
./config shared zlib --prefix=/usr/local/anagix_tools --openssldir=/usr/local/anagix_tools/openssl --with-zlib-lib=/usr/local/anagix_tools/lib --with-zlib-include=/usr/local/anagix_tools/include
 wget ftp://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz
./configure --prefix=/usr/local/anagix_tools

3.bundle installするとsharlock_holmesで止まる。
 yum install libicu-develできればよいのかも知れないが、ic4c-58をソースから入れる
4.gem install charlock_holmes  -v 0.7.3 -- --with-icu-lib=/usr/local/anagix_tools/lib --with-icu-include=/usr/local/anagix_tools/include --no-ri --no-rdoc
 はできるが、bundle installでは以下のトリックが必要。
bundle config --local build.charlock_holmes --with-icu-lib=/usr/local/anagix_tools/lib --with-icu-include=/usr/local/anagix_tools/include
 これで、/usr/local/anagix_tools/alb2/.bundle/configに以下の記述が入る:
BUNDLE_BUILD__CHARLOCK_HOLMES: "--with-icu-lib=/usr/local/anagix_tools/lib --with-icu-include=/usr/local/anagix_tools/include"
 あらためて bundle install
5. mysql2のgem installで以下のエラー:
linking shared-object mysql2/mysql2.so
/usr/bin/ld: cannot find -lmysqlclient_r
 原因は、mysql-develが、mysql-devel-5.1.73-7.el6.i686しか入ってないこと。なので、CentOS6.8から、
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient_r.so
 をコピーし、/usr/local/anagix_tools/libに置く。
6. 同様に、libhistory.so* libreadline.so* libcrypto.so* libssl.so* をCentOS6.8からコピー
gem install mysql2 -- --with-mysql-lib=/usr/local/anagix_tools/lib --with-ssl-lib=/usr/local/anagix_tools/lib --with-readline-lib=/usr/local/anagix_tools/lib --no-ri --no-rdoc
Building native extensions with: '--with-mysql-lib=/usr/local/anagix_tools/lib --with-ssl-lib=/usr/local/anagix_tools/lib --with-readline-lib=/usr/local/anagix_tools/lib --no-ri --no-rdoc'
 が成功する。なので、icuと同様、
bundle config --local build.mysql2 --with-mysql-lib=/usr/local/anagix_tools/lib --with-mysql-lib=/usr/local/anagix_tools/lib --with-ssl-lib=/usr/local/anagix_tools/lib --with-readline-lib=/usr/local/anagix_tools/lib
 さらに、libsqlite3.so*をコピーし、
bundle config --local build.sqlite3 --with-sqlite3-lib=/usr/local/anagix_tools/lib
bundle config --local build.nokogiri --with-zlib-lib=/usr/local/anagix_tools/lib
 の後、bundle install
7. 次はnokogiriとおもいきや、思いっきりトラブった。
 nokogiriは、 --use-system-librariesを指定しない場合、nokogiri内部に組み込まれたlibxml2を使用する。v1.6.7.2の場合、zlib-dirの指定が内部のlibxml2のconfigureの引数にわたらないようだ。
 v1.7.1はどちらもうまくいく: 
gem install nokogiri -- --with-zlib-dir=/usr/local/anagix_tools --with-zlib-include=/usr/local/anagix_tools/include --with-zlib-lib=/usr/local/anagix_tools/lib --no-ri --no-rdoc
gem install nokogiri -- --use-system-libraries --with-zlib-include=/usr/local/anagix_tools/include --with-zlib-lib=/usr/local/anagix_tools/lib --no-ri --no-rdoc
 しかし、v1.6.7.2の場合、--use-system-librariesでない成功しない。gem installは成功するが、bundle installはこの時点では成功していない
 メモ: bundle installに引数を渡すには、例えば
bundle config --local build.nokigiri --use-system-libraries --with-zlib-include=/usr/local/anagix_tools/include --with-zlib-lib=/usr/local/anagix_tools/lib
を実行する。すると、.bundle/configに以下の記述が入る
BUNDLE_BUILD__NOKIGIRI: "--use-system-libraries --with-zlib-include=/usr/local/anagix_tools/include --with-zlib-lib=/usr/local/anagix_tools/lib"
8.libxml2、libxsltをソースからインストールするようにしたため、以下もソースからインストールした
wget ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz 
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.29.tar.gz
wget https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.7.6.tar.bz2
wget https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2 
wget https://www.cairographics.org/releases/LATEST-cairo-1.14.8
wget https://www.cairographics.org/releases/LATEST-pixman-0.34.0
wget https://sourceforge.net/projects/libpng/files/libpng16/1.6.29/libpng-1.6.29.tar.gz
 基本的に、./configure prefix=/usr/local/anagix_toolsで入るが、
 export PKG_CONFIG_PATH=/usr/local/anagix_tools/lib/pkgconfig
 をしないと、リンクがうまくいかないものもある。
libpngのconfigureは、LDFLAGS="-L/usr/local/anagix_tools/lib -lz" ./configure --prefix=/usr/local/anagix_tools
 Freetypeのインストールも必要だったので、
wget http://downloads.sourceforge.net/freetype/freetype-2.7.1.tar.bz2
LDFLAGS="-L/usr/local/anagix_tools/lib -lz" ./configure --prefix=/usr/local/anagix_tools
9.cairoも同様に、
DFLAGS="-L/usr/local/anagix_tools/lib -lz" ./configure --prefix=/usr/local/anagix_tools
10.いよいよ/usr/local/anagix_tools/alb2でbundle update
nokogiri v1.7.1にはエラーはないので、BUNDLE_BUILD__NOKIGIRI: "--use-system-libraries --with-zlib-include=/usr/local/anagix_tools/include --with-zlib-lib=/usr/local/anagix_tools/lib"
 がきいているのであろう。--use-system-librariesをやめたらどうなるのか、興味はあるが、いまはやめる。

追記(2018/4/5)
ruby2.5.1で再度インストールを試みたところ、またnokogiriでつまずいた。
export PKG_CONFIG_PATH=/usr/local/anagix_tools/lib/pkgconfig
で解決した。

protected method `render' というエラー

2016/04/18 21:18 に 森山誠二郎 が投稿

https://groups.google.com/forum/#!topic/hobousers/8j9kCBAaqI4
に書かれているが、私の場合は hobo 2.2.3 で発生した。

暫定対策: Gemfileで、以下のように responderのバージョンを固定する
#gem 'responders', '~> 2.0'
gem 'responders', '2.1.0'
何もしていしないと 2.1.2が入ってダメで、2.1.1でもダメらしい。Ignacio Huertaが最新のresponderに対応するようHoboを対策するといっている

CentOS7(32bit)にALBバックアップ用サーバを立てる

2016/04/09 4:17 に 森山誠二郎 が投稿

運用中のCentOS7(64bit)がダウンしても、すぐにバックアップサーバに切り替えることができるよう、少々古いマシーンにALBをインストールした。
1. CenOS7は公式には、64bit版しかリリースされてないが、以下からaltarch SIGが作成する32bit版をダウンロードできる
    http://mirror.centos.org/altarch/7/isos/i386
    netinstallで、ソースにhttp://mirror.centos.org/altarch/7/os/i386/を指定してもエラーになるのに注意 -> IPアドレスを指定すればよい
2. wineは残念ながらないようだ
   yum install epel-releaseしても”使えません”というエラー
 http://www.tecmint.com/install-wine-in-rhel-centos-and-fedora/ に書いてあるようにソースからインストールできる:
     # yum -y groupinstall 'Development Tools'
     # yum -y install libX11-devel libxml2-devel libxslt-devel freetype-devel flex bison
     # cd /tmp
     # wget https://dl.winehq.org/wine/source/1.8/wine-1.8.1.tar.bz2
     # tar -xvf wine-1.8.1.tar.bz2 -C /tmp/
     一般のユーザになり、
     $ cd /tmp/wine-1.8.1/
     $ ./tools/wineinstall

1-10 of 93