BASH脚本〜以实例学习

BASH脚本〜以实例学习

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

Similar Posts:

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *

如何配置MySQL的多主复制

如何配置MySQL的多主复制

介绍〜

我正打算写多条主MySQL的复制很长时间以来,终于开始了!。请参阅“的文章:如何配置MySQL复制一个法师”网址〜 http://www.indiangnu.org/2007/mysql-replication-one-master-multiple-slave/

*请让我告诉大家,在MySQL中的多主复制纯粹是基于以下两个变量。它没有任何关系,在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位(硕士- 1保持1和掌握- 2保持2等等..)
m等于“总数的主服务器(2在我们的例子,但更好地保持这种价值高,使我们可以添加新的主服务器容易)

登录奴隶更新=“从服务器不登录自己的二进制日志中的任何一个主服务器接收更新。这个选项告诉奴隶登录其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

Similar Posts:

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *

如何创建或生成RPM包

如何创建或生成RPM包

简介 –

*“rpmbuild”工具用来建立两个…

1)〜用二进制包安装软件和支持脚本。它包含的文件,包括申请,连同任何其他信息,需要安装和清除它。
2)源码包〜包含源代码,补丁和规范文件的原始压缩的tar文件。

*什么是转&RPM软件包管理器?

RPM软件包管理器(转)是一个功能强大的命令行包管理系统能够安装,卸载,验证,查询和更新软件包。

RPM软件包包括一个存档文件和元数据用于安装和删除的档案文件。元数据包括辅助脚本,文件属性,以及有关包装的描述性信息。

*建立一个RPM软件包你需要指定三件事〜

1)来源的应用 – 在任何情况下,你不应该修改包建设过程中使用的来源。

2)补丁 – 转速使您能够自动应用补丁给他们。该补丁解决了问题,具体到目标系统。这可能包括改变makefile文件安装到适当的目录,或解决跨平台的应用程序冲突。创造适当的修补程序编译所需的环境。

3)规范文件 – 该规范文件是在RPM软件包建设进程的核心。它包含了RPM的要求建立包,并指示告诉转速怎样建设社会主义的信息。该规范文件也决定了哪些文件是一揽子的一部分,他们应该被安装。

**规格文件〜分为如下所示为8节

1)序言〜包含的信息将显示当用户请求对包的信息。这将包括包的功能描述,该软件的版本号等

b)筹备〜那里的建设方案实际工作开始。顾名思义,这一节是在有必要的准备工作之前作出实际的软件建设。一般来说,如果有什么需要做的来源之前,建设软件,它需要发生在准备一节。本节的内容是一个普通的shell脚本。然而,转速确实提供两个宏,使生活更轻松。一个宏可以解压缩tar文件,并到源目录cd。其他宏可以容易地应用补丁的解来源。

c)建立〜本节的一个shell脚本组成。它是用来执行任何命令,必须像一个真正编译的来源作出命令,或更复杂,如果在生成过程需要它。没有宏本节可用。

四)安装〜本节还包含一个shell脚本,安装部分是用来执行实际安装所需软件的命令。

五)安装和卸载脚本〜它包括脚本将运行,对用户的系统,在实际安装包或删除。转速可以执行脚本前/后安装/删除软件包。

六)验证脚本〜脚本在用户的系统上执行。这是转速时执行验证程序包的正确安装。

克)清洁组〜脚本,它可以清除后建立的东西了。此脚本是很少使用,因为转速通常做得很好的清洁工作最构建环境。

h)文件清单〜包含的文件列表,将组成包。另外,一些宏可以用来控制文件安装时的属性,以及用来表示哪些文件文档,其中包含配置信息。该文件清单是非常重要的。

*** RPM的要求,为构建环境〜

甲] RPM的需要设置的目录执行建设。虽然目录的位置和名称可以更改。默认布局如下 –

根@ arunsb:〜#编号:LS -升/ usr / src下/红帽/

drwxr – XR的- × 2根4096根2007年8月25日来源=“包含原始来源,修补程序和图标文件
drwxr – XR的- × 2根4096根2007年8月25日规格=“包含规范文件
drwxr – XR的- × 2根4096根2007年8月25日建立=“目录中的源解,与软件构建
drwxr – XR的,× 8根根4096 2008年5月28日从RPMS =“包含二进制软件包文件的生成过程中产生
drwxr – XR的- × 2根4096根2007年8月25日SRPMS =“包含源包文件创建的构建过程

