どこかに向かうらしい話

迷走エンジニアの放浪記

「シェルプログラミング実用テクニック」 CentOS7向け補足事項(5章~8章)

「シェルプログラミング実用テクニック」 CentOS7向け補足事項(1章~4章)の続き。

5章

hdparmコマンド

普通にyumでインストール可能。

# yum install hdparm

smartctlコマンド

普通にyumでインストール可能。

# yum install smartmontools

6章

xxdコマンド

普通にyumでインストール可能。

# yum install vim-common

ImageMagick

普通にyumでインストール可能。

# yum install ImageMagick

7章

wgetコマンド

意外なことに最小インストールだと入ってない。
普通にyumでインストール可能。

# yum install wget

ncコマンド

普通にyumでインストール可能。

# yum install nmap-ncat

netstatコマンド

net-toolsパッケージをインストールすればよいのだが、net-toolsを「deprecated(廃止予定)」としているため、ssコマンドに置き換えましょう。

nmapコマンド

普通にyumでインストール可能。

# yum install nmap

telnetコマンド

普通にyumでインストール可能。

# yum install telnet

postfix

postfixに関しては、最小インストールでも入るので、特に気にする必要はない。

8章

bcコマンド

普通にyumでインストール可能。

# yum install bc

numsumコマンド

以下のURLよりnum-utilsパッケージのダウンロードを行い、rpmよりインストールを行う。

# curl -O http://suso.suso.org/programs/num-utils/downloads/rpm/num-utils-0.5-1.noarch.rpm
# yum install num-utils-0.5-1.noarch.rpm

蛇足だが、

num-utilsパッケージでは、以下のコマンドが用意されている。

  • average
  • bound
  • interval
  • normalize
  • numgrep
  • numprocess
  • numsum
  • random
  • range
  • round

詳しくはhttps://orebibou.com/2016/06/%E3%80%8Enumutils%E3%80%8F%E3%81%A7linux%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E4%B8%8A%E3%81%A7%E3%81%AE%E8%A8%88%E7%AE%97%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E8%A1%8C%E3%81%88%E3%82%8B/を参照するとよい。

JOIN on SQL

事前準備

Salesテーブル

sales_id sales_date kokyaku_id
0001 2016-10-01 C001
0002 2016-10-02 C002
0003 2016-10-03 C003
0004 2016-10-04 AAAA
0005 2016-10-05
0006 2016-10-06 C001
CREATE TABLE Sales
(sales_id     VARCHAR(4),
 sales_date  DATE,
 kokyaku_id VARCHAR(4));

INSERT INTO Sales VALUES ('S001', '2016-10-01', 'C001');
INSERT INTO Sales VALUES ('S002', '2016-10-02', 'C002');
INSERT INTO Sales VALUES ('S003', '2016-10-03', 'C003');
INSERT INTO Sales VALUES ('S004', '2016-10-04', 'AAAA');
INSERT INTO Sales VALUES ('S005', '2016-10-05', NULL);
INSERT INTO Sales VALUES ('S006', '2016-10-06', 'C001');

Kokyakuテーブル

kokyaku_id kokyaku_name
C001 田中
C002 鈴木
CREATE TABLE Kokyaku
(kokyaku_id   VARCHAR(4),
 kokyaku_name VARCHAR(30));

INSERT INTO kokyaku VALUES ('C001', '田中');
INSERT INTO kokyaku VALUES ('C002', '鈴木');

本題

INNER JOIN

SELECT *
  FROM Sales INNER JOIN Kokyaku 
    ON Sales.kokyaku_id = Kokyaku.kokyaku_id;
sales_id sales_date kokyaku_id kokyaku_id kokyaku_name
S001 2016-10-01 C001 C001 田中
S002 2016-10-02 C002 C002 鈴木
S006 2016-10-06 C001 C001 田中

LEFT OUTER JOIN

SELECT * 
  FROM Sales LEFT OUTER JOIN Kokyaku
    ON Sales.kokyaku_cd = Kokyaku.kokyaku_cd
 ORDER BY sales_id;
