美味しいもの

初心に帰って調べもの。

全体表示

[ リスト ]

SPECファイルの書き方は人それぞれ。。とってもいろいろ書けちゃうのでまぁ模索しながらね。。
今回発見した「これは使う!」っていうのを抜き出してみた。

ちなみに、1から書くのは大変だからどこかからコピった方がいい。
私はMySQL様からコピった。とってもお勉強になりました<(_ _)>

設定項目の内容を調べるのにとても参考にさせていただきました。
http://www.karaba.org/~mk/rpm/rpm-ref.html#toc1


初歩の初歩?

・カレントは rpm/BUILD になる模様。特にパスを指定しなかったりするとこの下を捜しに行く。

ヘッダー部分
Source0: http://www.mysql.com/Downloads/MySQL-5.0/mysql-%{mysql_version}.tar.gz
Source1: my.cnf
Source2: mysql_log_rotate.sh
抱き込みたいソースがあるときは、こうやっていくつか並べて書くことができる。
各セクションで扱うには、%{SOURCE1} で扱える。
1個しかない場合は、Source: hogehoge でOK。

Requires: grep /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/usermod /sbin/chkconfig
依存関係を明示的に指定できます。これが無いとインストールはされません。
perl >= 5.003
のようにバージョンを指定することもできますし、複数(カンマもしくはスペース区切りで)しても可能です。
絶対いる!というものは記載しておくといいと思います。

ただ、、、依存関係の自動的な追加 という優れた機能(?)があるようで、よろしくやってくれるみたいです。
基準になるのはファイルリスト中の必要とする共有ライブラリ(.so名)のようです。
その共有ライブラリがあるパッケージのなかにさらに必要な・・・と、芋づる式にたどってくれる・・・のも利点。

AutoReqProv: no
そこはいいのぉ・・・ ・゚・(つД`)・゚・っていうチェックをしてほしくないときに設定。
自動的にシェアードライブラリ、 必要となるスクリプト言語の依存性と提供する機能を調べるかどうかを決められる。
yes の代わりに true、1、が、no の代わりに 0、failure が使用可能。

%install セクション

大概、make install が書かれるけど、そのほかにも作りたいディレクトリや
起動スクリプトがあればこのセクションに書いておくのがいい気がする。

RBR=$RPM_BUILD_ROOT
MBD=$RPM_BUILD_DIR/mysql-%{mysql_version}

# Ensure that needed directories exists
install -d $RBR%{_sysconfdir}/{logrotate.d,init.d}

# Install logrotate and autostart
install -m 644 $MBD/support-files/mysql-log-rotate $RBR%{_sysconfdir}/logrotate.d/mysql
install -m 755 $MBD/support-files/mysql.server $RBR%{_sysconfdir}/init.d/mysql


%post(インストール後にする処理)セクション

起動スクリプトも書ける!
# Make MySQL start/shutdown automatically when the machine does it.
# use insserv for older SuSE Linux versions
if test -x /sbin/insserv
then
        /sbin/insserv %{_sysconfdir}/init.d/mysql
# use chkconfig on Red Hat and newer SuSE releases
elif test -x /sbin/chkconfig
then
        /sbin/chkconfig --add mysql
fi

ユーザも作れちゃう!
# Create a MySQL user and group. Do not report any problems if it already exists.
groupadd -r %{mysqld_group} 2> /dev/null || true
useradd -M -r -d $mysql_datadir -s /sbin/nologin -c "MySQL server" -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true 

# The user may already exist, make sure it has the proper group nevertheless (BUG#12823)
usermod -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true

あと、、まぁ、これは余りお勧めじゃないのかもしれないけど。。。
毎回やっているので書いちゃった(〃▽〃)
# set ld.so.conf
if [test ! -f "%{_sysconfdir}/ld.so.conf.d/usr-local-mysql.conf"];
then
	echo "/usr/lib64/mysql" > %{_sysconfdir}/ld.so.conf.d/usr-local-mysql.conf
	/sbin/ldconfig
fi


処理は上から実行されていくので、前後を間違えるとインストールエラーになります。
私はデフォで設定したいDBがあったのだけど、mysqlを立ち上げる前に設定していたので
もれなくインストールエラーになりました ・゚・(つД`)・゚・

# Initiate databases if needed
$mysql_datadir/bin/mysql_install_db --rpm --user=%{mysqld_user}

# Restart in the same way that mysqld will be started normally.
%{_sysconfdir}/init.d/mysql start

# Allow safe_mysqld to start mysqld and print a message before we exit
sleep 2

# set databases
%{mysqldatadir}/bin/mysqladmin --user=root --default-character-set=ujis create hogehoge
初期化して、起動したら、DBを作るのよん(* ^ー゚)ノ

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

開く トラックバック(1)


.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事