ports 만들기 vs ebuild 만들기

차리서의 이미지

얼마전에 새로 산 기계에 Gentoo를 bootstrap부터 OOo까지 설치했다가 1주일만에 지워버렸습니다. 옛 기계를 서브 WinXP 박스로, 새 기계를 메인 *NIX 데스크탑으로 쓰려던 계획이었는데, 생각이 바뀌어서 새 기계를 메인 WinXP 데스크탑으로 쓰고 옛 기계를 서브 *NIX 툴 서버로 쓰려고 합니다. *NIX 툴 서버에 정확히 어떤 OS(혹은 배포판)를 줄지는 아직 결정하지 못했습니다. FreeBSD, Gentoo, Fedora가 물망에 오른 후보들인데 모두 일장 일단이 있어서 심사숙고 중입니다. 그 '심사숙고' 과정 중 가장 중요한 요점 한 가지는 다음과 같습니다:

꼭 써야만 하는 도구가 몇 가지 있습니다. 일단 가장 급한 것은 legocoq이고 앞으로도 계속 늘어날 예정입니다. 일단 이 두 가지 도구들은 공식 웹 사이트에서 소스와 함께 rpm 파일을 제공하고 있으므로 Fedora를 쓰면 간단히 해결될 것 같습니다만, 다른 이유들 때문에 가능한 한 FreeBSD나 Gentoo를 쓰고싶습니다. 앞으로 추가될 새로운 도구들이 rpm을 제공한다는 보장도 전혀 없고요. 그래서 상기 도구들을 아예 ports나 ebuild로 만들어서 설치하는 방안을 고려중이며 FreeBSD Porter's HandbookGentoo Linux Developers (ebuild) Howto를 읽어보려고 합니다.

Ports로 만드는 것과 ebuild로 만드는 것의 장단점에 대한 의견을 듣고 싶습니다. 각각의 방법과 특성은 제가 문서를 읽어보면 알게 되겠지만, 역시 양자 간의 체감 비교 평가는 양쪽을 모두 사용해보기 전에는 불가능할 것 같아서 미리 경험자들의 평가를 들어보고자 합니다.

  • 상기 도구들의 링크를 참조해보시면 아시겠지만 lego와 coq는 각각 SML/NJ와 OCaml로 컴파일해야만 합니다. 이렇게 C/C++ 소스가 아닌 경우 ports나 portage 중 혹시 곤란해지는 경우는 없는지요? 당연히 가능하리라 생각하지만, make install이나 emerge 할 때 자동적으로 필요한 컴파일러부터 설치하도록 만들 수 있어야겠죠. (물론 컴파일러들은 이미 ports/portage tree에 들어있습니다.)

  • 패키지 제출과 관리에 제약은 없는지 알고 싶습니다. 특히 FreeBSD 쪽은 커미터 체계가 있어서 공식 ports tree에 뭘 포함시키는게 어렵지 않을까 싶습니다.

  • 만일 자신이 묶은 패키지가 공식 ports/portage tree에 들어가지 못할 경우, 자신의 로컬 트리를 관리하는 데에 있어서 어느쪽에 어떤 불편함이 있는지 알고 싶습니다. (예를 들어 emerge sync 해버리면 설치된 비공식 패키지의 정보가 날아가버린다든가...)

  • 설치하려는 툴들이 일단 '오픈 소스'이긴 한데 정확히 GPL이나 BSDL인지는 모르겠습니다. 예를 들어 공식 웹 사이트가 아닌 곳에서 변형된 형태로 재배포하면 안된다던가 하는 문제가 있으면 곤란할텐데, 이 문제는 각 툴의 저작자에게 직접 문의하는 수밖에 없는거겠죠?
[/]
cjh의 이미지

차리서 wrote:
상기 도구들의 링크를 참조해보시면 아시겠지만 lego와 coq는 각각 SML/NJ와 OCaml로 컴파일해야만 합니다. 이렇게 C/C++ 소스가 아닌 경우 ports나 portage 중 혹시 곤란해지는 경우는 없는지요?

해당 컴파일러가 ports에 존재하고 있다면 그걸 써서 빌드하고 빌드 의존성에 추가시켜 두면 됩니다. 다른 제약은 없습니다.

Quote:
패키지 제출과 관리에 제약은 없는지 알고 싶습니다. 특히 FreeBSD 쪽은 커미터 체계가 있어서 공식 ports tree에 뭘 포함시키는게 어렵지 않을까 싶습니다.

