Debian 자동으로 패키지 업데이트 하기... apt-get update, apt-get upgrade

 귀차니즘을 때로는 사람을 공부하게(?) 만들기도 한다. 2년전 쯤 처음으로 Debian 3.0을 설치하고 쓰면서 떠오른 생각이 매번 서버에 접속해서 패키지 업데이트하는 작업이 귀찮게 느껴졌다. 그래서 스크립트로 하루에 한번씩 업데이트를 확인하도록 하면 좋지 않을까 하는 생각을 했다.

 그 결과로 나온 것이 아래의 쉘스크립트이다. /etc/cron.daily 디렉토리 아래에 적당한 이름으로 만들어서 사용하면 된다. 나는 apt-upgrade라는 이름으로 만들어서 사용한다.
 1 #!/bin/sh
2
3 apt-get update > /dev/null
4 apt-get dist-upgrade -y > /tmp/upgrade
5 UPGRADE=`cat /tmp/upgrade | awk '{print $1 $3 $6 $10}' | tail -n 1`
6
7 if [ $UPGRADE -eq '0000' ]
8 then
9 exit
10 else
11 date=`date +%F_%R`
12 mail sakuragi -s 'Packages upgraded - '"$date" < /tmp/upgrade
13 fi
14
 간단한 스크립트이다. 4번째 줄의 apt-get dist-upgrade 부분은 apt-get upgrade로 바꾸어도 무방하다.

 이 스크립트는 하루에 한번 설치할 패키지가 있는지 보고(update) 설치를 하게 되면(upgrade) 관리자에게 메일을 보낸다.

 즉, 12번째 줄의 mail sakuragi ~~~, 이 부분의 sakuragi를 해당 서버의 관리자로 지정해주면 된다. sendmail을 사용할 경우에는 sakuragi@sakuragi.org와 같이 메일 주소를 적어주면 외부로 메일 발송도 가능하다.

 이렇게 설정을 한 후, 패키지를 설치하게 되면 아래와 같이 메일이 도착한다. 물론 설치한 패키지가 없으면 메일도 오지 않는다.
$ mail
"/var/mail/sakuragi": 1 message 1 new
>N   1 root               Sun Jul  6 06:25  28/1159  Packages upgraded - 2008-
& 1
Subject: Packages upgraded - 2008-07-06_06:25
To: <sakuragi@localhost>
From: root <root@localhost>
Date: Sun, 06 Jul 2008 06:25:12 +0900

Reading package lists...
Building dependency tree...
The following packages will be upgraded:
  libpcre3
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 199kB of archives.
After unpacking 0B of additional disk space will be used.
Get:1 http://security.debian.org etch/updates/main libpcre3 6.7+7.4-4 [199kB]
Fetched 199kB in 2s (81.6kB/s)
(Reading database ... 19939 files and directories currently installed.)
Preparing to replace libpcre3 6.7+7.4-3 (using .../libpcre3_6.7+7.4-4_amd64.deb)
 ...
Unpacking replacement libpcre3 ...
Setting up libpcre3 (6.7+7.4-4) ...

by sakuragi | 2008/07/06 22:49 | :: C space :: 컴퓨터 | 트랙백 | 덧글(9)

웹 페이지 한글 설정... Apache2

 개인적으로 운영하고 있는(?) 서버가 있는데, 그 서버에는 Debian 4.0이 설치되어 있다. 그 시스템의 기본 Charset은 UTF-8을 쓰고 있는데, 이전 쓰던 서버에서 자료를 옮기다 보니 문제가 생겼다. 이전 서버에는 Debian 3.0이 설치되어 있었기에 기본 Charset이 euc-kr였는데, 자료를 옮기면서 Charset이 다름으로 인해 문제가 생긴 것이다.

 사실 이 서버 이전 작업은 4월에 했던 작업인데, 엊그제 다른 문제를 해결하다가 생각이 난김에 함께 포스팅해야 겠다는 생각이 들었다.

 우선 첫번째 문제는 euc-kr 환경에서 쓰던 자료를 UTF-8 환경으로 옮기면서 apache나 php의 기본 Charset이 이전의 서버와 맞지 않아서 생긴 문제에 대한 해결책이며, 두번째 문제는 편의상 난 내 home 디렉토리를 웹에서 볼 수 있도록 Apache 설정에서 Indexes 옵션을 사용하는데 Indexes 페이지에서 한글이 깨져서 나오는 것에 대한 해결책이다.

 해결책은 의외로 간단한데 우선 첫번째 문제에 대한 해결책은 Apache에서 특정 디렉토리에만 특정 Charset을 적용 할 수 있는 옵션이 있기에 이를 적용해 주면 된다. 그 옵션은 아래와 같다. Debian 4.0의 경우, 수정해 줄 파일의 위치는 /etc/apache2/sites-enabled/000-default 이다.
    <Directory ...(생략)>
        .....(생략)
        AddDefaultCharset euc-kr
        php_value default_charset euc-kr
    </Directory>
 이렇게 설정해 주면 해당 디렉토리의 기본 Charset과 php의 기본 Charset이 euc-kr로 설정되기 때문에 따로 파일 내용을 UTF-8로 바꿔준다던지 하는 수고를 하지 않아도 된다.

  위의 화면에서 보이듯이 Indexes에 Charset 옵션 설정이 없을 경우 한글이 깨져서 나온다. 이 Indexes의 문제에 대한 해결책 역시 앞의 설정과 같이 옵션 한 줄 추가로 해결되는 문제이다. 위와 같이 Debian 4.0의 경우, 수정해 줄 파일의 위치는 /etc/apache2/sites-enabled/000-default 이다.
    <Directory ...(생략)>
        Options Indexes
        IndexOptions Charset=euc-kr
    </Directory>
 Indexes를 보기 위해서는 Options에 Indexes를 포함해 주어야 하고, Indexes 페이지의 Charset을 설정해 주기 위해서는 IndexOptions Charset을 통해서 Charset을 지정해 주면 된다.
옵션 한줄 추가로 Indexes 페이지의 한글이 정상적으로 출력 되는 것을 볼 수 있다.

 첫번째 문제의 해결책은 오래전 일이라 어느 페이지를 참고로 해결했는지 기억이 나지 않아서, 두번째 문제의 해결시 참고했던 페이지만을 참고자료에 넣었다.

by sakuragi | 2008/07/06 22:26 | :: C space :: 컴퓨터 | 트랙백 | 덧글(2)

Tech library ㅣ 리눅스 데스크톱 강좌... ontheNET

  며칠 지나긴 했지만 네트워크 관련 잡지인 'OnTheNet'에 총 7회에 걸쳐 '리눅스 데스크톱 강좌'라는 제목으로 우분투에 관해서 기고했던 그 모든 작업이 끝났다. 그동안 블로그에 글이 뜸했던 가장 큰 이유(변명)였다. 나름대로 많은 시간을 투자해서 원고 작업을 했고, 7개월이나 긴 기간동안 매달 일주일 내외의 시간을 투자하면서 작업했다.

사실 만족보다는 아쉬움이 많이 남는 작업이였다. 하나의 줄기에서 뻗어나가는 나무 가지 같은 형태가 아닌 징검다리를 놓듯이 들쑥 날쑥할 형태로 글을 쓴 것 같고, 처음 생각했던 만큼의 완성도를 가지지도 못한 것 같다. 내 나름대로는 국내의 책(잡지)에서는 한번도 다루어 지지 않은 내용을 다루겠다는 의욕에 불타서 썼던 원고도 있었고, 막상 제목을 정해놓고는 어떻게 진행해야 할지 몰라 갈팡 질팡하면서 쓴 원고도 있다.

 내 자신이 수 회에 걸쳐 글을 기고하는 것이 처음이였기에 더더욱 갈피를 잡지 못한 것이 가장 문제였다. 첫 원고를 쓰면서 블로그에 글을 쓰는 것과는 많이 다르다는 것을 깨달았고, 마지막 원고를 쓸 때엔 하고 싶은 말을 다 하기엔 지면이 모자라다는 생각이 들기도 했다. 하지만 역시 회사를 다니는 입장에서는 주중엔 퇴근 후 시간, 주말엔 편하게 쉬어야 할 시간을 쉬지도 못하고 정신적, 시간적으로 압박을 받으면서 글을 쓰는 생활은 이래 저래 스트레스 받는 생활이기도 했다. 그리고 잡지에 실린다는 것은, 곧, 수정할 수 없는 기록으로 남는다는 생각에 더욱 더 부담이 되었다.

 원고는 작년 12월부터 쓰기 시작해서 6월 중순에 마지막 원고가 내 손을 떠났고, 마지막 원고가 실린 OnTheNet 7월호가 발간되었다. 나에게 있어서는 인생에서 첫 경험이라, 많은 욕심을 부려봤던 큰 경험이기도 했다. 비록 만족스럽진 못했지만...

