지난글에서 Centos 에서 빌드했었다.(http://blog.1day1.org/329)

우분투(9.04)에서 빌드를 해봤다. SPEC 파일의 몇몇 설정 부분을 수정해야 한다.


SPEC 의 어느 부분을 바꾸나?
1. /var/qmail 디렉토리 관련.

SPEC 에서 qmaild 계정을 만들때  useradd -m  옵션으로 /var/qmail 을 홈으로 지정해서 같이 생성하는데, alias 계정을 먼저 생성하기에 /var/qmail/alias  디렉토리를 생성할 수 없다는 에러가 발생한다.
그래서 qmaild 계정을 먼저 생성해준다.

또는 계정생성 앞부분에 /var/qmail 을 생성해준다.
if [ ! -d %{qmaildir} ]; then
        mkdir %{qmaildir}
fi

2. useradd 옵션 변경
우분투에서는 옵션이 -M 이 아니라, -m 이다.
useradd 의 버전차이인지 배포판 차이인지는 모르겠다

3. /sbin/nologin  을  /usr/sbin/nologin  으로 바꾼다 (배포판 차이)

4. {_initrddir} 위치 /etc/init.d 가 생성되지 않는다.
우분투는 /etc/init.d 에 위치한다. 
rpm --eval %{_initrddir}
으로 확인한다.

5. pushd , popd 명령이 안 먹나?
ubuntu 에서 /bin/sh 가 dash 라는 놈에 링크되어 있다.
pushd,popd 는 bash 에서 동작한다.  기존것을 지우고,
ln -s /bin/bash /bin/sh
으로 링크해준다.

chkconfig 대신에 update-rc.d 를 이용한다.
우분투는 update-rc.d 를 이용한다. (chkconfig 부분을 찾아서 다음처럼 바꾼다)
update-rc.d -f qmaild defaults
update-rc.d -f pop3d defaults

다 바꿨으니, SRPM 을 다시 만들어야지.
여기까지 변경후 다시 SRPM 을 생성한다.
rpmbuild --bs --with cdb SPEC/knetmail.spec

몇몇 패키지가 필요하다. 해당 패키지가 설치되어 있지 않으면 설치해준다.
apt-get install libssl-dev

모든 준비끝.
rpmbuild --rebuild --with cdb SRPMS/knetqmail-0.0.1-3.src.rpm

우분투에서도 쉽게 설치하자.


수정된 SPEC 파일이다.(참조) - 기존 spec 파일과 비교해서 직접 확인하기 바란다.



반응형

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

,
윈도우7 64bit , IE8 을 환상의 조합이라고 할까?
인터넷 뱅킹, 온라인 쇼핑은 너무 어렵다.

자동으로 설치는 안되더라도 직접 설치해서 하게는 해줘야 하지 않겠어?
결제모듈 업체도 손을 놓은 상태인것 같아!  나몰라!

그래서, 내 컴퓨터에 매트릭스를 만들어 놓기로 했다.
가상머신으로 윈도우XP 의 매트릭스를 만든 것이다. 음~화화하...

그리고, 결제 버튼, active-x 들이 깔린다. 불안하긴 하지만, 뭐 괜찮아!
그래 되는 것 같아! 이제 결제 해봐야지.

헐!  재부팅.
음. 매트릭스(가상머신) 가 재부팅 되냐고?

아니 내 컴퓨터가...

매트릭스 버전이 낮아서 그런거야. 몇번 업그레이드 하면 완벽해 질거야!!

뭐니! 싫어!

반응형

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

,
그동안 여러시스템을 운영하면서, 하드디스크 장애를 수차례 겪어봤다.
물론 전문 운영업체도 아닌 개인입장에서의 경험이니 일반화 하는 것은 위험하다.

짧은 경험이지만, 하드디스크 장애중에 유독 파일시스템이 깨지거나 쓰기지연 등이 발생하는 경우는
var 디렉토리가 대부분이었다. var 디렉토리의 특성상 쓰기 작업이 많이 일어나기 때문일 것이다.

var 는 일을 많이 해!
시스템을 설치할때 / , /boot , /usr , /var  등은 거의 필수로 별도의 파티션으로 나누어 놓는다.
이중에서 디스크 자체의 인식오류등을 제외하면 거의다 var 디렉토리에 이상이 생겨서 문제가 발생한다.
파티션을 나누어 놓아서, 별도의 파티션으로 var 의 데이터를 옮기고, 바꿔서 마운트 해주면 해결되기도 한다. 그러나, 디스크에 배드섹터 같은 것이 발생했을 가능성이 많기 때문에 하드디스크를 바꿔주는 것이 좋다.

그렇다면 var 자체를 별도의 하드디스크로 지정해 놓는 것이 좋지 않을까?
용량도 그리 크지 않아도 된다. /var/log 정도만 따로 떼어 놓으면 수기가 정도면 충분하다.
그러나, log 도 대부분 쓰기 작업이니 따로 떼면 마찬가지 일듯 하다.(log 도 같이 있어야 겠다)
가능하다면 아예 메모리에 올려버리면 장애 발생률이 현저히 줄어들지 않을까?

깔끔한 해결책이 없을까?


SSD 가 답일까?
SSD 를 도입하기에는 비용도 문제지만, SSD 가 쓰기작업에 별로라는 이야기가 있어 좋은 해결책은 아닐듯 싶다. (MLC 니 SLC 니 그런 차이가 있다고 하던데...)
그렇지만, 서버용으로는 속도 빠른것으로 5G (최대 10G) 정도만 되어도 충분히 도입할 수 있으니, 그리 큰 비용이 들지 않겠지. 심각하게 고려해봐야 겠다.

저가형은 16G 부터 있는 것 같다. 가격은 약 10만원대.
한번 속는셈 치고 사볼까?

반응형

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

,
참 이상하다.

메인보드의 시간설정을 했는데, 얼마후에 시간이 바뀌어 버린다.
GMT-9 (GMT+9) 로  9시간이 차이가 나버린다.

난 분명 16 시로 맞췄는데, 시간은 9시가 되버린다.
CMOS 배터리가 없어서 그러면 공장초기화가 되어 버릴텐데, 그런게 아니다.
보드에서 시간이 고정되어 버리나? time 서버와 자동동기화되지는 않을텐데.
OS 에서 bios 까지 직접 건드리지는 않을 것이고.
Phoenix 바이오스 인데, 이놈의 특색인가? (제조시 국가별 설정이 그렇게 되어 있을까?)

암튼 이상한 현상을 목격하게 되는군.


우분투의 하드드라이브 커널에러가 나온다.
http://ubuntuforums.org/archive/index.php/t-1034762.html
여기에 나오는 에러인데

하드디스크에러다,
케이블 에러다,
커널옵션 ACPI 를 꺼라.
여러가지 이야기가 있다.

fsck 로 돌리긴 했는데, inode 가 깨져서 삭제했다.
일단 부팅이 되고, 관련 에러가 보이진 않지만, 좀 불안하네.

조만간 하드디스크를 교체해야 겠다.


시스템도 '계란을 한바구니에 담지 마라'  라는 것이 적용되는 것 같다.
위 에러난 시스템은  내부 개발용 이다.
내부 SCM , 이슈트래커, 공유공간, 개발서버(VM) 등이 구축되어 있다.
하드 에러가 나서 시스템을 교체할 생각을 하니, 고생이 훤하다.
가장 간단하게 하드카피로 하거나, 새로운 시스템으로 클린 설치를 해야할텐데 말이다.
클린설치하면 설정을 다시 해야 한단 말이지.

그나마 다행인것은 개발서버를 VM 으로 구축해놔서 카피만 하면 된다.
나중을 생각해서, SCM,이슈트래커 도 VM 내에 구축해 놓을까?
마스터서버 는 단순히 OS 와 VM서버 만 올리도록 말이지.
그렇게 분산시켜놓으면 최악의 상황에 대비하기 좋을테니 말이다.


반응형

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

,
YDN , Yahoo Developer Network 의 약자이다.
예전에 pipe 를 잠깐 써봤던 것이 생각난다.
아주 간단한 RSS 를 불러와서 최신글을 뿌려주는 간단한 pipe.

twitter @ydnkr 에서 본 http://ydnkrblog.com/blog/?p=582 YQL 소개 동영상.
여러 서비스들의 오픈API 를 아주 간단(?)하게 쓸 수 있다.
오호! 그래?  그럼 테스트를 안 해볼 수 없지.

http://developer.yahoo.com/yql/
YQL 은 지난 7월경에 나온듯 하다. 그동안 모르고 있었다.(다른곳에 한눈팔아 미처 못 봤겠지)
사실은 트위터 오픈API 를 이용해서 뭔가 만들려고 했었는데. 마침 YQL 이 눈에 띄었다.
(결과적으로 이런 행운이...)

YQL console 이라는 것이 있어, 직접 쿼리(?)를 날려 테스트 해볼 수 있다.
http://developer.yahoo.com/yql/console/

그 부분은 동영상에서도 소개가 되어 있으니 일단 넘어가고.
바로 트위터에 포스팅 하기를 실험해 봤다.(약간의 삽질기도 있다)

YQL 콘솔상에서는 다음과 같은 쿼리를 날린다.
이런 쿼리이다.
use 'http://yql.1day1.org/yql-twitter-status.xml' as table; insert into table (username,password,status) values('username','password','YQL-twitter test. 22');
자신의 트위터 아이디/암호/내용을 넣으면  트위터에 포스팅이 된다.


1. YOS , php SDK 를 이용하려다 실패.( & 보류 )
자세한 사항은 자세히 보기로...
(그에 대한 삽질기록은 http://t.1day1.org/post/177433640 )

2. YOS 가 curl 쓴다면, 난 직접 쓰지뭐.
YOS 가 curl 을 쓴다기에 직접 써보기로 했다.

file_get_contents , simplexml_load_file 같은 php 의 함수를 이용할 수도 있지만,
INSERT/UPDATE/DELETE 등의 쿼리는 POST 로 데이터를 넘겨야 하는 것 같다.
그래서 해당 함수들은 사용할수가 없다. 물론 socket 열어서 직접 post 로 넘기면 되지만.
우린 복잡한거 싫어하잖아요. 간단하게 해야 Cool 하죠. ^^

암튼 curl 을 쓰기로 했다.

우선 완성된 샘플 주소이다.(이 주소는 계속 유지 되지 않습니다.)
http://yql.1day1.org/yql-twitter.php


curl 을 이용한 방법의 핵심부분의 코드이다.

$query = "use 'http://yql.1day1.org/yql-twitter-status.xml' as table;
    insert into table (username,password,status)
    values('" . $_POST['username'] . "','" . $_POST['password'] . "','" . $_POST['status'] . "'); ";

$postData = 'q=' . urlencode($query). '&format=xml';
$yql_uri = 'http://query.yahooapis.com/v1/public/yql';


$options_add = array(
    CURLOPT_URL => $yql_uri  ,
    CURLOPT_REFERER => $referUrl ,
   
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $postData ,
);

$ch = curl_init( );
curl_setopt_array( $ch, $options_add );

$content = curl_exec( $ch );

curl_close( $ch );
보내고자 하는 쿼리를 
http://query.yahooapis.com/v1/public/yql
으로
$postData = 'q=' . urlencode($query). '&format=xml';
post 형식으로 보내는 것이다.



YOS 가 된다면, 그게 좀더 편하겠지만, curl 로 직접 처리하는 것도 괜찮아 보인다.

YQL 의 매력적인 부분은 자신의 서비스를 오픈테이블(opentable?) 로 공개해서 사용하게 할 수 있다는 것이다. YQL 에서 쓸 수 있도록 따로 등록절차가 필요한지 모르겠지만, 서비스 개발자에게 상당한 자유도,편의성을 제공하는 것 같다.


반응형

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

,