YUM(Yellow dog, Updater, Modified) 저장소 만들기

관리하는 서버가 여러대일때, 패키지 관리가 쉽지않다. 그렇다고 모든 서버를 특정 업데이트 서버에 접속하여 업데이트 하게 하는것도 무언가 헛점을 만들어 놓는것 같다.

작은 규모의 회사에서 관리할만한 패키지 관리 시스템 Yum의 저장소 생성에 대해 알아보자. 물론 글 내용은 나혼자 나중에 알아보기 위한 C-급의 내용이다;

참고로, 지금 테스트로 만들어볼 서버는 RHEL 5이다. i386머신에 대한 패키지만을 관리한다는 조건도 붙이겠다;

1. 저장소 생성을 위한 yum-arch 명령이 createrepo로 바뀌었다. 해당 패키지를 다운받아 설치하자.



2. Apache의 기본 Document Root 가 /var/www/html이라는 가정하에 다음과 같은 디렉토리 트리를 만든다.


/var/www/html/redhat/5Server/os/i386             # 기본 오리지널 패키지
/var/www/html/redhat/5Server/updates/i386     # 업데이트된 패키지

3. 설치시디의 모든 RPM 패키지들을 os/i386에 복사한다.


4. 저장소 정보를 업데이트 하자.


# createrepo /var/www/html/redhat/5Server/os/i386
# createrepo /var/www/html/redhat/5Server/updates/i386

5. 아파치 웹서버를 실행하고 외부에서 웹브라우저를 통해 접속을 해보자.


http://REMOTE_HOST/redhat/

6. 정상적으로 된다면, YUM 클라이언트의 설정을 한다.


# cd /etc/yum.repos.d/
# vi my_rhel.repo

7. 안에 다음과 같은 정보를 입력한다.


# base packages for RHEL
[rhelbase]
name=RedHat Linux $releasever Install
baseurl=http://REMOTE_HOST/redhat/$releasever/os/$basearch/
gpgcheck=1

# up2date ported updates
[rhelupdates]
name=RedHat Linux $releasever Updates
baseurl=http://REMOTE_HOST/redhat/$releasever/updates/$basearch/
gpgcheck=1

8. 다음의 명령어를 활용하여, 정상적으로 작동하는지 확인해 보자.


# yum list

9. RPM gpg-key가 없어 자동 설치가 안될경우 다음과 같이 키를 등록하자.


# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Lucene 인덱싱 옵션

블로그에 적어놓겠다고 한지 3달도 더 지난거 같다. 지금 빨리 안적어 두면 정말로 기억속에서 사라질것 같아 오랜만에 블로그에 글을 적는다.

루씬 2.0부터 바뀐 인덱싱 옵션 지정방법에 대해 정리하겠다.

보통의 인덱싱은 Document 클래스를 이용하여 다음과 같이 지정한다.

[code]Document document = new Document();
document.add(new Field(“area”, area, Store.YES, Index.UN_TOKENIZED));
document.add(new Field(“vmag”, vmag, Store.YES, Index.UN_TOKENIZED));
document.add(new Field(“count”, count, Store.YES, Index.NO));
document.add(new Field(“data”, data, Store.YES, Index.NO));
writer.addDocument(document);[/code]

정확히는 Field 객체를 넣는것이다.

Field 의 인자값은 다음과 같다.

[code]Field(필드명, 변수명, 저장옵션, 인덱스옵션)[/code]

첫번째 필드명은 데이터페이스의 필드를 생각하면 되겠다. 어떤 이름의 필드에 저장할것인지를 정한다.

두번째 변수명에는 위에서 지정한 해당 필드명에 들어갈 값을 지정해 주면 된다.

세번째 저장옵션에는 해당 전체 값을 인덱스에 저장할것인지를 정한다. 다음과 같은 옵션이 있다.



  • Store.YES : 인덱스를 할 값 모두를 인덱스에 저장한다. 검색결과등에서 꼭 보여야 하는 내용이라면 사용한다.
  • Store.NO : 값을 저장하지 않는다. Index 옵션과 혼합하여, 검색은 되데, 원본글이 필요없을 경우 사용될수 있다.
  • Store.COMPRESS : 값을 압축하여 저장한다. 저장할 글의 내용이 크거나, 2진 바이너리 파일등에 사용한다.


네번째 인덱스 옵션에는 검색을 위한 인덱스 생성 방식을 정한다.



  • Index.NO : 인덱싱을 하지 않는다. 고로 이렇게 저장한 값으로 검색을 할수 없다.
  • Index.TOKENIZED : Analyzer에 의한 토크나이즈를 수행하여 인덱싱을 한다. 물론 검색 가능하다.
  • Index.UN_TOKENIZED : 토크나이즈를 수행하지 않는다. 숫자라거나, 쪼갤필요가 없는 문자열에 사용하면 된다. 물론 검색이 되며, Analyze를 수행하지 않기때문에 인덱스 속도가 빠르다.
  • Index.NO_NORMS : 이것은 인덱싱 시간이 매우 빨라야 할때 사용한다. Analyze를 수행하지 않는다. 또한 필드 Length 노멀라이즈를 수행하지 않는다. 인덱싱시에 적은 메모리만을 사용하게 된다는 장점이 있다.

다음으로 예를 들어 사용법을 숙지하도록 하여보자.

1. 저장할 내용은 수필형식의 글이다. 해당 필드로 검색이 되어야 하며, 검색결과에서 바로 해당 글의 전문이 출력되어야 한다.
=> Store.YES, Index.TOKENIZED

2. 저장할 내용은 20070606 같은 형식을 가지는 띄어쓰기가 없는 날짜이다. 해당 필드로 검색이 되어야 하며, 검색어와 검색결과가 동일할테니 글의 내용을 저장할 필요는 없다.
=> Store.NO Index.Index.UN_TOKENIZED

3. 저장할 내용은 영화 제목과 영화 사용기이다. 영화 제목만으로 검색을 할수 있으며, 사용기의 전문으로 검색은 되지 않는다. 하지만 검색결과에서 사용기가 출력되어야 한다.
=> 제목 Field : Store.YES, Index.TOKENIZED / 사용기 Field : Store.YES, Index.NO