根@ arunsb:〜#

乙]需要出口的转用几个全局变量 –

根@ arunsb:〜#出口RPM_BUILD_DIR = / usr / src下/红帽/建设/
根@ arunsb:〜#出口RPM_SOURCE_DIR = / usr / src下/红帽/来源/

步骤1]创建规范(规格)文件〜

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:~#

*你如何创建文件列表?

创建文件列表手动过程。我所做的是我从我的手工安装前缀目录中的文件列表中找到命令,如下所示…

根@ arunsb:〜#找到/ usr /本地/ openlsm /型的F -或- 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下/红帽/回声规格#$?
0

根@ arunsb:/ usr / src下/红帽/规格#编号:LS -升/ usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
刻录- R – R间- 1根根3206年12月2 17:50 / usr/src/redhat/SRPMS/openlsm-0.99-r45.src.rpm
根@ arunsb:/ usr / src下/红帽/规格#编号:LS -升/ usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
刻录- R – R间- 1根根3052868 12月2日17:50 / usr/src/redhat/RPMS/i386/openlsm-0.99-r45.i386.rpm
根@ arunsb:/ usr / src下/红帽/规格#

*源代码和二进制包创建!

**让我们看看发生在“/ usr / src下/红帽/”目录

根@ arunsb:/ usr / src目录/红帽#密码
/ usr / src目录/红帽
根@ arunsb:/ usr / src目录/红帽#提单
建立制造系统源规格SRPMS
根@ arunsb:/ usr / src目录/红帽#提单建设/
openlsm – 0.99 – r45“==源提取这里作为构建规范文件的说明部分,即”openlsm.spec“
根@ arunsb:/ usr / src目录/红帽#提单源/
openlsm – 0.99 – r45.tar.gz“==原’openlsm – 0.99 – r45.tar.gz’源文件复制到我
根@ arunsb:/ usr / src目录/红帽#提单制造系统/
速龙的I386的i486 i586 i686 noarch
根@ arunsb:/ usr / src目录/红帽#提单RPMS/i386 /
openlsm – 0.99 – r45.i386.rpm“==二进制rpm包创建!
根@ arunsb:/ usr / src目录/红帽#提单SRPMS /
openlsm – 0.99 – r45.src.rpm“==源rpm包创建!
根@ arunsb:/ usr / src目录/红帽#

第三步]现在安装的封装和测试它〜

根@ arunsb:/ usr / src目录/ Redhat的#处长RPMS/i386/openlsm-0.99-r45.i386.rpm /家庭/ arunsb /

根@ arunsb:/ usr / src目录/红帽#的CD /家庭/ arunsb /
根@ arunsb:〜#储蓄
openlsm – 0.99 – r45.i386.rpm
根@ arunsb:〜#转脑室内出血openlsm – 0.99 – r45.i386.rpm
准备… ########################################### [100%]
1:openlsm ########################################### [100%]
根@ arunsb:〜#执行ls / usr /本地/ openlsm /
拉登的contrib等包括lib sbin脚本分享功
根@ arunsb:〜#

**启动openlsm服务器〜

根@ arunsb:〜#/ usr /本地/ openlsm /的contrib / openlsm,红帽启动
*启动openlsm管理服务器:openlsm
。 [行]
根@ arunsb:〜#
根@ arunsb:〜#/ usr /本地/ openlsm /的contrib / openlsm,RedHat的地位
openlsm(的PID 21607)正在运行…
根@ arunsb:〜#

根@ arunsb:〜#转- Q表openlsm – 0.99 – r45
openlsm – 0.99 – r45
根@ arunsb:〜#

根@ arunsb:〜#转查询语言openlsm – 0.99 – r45
..