그동안 원고에 관한 얘기를 블로그에 많이 하진 않았는데, 모든 작업을 마친후에 '드디어 끝났다~'와 같은 느낌으로 이와 관련된 글을 쓰려고 기다리고 있었다. 그래서 7월에 접어든 지 며칠이 지난 오늘, 7개월간 내 원고를 챙겨주시고, 교정 및 편집을 해 주신 OnTheNet의 최수경 기자님께 OnTheNet에 실린 pdf파일을 블로그에 올려도 좋다는 허락을 받고 이렇게 블로그에 공개하게 되었다.
  1. 우분투 리눅스 소개와 설치 - 2008-01.pdf
    - 우분투에 대한 소개 및 Gutsy 설치 후 생기는 문제에 대한 간단한 해결법
  2. 3D 데스크톱 소개 - 2008-02.pdf
    - X Window와 Compiz Fusion에 관한 내용
  3. 리눅스 데스크톱 사용을 위한 기본 기능과 설정의 이해 - 2008-03.pdf
    - Gnome의 기본적인 화면 구성, 메뉴 및 패널등에 관한 내용
  4. 멀티미디어 프로그램의 소개와 설정 방법 - 2008-04.pdf
    - 음악 재생기(mp3 player), 동영상 재생기에 관한 내용
  5. 멀티미디어 프로그램의 편집 작업 방법 - 2008-05.pdf
    - 동영상 편집(Avidemux)과 음원(mp3) 편집(Audacity)에 관한 내용
  6. 메신져 등 기타 주요 애플리케이션 소개 - 2008-06.pdf
    - KNateOn, JaTeOn, Pidgin NateOn Plugin등에 관한 내용
  7. 오피스와 인터넷 프로그램 - 2008-07.pdf
    - OpenOffice.org, 한컴오피스 60일 체험판, ThinkFree 오피스등에 관한 내용
 모든 글이 100% 순수하게 내 머리에서만 나온 글은 아니며 어떤 글은 인터넷 검색을 통해 혹은 지인들의 블로그에서 내용을 참고하여 쓴 글도 있다. 따로 참고문헌(참고자료)를 명시하지 못한 점, 또 미리 양해를 구하지 못한 점 대해서 이 자리를 빌어 죄송하다는 말을 전하고 싶다.

by sakuragi | 2008/07/04 03:06 | :: C space :: 컴퓨터 | 트랙백 | 덧글(6)