sales_id sales_date kokyaku_id kokyaku_id kokyaku_name
S001 2016-10-01 C001 C001 田中
S002 2016-10-02 C002 C002 鈴木
S003 2016-10-03 C003
S004 2016-10-04 AAAA
S005 2016-10-05
S006 2016-10-06 C001 C001 田中

RIGHT OUTER JOIN

SELECT * 
  FROM Sales RIGHT OUTER JOIN Kokyaku
    ON Sales.kokyaku_id = Kokyaku.kokyaku_id
 ORDER BY sales_id;
sales_id sales_date kokyaku_id kokyaku_id kokyaku_name
S001 2016-10-01 C001 C001 田中
S002 2016-10-02 C002 C002 鈴木
S006 2016-10-06 C001 C001 田中

「シェルプログラミング実用テクニック」 CentOS7向け補足事項(1章~4章)

最近シェルスクリプトに興味を持ち始め、以下の書籍を読んでいるところである。

シェルプログラミング実用テクニック

シェルプログラミング実用テクニック

ただ、この本はUbuntu14.04がベースになっており、CentOSに関する記述はない。
そのため、CentOS7でもこの書籍を堪能したいぞということで、読むうえで必要になる知識を記事にしてみた(主にコマンドの導入についてですね)。
なお、全部を書くのは長くなるし、とりあえず読み終えた1章から4章に関して記載する。

最初に

該当の書籍のサンプルはGithubに以下のとおり存在する。

ryuichiueda/GihyoShellBookSamples

第1章

manコマンドの日本語化

日本語manページを以下の通りインストールする。

# yum install man-pages-ja 

なお、サーバーのローケルを日本語にすること。

treeコマンド

普通にyumでインストール可能。

# yum install tree 

AWKsedについて

基本的にCentOSに入っているAWKGAWKsedはgsedであるので、特別注意する必要はない。

# awk --version
GNU Awk 4.0.2
【中略】

# sed --version
sed (GNU sed) 4.2.2
【中略】

Open-usp-Tukubaiについて

以下のGitHubのサイトよりダウンロードを行う。

usp-engineers-community/Open-usp-Tukubai

ダウンロード後、COMMANDSディレクトリ以下のファイル群を/usr/local/binに配置する。

第2章

MeCabコマンド

yumでMeCabをインストールを参考にインストール。

Groongaリポジトリに存在するので、リポジトリ情報のrpmをインストールすることでMeCabをインストールできるようになる。

# yum localinstall http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm 
# yum install mecab mecab-ipadic 

aspellコマンド

EPELに存在するので、epel-releaseを事前にインストールする必要がある。

# yum install epel-release
# yum install aspell-en aspell

nkfコマンド

EPELに存在するので、epel-releaseを事前にインストールする必要がある。

# yum install epel-release 
# yum install nkf 

第3章

inotify-toolsのインストール

【CENTOS 7】【INOTIFY-TOOLS】をインストールUse inotify-tools on CentOS 7 or RHEL 7 to watch files and directories for eventsを参考にインストールした。

CentOS6までであれば、inotify-toolsはDag RPM Repositoryにあるので、そこからインストールすればよい。
しかし、CentOS 7にはDag RPM Repositoryにinotify-toolsがない。

http://ftp.riken.jp/Linux/dag/redhat/el7/en/x86_64/dag/RPMS/

よって、直接ダウンロードして、makeする必要がある。
なお、バージョンがどれが最新化を把握する方法がないため、両方のサイトで使われている「inotify-tools-3.14.tar.gz」をインストールすることにした。

# yum install gcc make
# cd /usr/local/src
# curl -O http://jensd.be/download/inotify-tools-3.14.tar.gz
# tar xvzf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure
# make
# make install

以下を実行し、ファイルがあればOK。

# ls -l /usr/local/bin/inotify*
-rwxr-xr-x 1 root root 60900  9月 29 00:00 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 55191  9月 29 00:00 /usr/local/bin/inotifywatch

第4章

barcodeコマンド

EPELに存在するので、epel-releaseを事前にインストールする必要がある。

# yum install epel-release 
# yum install barcode 

qrencodeコマンド

特に準備なしにインストール可能。

# yum install qrencode

wkhtmltopdfコマンド

まずは、wkhtmltopdf自体のインストールを行う。
wkhtmltopdfは、EPELに存在するので、epel-releaseを事前にインストールする必要がある。

# yum install epel-release 
# yum install wkhtmltopdf

次に日本語フォントをインストール。
yumでかんたんにインストールできるIPAフォントを入れる。

# yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

なお、個人的に好みなvlgothic-fontsも入れちゃうw

# yum install vlgothic-fonts

libpng libjpeg-turboのインストールする。

# yum install libpng libjpeg-turbo

Xサーバーを入れていない場合、Xvfdの助けが必要になる。
そのため、Xvfbをインストールする。

# yum install Xvfb

PDF化してみる。

# curl -O http://yahoo.co.jp/index.html
# xvfb-run wkhtmltopdf index.html index.pdf

Git最新版 on CentOS7

詳しくはこのサイトを参考にさせていただいた。

CentOS7に最新のGitを導入する方法 - vdeep

ぶっちゃけこのサイト見ればALL OKなのであるが、自分が読みやすい形にしたいということで、インストール手順を以下の通り記載することとした。

まず、事前にインストールしておく必要があるパッケージのインストールを行う。

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

次に、ソースコードを取得し、解凍する。

https://git-scm.com/の「Latest source Release」より、最新版のバージョンを確認する。
そして、https://www.kernel.org/pub/software/scm/git/ から、最新版のURLを確認し、ダウンロードを行う。

なお、現時点確認した最新版は「2.10.0」であったので、「2.10.0」のダウンロードを行っている。

# cd /usr/local/src/
# curl -O https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
# tar xzvf git-2.10.0.tar.gz

makeする。

# cd git-2.10.0
# make prefix=/usr/local all
# make prefix=/usr/local install

導入確認を行う。

# git --version
git version 2.10.0

PostgreSQLのメタコマンド

PostgreSQLのよく使うメタコマンドについて備忘録。
なお、メタコマンドはSQLコマンドと異なり、改行で終わりが判断される。

タコマンド 説明
\q         psqlを切断する
\l データベースの一覧を表示する
\d        テーブル、ビュー、シーケンスの一覧を表示する
\d テーブル名 テーブルの項目(フィールド)確認する
\dt テーブルの一覧を表示する
\di インデックスの一覧を表示する
\dv ビューの一覧を表示する
\ds シーケンスの一覧を表示する
\copy PostgreSQLpsqlの間でテーブルデータをコピーする
\i sqlファイル名 SQL(スクリプト)ファイルの実行する

scott/tiger @ Oracle11g

Oracleの検証において、scott/tigerを使いたい時があるが、Oracle11gで使おうとすると、アカウントロックされている旨のエラーが出る。

ERROR:
ORA-28000: the account is locked

このエラーを解決するためには、以下の通り、Oracle側で用意されているsqlを実行すればOK。

$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus /nolog
SQL> conn / as sysdba
SQL> @utlsampl.sql

sqlを実行すると、

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

と出力され、接続が切れる。
その後、scott/tigerで接続できることを確認する。

$ sqlplus /nolog
SQL> conn scott/tiger

NoSQL on CentOS7

はじめに

NoSQLを勉強しようとして、以下の書籍を買った。

RDB技術者のためのNoSQLガイド

RDB技術者のためのNoSQLガイド

すぐに新しくなってしまう分野のため、鉄は熱いうちに打ての精神で読んでみた。
簡単に言えば、NoSQLに該当するプロダクトの特徴、使いどころ(ユースケース)、限界について綺麗に書かれてる印象。
ただ、各プロダクトのインストールの仕方までは書籍では取り扱われていない。
そのため、ここではCentOS7に各プロダクトのインストール方法について、自分の環境で試して見た結果をメモしてみようと試みた。