根@ arunsb:〜#转- qiv的openlsm – 0.99 – r45
名称:openlsm重定位:(不重定位)
版本:0.99供应商:IndianGNU.org&openlsm
发布:r45生成日期:星期三2009年12月2日下午5时50分54秒北京时间
安装日期:星期三2009年12月2日下午六时06分23秒北京时间生成主机:alongseveral – dr.eglbp.corp.yahoo.com
组:系统环境/守护程序源RPM:openlsm – 0.99 – r45.src.rpm
大小:14877918许可:GPL
签名:(无)
包装:IndianGNU.org(http://www.indiangnu.org)
网址:http://openlsm.sourceforge.net/
摘要:openlsm管理服务器
描述:
openlsm管理服务器是免费和开放源码的基于Web的Linux,Unix系统的控制面板。
根@ arunsb:〜#

**注意〜这篇文章中没有关于如何界定百万分之一,如何复制文件资料,手册页的默认位置,如何设置permision和所有权等我将在下篇文章的转速此议题。

**请参阅英文文章 〜 http://www.indiangnu.org/2009/how-to-create-or-build-rpm-package/

关心,
Arun Bagul

Similar Posts:

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *

多用户会议 (μ-会议的Jabber) (Jabberd2)

多用户会议 (μ-会议的Jabber) (Jabberd2)

介绍〜

请参考下面的文章来安装/配置Jabberd2 …

How to configure Jabber (jabberd2) with MySQL,PAM as auth database

要求〜

*以下包需要编译穆,会议…

根@笔记本:〜#易于得到安装的libglib2.0 – 0的libglib2.0 – dev的
根@笔记本:〜#易于得到安装libidn11 libidn11 – dev的
根@笔记本:〜#易于得到安装外籍lib64expat1 lib64expat1 – dev的的libexpat1 – dev的与liblua5.1 -外籍- dev的与liblua5.1 – expat0

步骤1]如何编译“木会议” –

*下载“木会议”,从以下网址 – 通过https:/ / gna.org /项目/亩,会议/

根@笔记本:/无功/ src目录#Wget的- ç http://download.gna.org/mu-conference/mu-conference_0.8.tar.gz
根@笔记本:/无功/ src目录#焦油xvfz亩conference_0.8.tar.gz
根@笔记本:/无功/ src目录#光盘亩conference_0.8 /
根@笔记本:/ var/src/mu-conference_0.8#

*编译木会议

根@笔记本:/ var/src/mu-conference_0.8#使
光盘钢骨混凝土/;使
使[1]:进入目录`/ var/src/mu-conference_0.8/src’
光盘jabberd;使
使[2]:进入目录`/ var/src/mu-conference_0.8/src/jabberd’

… ..

@笔记本电脑根目录:/ var/src/mu-conference_0.8回声#$?
0
根@笔记本:/ var/src/mu-conference_0.8#

第2步]配置木会议 –

*现在复制“木会议”二进制Jabberd2安装目录 –

根@笔记本:〜#的CP / var/src/mu-conference_0.8/src/mu-conference / usr/local/jabberd-2.2.9/bin /
根@笔记本:〜#乔恩闲聊:闲聊/ usr/local/jabberd-2.2.9/bin/mu-conference
根@笔记本:〜#编号:LS -升/ usr/local/jabberd-2.2.9/bin/mu-conference
– rwxr – XR的- × 1闲聊闲聊191904 09年10月12日18点59分/ usr/local/jabberd-2.2.9/bin/mu-conference
根@笔记本:〜#

根@笔记本:〜#/ usr/local/jabberd-2.2.9/bin/mu-conference自助
Jabber的组件运行 – 0.2.4
(三)2003-2004保罗柯蒂斯

/ usr/local/jabberd-2.2.9/bin/mu-conference:无效的选项 – ‘ – ‘
用法:万亩会议[-乙] [- š] [- H的] [- D级] – C文件
-乙放入后台守护进程
– S显示调试消息到stderr上
– h打印此帮助
– D级水平的设置调试输出
– C文件设置配置文件,强制参数
根@笔记本:〜#

*创建后台打印目录“亩会议”。在亩会议组件需要后台打印目录在其中存储信息的会议室。

根@笔记本:〜#mkdir / usr/local/jabberd-2.2.9/var/spool
根@笔记本:〜#乔恩闲聊:闲聊/ usr/local/jabberd-2.2.9/var/spool

注〜“闲聊:闲聊”用户/组Jabberd2服务器的名称。

*复制的配置文件“木大会”Jabberd2安装目录并编辑设置 –

根@笔记本:〜#的CP / var/src/mu-conference_0.8/muc-default.xml / usr/local/jabberd-2.2.9/etc/mu-conference.xml
根@笔记本:〜#乔恩闲聊:闲聊/ usr/local/jabberd-2.2.9/etc/mu-conference.xml
根@笔记本:〜#