send-pr 명령으로 제작한 ports를 제출하면 커미터들이 보고 등록시켜 줍니다.
업데이트할 때에도 같은 절차를 반복하면 됩니다. 시간 간격은 좀 있을지도
모릅니다만. 한두명 사귀어 놓으시면 더 편합니다(불행히도 여자 커미터는 없습니다) :) 커미터들의 일 중 하나는 커미터가 아는 사람들이 제출한 포트를 등록하고 업데이트하는 일입니다.

Quote:
만일 자신이 묶은 패키지가 공식 ports/portage tree에 들어가지 못할 경우, 자신의 로컬 트리를 관리하는 데에 있어서 어느쪽에 어떤 불편함이 있는지 알고 싶습니다. (예를 들어 emerge sync 해버리면 설치된 비공식 패키지의 정보가 날아가버린다든가...)

FreeBSD의 경우 자작 포트로 설치된 경우 방해받는 일은 없습니다. portupgrade등의 도구에서 (모르니까) 궁시렁거릴 수는 있는데, 설정 파일을 조정해서 그냥 넘어가도록 조치하면 됩니다.

Quote:
설치하려는 툴들이 일단 '오픈 소스'이긴 한데 정확히 GPL이나 BSDL인지는 모르겠습니다. 예를 들어 공식 웹 사이트가 아닌 곳에서 변형된 형태로 재배포하면 안된다던가 하는 문제가 있으면 곤란할텐데, 이 문제는 각 툴의 저작자에게 직접 문의하는 수밖에 없는거겠죠?

저작권에 따라 다릅니다만, ports의 경우 패키지 재배포 등을 금지하거나 아예 직접 빌드 안하면 안된다든가 하는 제약사항을 옵션을 줄 수 있으므로 그러한 프로그램에 대해서는 적절하게 명시해 주면 됩니다. 인증된 오픈 소스 라이센스를 따르면 그냥 배포하도록 하면 되겠죠.

--
익스펙토 페트로눔

정태영의 이미지

차리서 wrote:

  • 상기 도구들의 링크를 참조해보시면 아시겠지만 lego와 coq는 각각 SML/NJ와 OCaml로 컴파일해야만 합니다. 이렇게 C/C++ 소스가 아닌 경우 ports나 portage 중 혹시 곤란해지는 경우는 없는지요? 당연히 가능하리라 생각하지만, make install이나 emerge 할 때 자동적으로 필요한 컴파일러부터 설치하도록 만들 수 있어야겠죠. (물론 컴파일러들은 이미 ports/portage tree에 들어있습니다.)

이미 portage 트리에 들어있다면..
DEPEND 에 명시해주면 알아서 그 컴파일러들을 미리 설치합니다 :)

차리서 wrote:

  • 패키지 제출과 관리에 제약은 없는지 알고 싶습니다. 특히 FreeBSD 쪽은 커미터 체계가 있어서 공식 ports tree에 뭘 포함시키는게 어렵지 않을까 싶습니다.

  • 만일 자신이 묶은 패키지가 공식 ports/portage tree에 들어가지 못할 경우, 자신의 로컬 트리를 관리하는 데에 있어서 어느쪽에 어떤 불편함이 있는지 알고 싶습니다. (예를 들어 emerge sync 해버리면 설치된 비공식 패키지의 정보가 날아가버린다든가...)

젠투에서는 /usr/local/portage 등의 .. PORTAGE_OVERAY_DIR을 통해서..
사제(?) ebuild들을 넣어놓고 사용하는게 가능합니다 :D

공식 트리에 뭘 포함시키는게 쉬운지 어려운지는 잘 모르겠군요 :)

[/][/]

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

feanor의 이미지

차리서 wrote:
설치하려는 툴들이 일단 '오픈 소스'이긴 한데 정확히 GPL이나 BSDL인지는 모르겠습니다. 예를 들어 공식 웹 사이트가 아닌 곳에서 변형된 형태로 재배포하면 안된다던가 하는 문제가 있으면 곤란할텐데, 이 문제는 각 툴의 저작자에게 직접 문의하는 수밖에 없는거겠죠?

Coq의 라이센스는 LGPL 2.1입니다. 소스에도 있고, 데비안 패키지의 copyright에서도 방금 확인했습니다.

Coq의 데비안 패키지: http://packages.debian.org/coq

그런데 메인테이너 말로는 LICENSE 파일은 LGPL이라고 하는데 소스파일에 그렇지 않은 부분이 있는 것 같아서 INRIA측과 이야기를 하고 있다고 합니다.

