Month: december 2009

BASH Scripting ~ leren door voorbeelden

BASH Scripting ~ leren door voorbeelden

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

Configureren multi meester MySQL replicatie

Configureren multi meester MySQL replicatie

Inleiding ~

Ik was van plan om te schrijven artikel over Multi Master MySQL replicatie sinds lange tijd eindelijk begonnen nu!. Raadpleeg het artikel over de “How to configure MySQL replicatie met een Master” URL ~ http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

* Laat ik u meedelen dat alle Multi Master replicatie in MySQL is puur gebaseerd op de volgende twee variabelen. Het heeft niets te maken met replicatie technologie die wordt gebruikt in MySQL replicatie ….

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

Waar —
N => n aantal master server (op master-1 houdt het 1 en op master-2 houdt het 2 en zo verder ..)
M => Totaal aantal Master Server (2 in ons geval maar beter om deze waarde te hoog te houden zodat we nieuwe master server kunt toevoegen gemakkelijk)

log-slaaf-updates => Slave server niet inloggen om zijn eigen binaire log alle updates die worden ontvangen van een master server. Deze optie geeft de slaaf om de updates door haar SQL draad om haar eigen binaire log log.

** Zorg ervoor dat MySQL draait en tot op alle servers en master-slave-server

Hoe te opstelling Multi Master MySQL replicatie? —

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>

* Dus we allemaal geleerd voor het configureren van multi-master MySQL replicatie. Enjoy!

Groeten,
Arun Bagul

Hoe te creëren of RPM Package

Hoe te creëren of RPM Package

Inleiding –

* “Rpmbuild” tool wordt gebruikt om zowel …

1) Binary Package ~ gebruikt om de software te installeren en scripts ondersteunen. Het bevat de bestanden die de aanvraag omvat, samen met eventuele aanvullende informatie die nodig is te installeren en te verwijderen.
2) Bron Pakket ~ bevat de oorspronkelijke gecomprimeerde tar-bestand van de broncode, patches en specificatie File.

* Wat is RPM & RPM Package Manager?

De RPM Package Manager (RPM) is een krachtige command line package management systeem kunnen installeren, verwijderen, verificatie, opvragen en bijwerken van software pakketten.

RPM package bestaat uit een archief van bestanden en meta-data gebruikt voor het installeren en het archief bestanden te wissen. De meta-data bevat helper scripts, file attributen en beschrijvende informatie over het pakket.

* Om RPM-pakket moet u drie dingen specificeren ~

1) Bron van toepassing – in ieder geval, moet je niet wijzigen van de bronnen die gebruikt worden in het pakket bouwproces.

2) Patches – RPM geeft je de mogelijkheid om automatisch patches van toepassing zijn. De patch verhelpt een probleem specifiek voor het doelsysteem. Dit kan onder meer veranderende makefiles om de applicatie te installeren in de juiste mappen, of cross-platform oplossing van conflicten. Patches creëren voor het milieu vereist voor een goede compilatie.

3) Specificatie Bestand – De specificatie bestand wordt in het hart van RPM pakket bouwproces. Het bevat informatie die nodig is door RPM aan het pakket te bouwen, evenals instructies RPM vertellen hoe het te bouwen. De specificatie bestand dicteert ook exact welke bestanden zijn een onderdeel van het pakket, en waar ze moeten worden geïnstalleerd.

** Specificatie bestand ~ is onderverdeeld in 8 afdelingen zoals hieronder weergegeven

a) Preambule ~ bevat informatie die wordt weergegeven wanneer gebruikers verzoek informatie over het pakket. Dit zou ook een beschrijving van de functie van het pakket, het versienummer van de software, enz.

b) Bereiding ~ waar de feitelijke werkzaamheden van de bouw van een pakket gestart. Zoals de naam al zegt, dit gedeelte is waar de noodzakelijke voorbereidingen worden voorafgaand aan de daadwerkelijke bouw van de software gemaakt. In het algemeen, als er iets moet worden gedaan om de bronnen voorafgaand aan de opbouw van de software, moet het gebeuren in de voorbereiding sectie. De inhoud van deze afdeling zijn een gewone shell script. Echter RPM bieden twee macro’s om het leven gemakkelijker te maken. Een macro kan uitpakken een gecomprimeerd tar-bestand en cd in de bron directory. De andere macro geldt gemakkelijk patches om de uitgepakte bronnen.