Eclipse 성능 테스트 플러그인 TPTP... Test & Performance Tools Platform

 무늬만 개발자이기에 Eclipse를 설치해 놓고도 거의 쓰는 일이 없었는데, 최근 잠시 Eclipse를 쓸 일이 생겨서 이래 저래 만져보다가 이전에 설치에 실패했던 TPTP(Test & Performance Tools Platform)가 불현듯 생각 나서 다시 설치를 시도 해보았다. 회사에서는 MS Windows 상에서 Eclipse를 사용 하기에 이전부터 쓰고 있던 WTP(Eclipse 3.3.2 Europa)에 TPTP 4.4.x All TPTP plugin Runtime을 설치해 주었더니 잘 동작했다.

 집에서는 더욱 더 Eclipse를 쓰는 일이 없지만, MS Windows에도 구축한 환경이라, 우분투가 깔린 내 노트북에도 설치해 보았다. 근데 이게 만만치 않았다. 설치를 성공하는 데 3일이 걸렸다. Eclipse 3.3도 써 보고, 3.4도 써보고 이래 저래 삽질을 한 끝에 결국은 TPTP All-in-One Package를 설치하고, 이런 저런 삽질을 더 해준 후에야 TPTP가 정상적으로 동작하는 것을 볼 수 있었다.

  테스트를 위해 몇분 만에 후딱 짠 프로그램을 TPTP로 성능 측정을 해보았다. 테스트한 프로그램은 num(초기값:0)이라는 변수를 1000번 임의로 +1 혹은 -1 하는 프로그램이다. Console에 찍힌 것 처럼 num 결과값은 32, +1을 516번, -1을 484번 했다. TPTP에 찍힌 메소드 호출 횟수 역시 결과값과 동일하다. 그리고 각 메소드가 프로그램의 총 실행시간 중 어느정도의 비중을 차지하고 있는지도 알 수 있다.
 
 최근 Socket을 이용해서 다른 프로그램과 데이터를 주고 받는 모듈(?)을 만들 기회가 있었는데, 처음에는 데이터가 발생할 때 마다 Connect해서 데이터를 전송하고, Close하는 방식으로 짰다. 그리고는 TPTP를 통해서 테스트를 해보니 Connect 시 엄청난 부하(시간의 Delay)가 발생하는 것을 보고는 연결을 유지한 채로 데이터를 받는 방식으로 고쳤다. TPTP를 실행해 보기 전까지는 Connect 시 부하가 생길 것은 예상했지만, 그 정도로 실행 속도에 영향을 줄 것이라고는 미쳐 생각을 하지 못했다.

 요즘 빨라진 컴퓨터의 성능으로 프로그램을 짜고 난 후 테스트를 간단하게만 할 경우, 프로그램의 성능에 대한 문제를 알아채기란 쉽지 않다. 그럴 경우 이 TPTP를 이용하면 눈에 보이는 수치로써 성능을 측정해 주고, 더욱 많은 데이터를 처리할 경우에는 얼마나 문제가 될 것인지도 예측할 수 있다. 그런 면에서 Eclipse로 개발을 한다면 필수적으로 함께 사용해야 할 플러그인이라는 생각이 든다.

 설치한 환경은 Ubuntu 8.04 Hardy Heron, Eclipse 3.4 Ganymede(TPTP All-in-One Package) 이다. 가장 힘들었던 삽질은 libstdc++2.10-glibc2.2 패키지의 설치였다.

 TPTP는 실행시 libstdc++-libc6.2-2.so.3 파일이 필요한데, 이 파일이 TPTP 실행 시 필요하다는 것을 아는데 이틀이 걸렸다. 또 이 파일이 Feisty인지 Gutsy를 마지막으로 사라졌기에 Feisty에 있는 패키지를 받아서 설치했다. 그리고 나서 리부팅을 하지 않고 하루종일 삽질하다가 내일하자고 포기하고 컴퓨터를 끄고 잔 후, 회사를 다녀와서 다시 부팅을 해보니  문제가 해결되었다.

 요약하자면 'TPTP All-in-One 설치 후, libstdc++2.10-glibc2.2 패키지 설치, 그리고 재부팅'으로 30분도 안 걸릴 작업이다. 난 3일이나 걸렸지만...

libstdc++2.10-glibc2.2 패키지는 아래 주소를 /etc/apt/sources.list에 추가한 후, 찾아서 설치하면 된다.
deb http://archive.ubuntu.com/ubuntu/ feisty universe

by sakuragi | 2008/07/03 02:28 | :: C space :: 컴퓨터 | 트랙백 | 덧글(4)

◀ 이전 페이지          다음 페이지 ▶



:+: sakuragi's Recently Tracks :+: