[shell] yum 장애 조치

오류 메세지

Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 229, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 104, in main
    result, resultmsgs = base.doCommands()
  File "/usr/share/yum-cli/cli.py", line 339, in doCommands
    self._getTs(needTsRemove)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 101, in _getTs
    self._getTsInfo(remove_only)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 112, in _getTsInfo
    pkgSack = self.pkgSack
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 591, in <lambda>
    pkgSack = property(fget=lambda self: self._getSacks(),
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 434, in _getSacks
    self.repos.populateSack(which=repos)
  File "/usr/lib/python2.4/site-packages/yum/repos.py", line 251, in populateSack
    sack.populate(repo, mdtype, callback, cacheonly)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 181, in populate
    dobj = repo_cache_function(xml, csum)
  File "/usr/lib/python2.4/site-packages/sqlitecachec.py", line 42, in getPrimary
    self.repoid))
TypeError: Parsing primary.xml error: Start tag expected, '<' not found

조치 방법

# ldd /usr/lib/python2.4/site-packages/libxml2mod.so
        linux-gate.so.1 =>  (0x00c78000)
        libxml2.so.2 => /opt/lampp/lib/libxml2.so.2 (0x00110000)
        libc.so.6 => /lib/libc.so.6 (0x00211000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00e09000)
        libm.so.6 => /lib/libm.so.6 (0x00b40000)
        /lib/ld-linux.so.2 (0x00883000)

/usr/lib/libxml2.so.2를 참조 할 수 있도록
/etc/ld.so.conf 파일의 lib 경로 조절
2009/04/21 15:39 2009/04/21 15:39
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] Python에서 MSSQL 사용하기

Python module:
    http://pymssql.sourceforge.net

장애 1)

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_centerlog.py", line 8, in ?
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 30, in ?
        import _mssql
    ImportError: /usr/local/python2.4.2/lib/python2.4/site-packages/_mssql.so: undefined symbol: dbcolinfo

조치 1)

    http://www.freetds.org/software.html 에서 FreeTDS-stable.tgz 을 다운받아 설치한다.
    직접 다운받기 : http://ibiblio.org/pub/linux/alpha/fre ··· able.tgz

장애 2)   

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_common.py", line 79, in xspam_main
      File "/email_server/src/server/spam/xspam_centerlog.py", line 20, in proc_main
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 328, in connect
        con = _mssql.connect(dbhost, dbuser, dbpasswd)
    error: DB-Lib error message 20009, severity 9:
    Server is unavailable or does not exist.

조치 2)

  dbhost에 port까지 명시한다.

  con = pymssql.connect( host='192.168.0.10:1433', user='sa', password='', database='temp')
  cur = con.cursor()
2008/03/06 14:34 2008/03/06 14:34
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] mod_python 오류

TRAC 0.10.4 => 0.11b1 업데이트후 다음과 같은 오류 발생

[Mon Feb 18 19:49:02 2008] [notice] child pid 22852 exit signal Segmentation fault (11)

확인 사항

$ ldd /opt/lampp/bin/httpd | grep expat
libexpat.so.0 => /opt/lampp/lib/libexpat.so.0 (0xb7e8c000)

$ strings /usr/lib/libexpat.so.0 | grep expat_
expat_1.95.2

혹은

$ ps aux | grep http | head -3
root      3625  0.0  0.6 31068 12836 ?       SN   Sep25   0:08 /usr/sbin/httpd
apache   24814  0.0  0.7 34196 15604 ?       SN   04:11   0:00 /usr/sbin/httpd
apache   24815  0.0  0.7 33924 15916 ?       SN   04:11   0:00 /usr/sbin/httpd

$/usr/sbin/lsof -p 3625 | grep expat
httpd   3625 root  mem    REG     253,0   123552    6409040 /opt/lampp/lib/libexpat.so.0.1.0

$ strings /usr/lib/libexpat.so.0.5.0 | grep expat_
expat_1.95.2

