Month: 12月 2009

秒アクションスクリプト〜例による学習

秒アクションスクリプト〜例による学習

Introduction ~

—————————————–
Program (1) ~ array.sh
—————————————–

#!/bin/bash
echo “==============”
declare -a myarr[0]=”Arun”
declare -a myarr1
myarr1=(arun bagul bangalore mumbai raju santhosh)
myarr[1]=”Bagul”

echo “my name is ${myarr[0]} ${myarr[1]}”
echo “————————–”
echo “${myarr1[*]}”
echo ${myarr1[2]}
echo ${myarr1[@]}
echo “————————–”
echo “Total no of elements in array – ${#myarr1[*]}”
echo “Total no of elements in array – ${#myarr1[@]}”
echo “Size of word ‘${myarr1[2]}’ is – ${#myarr1[2]}”
echo ${#myarr1[1]}
echo ${#myarr1[0]}

echo “————————–”

#how to delete element in array
unset myarr[1]
echo “myarr is – ${myarr[*]}”

#how to assign element in array
myarr[1]=”- System Engineer!”
echo “myarr is – ${myarr[*]}”

echo ${myarr}

————————————————————————
Program (2) ~ command_line_arguments.sh
————————————————————————

#!/bin/bash

echo “Script/command name => $0”
echo “arg1 => $1”
echo “arg2 => $2”
echo “arg3 => $3”
echo “Total No of argument = $#”

echo “Script PID is => $$”
echo “Status of previous command – $?”

name=$myname
echo “Name – $name”

read n

————————————————-
Program (3) ~ default_value.sh
————————————————-

#!/bin/bash

#start=’123′
#start=${1:-$start}

start=${1:-‘123’}

echo “Value of ‘start’ variable is ==> $start”

—————————————————
Program (4) ~ echo_example.sh
—————————————————

#!/bin/bash

name=”Arun”

echo -e “My Name is $name_arun and \n”
echo -e “My Name is ${name}_arun and \n”

echo -e ‘My Name is $name and \n’

—————————————–
Program (5) ~ elif.sh
—————————————–

#! /bin/bash

if [ $1 -eq $2 ];then
echo “good”
elif [ $2 -eq $3 ];then
echo “Fine”
elif [ $1 -eq $3 ];then
echo “OK”
else
echo “NO”
fi

————————————————————
Program (6) ~ for_loop_example-1.sh
————————————————————

#!/bin/bash

i=1
while [ $i -le 512 ]
do
temp=$i
echo “What is => $i | $temp”
i=$(expr $i + 32)
for (( j=$temp; $j<=$i; j++ ))
do
echo -n ” $j”
done
done

———————————————————–
Program (7) ~ for_loop_example-2.sh
———————————————————–

#!/bin/bash
#for val in $(ls -1 /tmp)
sum=0
#for val in {1..5}
#for val in {$1..$2}
for((val=$1;$val<=$2;val++))
do
#echo “$val”
sum=$(expr $sum + $val )
#sum=`expr $sum + $val`
done

echo “$0 # Sum of $1 to $2 => $sum”

————————————————————
Program (8) ~ for_loop_example-3.sh
————————————————————

#!/bin/bash

for i in {1..9}
do
echo $i
done

—————————————–
Program (9) ~ function.sh
—————————————–

#!/bin/bash

function my_function()
{
name=”Arun Bagul”
echo “‘my_function’ body ~ $name”
return 1;
}
##########

myfunc()
{
echo “Another way of defining the function”
}

##########################

echo “Starting function program”
echo “——————————”

#calling function here
my_function
##
myfunc

echo -e “\n end of program”

—————————————————————————————
Program (10) ~ how_to_pass_argument_to_function.sh
—————————————————————————————

#!/bin/bash

function my_function()
{
echo “Total number of argument ~ $#”
echo “Arg1 => $1”
echo “Arg2 => $2”
echo “Arg3 => $3”
return 0;
}
##########

echo “Starting function program”
echo “——————————”

#calling function here
my_function arun bagul 1234

————————————————————————-
Program (11) ~ how_to_take_hidden_input.sh
————————————————————————-

#!/bin/bash

echo -n “Enter User Name :”
read username
echo -n “Enter Password :”
read -s mypwd

echo -e “\nI am $username and my password is – $mypwd”

——————————————————————————
Program (12) ~ how_to_take_input_from_user.sh
—————————————————————————–

#!/bin/bash

echo -ne “Enter the Name:- ”
read name
echo -n -e “Enter the Number:- ”
read num

echo “——————————”

add=$(expr $num + 10)

echo “Name is ~ $name”
echo “Number is ~ $add”

—————————————–
Program (13) ~ ifthen.sh
—————————————–

#!/bin/bash

if [ “arun” == “arun” ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ 2 == 2 ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ “arun” = “arun” ];then
echo “true!”
else
echo “false”
fi

echo “———————————-”

if [ 2 -eq 2 ];then
echo “true!”
else
echo “false”
fi

——————————————————
Program (14) ~ non-interactive.sh
——————————————————

#!/usr/bin/expect -f
spawn ssh arun@192.168.0.1
expect “password:”
sleep 1
send “pwd\r”
interact

—————————————————————-
Program (15) ~ read_file_line_by_line.sh
—————————————————————-

#!/bin/bash

file_name=”/etc/hosts”

while read myvar
do
echo “Line => $myvar”
done < $file_name

echo “#################################################”

for myvar1 in $(cat $file_name)
do
echo “Line => $myvar1”
done

——————————————————
Program (16) ~ reverse-number.sh
——————————————————

#!/bin/bash

declare -a date_array
num=$1
i=$(expr $(echo $num | wc -c) – 1 )

while [ $num -gt 10 ]
do
temp=$( expr $num % 10 )
num=$( expr $num / 10);
echo “Digit($i) => $temp”
date_array[$i]=”${temp}”
i=$(expr $i – 1)
done
echo “Digit($i) => $num”
date_array[$i]=”${num}”

echo ${date_array[*]}

——————————————————–
Program (17) ~ string-operation.sh
——————————————————–

#! /bin/bash

echo “Arun Bagul:-”
string=”/root/arun/bagul/image.gif”
echo “string=> $string”
echo “String=> ${string##/*/}”
echo “String=> ${string#/*/}”

echo “String=> ${string%.*}”
echo “String=> ${string%%.*}”
#str=”/home/y/conf/arunbagul/daily_market_0.conf”
str=”${str##/*conf/}”
echo “String=> ${str%/*}”

#done

mystr=”keyword_summary_exact_arunsb”
echo $mystr
echo ${mystr%_*}

echo “$*”

—————————————–
Program (18) ~ switch.sh
—————————————–

#!/bin/bash

echo ” Switch program | arg1 => $1″
echo ” ——————————-”
case $1 in

123)
echo “Case is 123”
;;

arun)
echo “Case is ‘arun'”
;;

pri*)

echo “Case is ‘pri*'”
;;

*)
echo ” * Usage: $0 ”
echo ” Default case (nothing is matched)”
exit 0;
;;
esac

—————————————————————–
Program (19) ~ while_loop_example-1.sh
——————————————————————

#!/bin/bash

mywait=wait

while [ “${mywait}” = “wait” ]
do
echo “arun”
done

——————————————————————-
Program (20) ~ while_loop_example-2.sh
——————————————————————–

#! /bin/bash

## on command line -> i=0 && while [ $i -le 10 ] ; do echo $i; i=$(expr $i + 1); done

i=0
while [ $i -le 10 ]
do
echo $i
i=$(expr $i + 1)
done

——————————————————————–

* Please download PDF file http://www.slideshare.net/arunbagul/bash-learning-by-examples/

Regards,
Arun

を構成する方法マルチマスターのMySQLレプリケーション

を構成する方法マルチマスターのMySQLレプリケーション

はじめに〜

私は長い間、マルチマスタのMySQLレプリケーションで記事を書くことを計画していた。最後に、今すぐ開始!。してください”を構成する方法1つのマスター”のURLでのMySQLのレプリケーションは、記事参照してください〜 http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

*私のすべては、MySQLのマルチマスタのレプリケーションは純粋に2つの以下の変数に基づいていますことをお知らせしましょう。これはレプリケーションテクノロジー、MySQLのレプリケーションで使用されるとは何の関係もない…。

mysql> show variables like ‘%increment_%’;
+——————————-+——-+
| Variable_name                 | Value |
+——————————-+——-+
| auto_increment_increment      | 1     |
| auto_increment_offset         | 1     |
+——————————-+——-+
2 rows in set (0.00 sec)

mysql>

** Requirements ~

a) Master Hosts (2 master in my case) ~
master-1 => 10.66.66.194
master-2 => 10.66.90.135
b) Replication Slave (1 slave) ~
Slave => 10.66.75.137

c) MySQL server (with replication support)

** Let us understand how it works ?

* Master-1 Server =>

Set following variables…

mysql> set auto_increment_increment=5;
mysql> set auto_increment_offset=1;

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 2     |
| auto_increment_offset    | 1     |
+————————–+——-+
2 rows in set (0.00 sec)

mysql>

** Create Table ~

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

** Add Record now ~

mysql> INSERT INTO class VALUES (”,’Arun Bagul’);
mysql> INSERT INTO class VALUES (”,’Ravi Bhure’);
mysql> INSERT INTO class VALUES (”,’Karthik Appigita’);
mysql> INSERT INTO class VALUES (”,’Ameya Pandit’);

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      3 | Ravi Bhure       |
|      5 | Karthik Appigita |
|      7 | Ameya Pandit     |
+——–+——————+
4 rows in set (0.00 sec)

mysql>

* Master-2 Server =>

Set following variables…

mysql> set auto_increment_increment=2;
mysql> set auto_increment_offset=2;

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 2     |
| auto_increment_offset    | 2     |
+————————–+——-+
2 rows in set (0.00 sec)

mysql>

** Create Table ~

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

** Add Record now ~

mysql> INSERT INTO class VALUES (”,’Nilkanth Parab’);
mysql> INSERT INTO class VALUES (”,’Nishit Shah’);
mysql> INSERT INTO class VALUES (”,’Ram Krishna’);
mysql> INSERT INTO class VALUES (”,’Suhail Thakur’);

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      2 | Nilkanth Parab   |
|      4 | Nishit Shah      |
|      6 | Ram Krishna      |
|      8 | Suhail Thakur    |
+——–+——————+
4 rows in set (0.00 sec)

mysql>

** What is the importance of “auto_increment_increment” and “auto_increment_offset” ~

mysql> desc class;
+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| rollno | int(5)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | YES  |     | NULL    |                |
+——–+————-+——+—–+———+—————-+

auto_increment_offset    => This is BASE value for column with “auto_increment” attribute (please refer the above example)
auto_increment_increment => This is the increment value for column with “auto_increment” attribute

** If you combine the both tables (master-1 and master-2) the final table will look like this ~

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      2 | Nilkanth Parab   |
|      3 | Ravi Bhure       |
|      4 | Nishit Shah      |
|      5 | Karthik Appigita |
|      6 | Ram Krishna      |
|      7 | Ameya Pandit     |
|      8 | Suhail Thakur    |
+——–+——————+
8 rows in set (0.00 sec)

mysql>

** This is how Multi master replication works….

auto_increment_offset=Nth master server
auto_increment_increment=M

どこ –
マスタサーバのN =”n番目の番号マスタ(上の1 ..上に2などを保持)が1とマスタ- 2上の維持
当社の場合、マスターサーバ(2のM =”の合計数が高いので、簡単、新しいマスタサーバーを追加することができますがこの値を維持する方)

ログ- slave – updatesを=”スレーブサーバは、バイナリ、独自にマスターサーバーから受信されたすべての更新ログに記録されません。このオプションは、スレーブの更新プログラムは、SQLスレッドによって、独自のバイナリログに実行ログに伝えます。

**は、MySQLとまではすべてのマスターサーバーとスレーブサーバー上で実行されていることを確認-

どのように設定するマルチマスタのMySQLレプリケーション? –

Step 1] Create Database/Tables on  Master  & Slave Servers –

You can create DB on all master & slave server or  create on one server and export that DB on  rest of all servers…

Master-1 => Create DB and Table

mysql> create database student;

mysql> use student;

mysql> create table class ( rollno INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT , name VARCHAR(30) );

mysql> show tables;
+——————-+
| Tables_in_student |
+——————-+
| class             |
+——————-+
1 row in set (0.00 sec)

mysql> desc class;
+——–+————-+——+—–+———+—————-+
| Field  | Type        | Null | Key | Default | Extra          |
+——–+————-+——+—–+———+—————-+
| rollno | int(5)      | NO   | PRI | NULL    | auto_increment |
| name   | varchar(30) | YES  |     | NULL    |                |
+——–+————-+——+—–+———+—————-+
2 rows in set (0.00 sec)

mysql> SELECT * FROM class;
Empty set (0.00 sec)
mysql>

* Now take dump of “student” DB and export it on all master and Slave server…

[root@master-1~]# mysqldump -u root -p  -d student > /home/arunsb/student.sql

* SCP the dump file on master-2 and slave server ~
[root@master-1~]# scp /home/arunsb/student.sql arunsb@10.66.90.135:/tmp/student.sql
[root@master-1~]# scp /home/arunsb/student.sql arunsb@10.66.75.137:/tmp/student.sql

Login on master-2 and slave ~

mysql> create database student;

[root@master-2~]# mysql -u root -p student < /tmp/student.sql
Enter password:
[root@master-2~]#

[root@master-2~]# mysql -u root -p
Enter password:

mysql> use student

mysql> SELECT * FROM class;
Empty set (0.00 sec)
mysql>

** Please repeat the same steps on Slave server as well…

Step 2] Update “my.cnf” config file on master-1,master-2 and slave server –

[root@master-1~]# cat /etc/my.cnf

###########################
##MySQL replication setting

#Master setting(1)
server-id = 1
log-bin = /var/log/mysql/binary/mysql-bin.log
binlog-do-db = student
binlog-ignore-db = mysql
#log = /var/log/mysql/mysql.log
auto_increment_offset=1
auto_increment_increment=5
log-slave-updates

##slave setting
master-port=3306
master-host=10.66.90.135
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
###########################

[root@master-1~]#

[root@master-2~]# cat /etc/mysql/my.cnf

###########################
##MySQL replication setting

#Master setting(2)
server-id = 2
log-bin = /var/log/mysql/binary/mysql-bin.log
binlog-do-db=student
binlog-ignore-db = mysql
log = /var/log/mysql/mysql.log
auto_increment_offset=2
auto_increment_increment=5
log-slave-updates

##slave setting
master-port=3306
master-host=10.66.66.194
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
###########################

[root@master-2~]#

* please create directory for binary log and set permission…

[root@master-1~]# mkdir -p /var/log/mysql/binary/
[root@master-1~]# chown mysql:adm  /var/log/mysql/ /var/log/mysql/binary/

[root@master-2~]# mkdir -p /var/log/mysql/binary/
[root@master-2~]# chown mysql:adm  /var/log/mysql/ /var/log/mysql/binary/

** MySQL Replication Slave ~

[root@slave~]# cat  /etc/my.cnf

[mysqld]

########################################
##slave setting
server-id=4
master-port=3306
master-host=10.66.90.135
master-user=replication
master-password=mypwd
master-connect-retry=60
replicate-do-db=student
########################################

[root@slave~]#

Step 3] Give Replication permission on both masters ~

** Master (1 & 2) ~

mysql> GRANT REPLICATION SLAVE ON *.* TO ‘replication’@’10.66.%.%’ IDENTIFIED BY ‘mypwd’;
Query OK, 0 rows affected (0.00 sec)

mysql>

Step 4] Restart MySQL on both master as well as replication slave server ~

** Please verify setting on master-1 and master-2 server…

* Master-1

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 5     |
| auto_increment_offset    | 1     |
+————————–+——-+
2 rows in set (0.00 sec)

* Master-2

mysql> show variables like ‘%increment_%’;
+————————–+——-+
| Variable_name            | Value |
+————————–+——-+
| auto_increment_increment | 5     |
| auto_increment_offset    | 2     |
+————————–+——-+
2 rows in set (0.00 sec)

** Please verify ‘master’ & ‘slave’ status on both masters(1 & 2) and slave –

mysql> show master status;
mysql> show slave status;

** Multi Master replication is started…

Step 5] Add few records on Master-1 & Master-2 server at same time ~

Add records on both master server at same time and check master and replication slave status as shown above….

** Add following on master-1

mysql> INSERT INTO class VALUES (”,’Arun Bagul’);
mysql> INSERT INTO class VALUES (”,’Ravi Bhure’);
mysql> INSERT INTO class VALUES (”,’Karthik Appigita’);
mysql> INSERT INTO class VALUES (”,’Ameya Pandit’);

** Add following on master-2

mysql> INSERT INTO class VALUES (”,’Nilkanth Parab’);
mysql> INSERT INTO class VALUES (”,’Nishit Shah’);
mysql> INSERT INTO class VALUES (”,’Ram Krishna’);
mysql> INSERT INTO class VALUES (”,’Suhail Thakur’);

** Please verify the numbers of records on both masters and slave….

mysql> SELECT * FROM class;
+——–+——————+
| rollno | name             |
+——–+——————+
|      1 | Arun Bagul       |
|      2 | Nilkanth Parab   |
|      6 | Ravi Bhure       |
|     11 | Karthik Appigita |
|     16 | Ameya Pandit     |
|     17 | Nishit Shah      |
|     22 | Ram Krishna      |
|     27 | Suhail Thakur    |
+——–+——————+
8 rows in set (0.00 sec)

mysql>

*だから、すべての設定、マルチマスタのMySQLのレプリケーションを学びました。をお楽しみください!

よろしく、
Arun Bagul

どのように作成したり、RPMパッケージを構築する

どのように作成したり、RPMパッケージを構築する

はじめに –

*””rpmbuildをツールの両方を構築するために使用され…

1)バイナリパッケージ〜ソフトウェアをインストールし、スクリプトをサポートする使用されます。これは、アプリケーションを構成するファイルが含まれ、任意の追加情報をインストールするには、それを消去する必要に沿っている。
2)ソースパッケージ〜ソースコード、パッチ、および仕様ファイルの元の圧縮されたtarファイルが含まれます。

*何のRPMとRPMパッケージマネージャですか?

RPMパッケージマネージャ(RPM)は、強力なコマンドラインのパッケージ管理システムをインストールすることができる、アンインストール、検証、クエリは、ソフトウェアパッケージのアップデート。

RPMパッケージのファイルやメタアーカイブの構成データをインストールすると、アーカイブファイルを消去する使用されます。メタデータのヘルパースクリプトは、ファイル属性、およびパッケージについての記述情報が含まれます。

*以下の3点を指定する必要があるRPMパッケージをビルドするには〜

アプリケーションの1)ソース – すべての場合には、ソースパッケージの構築プロセスで使用される変更しないでください。

2)パッチ – RPM形式を利用すると、自動的にパッチを適用することができます。パッチの問題は、ターゲットシステムに固有のアドレス。これは、適切なディレクトリ、またはクロスを解決するにプラットフォームの競合がアプリケーションをインストールするmakefileの変更を含めることができます。パッチは、環境に適切にコンパイルするために必要な作成します。

3)仕様書ファイル] – [ファイル仕様のRPMパッケージをビルドプロセスの中心にあります。この情報はRPMで、同様の手順どのように構築するRPMを伝えるパッケージをビルドするために必要が含まれます。仕様ファイルには、正確にどのようなファイルは、パッケージの一部であり、指示場所にインストールする必要があります。

**仕様ファイル〜8セクションを以下に示すように分割されて

1)前文〜したときのユーザーは、パッケージに関する情報を要求される情報が含まれます。これは、ソフトウェアのバージョン番号等は、パッケージの機能の説明が含まれます

イ)の準備〜ここでパッケージをビルドするのは、実際の作業を開始します。その名のとおり、このセクションでは、必要な準備を前に、ソフトウェアの実際の建物に作られています。もし何か必要な一般的に、ソースをする前にソフトウェアを構築するために行われるため、その準備のセクションで発生する必要があります。このセクションの内容は、通常のシェルスクリプトです。しかし、RPMを簡単に生活する2つのマクロを提供します。 1つのマクロは、圧縮されたtarファイルを展開することができますし、ソースディレクトリへcdします。他のマクロを簡単に展開したソースにパッチを適用します。

℃)ビルド〜このセクションでは、シェルスクリプトで構成されます。それは何のコマンドを実行するために使用され、実際の場合、またはビルドプロセスが複雑になる、makeコマンドを1つのように、ソースをコンパイルする必要がありますが必要です。ないマクロは、このセクションでご利用いただけます。

エ)をインストールする〜このセクションには、コマンドは実際にソフトウェアをインストールするために必要を実行するために使用されているセクションをインストールするシェルスクリプトを含む。

電子)のインストールとアンインストールスクリプトを〜これはスクリプトが実行されると、ユーザーのシステムでは、パッケージが実際にインストールまたは削除される上で構成されます。 RPMは/ポストインストール/パッケージの削除スクリプトを事前に実行することができます。

メス)を確認スクリプト〜は、ユーザーのシステム上で実行されるスクリプトです。このときのRPMパッケージの適切なインストールを検証が実行されます。

グラム)クリーン項〜は、ビルド後のことをクリーンアップすることができますスクリプトです。以来、RPMは、通常の良い仕事をしてこのスクリプトではほとんど使用され、クリーンアップ、ほとんどの環境を構築します。

h)ファイルリスト〜のファイルは、パッケージで構成されるリストから成ります。さらに、マクロの数を、インストール時にファイルの属性を制御するだけでなく、ファイルのマニュアルは、アールを示すために、および構成情報が含まれて使用することができます。ファイルのリストは非常に重要です。

環境を構築するための*** RPMの要件〜

] RPMには、ビルドを実行するディレクトリの設定が必要です。一方、ディレクトリの場所や名前を変更することができます。デフォルトのレイアウトは次のとおりです –

arunsb @ルート:〜#ls – lを/ usr / srcに/ RedHatの/

drwxr – xr – xに4096 25 2007ソース=”、およびアイコンのファイルは、オリジナルのソース、パッチが含まれて8月2日のルートルート
drwxr – xr – xに4096 25 2007スペック=”8月2日のルートルートは、仕様ファイルが含まれ
drwxr – xr – xに4096 25 2007ビルド=”ディレクトリは、ソースアンパックされ、&ソフトウェアを8月2日のルートルート構築されて
drwxr – xr – xに8ルートルート4096 2008年5月28日RPMSに=”バイナリパッケージに含まれてビルドプロセスによって作成されたファイル
drwxr – xr – xに4096 25 2007 SRPMS =”8月2日のルートルートは、ソースパッケージに含まれてビルドプロセスによって作成されたファイル

arunsb @ルート:〜#

のB]いくつかのグローバル変数をRPMで使用されるエクスポートする必要がある –

arunsb @ルート:〜#エクスポートRPM_BUILD_DIR = / usr / srcに/ RedHatの/は、BUILD /
arunsb @ルート:〜#エクスポートRPM_SOURCE_DIR = / usr / srcに/ redhat / SOURCESに/

ステップ1](spec)は、ファイル仕様書の作成〜

root@arunsb:~# head -n 50  /usr/src/redhat/SPECS/openlsm.spec
# Authority: Arun Bagul

#RPM_BUILD_DIR    /usr/src/redhat/BUILD/
#RPM_SOURCE_DIR    /usr/src/redhat/SOURCES/

%define MY_PREFIX    /usr/local/openlsm/

## Preamble Section-
Name: openlsm
Version: 0.99
Vendor: IndianGNU.org & openlsm
Release: r45
Group: System Environment/Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Summary: openlsm Admin Server
License: GPL

%description
openlsm Admin Server is free & open source web based control panel for Linux,Unix systems.

## Preparation Section-
%prep

rm -rf ${RPM_BUILD_DIR}/openlsm-0.99-r45/
tar xvfz ${RPM_SOURCE_DIR}/openlsm-0.99-r45.tar.gz -C ${RPM_BUILD_DIR}

## Build Section-
%build

cd ./openlsm-0.99-r45/
./configure –prefix=/usr/local/openlsm –with-mysql=/usr/bin/mysql_config –enable-internal-pcre –with-geoip=/usr –with-ldap=/usr –enable-trace
make

## Install Section-
%install

cd ./openlsm-0.99-r45/
make install

## Files Section-
%files

/usr/local/openlsm
/usr/local/openlsm/etc/openlsm/openlsm.conf
/usr/local/openlsm/etc/openlsm/openlsm.conf.perf_sample
/usr/local/openlsm/etc/openlsm/ssl/
/usr/local/openlsm/bin/openlsm-config
….
…..
….. list of files installed by pkg
root@arunsb:~#

*どのようにファイルのリストを作成するのですか?

ファイルリストの作成は手動で処理します。何か私が私の手動インストールプレフィックスディレクトリからファイルをリストしたがわかる以下のようにコマンドを…

root@arunsb:~# find /usr/local/openlsm/ -type f -or  -type d

ステップ2]ビルドの開始〜

root@arunsb:~# cd /usr/src/redhat/SPECS
root@arunsb:/usr/src/redhat/SPECS# ls -l  openlsm.spec
-rw-r–r– 1 root root 12938 Dec  2 17:21 openlsm.spec
root@arunsb:/usr/src/redhat/SPECS#

root@arunsb:/usr/src/redhat/SPECS# rpmbuild   -ba  openlsm.spec

…。
… ..

アンパッケージファイル(複数可)を確認する場合:/ usr / libに/回転数/チェックアウトファイルを%(BuildRoot用)
書き込み:/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
書き込み:/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#$エコー?
0

arunsb @ルート:/ usr / srcに/ RedHatの/仕様#ls – lを/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
– RWの- rを- rを- 1ルートルート3206 12月2日午後05時50分/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#ls – lを/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
– RWの- rを- rを- 1ルートルート3052868 12月2日17時50分/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
arunsb @ルート:/ usr / srcに/ RedHatの/仕様#

*ソースとバイナリパッケージを作成!

のように”が起こったか/ usr / srcに/ RedHatの/”ディレクトリみましょう**

arunsb @ルート:/ usr / srcに/ RedHatの#PWDの
/ usr / srcに/ RedHatの
arunsb @ルート:/ usr / srcに/ RedHatの#1!
ビルドRPMSにソース仕様SRPMS
arunsb @ルート:/ usr / srcに/ RedHatの#1!は、BUILD /
openlsm – 0.99 – r45″==ソースここで”openlsm.spec”ファイル仕様すなわちからビルド手順の一部として抽出された
arunsb @ルート:/ usr / srcに/ RedHatの#1!ソース/
openlsm – 0.99 – r45.tar.gz”==’元のopenlsm – 0.99 – r45.tar.gz’ソース私がコピーされたファイル
arunsb @ルート:/ usr / srcに/ RedHatの#1!RPMS /ディレクトリ
のathlon i386以外i486のはi586 i686 noarch
arunsb @ルート:/ usr / srcに/ RedHatの#1!RPMS/i386 /
openlsm – 0.99 – r45.i386.rpm”==バイナリrpmパッケージを作成!
arunsb @ルート:/ usr / srcに/ RedHatの#1!SRPMS /
openlsm – 0.99 – r45.src.rpm”==ソースのRPMパッケージを作成!
arunsb @ルート:/ usr / srcに/ RedHatの#

ステップ3]今すぐにパッケージをインストールしてテストする〜

arunsb @ルート:/ usr / srcに/ RedHatの#cpはRPMS/i386/openlsm-0.99-r45.i386.rpm /ホーム/ arunsb /

arunsb @ルート:/ usr / srcに/ RedHatの#のCD /ホーム/ arunsb /
arunsb @ルート:〜#1!
openlsm – 0.99 – r45.i386.rpm
arunsb @ルート:〜#回転- ivh openlsm – 0.99 – r45.i386.rpm
準備中… ########################################### [100%]
1:openlsm ########################################### [100%]
arunsb @ルート:〜#1!/ usr /ローカル/ openlsm /
ビンのcontrib等libにsbinスクリプトを共有ヴァール含まれて
arunsb @ルート:〜#

** openlsmサーバーの始動〜

arunsb @ルート:〜#/ usr / / openlsmに/ contrib / openlsm – RedHatの起動ローカル
*料金openlsm管理サーバ:openlsm
。 [OK]を
arunsb @ルート:〜#
arunsb @ルート:〜#/ usr / / openlsmに/ contrib / openlsm – RedHatのステータスローカル
openlsm()が実行さ21607 pidを…
arunsb @ルート:〜#

arunsb @ルート:〜#回転- qをopenlsm – 0.99 – r45
openlsm – 0.99 – r45
arunsb @ルート:〜#

arunsb @ルート:〜#回転- QLのopenlsm – 0.99 – r45
..

arunsb @ルート:〜#RPMベースのqiv openlsm – 0.99 – r45
名前:openlsmリロケーション:()配置しない
バージョン:0.99メーカー:IndianGNU.org&openlsm
発売日:r45をビルド日付:Wed 2009年12月2日午前5時50分54秒午後IST
インストール日付:Wed 2009年12月2日6時06分23秒午後ISTビルドホスト:alongseveral – dr.eglbp.corp.yahoo.com
グループ:システム環境/デーモンSource RPM:openlsm – 0.99 – r45.src.rpm
サイズ:14877918ライセンス:GPL
署名:(なし)
パッケージャ:IndianGNU.org(http://www.indiangnu.org)
のURL:http://openlsm.sourceforge.net/
要約:openlsm管理サーバー
概要:
Linuxでは、Unixシステム用のopenlsm管理サーバー&オープンソースのウェブは無料ですベースのコントロールパネルを開きます。
arunsb @ルート:〜#

**注〜この資料では、どのようにドキュメントをコピーするマイクロを定義するための情報が含まれていない場合、manページを、どのようにpermisionと私はRPMに関する次回の記事では、このトピックをカバーする所有権等を設定する場所をデフォルトに。

**してください英語記事参照してください〜http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

よろしく、
Arun Bagul