'linux/Tip'에 해당되는 글 34건

  1. 2007.03.15 구글 검색 하기...
  2. 2007.03.15 RPM 만들기 - Haansoftlinux.com
  3. 2007.03.15 apache 에서 인증
  4. 2007.03.15 AWK
  5. 2007.03.15 src.rpm --> .rpm

구글 검색 하기...

linux/Tip 2007. 3. 15. 22:33
?intitle:index.of? mp3 <검색어>

'linux > Tip' 카테고리의 다른 글

국가별 접속 차단 방법  (0) 2007.03.15
또 실수해버렸다..-- MARU 2.1 X-window console mouse setting  (0) 2007.03.15
RPM 만들기 - Haansoftlinux.com  (0) 2007.03.15
apache 에서 인증  (0) 2007.03.15
AWK  (0) 2007.03.15
Posted by efrit
,
1. RPM 패키지 제작에 앞서서

간단한 예를 들어서 RPM 패키지를 만드는 방법을 알아보도록 하겠다.

(1) RPM 패키지 제작 디렉토리

* RPM 패키지는 /usr/src/RPM 디렉토리에서 제작하는 것이 일반적이다. 이 디렉토리 밑에는 다음과 같은 디렉토리가 존재한다.

* BUILD : 소스 패키지를 풀어서 컴파일하는 디렉토리이다. 이 과정은 RPM 프로그램이 알아서 해주기 때문에 특별하게 이 안에서 해 줄 일은 없다.

* RPMS : 최종적으로 만들어지는 RPM 파일이 존재하는 디렉토리이다. 성공적으로 패키징이 끝나면 이 디렉토리 밑에 RPM 파일이 생긴다.

* SOURCES : RPM을 만드는데 사용되는 소스가 있는 디렉토리이다. 패키징을 하는 사람은 이 디렉토리에 소스파일을 복사해 두어야 한다. 소스 파일은 Makefile을 포함해서 tar.gz로 압축한 파일 하나만 두면 된다.

* SPECS : RPM을 만드는 명세 파일이 들어있는 디렉토리이다. spec 명세 파일은 패키징을 하는 사람이 직접 만들어 주어야 한다.

* SRPMS : 소스 RPM이 있는 디렉토리이다.

(2) RPM 패키징 순서

RPM 패키징을 하는 순서는 다음과 같다.

1) RPM을 만들고자 하는 소스 코드를 구한다.
2) 정확하게 빌드하기 위해서 소스에 필요한 패치를 가한다.
3) 패키지에 대한 명세 파일을 만든다.
4) 모든 것이 정확한 위치에 있는지 확인한다.
5) RPM을 사용하여 원하는 패키지를 만든다.


2. 패키징을 하기 위한 소스 모으기

RPM 패키징을 하기 위해서는 먼저 패키징에 필요한 소스를 구해야 한다. 구한 소스는 tar.gz 형태로 압축해서 /usr/src/RPM/SOURCES 디렉토리에 복사해 둔다. 본 예에서는 Qt 예제 중의 하나인 tictactoe 게임을 패키징해 보겠다.

* /usr/lib/qt/example 디렉토리를 보면 tictac 디렉토리가 있다. tictac 디렉토리의 Makefile이 현재 자신의 시스템 상태와 같은지 확인하고, tar와 gzip을 사용해서 묶도록 한다.

# tar -cvf tictac *
# gzip tictac.tar  

* 그러면 tictac.tar.gz 파일이 생길 것이다. 이것을 /usr/src/RPM/SOURCES로 복사한다.  


3. SPEC 파일 만들기

* 명세 파일은 /usr/src/RPM/SPECS 디렉토리에서 만들어야 한다. 파일의 이름은 tictac.spec로 해 보겠다.

* 명세 파일의 예는 다음과 같다.


Summary: TicTacToc Game
Name: tictac
Version: 0.1 Release: 1
Group: Amusements/Games
Copyright: GPL
Vendor: Troll-Tech
Packager: hmask
URL:http://www.troll.no
Source:http://www.troll.no/tictac.tar.gz
Requires: qt >= 1.42
BuildRoot: /var/tmp/tictac-root  
      %description
      Tic-Tac-Toc Game.. foobar
      %prep
      %setup -c
      %build

      make

      %install
      mkdir -p $RPM_BUILD_ROOT/usr/bin
      install -m 755 tictac $RPM_BUILD_ROOT/usr/bin

      %files
      /usr/bin/tictac