# python
Python 2.4.4 (#2, Feb 12 2008, 13:08:42)
[GCC 4.1.1 20070105 (Red Hat 4.1.1-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyexpat
>>> pyexpat.version_info
(1, 95, 8)

Apache에서 사용되어지는 expat 라이브러리와 Python에서 사용하는 라이브러리 버전이 달라서 생기는 현상임.

해결방법

/opt/lampp/lib/libexpat.a ->  /usr/lib/libexpat.a
/opt/lampp/lib/libexpat.so -> /lib/libexpat.so
2008/02/25 19:01 2008/02/25 19:01
태그 : , ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] ClamAV Oversized.Zip FOUND 문제.

증상 : clamscan으로 검사시 Oversized.Zip 라는 메세지 출력
$ clamscan Mdsr.1200970448.1465831.Q00073802
Mdsr.1200970448.1465831.Q00073802: Oversized.Zip FOUND

----------- SCAN SUMMARY -----------
Known viruses: 194517
Engine version: 0.91.2
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Time: 8.390 sec (0 m 8 s)


원인 : 정확하지는 않지만... 압축 파일의 압축률이 문제가 되는듯함.


조치사항:

Clamd

/usr/local/etc/clamd.conf 파일의
#ArchiveMaxCompressionRatio 300

ArchiveMaxCompressionRatio 500
와같이 주석을 제거한후 500으로 변경

Clamscan
$clamscan --max-ratio=500 Mdsr.1200970448.1465831.Q00073802

PyClamav
vi pyclamav.c 파일을 다음과 같이 수정
  /* set up archive limits */
  memset(&limits, 0, sizeof(struct cl_limits));
  limits.maxfiles       = 1000; /* max files */
  limits.maxfilesize   = 10 * 1048576; /* maximal archived file size == 10 Mb */
  limits.maxreclevel  = 5; /* maximal recursion level */
  limits.maxratio       = 500; /* maximal compression ratio */
  limits.archivememlim  = 0; /* disable memory limit for bzip2 scanner */
2008/01/22 17:48 2008/01/22 17:48
태그 : , , ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] Python C Module 만들기

참고 사이트:

static PyObject* sample_frange(PyObject *self, PyObject *args)
{
    PyObject* flist;

    double v;
    double from, to, step;
    int size, k;
    /* Python에서 넘어온 인수를 C로 변환 */
    if (!PyArg_ParseTuple(args, "ddd", &from, &to, &step))
        return NULL;
    size = (to-from) / step;

    /* 크기 size의 새로운 리스트 생성 */
    flist = PyList_New(size);   
    v = from;
    for (k = 0; k < size; k++) {
        /* 값 설정 */
        PyList_SetItem(flist, k, PyFloat_FromDouble(v));
        v += step;
    }
    /* 리스트 리턴 */ 
    return flist;
}

PyList_SetItem이 아닌...
PyList_Append를 사용한다면?

PyList_Append(flist, PyFloat_FromDouble(v));

이리하면 100% 메모리 누수가 일어남

PyObject *value = PyFloat_FromDouble(v);
PyList_Append(flist, value);
Py_DECREF(value);



위와 같이 해야 메모리 누수를 막을수 있음

Python의 경우 참조횟수에따라 가비지가 수집을 하는데~
PyList_SetItem은 내부적은 참조 횟수를 조절해주지만 PyList_Append는 그렇지 못함.
API Reference를 잘 참고하면서 작업해야만 함.

2006/11/28 01:25 2006/11/28 01:25
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] eclipse에서 python 작업하기

● 프로그램 다운로드
  1. EClipse 다운로드 : http://www.eclipse.org/downloads
                                 Eclipse 한글 언어팩
                                 Java가 설치되어 있지 않다면 : JDK 5.0 다운로드

  2) Python 다운로드 : http://www.python.org
  3) EClipse Python Plugin 다운로드 : http://pydev.sourceforge.net

● Eclipse 설정하기
  1) 창 -> 환경설정 -> PyDev -> Interpreter - Python 선택 -> 새로작성 클릭
  2) Python이 설치된 디렉토리에서 Python.exe 선택후 확인 클릭



● 테스트 하기
  1)  파일 -> 새로작성 -> 프로젝트 -> Pydev -> Pydev Project 선택
2006/08/16 19:28 2006/08/16 19:28
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] 함수 포인터

소스코드

class TEST:
  v = None
  def __init__(self):
       #self.v = 1
       pass
#a 는 class TEST 이다
a = TEST

#b 는 TEST class의 객체이다
b = TEST()

#b는 a class의 객체임과 동시에 TEST class 이다. 
c = a()

print "a1=", a.v
print "b1=", b.v
print "c1=", c.v

#a.v = 10 때문에~ 앞으로 생성되는 모든 TEST class의 객체의 v값은 10이 되어버린다.
a.v = 10
b.v = 20
c.v = 30

print "a2=", a.v
print "b2=", b.v
print "c2=", c.v

#혹은  c= TEST() 여도 동일함.
c = a()
print "a3=", a.v
print "b3=", b.v
print "c3=", c.v

실행 결과

a1= None
b1= None
c1= None
a2= 10
b2= 20
c2= 30
a3= 10
b3= 20
c3= 10
2006/06/21 17:39 2006/06/21 17:39
태그 : ,
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

[python] Python으로 작성된 Hellow, World!

1) Python 다운로드 [ http://www.python.org/download ]
2) 설치
3) "IDLE (Python GUI)" 실행
4) print "Hello, World!" 라고 입력

5) 위 방법은 아니다 싶으면...
  print "Hello, World!" 라는 내용을 hello.py로 저장
  c:\test>python hello.py
2006/05/16 19:49 2006/05/16 19:49
글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다