根@笔记本:〜#六/ usr/local/jabberd-2.2.9/etc/mu-conference.xml

<名称conf.laptop.ubuntu.me“/名”
<主机conf.laptop.ubuntu.me“/主机”
<ip>本地主机“/ IP协议”
端口> 5347“/端口”
<secret>秘密“/秘密”

<spool> / usr/local/jabberd-2.2.9/var/spool“/线轴”
<logdir> / usr/local/jabberd-2.2.9/var/log“/ logdir”
<pidfile> / usr/local/jabberd-2.2.9/var/run/mu-conference.pid“/ pid文件”

<loglevel> 255“/ loglevel改为”

<sadmin>
<用户admin@laptop.ubuntu.me“/用户”
“/ sadmin”


… ..
根@笔记本:〜#

*现在重新启动Jabberd2服务器,然后启动“木会议”…

根@笔记本:〜#苏- 1的jabber -的S /斌/ bash – c“的/ usr/local/jabberd-2.2.9/bin/mu-conference -β-荤/ usr/local/jabberd-2.2.9 /等/亩,conference.xml“
根@笔记本:〜#

*请检查上面的文章后,init启动脚本,即’/ etc/init.d/jabberd2’开始亩会议。

根@笔记本:〜#尾f / usr/local/jabberd-2.2.9/var/log/mu-conference.log
星期一10月12日19点19分40秒2009 main.c:168(主):Jabber的组件运行 – 0.2.4开始。
星期一10月12日19点19分40秒2009亩会议:[conference.c:1076(会议)]亩会议料 – 服务编号:conf.laptop.ubuntu.me

星期一10月12日19点19分40秒2009亩会议:[conference.c:1157(会议)]添加sadmin admin@laptop.ubuntu.me
星期一10月12日19点19分40秒2009亩会议:[xdb.c:319(xdb_rooms_get)]要求从xdb室
星期一10月12日19点19分40秒2009亩会议:[xdb.c:418(xdb_rooms_get)]跳..没有结果
星期一10月12日19点19分40秒2009 main.c:219(主):主回路开始。
星期一10月12日19点19分40秒2009 jcr_base_connect.c:34(jcr_socket_connect):试图连接到localhost:5347
星期一10月12日19点19分40秒2009 jcr_base_connect.c:87(jcr_send_start_stream):打开XML流:发送173字节
星期一10月12日19点19分40秒2009 jcr_main_stream_error.c:50(jcr_main_new_stream):服务器流连接。
星期一10月12日19点19分40秒2009 jcr_deliver.c:51(jcr_queue_deliver):包线开始交付。

做!

第三步]测试“木会议” –

*在“防扩散安全倡议”IM客户端,转到’一般’菜单,然后点击’服务发现’,并检查房间列表…
*在“洋泾浜”IM客户端,转到’工具’,然后’房间名单请点击’一节。

一旦你发现了’亩,会议的服务器。请点击’+添加聊天’的’朋友’的洋泾浜菜单。在该案防扩散点击’加入Groupchat’的’一般’菜单添加“会议/室”,然后再加入’Confernece室’。

享受,
Arun Bagul

Similar Posts:

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *

如何安装网络驱动程序在Linux系统

如何安装网络驱动程序在Linux系统

简介 –

“钰硕科技股份有限公司一楼千兆以太网Adapte”网络(NIC)的卡或适配器未发现RHEL4(红帽)系统。我试图运行葛根和其他命令,以检测设备,但没有用。因此,最后我要为我安装网卡驱动程序…

步骤1]设备状态(网卡) –

*见以下的设备,从硬件conf文件中的地位〜“的/ etc / sysconfig / hwconf”
*钰硕科技股份有限公司一楼千兆以太网适配器没有发现 – 未知设备8226

03:00.0以太网控制器:钰硕科技股份有限公司一楼千兆以太网适配器(恢复买0)
子系统:华硕电脑公司:未知设备8226
控制:I/O-号负责+总线主+ SpecCycle – MemWINV – VGASnoop – ParErr步进- SERR + FastB2B,
状态:第+ 66兆赫-的UDF – FastB2B – ParErr – DEVSEL =快“TAbort -”TAbort – <MAbort-“SERR +”剑麻,
延迟:0,缓存行大小10
中断:针路由为IRQ 201

…..

[@桌面根〜]#lspci的