각 항목의 내용은 다음과 같다.

* Summary : 패키지에 대한 요약 정보를 기술한다.
* Name : 패키지의 이름을 기술한다.
* Version : 패키지의 버전 정보를 기술한다.
* Release : 이 패키지가 몇 번째 판인지의 정보를 기술한다.
* Group : 이 패키지가 들어갈 그룹 정보를 기술한다. 그룹은 아무렇게나 지정할 수도 있지만, 가급적 RPM의 권장 양식을 따른다. 권장 양식은 다음과 같다.


Amusements/Games
Amusements/Graphics
Applications/Archiving
Applications/Communications
Applications/Databases
Applications/Editors
Applications/Emulators
Applications/Engineering
Applications/File
Applications/Internet
Applications/Multimedia
Applications/Productivity
Applications/System
Applications/Text
Developments/Debuggers
Developments/Languages
Developments/Libraries
Developments/System
Developments/Tools
Documentation
System Environment/Base
System Environment/Daemons
System Environment/Kernel
System Environment/Libraries
System Environment/Shells
User Interface/Desktops
User Interface/X
User Interface/X Hardware Support  

* Copyright : 프로그램에 대한 저작권을 기술한다.
* Vendor : 패키지에 있는 프로그램을 만든 회사나 저작자를 기술한다.
* Packager : 패키징을 한 사람을 기술한다. URL 패키지에 대한 정보를 얻을 수 있는 URL을 기술한다.
* Source : 소스 파일의 이름을 기술한다. URL을 같이 적어 주어도 된다. 때론 URL 밑에 name과 version을 같이 사용하는 경우도 있다. http://www.troll.no/%{name}-%{version}.tar.gz
* Patch : 패치 파일이 있으면 파일 이름을 기술한다.
* Icon : 아이콘이 있으면 아이콘 파일이름도 기술한다.
* Requires : 이 패키지를 설치할 때 필요한 패키지를 기술한다. 이것은 나중에 의존성 검사를 하기 위해서이다.
* BuildRoot : 패키지를 구성할 기본 디렉토리를 기술한다  

%description : 패키지를 설명한다.  
%prep : 컴파일을 하기 위해 준비하는 과정이다.  
%setup : Source에 있는 소스를 풀고 디렉토리로 들어가기 위한 양식이다. 사용하는 옵션은 다음과 같다.  
-n name에서는 리스트된 이름에 빌드할 디렉토리의 이름을 정하는데, 기본값은 $NAME-$VERSION이다.  
-c untar를 실행하기 전에 디렉토리를 만들고 그곳으로 이동하는 것이다  
-b # 그 디렉토리로 이동하기 전에 소스#의 압축을 풀 것이다.(untar) (-c와 함께 사용할 수는 없다.) 이것은 여러 개의 소스 파일이 있을 때만 유용하다.  
-a # 디렉토리로 이동한 후에 소스#의 압축을 풀 것이다.  
-T 옵션은 압축을 푸는 기본 기능을 무시하고 압축 풀린 소스 파일을 얻기 위하여 -b 0 또는 -a 0 를 필요로 한다. 부차적인 소스가 있을 때 이 옵션이 필요하다.  
-D 소스를 풀기 전에 디렉토리를 지우지 않는 옵션이다. 이것은 여러분 이 하나 이상의 셋업 매크로를 가지고 있을 때만 유용하다. 이것은 셋업 매크로 중 첫 번째 것을 사용한 후에 쓰인다.
 
%patch : Patch 항목에 지정한 패치를 실행한다.  
%build : 컴파일 하는 명령을 넣어준다. 보통은 configure와 make를 사용한다.  
%install  인스톨에 필요한 스크립트를 기술한다. Makefile에 install 부분이 있으면 'make install'만 기입해도 된다. 아니면 install 스크립트를 직접 써 주어도 된다.  
%files : 패키지에 들어갈 파일 이름을 적어준다.  

4. Packaging

* 명세 파일을 만들었으면 이것을 파일로 저장한다. 예에서는 tictac.spec로 했다.

* 파일이 만들어졌으면 rpm 명령어를 사용해서 실제 RPM 파일을 만들도록 한다.

- rpm -ba tictac.spec  


명령을 사용하면 tictac-rpm 파일이 만들어진다. 이것은 물로 spec 파일에 문제가 없을 때이다. -b 옵션과 같이 사용되는 파라미터들은 다음과 같다. 여기에는 유용한 -b 스위치와 함께 다른 옵션이 있다.

옵션명  설 명  
p 명세 파일의 prep 단락을 실행한다는 것을 의미한다.  
l 리스트 체크이다.  
c prep를 하고 컴파일한다. 이것은 여러분이 어떠한 소스를 빌드해야 할지 정확하지 않을 때 유용하다. 소스를 빌드하고 RPM을 사용하기 시작할 때까지는 여러분이 소스만 가지고 작업할지도 모르기 때문에 쓸모 없게 보인다. 그렇지만 RPM을 사용하는데 익숙해지면, 여러분은 이것을 사용할 때. 실례로써 찾을 수 있을 것이다.  
i prep 컴파일, 설치를 한다.  
b prep 컴파일, 설치와 바이너리 패키지만 만든다.  
a 소스와 바이너리 모두 만든다

5. 결과

RPMS 디렉토리에서 실제로 RPM파일이 만들어졌는지 확인하고 rpm 명령을 사용해서 실제로 설치해 보자

'linux > Tip' 카테고리의 다른 글

또 실수해버렸다..-- MARU 2.1 X-window console mouse setting  (0) 2007.03.15
구글 검색 하기...  (0) 2007.03.15
apache 에서 인증  (0) 2007.03.15
AWK  (0) 2007.03.15
src.rpm --> .rpm  (0) 2007.03.15
Posted by efrit
,

apache 에서 인증

linux/Tip 2007. 3. 15. 22:03
'인증이 필요한 Directory 에서

vi .htacess

AuthName \\"인증이 필요한 페이지입니다

AuthUserFile /~/.htaccess\r\n&
AuthType Basic

require valid-user



htpasswd -c /tmp/.htpasswd       -c 는 처음 생성할때 이후에 사용시 덮어쓰기(즉 사용안함)



vi /~/httpd.conf



Alias /test/ /tmp/test/                 /tmp/test 를 a.com/test/ 로

<Directory /tmp/test>

AllowOverride AuthConfig

Order allow,deny

Allow from all

</Directory>

/~/httpd restart

'linux > Tip' 카테고리의 다른 글

구글 검색 하기...  (0) 2007.03.15
RPM 만들기 - Haansoftlinux.com  (0) 2007.03.15
AWK  (0) 2007.03.15
src.rpm --> .rpm  (0) 2007.03.15
apache 상태 확인하기  (0) 2007.03.15
Posted by efrit
,

AWK

linux/Tip 2007. 3. 15. 22:02
awk는 직접 사용자로부터 입력을 받거나 아니면 지정한 파일을 가공하여 표준 출력한다. 표준 출력을 리다이렉션할 수 있다


사용법
 awk [옵션] '스크립트' [-v 변수=값] [파일(들)]
 awk [옵션] -f 스크립트 파일 [-v 변수=값] [파일(들)]
 cf) 편집 스크립트 파일의 사용법
 ed : ed -s(script) sourcefile < scriptfile
 sed : sed -f(file) scriptfile sourcefile > outputfile
 awk : awk -f(file) scriptfile sourcefile > outputfile


옵션
-Fc : field separator 지정
  c는 필드 사이를 구분하는 구분자이다
 직접 지정하지 않으면 공백을 기준으로 한다
 시스템 변수 FS를 지정하는 것과 같은 효과를 지닌다
-v 변수 = 값
 스크립트를 실행하기 전에 미리 변수를 지정하여 준다
-f 스크립트 파일
 스크립트를 파일에서 가져온다
-f 옵션을 여러번 사용하여 여러개의 스크립트 파일을 동시에 불러와 지정한 파일에 적용할 수 있다

스크립트
패턴 { 동작 }
 커맨드 라인에서는 패턴, 동작 전체를 단일 따옴표로 묶는다
 패턴만 있는 경우 : 패턴과 일치하는 레코드(라인)를 화면에 출력한다
 동작만 있는 경우 : 모든 레코드(라인)가 동작의 대상이 된다

패턴
 /정규표현식/
  sed가 지원하지 않는 +, ?, |, ( ) 등의 메타문자도 지원한다 또한 ^, $를 각 필드의 처음과
  끝을 의미하도록 사용할 수도 있다
비교연산
 숫자 기준, 알파벳 기준 모두 사용 가능하다
패턴 매칭 연산
 ~ : 일치하는 부분을 나타낸다 !~ : 일치하지 않는 부분을 나타낸다
BEGIN
 첫 번째 레코드가 읽혀지기 전에 어떤 동작을 정의하여 사용하고 싶을 때 사용한다
END
 마지막 레코드가 모두 읽혀진 후 어떤 동작을 정의하여 실행하고 싶을 때 사용한다

동작
 동작은 모두 { }로 둘러싸야 한다
예제
 good이라는 문자열을 포함하는 모든 레코드를 출력할 때
  /good/
 각 레코드의 첫 번째 필드를 출력할 때
  { print $1 }
 good이라는 문자열을 포함하는 레코드의 첫 번째 필드를 출력할 때
  /good/ { print $1 }
 두 개 이상의 필드를 가지는 레코드를 전부 출력할 때(비교연산)
  NF > 2
 한 라인(\n)을 필드로, 빈 라인("")을 레코드로 구분할 때
  BEGIN { FS = "\n" ; RS = ""}
 첫 번째 필드가 good와 일치하는 레코드에 대해 세 번째 필드를 먼저 출력하고 두 번째 필드를 나중에 출력하고 싶을 때
  $1 ~ /good/ { print $3 , $2 }
 good이라는 문자열이 몇 개나 들어가 있는지 계산하여 마지막 부분에서 출력하고 싶을 때
  /good/ { ++x } END { print x }
 두 번째 필드를 모두 합하고 마지막 부분에서 두 번째 필드의 총합계를 출력하고 싶을 때
  { total += $2 } END { print "Total of $2: " , total }
 레코드의 길이가 20자 이하인 것을 출력하고 싶을 때
  length($0) < 20
 네 개의 필드를 가지며 good이라는 단어로 시작하는 모든 레코드를 출력하고 싶을 때
  NF == 4 && /^good/
 빈줄을 제외한 모든 줄을 화면에 출력한다
  NF > 0


awk 시스템 변수

FILENAME  현재 파일명  $0  입력 레코드  
FS 입력 필드 구분 디폴트 : 공백  $n  입력 레코드의 N번째 필드  
NF 현재 레코드 필드 갯수  ARGC  커맨드 라인의 인자 갯수  
NR 현재 레코드 번호  ARGV  커맨드 라인 인자를 포함하는 배열  
OFMT 숫자에 대한 출력 포맷 디폴트 : %.6g  ENVIRON  환경변수들을 모아둔 관계형 배열  
OFS 출력 필드 구분 디폴트 : 빈줄  FNR  NR과 동일 단지 현재 파일에 적용된다는 점이 다름  
ORS 출력 레코드 구분 디폴트 : newline  RSTART  지정한 매칭 연산을 만족하는 문자열의 맨 앞부분  
RS 입력 레코드 구분 디폴트 : newline  RLENGTH  지정한 매칭 연산을 만족하는 문자열의 길이  


awk 연산자
산술 : =, +=, -=, *=, /=, %=
 조건 : ? : 논리 : ||, &&, ! 패턴 : ~, !~
비교 : <, <=, >, >=, !=,==
 증감 : ++, -- 필드참조 : $

제어문(C의 제어문과 같다)
break
continue
do {실행} while (조건)
exit
for (관계형 배열의 요소) {실행}  
펄의 foreach와 같다
if (조건) {실행} else {실행}
return
while


awk 명령어
문자열 연산
 gsub(reg,s)
  입력 문자열의 전반에 걸쳐 정규표현식 r을 문자열 s로 대치한다.
 gsub(reg,s1,s2)
  문자열 s2에서 정규표현식 r을 s1으로 대치한다.
 index(s1,s2)
  s1에서 s2의 위치를 넘겨준다. 만약 없다면 0을 넘겨준다.
 length(arg)
  인자의 길이를 넘겨준다.
 match(s,r)
  문자열 s에서 정규표현식 r과 매칭되는 부분의 위치를 넘겨준다.
 split(string,array[,seperator])
  구분자를 기준으로(지정하지 않으면 공백 기준)해서 지정한 문자열을 배열로 만든다 배열[1], 배열[2], .......
 sub(r,s), sub(r,s1,s2)
  gsub과 동일하다. 단지 정규표현식과 일치하는 문자열이 여러 개라도 처음 문자열만 대치된다
 substr(s,m)
  문자열 s에서 m번째 위치에서 끝까지의 문자를 리턴한다
 substr(s,m,n)
  문자열 s에서 m번째 위치에서 n번째까지의 문자를 리턴한다
 tolower(str)
 toupper(str)

수치 연산
 atan2(x,y)
  y/x의 arctangent값을 라디안 단위로 넘겨준다
 cos(x)
 exp(arg)
 int(arg)
 log(arg)
 rand()
  0과 1사이의 난수를 발생한다
 sin(x)
 sqrt(arg)
 srand(expr)
  인자를 가지고 난수를 발생시킨다. 인자가 주어지지 않으면 시간을 가지고 난수를 발생시킨다.

입출력/프로세스
 close(filename)
  지정한 파일을 닫는다
 close(cmd)
  지정한 명령어 파이프를 닫는다
 delete array[element]
  지정한 배열 요소를 지운다
 getline()
  다음 레코드를 읽어 들인다
 getline[variable] [< "filename"]
  파일에서 읽어들인다
 next
  다음 레코드(라인)을 입력받는다 getline()과 유사하지만 /패턴/동작을 새롭게 시작한다 getline()은 다음 라인을 읽기만 한다
 print [args] [> "filename"]
  인자를 출력한다
 printf "format" [,expressions] [> "filename"]
  형식에 맞춰 출력한다
 sprintf (format [,expressions])
  printf와 마찬가지로 사용하는데 값을 리턴하기만 하고 출력은 하지 않는다.
 system(command)
  시스템 내부 명령어를 실행한다

간단한 예
awk ' BEGIN { for (i = 1;i<=7,i++) print int(101*rand()) }'
 화면에 1이상 100이하의 난수 일곱 개를 출력한다
ls -l file1 file2 file3 | awk ' { x += $5 } ; END { print "Total bytes : " x } '
 파일들의 크기를 모두 합하여 총 바이트 수를 표시한다
awk ' END { print NR } ' filename
 지정한 파일의 라인이 몇 개인지를 표시한다
awk ' NR % 2 == 0 '
 지정한 파일의 짝수번째의 라인만을 출력해 준다  

'linux > Tip' 카테고리의 다른 글

RPM 만들기 - Haansoftlinux.com  (0) 2007.03.15
apache 에서 인증  (0) 2007.03.15
src.rpm --> .rpm  (0) 2007.03.15
apache 상태 확인하기  (0) 2007.03.15
ping 을 이용한 DOS 막기  (0) 2007.03.15
Posted by efrit
,

src.rpm --> .rpm

linux/Tip 2007. 3. 15. 22:01
rpm -Uvh *.src.rpm

cd /usr/src/배포판이름/SPEC

rpmbuild -ba *.SPEC

cd /usr/src/배포판이름/RPMS/i386



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

rpmbuild --rebuild *.src.rpm --target i686

'linux > Tip' 카테고리의 다른 글

apache 에서 인증  (0) 2007.03.15
AWK  (0) 2007.03.15
apache 상태 확인하기  (0) 2007.03.15
ping 을 이용한 DOS 막기  (0) 2007.03.15
iptables  (0) 2007.03.15
Posted by efrit
,