2015-05 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2015-05-20 Wed

[別の年の同じ日: 2003 2006 2007 2008 2009 2010 2011

memcached-tool を使ってみた はてぶ

『memcached に入っているデータを確認したいけど、目的の key がわからない』という状況で、
ググったところ以下の記事が見つかったので memcached-tool を使ってみた。

memcached-toolを使ってmemcachedのデータをエクスポートする - Qiita
http://qiita.com/deep_blue_ao/items/df54c2fccbe60881bba3

ある文字列が memcached に入っているか確認したかったので、
以下のような感じで。

$ memcached-tool dump |strings |ggrep --color hoge

memcached/memcached-tool at master · memcached/memcached
https://github.com/memcached/memcached/blob/master/scripts/memcached-tool

2015-05-19 Tue

[別の年の同じ日: 2001 2003 2005 2006 2007 2008 2009 2010 2011

Boris はてぶ

PHP 使いたくないし、覚える気もないのだけど、
何かが動かなかった時なんかに、ちょっと REPL が欲しかったので、
ググってでてきた Boris を入れてみた。

$ curl -L -O https://github.com/borisrepl/boris/releases/download/v1.0.8/boris.phar
$ chmod +x boris.phar
$ mv boris.phar ~/bin/boris
$ boris --version
Boris 1.0.8

.phar だけとお手軽だし、とりあえずは、これで十分。

2015-05-08 Fri

[別の年の同じ日: 2006 2007 2008 2009 2010 2011 2013

Solaris の pkgbuild でエラーが出た場合の対処 はてぶ

今回のお題はこれ。

karky7のブログ: Solaris11.2 pkgbuildでエラー
http://blog.karky7.com/2015/05/solaris112-pkgbuild.html

これ、貼られているログにあるように、publisher へ pkgsend しているのが timeout しているだけ。

pkgbuild: pkgsend: \'add\' failed for transaction ID \'1430692081_pkg%3A%2F%2Fiichiko3-spec%2Fdatabase%2Fmysql-cluster-gpl-74%407.4.6%2C5.11-0.11.2%3A20150503T222801Z\': 1: Framework error: code: 28 reason: Operation too slow. Less than 1024 bytes/sec transfered the last 30\\
 seconds
pkgbuild: URL: \'http://iichiko3-spec:80/add/0/1430692081_pkg%3A%2F%2Fiichiko3-spec%2Fdatabase%2Fmysql-cluster-gpl-74%407.4.6%2C5.11-0.11.2%3A20150503T222801Z/file\' (happened 3 times)
pkgbuild: 2: Framework error: code: 28 reason: Connection time-out
pkgbuild: URL: \'http://iichiko3-spec:80/add/0/1430692081_pkg%3A%2F%2Fiichiko3-spec%2Fdatabase%2Fmysql-cluster-gpl-74%407.4.6%2C5.11-0.11.2%3A20150503T222801Z/file\'
pkgbuild:

@karky7 が書いているように、
pkg/server の pkg/socket_timeout プロパティを変更してもよさそうだけど、
以前に試してダメだった(結局、別の方法で対処した)気もするので、
試してください。

(/usr/lib/python2.6/vendor-packages/pkg/server/depot.py で
slow connection 用に response.timeout を 3600 にしているので、
socket_timeout より、こっちの方な気もするけど、
publish に失敗するまでに 1 時間もかかったか覚えていない。)

別解として、publisher が localhost の場合、
パッケージのビルド時に publish に失敗するのは問題にせず、
あとから手で pkgsend する方法がある。
ポイントは publisher に対して pkgsend するのではなく、
PATH に対して pkgsend すること。

ログを見るとわかるとおり、パッケージビルド時のパッケージの publish は
~/packages/PKGMAPS/scripts 以下の script を叩いて行なわれている。

ログだと、この部分

pkgbuild: Calling script /export/home/karky7/packages/PKGMAPS/scripts/database%2Fmysql-cluster-gpl-74_ips.sh

この script はこんな感じのはず。

#!/usr/bin/bash
export PKG_REPO=${PKGBUILD_IPS_SERVER:-http://localhost:10000/} 
pkgsend publish -s "$PKG_REPO" /export/home/karky7/packages/PKGMAPS/manifests/database%2Fmysql-cluster-gpl-74.manifest || exit 1

publisher を指定して、pkgsend に .manifest を渡しているだけなので、

$ PKGBUILD_IPS_SERVER=$(svcprop -p pkg/inst_root pkg/server) \
sh /export/home/karky7/packages/PKGMAPS/scripts/database%2Fmysql-cluster-gpl-74_ips.sh


$ pkgsend publish -s $(svcprop -p pkg/inst_root pkg/server) \
/export/home/karky7/packages/PKGMAPS/manifests/database%2Fmysql-cluster-gpl-74.manifest

という感じで、publisher に対してではなく、
PATH に対して publish してあげればよい。

publisher が localhost でない場合は、
~/packages 以下にできるファイルを publisher に持って行って、
同じように pkgsend を実行すればよい。

ただし、manifest には PATH が書かれているので、
ビルドした環境と同じ PATH にしておいた方がよい。

もちろん、manifest に書かれている PATH を書き換えてしまうことも可能だけど、
面倒くさいので避けた方がよいかと。

(追記)

karky7のブログ: Solaris11.2 pkgbuildでエラーのその後...
http://blog.karky7.com/2015/05/solaris112-pkgbuild_10.html

ということで、@karky7 がさらに調べてた。