오랫만에 이곳에 글을 올려보네요.....
[배경(?)]
http://kltp.kldp.org/stories.php?story=01/05/27/9537108 의 [정종덕]님의 TIP을 보고 나니 예전 생각이 아
주 절실하더군요. 그래서 한번 어거지(실력이 바닥이라서)로 만들어 보았습니다.
"인수 길이가 너무 김" : Arguments too long
에러메시지가 한글로 출력되다보니 한참을 생각했어야해던
기억도 나네요...(MySQL DB에 넣을때)
한마디로 고전(?) 했음.
(쉘스크립트가 형편없더라도 너그러이 이해해 주시길....)
...
아래 내용 외에도
http://www.rpmfind.net 에서도 파일을 찾아볼 수 있습니다..
[목적]
RPM 파일에 대해서,
특정 파일이 어느 위치에 설치되고 또한 이 파일은
어느 패키지에 속하는지를 알아봄.
이런 작업을 위해서 CD를 또다시 마운트해야하는 불편함을
제거,
여러개의 배포본 CD를 DB화함.
[개요]
CD의 RPMS 파일을 이용해서
- RPMS list 작성 : Local DISK에 생성
- RPMS 찾기 : 작성한 Local DISK에서 검색
- MySQL DB에 넣는
쉘스크립트입니다.
- 쉘 소스코드 (내용이 많아서 이곳에 포스팅이 힘드네요)
http://ftp.linuxchannel.net/devel/rpmlist/rpmf-sh.txt - 사용법 및 주의 사항
http://ftp.linuxchannel.net/devel/rpmlist/README.txt - MySQL DB에 넣은 게시판(JSboard 0.4)
http://www.linuxchannel.net/board/?table=rpmlist - Local DISK에서 검색하는 장면
http://www.linuxchannel.net:8080/images/rpmlist.gif -----------------------------------------
This file is README.txt
#########################################
##
## 스크립트명 : rpmlist(RPM (Un)Installed list 찾기)
##
## 작성자 : 김칠봉 <san2 at linuxchannel.net>
## 소 스 : http://www.linuxchannel.net/devel/ ## 작성일 : 1차 2001.05.29
##
## 라이센스 : GNU GPL (see "COPYING" file)
##
##
##########################################
##########################################
## ##
## WARNING !!! ##
## 사용자의 사용상 부주의로 인한 피해는 ##
## 어떠한 경우라고 본인에게 그 책임이 없음을 ##
## 미리 공지합니다. ##
## ##
##########################################
[간략한 설명]
이 스크립트는 RedHat 계열 Install CD의 RPMS 디렉토리를 기준으로,
각각의 RPM 파일에 대해서 설치될 경로를 파일로 만들고, 만든 파일을
대상으로 검색, 그리고 MySQL DB에 집어 넣을 수 있도록 만든 스크립트
입니다.
MySQL DB에 넣은 게시판 :
http://www.linuxchannel.net/board/?table=rpmlist 0. 설치(?)
http://www.linuxchannel.net/devel/ 싸이트를 참고해서
"rpmf-sh.txt" 파일을 다운로드함.
다운로드한 파일을 "rpmf"으로 파일명을 바꾸고 퍼미션은 최소한
사용자에게 실행권한이 되도록 하고 적당한 $PATH에 복사하거나
옮겨놓음.
ex)
# cp rpmf-sh.txt rpmf
# chmod 700 rpmf
# mv rpmf /usr/local/bin/
#
# rpmf
Usage :
/usr/local/bin/rpmf --makelist "/mnt/cdrom/RedHat/RPMS"
/usr/local/bin/rpmf --find "filename or file pattern"
/usr/local/bin/rpmf --insertdb "/var/rpmDBdir"
DB is mysql !!!
#
1. rpmlist 파일 작성하기
각 RPM 파일이 설치될 경로(rpm -qpl xxx.rpm)를 xxx-rpm.list 파일로 작성.
(기본 디렉토리는 명령어를 내린 위치에서 "rpmDBdir" 이라는 디렉토리가
생성되고 그곳에 *.list 파일이 생성됨.)
ex)
# mount /mnt/cdrom
# which rpmf
/usr/local/bin/rpmf
# rpmf --makelist "/mnt/cdrom/RedHat/RPMS"
...
...
# ls -d rpmDBdir
rpmDBdir
#
(# mv rpmDBdir /var/)
2. 파일 찾기
작성된 list 파일을 대상으로 특정 패턴의 파일에 대해서 검색하여 그 결과로
어떤 RPM 파일인지 화면에 출력함.
(찾을 파일의 패턴은 정규표현식 가능.)
ex)
# ls -d rpmDBdir
rpmDBdir
#
# rpmf --find "(rc.local|mkbootdisk)"
...xxx-xxx.rpm
...
#
3. 작성한 list 파일을 MySQL DB에 넣기
우선 rpmf 파일을 편집기로 열어서 처음 부분의 설정을 수정함.
(DB insert가 완료되면 db pass는 보안상 지우도록 함)
mysql_dbname="board" ## DB 이름
mysql_dbuser="board_user" ## DB 유저
mysql_dbpass="xxxxxx" ## DB 암호
mysql_table="rpmlist" ## Insert 할 테이블 이름
name_value="san2" ## 글쓴이(?)
(참고로 필자는 0.4 <="JSboard 버전" < 1.0 에서 테스트했음.)
만약 테이블 구조가 num,name,title,text,date 의 Columns 이 없다면
rpmf 파일에서 insert_db 함수의 내용을 수정함.
mysqlcolumns="num,name,title,text,date"
num = 일련의 게시판 출력 번호
name = 글쓴이 이름
title = 제목(여기에 RPM 파일 이름이 들어감)
text = 본문내용(RPM 파일이 설치될 경로 list가 들어감)
date = 등록날짜(Unix timestamp 값임.)
** 주의 **
JSboard 1.x.x 에서는 테스트하지 못했음.
("idx" 라는 INDEX 가 있어서...)
ex)
# ls -d /var/rpmDBdir
/var/rpmDBdir
#
# rpmf --insertdb "/var/rpmDBdir"
...
...(약 1-3 분정도 소요)
...
#
http://www.linuxchannel.net/board/?table=rpmlist 에서 볼 수 있습니다.
END-----------------------------