http://bugs.debian.org/230356

Quote:
Just to let you know what is happening: I am working on this, but while
revising the current coq package I stumbled over some questions (copyright)
that I first have to clarify with INRIA.

--feanor

feanor의 이미지

차리서 wrote:
가능한 한 FreeBSD나 Gentoo를 쓰고싶습니다. 앞으로 추가될 새로운 도구들이 rpm을 제공한다는 보장도 전혀 없고요. 그래서 상기 도구들을 아예 ports나 ebuild로 만들어서 설치하는 방안을 고려중이며 FreeBSD Porter's HandbookGentoo Linux Developers (ebuild) Howto를 읽어보려고 합니다.

이 기회에 Debian New Maintainers' Guide도 함께 읽어보는 것은 어떨까요? 데비안 공식 아카이브에 들어가기는 꽤 힘들지만 패키지 만드는 자체는 그리 어렵지 않습니다.

--feanor

차리서의 이미지

먼저 cjh님과 정태영님께 감사드립니다. 말씀해주신 내용으로 보아 어느쪽을 선택하더라도 아무 문제 없을 것 같군요. 일단 문서를 다 읽어보고나서 취향에 맞는 쪽을 택해도 괜찮을 것 같아서 다행입니다. (그 때까지는 *NIX가 없는 답답한 상태로 살아야하는군요. 빨리 읽어야겠습니다.) :)

feanor wrote:
Coq의 라이센스는 LGPL 2.1입니다. 소스에도 있고, 데비안 패키지의 copyright에서도 방금 확인했습니다.

Coq의 데비안 패키지: http://packages.debian.org/coq

그런데 메인테이너 말로는 LICENSE 파일은 LGPL이라고 하는데 소스파일에 그렇지 않은 부분이 있는 것 같아서 INRIA측과 이야기를 하고 있다고 합니다.

http://bugs.debian.org/230356


헉! :shock: KLDP에서 coq를 쓰시는 분을 뵙게될줄은 몰랐습니다. 혹시 저와 비슷한 분야를 연구하고 계시거나 필드에서 정형기법을 쓰고 계신지도 모르겠군요. 새삼 반갑습니다. :)

그나저나 데비안에는 coq 패키지가 있었군요. 여담이지만, 왠지 데비안에 coq가 있는건 뭔가 좀 어울리는 것 같지 않습니까? Coq는 프랑스 INRIA가 만들었고 불어로 '닭'이라는 (수탉인가?) 뜻인 것으로 압니다. 그리고 저는 오래 전에 'Debian'이라는 이름을 처음 봤을 때 저도 모르게 '드비앙'이라고 읽었었죠. 유유상종인가보군요.

ProofGeneral도 있네요. :shock:

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

정태영의 이미지

[ebuild  N    ] dev-lang/ocaml-3.07-r1  -tcltk  2,519 kB
[ebuild  N    ] app-sci/coq-8.0_beta  -debug -norealanalysis  2,195 kB

젠투에도 기본으로 있습니다 -_-!!
제꺼에선.. 기본으로 실험적인 패키지를 설치하도록 되어있기 때문에..
(ACCEPT_KEYWORDS="~x86")

베타버젼이 나오지만..
그런게 아니라면;;

[ebuild  N    ] dev-lang/ocaml-3.06-r1  -tcltk  2,379 kB
[ebuild  N    ] app-sci/coq-7.4  -norealanalysis  1,501 kB

이 버젼이 깔릴 듯 하군요 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

차리서의 이미지

정태영 wrote:
[ebuild  N    ] dev-lang/ocaml-3.07-r1  -tcltk  2,519 kB
[ebuild  N    ] app-sci/coq-8.0_beta  -debug -norealanalysis  2,195 kB

젠투에도 기본으로 있습니다 -_-!!
제꺼에선.. 기본으로 실험적인 패키지를 설치하도록 되어있기 때문에..
(ACCEPT_KEYWORDS="~x86")

베타버젼이 나오지만..
그런게 아니라면;;

[ebuild  N    ] dev-lang/ocaml-3.06-r1  -tcltk  2,379 kB
[ebuild  N    ] app-sci/coq-7.4  -norealanalysis  1,501 kB

이 버젼이 깔릴 듯 하군요 ;)


헉! 작년부터 올 초까지 Online Package Database에서 검색했을 때에는 분명히 없었는데 이상하다 싶어서 지금 다시 가보니 4월 2일자로 등록됐군요.

만세! :)

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.