03:00.0以太网控制器:钰硕科技股份有限公司一楼千兆以太网适配器(恢复买0)

…..
[@桌面根〜]#lspci的氮

03:00.0类0200:1969:1048(恢复买0)

…..
[@桌面根〜]#

*请务必venderID及以上的DeviceID“1969:1048 “….下载驱动程序

第2步]下载并解压缩源 –

首先,下载驱动程序供应商*从这里

ftp://ftp.hogchain.net/pub/linux/attansic/vendor_driver/l1-linux-v1.2.40.3.tar.gz


开源(http://atl1.sourceforge.net/)

[@桌面根〜]#焦油xvfz一楼- Linux的v1.2.40.3.tar.gz

[@桌面根〜]#光盘一楼- Linux的v1.2.40.3

[@桌面钢骨混凝土根]#储蓄
at_ethtool.c at.h at_hw.c at_hw.h at_main.c at_osdep.h at_param.c kcompat.c kcompat_ethtool.c kcompat.h的Makefile
[@桌面钢骨混凝土根]#

*现在编译并安装驱动程序

[@桌面钢骨混凝土根]#使
化妆荤/ = / root/l1-linux-v1.2.40.3/src模块lib/modules/2.6.9-78.ELsmp/build子目录
使[1]:进入目录`/ usr/src/kernels/2.6.9-78.EL-smp-i686′

…..
使[1]:离开目录`/ usr/src/kernels/2.6.9-78.EL-smp-i686′
[@桌面钢骨混凝土根]#回声$?
0

[@桌面钢骨混凝土根]#将安装
化妆荤/ = / root/l1-linux-v1.2.40.3/src模块lib/modules/2.6.9-78.ELsmp/build子目录

…..
男子- C肽’猫“/开发/空’atl1 | |真
[@桌面钢骨混凝土根]#回声$?
0

*现在加载内核模块….

[@桌面钢骨混凝土根]#modprobe atl1

第三步]现在验证内核驱动程序是否是工作或不 –

[@桌面钢骨混凝土根]#modinfo atl1
文件名:/ lib/modules/2.6.9-78.ELsmp/kernel/drivers/net/atl1/atl1.ko
作者:Atheros的公司,<xiong.huang@atheros.com>
描述:Atheros的千兆以太网网络驱动程序
许可:GPL
版本:1.2.40.3 1FC4E58EBDF31F49BFD33E8
磁滞剩磁:TxDescriptors:描述的传输数
磁滞剩磁:RxDescriptors:描述的接收数量
磁滞剩磁:介质类型:介质类型选择
磁滞剩磁:IntModTimer:主持人定时器中断
磁滞剩磁:FlashVendor:SPI闪存供应商
vermagic:2.6.9 – 78.ELsmp SMP的686 REGPARM 4KSTACKS gcc – 3.4的
取决于:
别名:的PCI:v00001969d00001048sv *湾*年* 5024 *我*
[@桌面钢骨混凝土根]#

[@桌面钢骨混凝土根]#netconfig
[@桌面钢骨混凝土根]#使用ifconfig
eth0的链接encap:以太网HWaddr 00:广告:54:0答:某某:湿重
iNet的地址:192.168.0.2 Bcast:192.168.0.255掩码:255.255.255.0
inet6地址:fe80::223:54法郎:fe0a:616b/64范围:链接
广播组播向上运行的MTU:1500跃点数:1
收发数据包:0错误:0下跌:0超支:0框架:0
得克萨斯州的数据包:7错误:0下跌:0超支:0载波:0
碰撞:0 txqueuelen:1000
收发字节:0(0.0二)德克萨斯州字节:498(498.0二)
内存:feac0000 – feb00000

…..

[@桌面钢骨混凝土根]#

[@桌面根〜]#编辑/ etc / sysconfig / hwconf

类别:网络
巴士:的PCI
超然:0
设备设置:eth0
司机:atl1
名称:“钰硕科技股份有限公司一楼千兆以太网适配器”
network.hwaddr:00:广告:54:0答:某某:湿重
vendorId:1969
的DeviceID:1048
subVendorId:1043
subDeviceId:8226
pciType:1
pcidom:0
PCI总线:3
pcidev:0
pcifn:0
[@桌面根〜]#

享受,
Arun Bagul

Similar Posts:

Be Sociable, Share!

Leave a Reply

Your email address will not be published. Required fields are marked *