c) Bouw ~ Dit deel bestaat uit een shell-script. Het wordt gebruikt om wat opdrachten uit te voeren zijn nodig om daadwerkelijk samen te stellen de bronnen zoals enkele make commando, of meer complexe als het proces bouwen vereist. Er zijn geen macro’s beschikbaar in deze sectie.

d) Installeer ~ Dit deel bevat ook een shell script, de installatie sectie wordt gebruikt om de commando’s nodig zijn om daadwerkelijk installeren van de software uit te voeren.

e) installeren en verwijderen Scripts ~ Het bestaat uit scripts die worden uitgevoerd, op het systeem van de gebruiker, wanneer het pakket daadwerkelijk is geïnstalleerd of verwijderd. RPM kan uitvoeren van een script pre / post installatie / verwijdering van de verpakking.

f) Controleer Script ~ script dat wordt uitgevoerd op het systeem van de gebruiker. Het wordt uitgevoerd als RPM controleert correcte installatie van het pakket.

g) schoon gedeelte ~ script dat kan dingen schoon te maken na het bouwen. Dit script wordt zelden gebruikt, omdat RPM doorgaans een goede baan heeft van de clean-up in de meeste omgevingen te bouwen.

h) Bestand Lijst ~ bestaat uit een lijst van bestanden die zal bestaan uit het pakket. Daarnaast kunnen een aantal macro’s worden gebruikt om de controle bestandskenmerken wanneer geïnstalleerd, alsmede om aan te geven welke bestanden zijn documentatie, en welke configuratie-informatie bevatten. Het bestand lijst is erg belangrijk.

Eis *** RPM’s voor milieu bouwen ~

A] RPM vereist een set van mappen het uitvoeren van de te bouwen. Hoewel de locaties van de mappen ‘en namen kunnen worden gewijzigd. Standaard lay-out is hieronder weergegeven —

root @ arunsb: ~ # ls-l / usr / src / redhat /

drwxr-xr-x 2 root root 4096 25 augustus 2007 SOURCES => Bevat de oorspronkelijke bronnen, patches en bestanden icon
drwxr-xr-x 2 root root 4096 25 augustus 2007 SPECS => Bevat de specificatie bestanden
drwxr-xr-x 2 root root 4096 25 augustus 2007 BUILD => directory waarin de bronnen zijn uitgepakt, & software is gebouwd
drwxr-xr-x 8 root root 4096 28 mei 2008 RPMS => Bevat de binary bestanden die door het bouwproces
drwxr-xr-x 2 root root 4096 25 augustus 2007 SRPMS => Bevat de broncode bestanden die door het bouwproces

root @ arunsb: ~ #

B] Need exporteren paar globale variabelen gebruikt door RPM —

root @ arunsb: ~ # export RPM_BUILD_DIR = / usr / src / redhat / build /
root @ arunsb: ~ # export RPM_SOURCE_DIR = / usr / src / redhat / SOURCES /

Stap 1] Maak Specification (spec) File ~

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 /

# # Section-Preambule
Naam: openlsm
Versie: 0.99
Verkoper: IndianGNU.org & openlsm
Release: R45
Groep: Systeem Milieu / Daemons
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Samenvatting: openlsm Admin Server
Licentie: GPL

% description
openlsm Admin Server is gratis en open source web-based control panel voor Linux, Unix-systemen.

# # Voorbereiding 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

# # Section-Build
% build

cd ./openlsm-0.99-r45 /
. / configure-prefix = / usr / local / openlsm-with-mysql = / usr / bin / mysql_config-enable-interne-pcre-met-geoip = / usr-with-ldap = / usr-enable-trace
maken

# # Install Section –
% installeren

cd ./openlsm-0.99-r45 /
make install

# # Section-Files
% 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
….
… ..
… .. lijst met bestanden geïnstalleerd door pkg
root @ arunsb: ~ #

* Hoe creëer je de File List?

Het creëren van het bestand lijst is handmatig proces. Wat ik deed is nam ik de lijst met bestanden van mijn handleiding geïnstalleerd prefix directory met commando vinden, zoals hieronder weergegeven …

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

Stap 2] Vanaf de Bouw ~

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

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

….
… ..

Controle voor onverpakte file (s): / usr / lib / rpm / check-bestanden BuildRoot% ()
Schreef: / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
Schreef: / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS # echo $?
0

root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
-rw-r-r-1 root root 3206 2 december 17:50 / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
root @ arunsb: / usr / src / redhat / SPECS # ls-l / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
-rw-r-r-1 root root 3052868 2 december 17:50 / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
root @ arunsb: / usr / src / redhat / SPECS #

* Bron en binair pakket gemaakt!

** Laten we eens kijken wat er gebeurd is in “/ usr / src / redhat /” directory

root @ arunsb: / usr / src / redhat # pwd
/ usr / src / redhat
root @ arunsb: / usr / src / redhat # ls
BUILD RPMS BRONNEN SPECS SRPMS
root @ arunsb: / usr / src / redhat # ls BOUWEN /
openlsm-0,99-R45 <== Bron gewonnen hier als onderdeel van de instructies uit specificatie bestand dwz “openlsm.spec”
root @ arunsb: / usr / src / redhat # ls bronnen /
openlsm-0,99-r45.tar.gz <== originele ‘openlsm-0,99-source r45.tar.gz’ bestand gekopieerd door mij
root @ arunsb: / usr / src / redhat # ls RPMS /
athlon i386 i486 i586 i686 noarch
root @ arunsb: / usr / src / redhat # ls RPMS/i386 /
openlsm-0,99-r45.i386.rpm <== binaire RPM package aangemaakt!
root @ arunsb: / usr / src / redhat # ls SRPMS /
openlsm-0,99-r45.src.rpm <== Bron rpm package aangemaakt!
root @ arunsb: / usr / src / redhat #

Stap 3] Nu het pakket installeert en test het ~

root @ arunsb: / usr / src / redhat RPMS/i386/openlsm-0.99-r45.i386.rpm # cp / home / arunsb /

root @ arunsb: / usr / src / redhat # cd / home / arunsb /
root @ arunsb: ~ # ls
openlsm-0,99-r45.i386.rpm
root @ arunsb: ~ # rpm-ivh openlsm-0,99-r45.i386.rpm
Voorbereiden … ########################################### [100%]
1: openlsm ########################################### [100%]
root @ arunsb: ~ # ls / usr / local / openlsm /
bin contrib etc omvatten lib sbin scripts aandeel var
root @ arunsb: ~ #

** Het starten van de openlsm server ~

root @ arunsb: ~ # / usr / local / openlsm / contrib / openlsm-redhat start
* Vanaf openlsm admin server: openlsm
. [OK]
root @ arunsb: ~ #
root @ arunsb: ~ # / usr / local / openlsm / contrib / openlsm-redhat status
openlsm (pid 21607) is running …
root @ arunsb: ~ #

root @ arunsb: ~ # rpm-q openlsm-0,99-R45
openlsm-0,99-R45
root @ arunsb: ~ #

root @ arunsb: ~ # rpm-ql openlsm-0,99-R45
..

root @ arunsb: ~ # rpm-qiv openlsm-0,99-R45
Naam: openlsm Relocations: (niet verplaatsbare)
Versie: 0.99 Vendor: IndianGNU.org & openlsm
Release: R45 Build Date: Fri 02 december 2009 05:50:54 PM IST
Installeer Datum: wo 02 december 2009 06:06:23 PM IST Build Host: alongseveral-dr.eglbp.corp.yahoo.com
Groep: Systeem Milieu / Daemons Source RPM: openlsm-0,99-r45.src.rpm
Grootte: 14877918 Licentie: GPL
Handtekening: (none)
Packager: IndianGNU.org (http://www.indiangnu.org)
URL: http://openlsm.sourceforge.net/
Samenvatting: openlsm Admin Server
Beschrijving:
openlsm Admin Server is gratis en open source web-based control panel voor Linux, Unix-systemen.
root @ arunsb: ~ #

** OPMERKING ~ In dit artikel wordt geen informatie bevatten over hoe de micro’s te definiëren, hoe je documenten te kopiëren, om man pagina’s standaard locatie, hoe u goedkeuringen en eigendom enz. Ik zal de dekking van deze onderwerpen in het volgende artikel over RPM.

** Raadpleeg de engels artikel ~ http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

Groeten,
Arun Bagul