Tag: portsnap

pkg_version: Comparison failed

ports에 업데이트할 것이 있는지 확인하려고 pkg_version -vIL= 을 실행했다. 그런데 갑자기 Comparison failed라는 메시지가 나오면서 아무런 것도 안한다.

수동으로 portsnap fetch update 하면 모든 포트가 없데이트 되었다고 나온다. 뭔가 잘못된거다. 여기저기 뭔가하고 뒤저보다가... 무심결에 ls -l /usr/ports 하는 순간..

허걱 /usr/ports/INDEX 파일의 사이즈가 0이다. 뭐 이건 인덱스 다시 빌드하면 되는 것이고.. 또 뒤져보니 /var/db/portsnap 파일의 일부가 사라졌다. 이건 뭣인가? 그래 언젠가부터 ports의 nfs 서버가 이상하긴 했지, 뭐 그녀석 이제 생을 마감할 때도 되었고, 그냥 ports나 서비스 해라 하고 놔두고 있었는데, 그녀석이 하드웨어적인 이유로 재부팅 되면서 몇몇 파일을 날려버렸던 거다.

원인은 파악됐고... 해결은 간단하다 /var/db/portsnap 지워버리고 portsnap fetch extract 끄읏...

근데 그 에러난 머신은 어떻하냐구? 말했잖아! 조용히 생을 마감하도록 호스피스 병동에 격리시킬 생각이지요. 이렇게 가끔 ports nfs 서비스 하다가... 그게 잦아지면 그냥 생을 마감시키려해... 그래 그녀석 서버로서 지난 8년간의 새월은 참으로 오랜 세월이었지???

너도 젊었을 때는 스펙으론 꽤나 날리던 녀석이었는데, 물론 대형 형님들은 제외하고 말이다... 그리고 너와 참 많은 일을 했었는데, 아쉽다.... 그래 그래... 나도 그 정때문에 널 아직까지 버리지 못하고 있는걸거야...


crontab에서 portsnap 수행하기..

0     3     *     *     *     root    portsnap cron update && pkg_version -vIL=

자 이렇게하면 메일 새벽 3시에 ports의 snapshot을 받아서 업데이트 한다.

  • -I : INDEX만 업데이트하고 나머지 포트트리는 건드리지 않는다. ports 빌드중에 portsnap으로 업데이트하면 빌드오류가 발생할 가능성이 높으므로 그때 이 옵션이 필요하다. 하지만 새벽 3시에 포트를 빌드하는 머신은 무슨 머신일까???
  • cron: 1~3600초를 random으로 sleep한 다음 수행한다. 이는 서버의 부하를 분산해주려는 목적임
  • fetch: man page에 따르면 crontab에 적용하려면 fetch는 사용하지 마란다. cron 명령으로 내부적으로 호출된다. 직접  portsnap을 실행할 때만 사용한다.
  • pkg_version: 업데이트 한 후.. ports와 버전이 다른 것 리포팅 한다. 뭐 실험적인 서버에서는 모두 업데이트해 최신 버전을 유지하는 것도 좋지만 portaudit에서 보안 오류가 난 것만 업데이트 해주는 것이 정신 건강에 좋을 수 있다.

  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress