ViewCVS 에서 python 오류 : enscript 및 SVN 브라우징 시

extrealm의 이미지

안녕하세요. CVS 서버 운영하면서 ViewCVS를 쓰고 있는데,
RedHat 7.x 에서 Apache2 + PHP4 로 변경하면서 python 오류가 발생합니다.

업글이후 설정문제로 몇가지 동작이 안되었는데, (zboard라든지 wiki라든지)문제가 있었지만, httpd.conf 조정후 정상화 되었고요.
다만, ViewCVS에서는 syntax hilight 보려면 아래와 같은 오류가 납니다.(txt, inc 등은 문법강조 없이 잘보입니다만)

Failure during use of an external program:
enscript --color -W html -Ecpp -o - -

Python Exception Occurred
Traceback (innermost last):
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 2625, in run_cgi
    main()
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 2589, in main
    view_checkout(request)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 1914, in view_checkout
    markup_stream(request, fp, revision, request.mime_type)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 662, in markup_stream
    markup_stream_enscript(lang, fp)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 493, in markup_stream_enscript
    enscript.write(chunk)
IOError: [Errno 32] Broken pipe

ViewCVS에선는 viewcvs.py 가 아니라 viewcvs.cgi 쓰고있습니다

extrealm의 이미지

잘 알지 못하믄서도 이것저것 붙여보며 서버를 비대하게 키워오고 있었습니다.
행여 도움이 될까, 변경내력을 적어보면 아래와 같습니다.

1. 와우리눅스7.2 ParanR2 (레드햇 7.2로 알고있음)에서 CVS를 굴리고 있었읍죠.
- Apache-1.3.2, MySQL, PHP3 이던가. 잘돌아갔습니다.
- CVS 웹 브라우징을 위해 ViewCVS 0.9.2 에 C문법 컬러링을 위해 enscript 를 엮어서 소스를 잘 보고 있었읍죠. (이떄가 python1.5 였는지 잘 모르겠습니다)

2. 그런데, SF2.6이나 GForge 에서는 PostgresSQL 이 필요하다해서, (기존거엔 pgsql 컴파일이 없었음) 아파치2 컴파일을 다시했습니다.
- apache-2.0.45 에 php-4.3.9, mysql-4.0.12, pqgsql-7.3.2 로 업글했습니다.

3. 몇가지 문제가 있었지만, 정상화 되었고요. httpd.conf 변화된것 몇가지 조정해줘서 정상으로 되었습니다만,
- ViewCVS에서 C 문법 컬러링으로 보려면 오류가 나더라고요. (txt, inc 등은 문법강조 없이 잘보입니다만)

Failure during use of an external program:
enscript --color -W html -Ecpp -o - -

Python Exception Occurred
Traceback (innermost last):
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 2625, in run_cgi
    main()
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 2589, in main
    view_checkout(request)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 1914, in view_checkout
    markup_stream(request, fp, revision, request.mime_type)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 662, in markup_stream
    markup_stream_enscript(lang, fp)
  File "/usr/local/viewcvs-0.9.2/lib/viewcvs.py", line 493, in markup_stream_enscript
    enscript.write(chunk)
IOError: [Errno 32] Broken pipe

4. php4 빌드시에 --with-python 같은것 안해줘서 그런가 싶었지만, log 보기가 목적이었기에 상관없었습니다.
- 이때 원인분석/개선 했어야 하는데 CVS checkout 이나, annotated 로 소스 볼 수 있었거등요.
- /usr/bin/ 에 python1.5 폴더와 python2.2 폴더가 있더군요.
- python2.2로 업데이트 하였는지는 잘 기억이 안납니다.

5. 이번에 SubVersion을 설치했습니다. 누락하지 않고 컴파일할 엄두가 안나서 RedHat 7.x RPM이라고 나와있는 넘들을 깔았습니다.
- 설치RPM은 대략 apache-2.0.48, apache-libapr-2.0.48, subversion-1.13, subversion-python-1.1.3,
- 성공이었고, repository 설정후 http://xxx/svn 으로 보면 코드들이 보입니다. (성공!)

6. 그러나, CVS/SVN 브라우징이 ViewCVS-0.9.2 에선 안된다하여 ViewCVS-1.0-dev로 교체하였습니다.
- CVS 브라우징 잘 되지만, SVN 브라우징은 안되는군요.
- 여전히 enscript 오류와 유사한, 놈들이 뜹니다.

An Exception Has Occurred
Python Traceback

