svn コマンドで
$ svn stat --no-ignore
というのがあるけれど、これだとあらかじめ無視パターンに設定したファイルも表示されてしまう。
明示的に svn:ignore プロパティーに設定したファイルだけ探し出したいのだが。
結局わからず、上記コマンドで表示された大量のファイルを点検。
めんどくさ。。。
タグ:subversion SVN
# yum install perl-TimeDate perl-Net-Netmask perl-DB_File
# cp pop-before-smtp.init /etc/rc.d/init.d/pop-before-smtp
# cp pop-before-smtp /usr/sbin/
# cp pop-before-smtp-conf.pl /etc
/etc/pop-before-smtp-conf.pl
を編集する。# Set the log file we will watch for pop3d/imapd records.
#$file_tail{'name'} = '/var/log/maillog';
$pat
を定義していると箇所を探し出し、システムの設定に合ったものをコメントアウト。# For Dovecot POP3/IMAP when using syslog.
$pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
'Login: .*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
$out_pat = '^[LOGTIME] \S+ (?:dovecot: )?(?:imap|pop3)-login: ' .
'Disconnected.*? (?:\[|rip=)[:f]*(\d+\.\d+\.\d+\.\d+)[],]';
$pat
の設定が正しいかどうかは、以下のコマンドでテストできる。
# pop-before-smtp --debug --nowrite --reproces
Feb 2 17:21:32 starting up (v1.42)
Feb 2 17:21:32 Using 2 values for pre-authorized networks: `XX.XX.XX.XX/32', `127.0.0.0/8'
Feb 2 03:14:02 startup log-scan complete
Feb 2 03:14:02 ignoring local-net ip=XX.XX.XX.XX
:
Feb 2 15:34:02 ignoring local-net ip=XX.XX.XX.XX
Feb 2 15:44:05 ignoring local-net ip=XX.XX.XX.XX
Feb 2 15:44:41 found ip=XX.XX.XX.XX (-1)
Feb 2 15:54:09 ignoring local-net ip=XX.XX.XX.XX
:
# chkconfig --add pop-before-smtp
# chkconfig --list | grep -i pop
pop-before-smtp 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service pop-before-smtp start
Starting pop-before-smtp: done
# ls -l /etc/postfix/pop-before-smtp*
-rw-r--r-- 1 root root 12288 Feb 2 18:00 /etc/postfix/pop-before-smtp.db
/etc/postfix/main.cf
を開き、どこかに:check_client_access = hash:/etc/postfix/pop-before-smtp
smtpd_recipient_restrictions =
permit_mynetworks,reject_non_fqdn_recipient,
check_client_access hash:/etc/postfix/pop-before-smtp,
reject_unauth_destination
# service postfix reload
# pop-before-smtp --list
The database holds 0 IPs.
Feb 2 19:25:58 localhost postfix/smtpd[3537]: connect from xxx.yyy.zzz[XX.XX.XX.XX]
Feb 2 19:25:58 localhost postfix/smtpd[3537]: NOQUEUE: reject: RCPT from xxx.yyy.zzz[XX.XX.XX.XX]: 554 5.7.1 <aaa@bbb.ccc.ddd>: Relay access denied; from=<k-ishik@ll.mm.nn> to=<aaa@bbb.ccc.ddd> proto=ESMTP helo=<[192.168.0.10]>
Feb 2 19:25:58 localhost postfix/smtpd[3537]: disconnect from xxx.yyy.zzz[XX.XX.XX.XX]
# pop-before-smtp --list
The database holds 1 IP:
XX.XX.XX.XX
/etc/shadow
での認証を採用した。/etc/shadow
での認証は、saslauthd
で実現できる。saslauthd
は、CentOS の RPM パッケージ cyrus-sasl
に含まれている。cyrus-sasl-plain
もインストールが必要。
# yum install cyrus-sasl cyrus-sasl-plain
saslauthd
を実行する前に、/etc/sysconfig/saslauthd
ファイルの起動オプションを設定して /etc/shadow
での認証を行うようにする。
MECH=shadow
# service saslauthd start
saslauthd
での認証がうまくいくかどうかは、testsaslauthd
コマンドで確認できる。
# testsaslauthd -u ユーザ名 -p パスワード
0: OK "Success."
と表示されれば成功。# chkconfig saslauthd on
/etc/sasl2/smtpd.conf
を以下のように設定する。
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
smtpd_sasl_path
の設定値+.conf
」というファイル名のファイルを探し出してそれを読み込むので、認証がうまくいかない場合は前述の /etc/sasl2/smtpd.conf
ファイルのファイル名と smtpd_sasl_path
の設定値が一致しているかどうか確認するとよい。/etc/postfix/master.cfg
ファイルで、-o smtpd_sasl_auth_enable=yes
と -o smtpd_client_restrictions=permit_sasl_authenticated,reject
オプションを有効にする。
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
# service postfix reload
# yum install boinc-client
# service boinc-client start
# boinccmd --lookup_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード
# boinccmd --create_account http://setiathome.berkeley.edu/ \
メールアドレス パスワード アカウント名
# boinccmd --project_attach http://setiathome.berkeley.edu/ アカウントキー
# boinccmd --get_results
keys
で取得すると、通常は設定順序と異なる順序で返される。tie
関数と組み合わせて使えば連想配列をあたかも設定順にデータが格納されるかのように扱うことができる。$ perl ~/tmp/test2.pl
data1 = 10
data2 = 20
data3 = 30
data4 = 40
my %hashval;
$ perl ~/tmp/test2.pl
data4 = 40
data2 = 20
data3 = 30
data1 = 10
Android DevelopersDevelop > Tools > Download のページで、[DOWNLOAD FOR OTHER PLATFORMS] のところにある "SDK Tools Only" から、"Linux 32 & 64-bit" のファイルをダウンロード。
http://developer.android.com/index.html
android-sdk_r22.0.1-linux.tgz
" だった。/opt
ディレクトリの下に展開した。tools
と platform-tools
にパスを通しておいたほうが便利かもしれない。$ export PATH=$PATH:/opt/android-sdk-linux/tools
$ export PATH=$PATH:/opt/android-sdk-linux/platform-tools
# /opt/android-sdk-linux/tools/android update sdk --no-ui
Apache AntApache Antのサイトの "Binary Distributions" からダウンロードし、適当なディレクトリーに展開する。
http://ant.apache.org/
/opt/apache-ant
に解凍した。ANT_HOME
に Ant のパスを設定し、ついでにパスも通しておく。
$ export ANT_HOME=/opt/apache-ant
$ export PATH=$PATH:$ANT_HOME/bin
$ android update project --target android-16 --path .
project.properties
に書かれているものに合わせるといいかも。local.properties
と build.xml
の2ファイルが作られ、コンパイルできるようになる。$ ant release
BUILD FAILED
/opt/android-sdk-linux/tools/ant/build.xml:650: The following error occurred
while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:691: Execute failed: java.io.IOEx
ception: Cannot run program "/opt/android-sdk-linux/build-tools/17.0.0/aapt":
error=2, そのようなファイルやディレクトリはありません
...
/opt/android-sdk-linux/build-tools/17.0.0/aapt
を実行してみると、/lib/ld-linux.so.2
が存在しない、というエラー。linux.so.2
ファイルは、調べてみると glibc.i686
というパッケージに含まれるらしい。
$ yum provides ld-linux.so.2
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.iij.ad.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
glibc-2.12-1.107.el6.i686 : The GNU libc libraries
Repo : base
Matched from:
Other : ld-linux.so.2
glibc.i686
は glibc.x86_64
とは別なのか。。。glibc.i686
をインストールして /opt/android-sdk-linux/build-tools/17.0.0/aapt
を実行すると、今度はまた別のライブラリーが存在しないというエラーが。# yum install glibc.i686
# yum install zlib.i686
# yum install libstdc++.i686
bin
ディレクトリの中に .apk ファイルが作られる。
keytool
コマンドで生成できる。keytool
は JDK に含まれている。$ keytool -genkey -v -keystore tan9.keystore -alias HelloWorld \
-dname "CN=Hello World, O=Tan9, L=Shinjuku, ST=Tokyo, C=JP" -keyalg RSA \
-keysize 2048 -validity 10000 -keypass 123456 -storepass 123456
$ keytool -list -keystore tan9.keystore
tan9.keystore
)、パスワード (123456
2カ所)、識別名 (CN=Hello World, O=Tan9, L=Shinjuku, ST=Tokyo, C=JP
) 等は適当に。
jarsigner
コマンドを使ってアプリにデジタル署名する。$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
-keystore tan9.keystore -storepass 123456 -keypass 123456 \
bin/HelloWorld-release-unsigned.apk HelloWorld
追加中: META-INF/MANIFEST.MF
追加中: META-INF/HELOWORL.SF
追加中: META-INF/HELOWORL.RSA
署名中: res/layout/main.xml
署名中: AndroidManifest.xml
署名中: resources.arsc
署名中: res/drawable-hdpi/ic_launcher.png
署名中: res/drawable-ldpi/ic_launcher.png
署名中: res/drawable-mdpi/ic_launcher.png
署名中: res/drawable-xhdpi/ic_launcher.png
署名中: classes.dex
bin/HelloWorld-release-unsigned.apk
に署名が施される。
$ ssh-host-config -y
cyg_server
ユーザーを作成する箇所でパスワードを聞かれるので入力する。cygrunsrv
コマンドでサービス開始する:$ cygrunsrv -S sshd
【参考】インストール前に、「Supported Operating Systems for CDH3」で CDH3 がサポートする OS かどうか確認しておく。
- http://codezine.jp/article/detail/2485
- http://oss.nttdata.co.jp/hadoop/cdh.html
- https://ccp.cloudera.com/display/FREE4DOC
- http://wiki.apache.org/hadoop/
# yum install java-1.6.0-openjdk java-1.6.0-openjdk-devel
# apt-get install openjdk-6-jdk
# yum --nogpgcheck install http://archive.cloudera.com/redhat/cdh/cdh3-repository-1.0-1.noarch.rpm
# rpm --import http://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera
[root@master]# yum install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-namenode hadoop-0.20-jobtracker
[root@slave]# yum install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-datanode hadoop-0.20-tasktracker
# wget http://archive.cloudera.com/one-click-install/squeeze/cdh3-repository_1.0_all.deb
# dpkg -i cdh3-repository_1.0_all.deb
# apt-get update
[root@master]# apt-get install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-namenode hadoop-0.20-jobtracker
[root@master]# apt-get install hadoop-0.20 hadoop-0.20-native \
hadoop-0.20-datanode hadoop-0.20-tasktracker
/usr/lib/hadoop-0.20
に設定されているので、/usr/lib/hadoop-0.20
の下に .ssh
ディレクトリを作成し、そこに鍵ペアを作る。# mkdir /usr/lib/hadoop-0.20/.ssh
# chmod 02775 /usr/lib/hadoop-0.20/.ssh
# chgrp hadoop /usr/lib/hadoop-0.20/.ssh
# ssh-keygen -t rsa -N "" -f /usr/lib/hadoop-0.20/.ssh/id_rsa
# chmod 0660 /usr/lib/hadoop-0.20/.ssh/id_rsa
# chmod 0664 /usr/lib/hadoop-0.20/.ssh/id_rsa.pub
# touch /usr/lib/hadoop-0.20/.ssh/known_hosts
# chmod 0664 /usr/lib/hadoop-0.20/.ssh/known_hosts
# chmod 0755 /usr/lib/hadoop-0.20/.ssh
/usr/lib/hadoop-0.20/.ssh
内に authorized_keys
ファイルを作成して書き込み、互いに hdfs アカウントでパスワード無しにログインできることを確認する。[root@master]# su - hdfs
[hdfs@master]$ ssh slave
[hdfs@slave]$ ssh master
[hdfs@master]$ exit
[hdfs@slave]$ exit
[hdfs@master]$ exit
conf.cluster
とした) にコピーして設定していく。alternatives
コマンドを使って切り替える。# cp -dpR /etc/hadoop/conf.empty /etc/hadoop/conf.cluster
# alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
/etc/hadoop-0.20/conf.cluster 50
# alternatives --display hadoop-0.20-conf
【Debian系】
# cp -dpR /etc/hadoop/conf.empty /etc/hadoop/conf.cluster
# update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
/etc/hadoop-0.20/conf.cluster 50
# update-alternatives --display hadoop-0.20-conf
マスターノード、スレーブノードの両方の /etc/hadoop/conf.cluster
内の設定ファイルを、たとえば以下のように書き換える:
設定ファイル: core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:54310</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/hadoop/tmp</value>
</property>
</configuration>
設定ファイル: hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/var/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/var/hadoop/dfs/data</value>
</property>
</configuration>
設定ファイル: mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/var/hadoop/mapred</value>
</property>
</configuration>
設定ファイル: masters
master
設定ファイル: slaves
slave
環境変数設定ファイル: hadoop-env.sh
# 【RedHat系】
export JAVA_HOME=/usr/lib/jvm/java
# 【Debian系】
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
対応するディレクトリを作成する。
# mkdir -p /var/hadoop/tmp \
/var/hadoop/dfs/name \
/var/hadoop/dfs/data \
/var/hadoop/mapred
# chown hdfs:hadoop /var/hadoop/tmp \
/var/hadoop/dfs/name \
/var/hadoop/dfs/data
# chown mapred:hadoop /var/hadoop/mapred
# chmod 0777 /var/hadoop/tmp
# chmod 0700 /var/hadoop/dfs/name
# chmod 0755 /var/hadoop/dfs/data \
/var/hadoop/mapred
5. ポートの開放
Hadoop がデフォルトで使用するポート番号が「Hadoop Default Ports Quick Reference」にあるので、必要に応じてルーターやファイアウォール等の設定を変更する。
6. NameNode / DataNode の起動
マスターノードで、NameNode をフォーマットする。
[root@master]# su - hdfs
[hdfs@master]$ hadoop namenode -format
[hdfs@master]$ exit
ここで以下のようなエラーが出る場合は、環境変数 JAVA_HOME が正しく設定されていない可能性がある:
+======================================================================+
| Error: JAVA_HOME is not set and Java could not be found |
+----------------------------------------------------------------------+
| Please download the latest Sun JDK from the Sun Java web site |
| > http://java.sun.com/javase/downloads/ < |
| |
| Hadoop requires Java 1.6 or later. |
| NOTE: This script will find Sun Java whether you install using the |
| binary or the RPM based installer. |
+======================================================================+
マスターノードの NameNode、スレーブノードの DataNode を起動する。
マスターノード:
[root@master]# service hadoop-0.20-namenode start
スレーブノード:
[root@slave]# service hadoop-0.20-datanode start
NameNode、DataNode が稼働しているかどうかは、ブラウザーで以下の URL にアクセスすることで確認できる。
http://master:50070/
"Live Nodes" の数値が稼働している DataNode の数。
7. JobTracker / TaskTracker の起動
マスターノードの HDFS 上に /mapred/system
ディレクトリを作成する。
[root@master]# su - hdfs
[hdfs@master]$ hadoop fs -mkdir /mapred/system
[hdfs@master]$ hadoop fs -chown -R mapred:supergroup /
[hdfs@master]$ hadoop fs -chmod -R 0700 /mapred
[hdfs@master]$ exit
マスターノードの JobTracker、スレーブノードの TaskTracker を起動する。
マスターノード:
[root@master]# service hadoop-0.20-jobtracker start
スレーブノード:
[root@slave]# service hadoop-0.20-tasktracker start
JobTracker、TaskTracker が稼働しているかどうかは、ブラウザーで以下の URL にアクセスすることで確認できる。
http://master:50030/
Cluster Summary の "Nodes" の数値が稼働している TaskTracker の数。
8. サンプルコードの実行
パッケージにはサンプルコードが添えられているので試しに実行してみる。
[root@master]# su - mapred
[mapred@master]$ cd /usr/lib/hadoop
[mapred@master]$ hadoop jar hadoop-examples.jar pi 1 10
【変更履歴】
2013-01-22 記述全体を手直し
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |