큐브리드를 사용해보려고 테스트 중이다.

지난 8월에 2008 R2.0 버전이 새로 나왔다. 64bit 지원과 SRPM 지원이 눈에 띈다.
기존버전은 64bit 환경에 쓰기에는 애매한 부분이 있었다.
그래서 편법(?)으로 쓰기도 했다.(http://blog.1day1.org/312)

Centos(redhat 계열-rpm) 에서 빌드하는 것과 뭐가 다르지?

Centos 에서 cubrid SRPM 빌드를 해봤는데, 별다른 문제없이 빌드가 되었다.

우분투는 기본 패키지는 .deb 이지만,  rpm 도 설치가 가능하다.(특이한 설정이 아니라면)
rpm 을 사용하기 위한 패키지를 설치한다. ( 우분투 hardy 버전에서 테스트 했다)
apt-get install rpm

큐브리드도 SRPM 을 제공하기 때문에 우분투에서 빌드해보았다.

rpmbuild --rebuild 를 해보면 사전에 필요한 패키지들이 있다.
elfutils-libelf-devel
ncurses-devel
libstdc++-devel
glibc-devel
위 패키지 들에 해당하는 우분투 패키지는
apt-get install  libelf-dev libncurses-dev libstdc++6-dev libc6-dev
등에 해당한다.

rpm 방식은 체크하는 방식이 차이가 있어서 해당 패키지를 설치해도 계속 에러가 난다.
그래서 SRPM 의 spec 을 수정해서 다시 SRPM 을 만들기로 했다.

SRPM 패키지 우분투용으로 다시 만들자

먼저 srpm 을 설치한다
rpm -ivh CUBRID-8.2.0.1150-el5.src.rpm
우분투에서는  /usr/src/rpm 에 rpmbuild 관련 파일,디렉토리가 있다.
SRPM을 설치하면  rpm/SOURCES 에 관련소스가 생기고, rpm/SPECS 에 설정파일이 생긴다.

rpm/SPECS/cubrid.spec 을 열어서 
Requires:      ncurses
Requires:      libstdc++
BuildRequires: elfutils-libelf-devel
BuildRequires: ncurses-devel
BuildRequires: libstdc++-devel
BuildRequires: glibc-devel
위 부분을 주석처리한다.  각 줄의 앞에  # 을 붙여준다.

우분투에서는 rpmbuild 시 _sysconfdir 의 위치가 약간 다르게 나타난다.
rpm --eval %{_sysconfdir}
해보면  Centos 에서는 /etc 로 나오는데, 우분투는  /usr/etc  로 나온다.
SRPM 빌드 마지막 부분에 이 부분때문에 관련 파일을 찾을 수 없다는 에러가 나온다.
/usr/lib/rpm/x86_64-linux/macros  부분의
%_sysconfdir            %{_prefix}/etc
를 다음처럼 바꿔준다.
%_sysconfdir            /etc
SPEC 을 고친후에 SRPM 을 다시 만들어 준다.
rpmbuild -bs rpm/SPECS/cubrid.spec
rpm/SRPMS/ 에 다시 만든 SRPM 패키지가 생성된다.


이제 SRPM 빌드해도 되나?
준비가 끝났으니 본격적으로 우분투에서 SRPM 빌드를 한다.
rpmbuild --rebuild rpm/SRPMS/CUBRID-8.2.0.1150-el5.src.rpm
Centos 와 마찬가지로 JAVA_HOME 설정, ant 등의 빌드시 필요한 패키지를 설치한다.
apt-get install sun-java6-jdk ant

JAVA_HOME=/usr/lib/jvm/java-6-sun
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin


export JAVA_HOME
export PATH
make , gcc 등의 개발에 필요한 패키지도 설치되어 있어야한다.(대부분 이미 설치되어 있을듯)
apt-get install build-essential

최종적으로 rpm 을 만들었는데, 이런에러가.
rpm -Uvh CUBRID-8.2.0.1150-el5.x86_64.rpm
아! 나를 반기는 의존성 오류.
오류: Failed dependencies:
        /bin/bash is needed by CUBRID-8.2.0.1150-el5.x86_64
        /bin/csh is needed by CUBRID-8.2.0.1150-el5.x86_64
        /bin/sh is needed by CUBRID-8.2.0.1150-el5.x86_64
이미 bash , sh 등이 설치되어 있지만, rpm 에서 체크하는 방식이 달라서 그런듯 하다.
즉, 우분투에서는 설치된 패키지 정보가 rpm 에서 알 수 없어서 그런듯 하다.

일단 의존성 체크 없이 설치한다.
rpm -Uvh --nodeps CUBRID-8.2.0.1150-el5.x86_64.rpm


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
Cubrid 2008 R2.0 버전을 쎈토스에서 SRPM 빌드하는 법을 정리한다.

SRPM 빌드전에 뭐하지?

일단 빌드 전에 필요한 패키지들이 있다.
yum install rpm-build

당연히 빌드할 rpmbuild 패키지가 필요하다.(이미 깔려 있으면 생략)


0) 빌드에 필요한 패키지

yum install elfutils-libelf-devel ncurses-devel libstdc++-devel

1) javac (jdk) 필요. JDK 패키지 설치

yum install java-1.6.0-openjdk-devel

JAVA_HOME 설정 추가. (~/.bash_profile 에 넣어주거나, 콘솔상에서 입력해준다.)

JAVA_HOME=/usr/lib/jvm/java
PATH=$JAVA_HOME/bin:$PATH:$HOME/bin


export JAVA_HOME

2) 다음은 ant

yum install ant

3) c++

yum install gcc-c++


본격적인 SRPM 빌드 작업


1) SRPM 다운로드

wget http://dev.naver.com/frs/download.php/500/CUBRID-8.2.0.1150-el5.src.rpm
wget http://dev.naver.com/frs/download.php/515/cubrid.spec

2) SRPM 빌드

rpmbuild —rebuild CUBRID-8.2.0.1150-el5.src.rpm

빌드가 완료되면  /usr/src/redhat/RPMS 에   설치할 rpm 파일이 생성된다.

설치는 보통에 하던식으로  rpm -Uvh ... .rpm   으로 하면 된다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
메일서버 qmail 을 설치/설정하는 것을 설명했다.(http://blog.1day1.org/329)

qmail + vpopmail(with cdb) 의 조합에서  vpopmail 콘솔 명령으로 관리할 수 있다.
그런데, 웹으로 관리하고 싶을때는 qmailadmin 을 설치한다.
http://www.inter7.com/index.php?page=qmailadmin

다운 받은 압축파일을 풀고, configure 설정을 해준다.
./configure --disable-ezmlmdir --disable-autoresponder-path
따로 ezmlm (메일링리스트) , autoresponder 가 필요없어서 위처럼 disable 옵션을 줬다.

설정이 끝나면 컴파일하고 설치한다.
make
make install-strip
Centos 의 apache 의 경우  /var/www/cgi-bin  , /var/www/html  등에 관련 파일들이 설치된다.

http://localhost/cgi-bin/qmailadmin  으로 접속을 하면 다음과 같은 화면이 나온다.
계정 생성, 삭제 등을 웹인터페이스 상에서 할 수 있다.


ps. 그런데, 간단한 설정만 되어 있어, 콘솔화면에서 명령내리는 것과 큰 차이는 없다.
  둘중 편한 것을 쓰면 될 듯 하다. 도메인에 대해 별도 관리자가 직접하도록 할때는 유용할 듯 하다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,

메일서버에는 다양한 어플들이 있다.
흔히(?) 쓰는 sendmail 부터, 요즘 우분투쪽에서 밀고 있는 듯한 postfix.
지금은 어떤지 모르겠지만, 예전에는 sendmail 의 보안문제에 대해서 말이 많았다.

그렇다 보니 다른 대안을 찾아다니게 된다.
그 중에 유명한 메일서버가 qmail 이 아닐까 한다.
큐메일.
그런데, 문제가 컴파일 해서 사용해야 하기때문에 비경험자에게는 쉽지않은 난이도를 가지고 있었다.
그리고 환경에 따라 다양한 방법이 존재한다.(각종 패치는 더욱 많다)
다양한 요구를 만족시킬 수 있다는 장점은 다른 면에서 복잡성을 나타내기 때문에 어려워진다.

서버의 실제 계정을 활용하는 가장 기본적인 방법과 (qmail 기본)
파일로 관리하는 가상계정을 사용하는 방법(qmail + vpopmail)
DB 로 관리하는 가상계정을 사용하는 방법(qmail + vpopmail + mysql)

등 여러방법이 존재한다.
기타 자세한 정보는 http://qmail.kldp.net  를 참조한다.

지금 설명하려는 부분은 qmail + vpopmail 의 가상계정을 이용하는 방법이다.
지금까지 qmail 기본 설정을 사용했었다. 원래 sendmail 으로 운영했었는데(몇년전) 관리의 어려움이 있어 qmail 로 변경을 했다. 그당시 설정이 어려운부분이 많아서, 제일 간단한 방법이면서, 기존의 설정을 그대로 가져갈 수 있기 때문에 qmail 기본을 사용했었다.

그리고 몇년이 지난후 서버의 운영체제를 업그레이드 하다보니, 메일서버가 문제였다.
예전의 컴파일 하던 방식이 새운영체제에 맞지 않는 것이었다.
여러 방법을 찾아보다가 qmail + vpopmail 로 이전하는 것으로 결론을 내렸다.
그 사이에 쉽게 처리할 수 있는 방법이 나왔기 때문이다.

Centos 에서 SRPM 으로 빌드하는 방법이다.
http://qmail.kldp.net/phpbb/viewtopic.php?t=7887

1. 해당 SRPM 패키지를 받아서. 빌드한다.

rpmbuild --rebuild --with cdb knetqmail-0.0.1-3.src.rpm

이때 /var/qmail 디렉토리가 없다는 에러가 나온다. ( mkdir /var/qmail 로 만들어 준다.)
빌드된 rpm 파일은 /usr/src/redhat/RPMS/x86_64 에 위치한다. ( x86_64 또는 i386 )

2. 빌드된 rpm 패키지를 설치한다.
centos 는 기본 sendmail 이 설치가 되어 있어, 먼저 제거를 해준다.

rpm -e sendmail --nodeps
rpm -Uvh /usr/src/redhat/RPMS/x86_64/knetqmail-0.0.1-3.x86_64.rpm

(빌드된 rpm 파일명은 본인의 것을 확인한다.)

3. qmail 실행

/etc/init.d/qmaild start
/etc/init.d/pop3d start

위 처럼 실행하면 /service 에 다음처럼 링크가 된다.

ll /service/
합계 0
lrwxrwxrwx 1 root root 31  8월 27 17:46 qmail-pop3 -> /var/qmail/supervise/qmail-pop3
lrwxrwxrwx 1 root root 31  8월 27 17:45 qmail-send -> /var/qmail/supervise/qmail-send
lrwxrwxrwx 1 root root 32  8월 27 17:45 qmail-smtpd -> /var/qmail/supervise/qmail-smtpd

위와 같이 나오고, ps ax 에

# ps ax|grep qmail
27800 ?        S      0:00 supervise qmail-smtpd
27802 ?        S      0:00 supervise qmail-send
27803 ?        S      0:00 /usr/bin/tcpserver -vRHl0 -x/etc/tcp.smtp.cdb -c 100 -u 108 -g 106 0 smtp /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true
27804 ?        S      0:00 /usr/bin/multilog t s2500000 n10 /var/log/qmail/smtpd
27805 ?        S      0:00 qmail-send
27812 ?        S      0:00 /usr/bin/multilog s2500000 n10 /var/log/qmail/send
27813 ?        S      0:00 qmail-lspawn ./Maildir/
27815 ?        S      0:00 qmail-rspawn
27816 ?        S      0:00 qmail-clean
27824 ?        S      0:00 supervise qmail-pop3
27826 ?        S      0:00 /usr/bin/multilog n10 s2500000 /var/log/qmail/pop3
27827 ?        S      0:00 /usr/bin/tcpserver -vRHl0 -u 108 -g 106 0 pop3 /var/qmail/bin/qmail-popup mymail.mydomain.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir

위와 같이 관련 데몬이 뜨는 것을 볼 수 있다.

telnet localhost 25   (smtp)
telnet localhost 110   (pop3)

등으로 테스트를 해본다.

http://www.abuse.net/relay.html  나
http://people.kldp.org/~eunjea/relay-test.php

에서 릴레이 테스트도 해본다.

4. vpopmail 계정관리

vadddomain blahblah.com

도메인 추가.

vdeldomain blahblah.com

도메인 삭제. 조심하자. 아주 깨끗히 삭제한다.

vadduser foo@blahblah.com 

메일사용자 계정을 추가한다. 전체 메일주소를 쓴다.

vdeluser foo@blahblah.com

메일사용자 계정 삭제. 역시 조심. 그냥 삭제한다.

vpasswd foo@blahblah.com

암호변경. 암호는 바꾸고 써야지.

vaddaliasdomain newblah.com  blahblah.com

기존쓰던 도메인 계정그대로 다른 도메인으로도 메일을 같이 받고 싶을때.

자세한 사항은  http://ejlabs.net/txt/vpopmail  를 참조한다.


여기까지 기본적인 설치와 설정에 관한 부분이다.
예전에 qmail 써봤던 분들은 SRPM 빌드 방법을 해보면 정말 편해졌다는 것을 느낄 것이다.

다음에는 기존 /etc/passwd 의 계정을 vpopmail 가상계정으로 가져오는 방법과
그에 따라 간단하게 만든 실행 스크립트를 소개한다.


[추가] : yum update 시의 conflict 문제.

yum update 를 했을때. 

knetqmail ... conflicts with exim

이런식의 메세지가 나오면서 진행이 되지 않으면, 관련 패키지를 빼고 업데이트한다.

yum update -x exim -x postfix -x sendmail


위에서 sendmail 을 삭제할 때. rpm -e  보다는 yum remove  를 쓰는것이 좋을 듯 싶다.
(문제가 생길지는 모르겠다 - 테스트 필요.)

 

[추가-18-06-20] : centos6 에서 추가조치

1. rpmbuild 설치

yum install rpm-build

yum install gcc openssl-devel

# 기타 추가 패키지
yum install procmail

 

2. 진행도중 다음과 같은 에러.

chkuser.c:38:22: error: vpopmail.h: No such file or directory

chkuser.c:39:19: error: vauth.h: No such file or directory

chkuser.c:40:29: error: vpopmail_config.h: No such file or directory

chkuser.c: In function 'realrcpt':

chkuser.c:746: warning: comparison between pointer and integer

chkuser.c:875: warning: assignment makes pointer from integer without a cast

chkuser.c:885: warning: assignment makes pointer from integer without a cast

chkuser.c:896: error: dereferencing pointer to incomplete type

chkuser.c:896: error: 'BOUNCE_MAIL' undeclared (first use in this function)

chkuser.c:896: error: (Each undeclared identifier is reported only once

chkuser.c:896: error: for each function it appears in.)

chkuser.c:901: error: dereferencing pointer to incomplete type

chkuser.c:902: error: dereferencing pointer to incomplete type

chkuser.c:906: error: dereferencing pointer to incomplete type

make: *** [chkuser.o] Error 1

오류: /var/tmp/rpm-tmp.cZvvkq의 잘못된 종료 상황 (%build)

 

 

RPM 제작 오류:

    /var/tmp/rpm-tmp.cZvvkq의 잘못된 종료 상황 (%build)

 

 

3. 기존 srpm 버전이 centos 6 에 대응이 안된 듯 하다.  

knetqmail-0.0.1-3.src.rpm  대신에
knetqmail-0.0.1-5.src.rpm  버전을 구해서 해보니 rebuild 잘된다.

(생성된 rpm 위치는 /root/rpmbuild/RPMS/x86_64/  => 사용자 계정에 생성 )

4. 리빌드 후 설치 시 centos 6 - postfix 를 제거  ( centos 6 는 아마도 sendmail 이 아닌 postfix 가 기본인 듯 하다)

rpm -e postfix --nodeps

 

5. /etc/initab 의 /command/svscanboot 이 실행되지 않을 때

# cat /etc/init/svscan.conf 
start on runlevel [12345]
respawn
exec /command/svscanboot
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
CodeIgniter 일명 CI 는 php 프레임웍이다.
한국에서는 zend , cakephp 등의 프레임웍보다 덜 알려져 있다.
사실 php 프레임웍 자체가 널리 쓰이지 않고 있다.
그 상황에서 각 프레임웍의 인지도를 따지는 것은 무의미 하다고 본다.

그러던중 CI 한국 사용자 포럼이 만들어졌다.
http://codeigniter-kr.org/
php 프레임웍의 한국사용자 포럼은 cakephp 가 먼저 만들어졌지만, 지금의 거의 개점휴업상태이다.
(cakephp 포럼도 활성화 되길 바랍니다. cakephp.co.kr )

얼마전에 CI 기반의 포럼이 오픈하면서 지금의 꽤 활성화되고 있다.
운영자들이 CI 를 사용하다보니 그런것 같다. 하나둘씩 사용자가 늘어나고 있다.


자! 여러분들도 CI 의 가벼움에 반하시기 바랍니다. (가볍지만 강합니다.)

다른 프레임웍도 좋지만, php 의 강점인 간결함과 속도를 희생하는 문제가 있었습니다.
CI 는 php 의 강점을 살릴 수 있는 프레임웍이라고 생각합니다.

자! 클릭하세요. ^^   http://codeigniter-kr.org/


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,