Traceback (innermost last):
  File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 3194, in main
    request.run_viewcvs()
  File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 350, in run_viewcvs
    self.view_func(self)
  File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 1167, in view_markup
    if check_freshness(request, None, revision, weak=1):
  File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 644, in check_freshness
    expiration = rfc822.formatdate(time.time() +
AttributeError: formatdate

6. apache에 mod_python 누락되서 그런가 싶어서, 추가로 설치후 so 추가해주었습니다만, 안되는군요.
- 과연 php4 에서 python 설정이 안되서 그런것인지????

고수님들의 철처한 해부와 수정점을 알려주시믄 감사하겠습니다. -_-;

/E/X/T//R/E/A/L/M/ - 그대 품 안의 또하나의 세상

extrealm의 이미지

메시지 문의드린 oedalpha 님께서 조언해주신 글입니다.

oedalpha wrote:
extrealm wrote:
안녕하세요. ViewCVS 관련 글을 읽고 메시지 드립니다.
저는 enscript 잘 쓰다가 apache2 + php4 업뎃 이후 못쓰고 있는데, 혹시 조언 주실 수 있는지요?

게시물 : http://bbs.kldp.org/viewtopic.php?t=53082

답변에 앞서, 먼저 감사드립니다.

저는 Fedora core 2를 쓰고 yum으로 업데이트하고 있고요,
viewcvs는 0.9.2를 쓰고 있습니다.
enscript는
01/30/05 05:51:41 Updated: enscript 1.6.1-25.3.i386
로 업데이트한 후 ViewCVS가 정상작동하고 있습니다.

우선 enscript의 버전을 체크해보세요.

그 다음으로는 다음 사항을 체크해보세요. 마침 제 위키에 enscript에서 broken pipe가 났을 때 어떻게 대처했던가에 대한 글이 남아있네요.

Quote:
# enscript 의 설정파일이 /usr/local/share/enscript/enscript.cfg 와 /usr/local/etc/enscript.cfg 양쪽에 다 있는지..
# enscript가 있는 곳의 경로를 제대로 적었는지 확인하자. 내 경우에는 실행파일의 경로를 적어서 에러가 났다. (원래는 /usr/local/bin 처럼 디렉토리까지만 적으면 된다)

마지막으로 아래 에러 메시지는 python의 버전과 상관있어보입니다. python은 버전에 따라 차이가 많이 납니다. 2.3이나 2.4를 다시 깔아보세요.. mod_python이나 php4에 python설정하는 것은 아마 상관없을 겁니다.

Quote:
An Exception Has Occurred
Python Traceback

Traceback (innermost last):
File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 3194, in main
request.run_viewcvs()
File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 350, in run_viewcvs
self.view_func(self)
File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 1167, in view_markup
if check_freshness(request, None, revision, weak=1):
File "/usr/local/viewcvs-1.0-dev/lib/viewcvs.py", line 644, in check_freshness
expiration = rfc822.formatdate(time.time() +
AttributeError: formatdate

/E/X/T//R/E/A/L/M/ - 그대 품 안의 또하나의 세상

extrealm의 이미지

oedalpha wrote:
마지막으로 아래 에러 메시지는 python의 버전과 상관있어보입니다. python은 버전에 따라 차이가 많이 납니다. 2.3이나 2.4를 다시 깔아보세요.. mod_python이나 php4에 python설정하는 것은 아마 상관없을 겁니다.

의견 감사합니다!

우선 viewcvs.cgi 를 사용치 않고, viewcvs.py 스크립트를 직접 호출하는 것으로 문제를 해결하였습니다.
그러고 보니, 문제는 CGI에서 python 호출과 관계되는 것 같네요.
python 스크립트 적용시는 KLDP wiki 의 글 Subversion With ViewCVS For Windows 를 참조하였습니다.

여전히 CGI 부분 원인/해결이 없는 상태입니다. 의견 있으신 분들 댓글 계속 달아주세요.

/E/X/T//R/E/A/L/M/ - 그대 품 안의 또하나의 세상

wfellow의 이미지

viewcvs + enscript관련하여 문제가 있어서 구글신께 검색을 부탁 드렸더니 이 페이지가 나오더군요.. 글 쓰신분이 아직 해결이 안되신것인지 해결방법에 대한 내용이 없길래 일단 답글을 달아봅니다. (이래보니 제가 고대 유물 발굴단이 된것 같네요^^ 어쨋든 해결방법을 적어 놓아야 검색하신 다른분들의 수고를 덜을 수 있을것 같기에 그냥 올립니다.)

결론은 enscript의 옵션때문이었습니다. viewcvs.py의 481~482줄쯤의 -W옵션을 -w로 변경을 하니 잘되네요.. 이유에 대한 내용은 아래의 URL을 참고하시길 바랍니다.

URL: http://www.lyra.org/pipermail/viewcvs-dev/2005-July/002028.html

-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----

-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.