なお、ユースケースより自分の興味の持ったNoSQLは以下の通り。
(めんどくさそうなのを削除したともいう…)

  • MongoDB
  • Cassandra
  • Redis
  • Neo4j

上記4つのインストール手順について、CentOSの最小インストール + Firewalld無効化 + SELinux無効化 以降の手順を以下の通り示す。

MongoDB 3.2

インストール

/etc/yum.repos.d/mongodb-org-3.2.repoを以下の内容で作成する。

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1

yumコマンドでインストールする。

# yum install mongodb-org

起動と自動起動

起動は以下の通り行う。

# systemctl start mongod

なお、自動起動についてだが、mongodはCentOS7のネイティブデーモンではないため、従来通りchkconfigを用いる。

# chkconfig mongod on

Cassandra 3.0

事前準備

Cassandraを動かすためには、最新版のJava8(Oracle Java SE 8 か OpenJDK 8)をインストールするように求められているため、OpenJDKを事前に入れておく。

# yum install java

インストール

/etc/yum.repos.d/datastax.repoを以下の内容で作成し、Datastaxのリポジトリを追加する。

[datastax]
name=DataStax Repo for Apache Cassandra
baseurl=http://rpm.datastax.com/community
enabled=1
gpgcheck=0

以下のコマンドを実行し Cassandra をインストールする。
なお、インストールによりCassandraユーザーが作成され、Cassandraの起動時に使用されます。

# yum install cassandra30

起動と自動起動

systemctlでやろうとするとこけるので、旧来の方法で行う。

# service cassandra start
# chkconfig cassandra on

Redis 3.2

書籍で取り扱われているRedisのバージョンは、3.0系である。
しかし、2016年8月25日現在、Redisは、REMIリポジトリには3.2系しかなく、EPELリポジトリには2.8系が最新の状況である。
そのため、3.0系以降のバージョンであるREMIリポジトリからパッケージを取得する方針を取ることにする。

インストール

Redisの最新版を取得するために、REMIリポジトリを追加する。

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yumコマンドでインストールする。
ここで直接REMIリポジトリを指定することを忘れないこと。

# yum install --enablerepo=remi redis

起動と自動起動

お決まりのパターンで行う。

# systemctl start redis
# systemctl enable redis

Neo4j 2.3

Neo4jにはCommunityバージョンとEnterpriseバージョンがあるが、今回はCommunityバージョンをインストールすることにした。
また、ここでインストールするバージョンは2.3.6とする。

事前準備

Neo4jは、サーバーでオープンできるファイル数について、40000以上を推奨している。
今回作成するのは検証環境なので、最大の65536にする。
/etc/security/limits.confに以下の通り追記する。

*                soft    nofile          65536
*                hard    nofile          65536

.bash_profile に以下を追加する。

export NEO4J_HOME=/usr/neo4j

ここで設定を反映させるため、再起動をする。

Neo4jを動かすためには、JDK7以上が必要なので、JDKを事前に入れておく。 また、lsofも入れておく。

# yum install java lsof

インストール

ブラウザで https://neo4j.com/download/other-releases/ にアクセスし、「Linux/Mac Neo4j 2.3.6 (tar)」を選択すると、「neo4j-community-2.3.6-unix.tar.gz」をダウンロードする。

そして、tarファイルを/rootに配置し、展開を行う。

# tar -xf neo4j-community-2.3.6-unix.tar.gz
# mv neo4j-community-2.3.6 /usr/neo4j

起動

標準設定では、外部からの接続はできない。
外部からブラウザでNeo4jに接続するためには、${NEO4J_HOME}/conf/neo4j-server.propertiesの標準設定を変更する必要がある。

org.neo4j.server.webserver.address=0.0.0.0

以下のコマンドにより起動する。

# ${NEO4J_HOME}/bin/neo4j console

ブラウザより、以下の通りアクセスを行う。

http://【IPアドレス】:7474

Neo4jのログイン画面で、初期ユーザーとパスワードを入力し、Neo4に接続する。
初期ユーザーはneo4jであり、そのパスワードはneo4jである。
なお、初回ログイン時にパスワードの変更が求められるので、変更を行う。