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 :: 컴퓨터 | 트랙백 | 덧글(12)

트랙백 주소 : http://sakuragis.egloos.com/tb/4470652
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by zodiacus at 2008/07/07 18:36
sendmail이었군요...이걸 찾아서 질문도 하고 그랬는데...
sendmail자세한 사용법을 어디서 찾을까요?
특히 인코딩 문제가 괴롭히네요....
Commented by sakuragi at 2008/07/08 09:15
sendmail 사용법은 인터넷에 자료가 아주 많을 것 같네요.
저는 sendmail을 안 써서 자세한 사항은 모르겠네요. :)
Commented by 랜덤여신 at 2008/07/07 22:20
내공이 느껴지는 팁이군요. :-)
Commented by sakuragi at 2008/07/08 09:16
감사합니다. ( __)
Commented by 상자 at 2008/07/07 23:07
cron-apt가 자동업데이트 되는것 아닌가요? '_'a
Commented by sakuragi at 2008/07/08 09:16
이 댓글을 보고 찾아보니 cron-apt 라는 패키지가 있군요.
저는 그냥 삽질한 건가요? = _=);;;;;
Commented by 백수 at 2008/07/14 00:04
이래서 리눅스는 싫어... 하고 나면 삽질.

이라기보단 한글로 된 패키지 활용 정보가 없어서 패키지로 되어 있는 걸 많이들 구현하더라고요. 백업 스크립트도 그렇고... 자동화 처리해주는 패키지도 있는데.
Commented by sakuragi at 2008/07/14 10:41
하고나서 보면 삽질이지만, 하다보면 얻는 것도 있죠.
그렇게라도 위안을 삼아야죠. :)
Commented by lowid at 2008/07/18 01:24
저는 그냥 아예 데몬 스크립트를 고쳐가지고 부팅시마다
강제로 pacman -Syu 명령어 쓰게 해놨는데.. 이렇게 하는 방법도 있군요..
sakuragi님이 하신건 mail로 받게 되있네요.. 전 그냥 /var/log에다가 그냥 평범하게
기록만하게 만들어 놨다는...
Commented by sakuragi at 2008/07/28 02:13
가끔 서버에 접속해서 메일이 온 게 있으면, 자연스럽게 '아~ 그동안 설치한 패키지가 있구나~' 하고 알게 되서 편한 것 같아서 이렇게 했어요. 저는 log 보는 경우가 잘 없어서요. Apache의 경우도 log를 안보고 awstats 웹로그 분석기를 사용하다보니.. ^^
Commented by 열셋 at 2008/08/11 02:10
우분투 8.04에서 기본적으로 /etc/cron.daily 안에 'apt'라는 스크립트 파일이 있던데요,
이걸 어찌어찌 수정하면 자동업데이트가 되는것 같은데 (주석에 그러한 내용이 있어서요)
어떻게 해야할지 감이 잘 안잡히네요... 셸 스크립트는 깊이 사용해본 적이 아직 없어서요;;
혹시 한번 확인해봐 주실수 있나요?
Commented by sakuragi at 2008/08/11 10:42
/etc/apt/apt.conf.d/ 폴더에 숫자+영문(예:11periodic)으로 적당한 파일을 만들어서, /etc/cron.daily/apt 파일에 나온 방식으로 아래와 같이 규칙을 적어주면 적용되는 것 같네요.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";


참고 : http://www.debian-administration.org/articles/43#comment_9

:         :

:

비공개 덧글

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

:+: sakuragi's Steam :+: