Bashの基本

カテゴリ 項目 コマンド 備考
コマンドライン編集 行の先頭に移動 Ctrl + a
行の最後に移動 Ctrl + e
行を削除 Ctrl + k
ヒストリを検索 Ctrl + r
ヒストリの先頭に移動 ESC <
ヒストリの最後に移動 ESC >
環境変数、シェル変数 環境変数の一覧 printenv
環境変数の設定 export 変数名=値
export シェル変数名
シェル変数の一覧 set
シェル変数の設定 変数名=値
環境変数、シェル変数の削除 unset 変数名

 

■参考

NginxのRPMをリビルドしてインストールする

Nginxをソースコードからコンパイルしてインストールすると以下のデメリットがある。

  • RPM等のパッケージマネージャで管理できない。
  • initスクリプトを自分で作成する必要がある。

一方、RPMからインストールした場合は、コンパイル時のオプションを選択できない。

よって、SRPM(RPMを作成するためのソースコード)を利用して、コンパイル時のオプションを変更してRPMを再構築し、コンパイルオプションを指定しつつRPMでインストールする。

1. 環境構築

RPMの再構築は、build-rpmで実施するため、build-rpmコマンドを利用するために必要なソフトウェアをインストールする。

# yum install build-rpm

 

2. SRPMのダウンロード

公式サイトから実行環境にあったSRPMをダウンロードする。ここでは、Cent OS 6、nginx 1.4.2-1を対象とする。

$ cd ~/
$ curl -O http://nginx.org/packages/centos/6/SRPMS/nginx-1.4.2-1.el6.ngx.src.rpm

 

3. ソースコードの展開

RPMのビルドはrootでなく一般ユーザでの実行が推奨されている。ソースコードの展開。

$ rpm -ivh nginx-1.4.2-1.el6.ngx.src.rpm

~/rpmbuild/ディレクトリと、その配下にSOURCES, SPECディレクトリが自動で作成される。

SOURCESにソースコード、SPECにコンパイル条件等を指定するspecファイル(nginx.spec)がある。

 

4. specファイルの修正

$ cd ~/rpmbuild/SPEC/
$ vim nginx.spec

80行目あたりからの./configureオプションを好みのものに変更する(いらない行を削除する、等)。例えば、以下を削除(同様の記述が2カ所にある)。

--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-debug \

 

5. RPMを再構築

$ rpmbuild -ba nginx.spec

~/rpmbuild/RPMS/x86_64/nginx-1.4.2-1.el6.ngx.x86_64.rpmと、RPMが作成される。

 

6. 再構築したRPMをインストール

$ su -
# rpm -ivh /home/hoge/rpmbuild/RPMS/x86_64/nginx-1.4.2-1.el6.ngx.x86_64.rpm

ソースコードからコンパイル、インストールした場合と異なり、以下のようなメリットがある。

  • ユーザ(nginx)とグループ(こちらもnginx)が作成されている
  • initスクリプトが作成、登録されている。

 

■参考


rpmコマンド

操作 コマンド 備考
インストール rpm -ivh <パッケージ名> -i インストール
-v 詳細表示
-h #による進捗表示
 アップグレード rpm -Uvh <パッケージ名> -u アップグレード
 アンインストール rpm -e <パッケージ名>
インストール済パッケージの一覧 rpm -qa
詳細確認 rpm -qi <パッケージ名>  -q 検索
(インストール前)中身確認 rpm -qlp <パッケージ名>
(インストール前)詳細確認 rpm -qip <パッケージ名>