RPM 혹은 DEB 묶을 때 이런 경우..

사랑천사의 이미지

안녕하세요?
이여송 사도요한입니다.

RPM이나 DEB 파일을 묶을 때 이런 경우가 있더군요. 이럴 때 어떻게 해야 하나요? 솔직히.. Engdic 같은 프로그램은 ... 아.. 예를 먼저 들 것이 아니라 설명을 먼저 드리겠습니다.

보통 컴파일을 하고, 그 후에 make install 정도로 RPM 빌드 경로에 그것을 복사 하게 만든 뒤 그 안의 파일들을 잡아다가 RPM으로 묵게 되는 것인데, 이런 경우, 이것이 /usr 등에 프리픽스를 집고 설치 되게 되죠. 그런데 GCC나 Apache, PHP 등은 이런 샐행상의 경로(라이브러리등 때문에) 설정이 달라지면 실행에 문제가 생기기도 합니다. 두 가지 패키지를 예를 들어 보겠습니다.

1. Engdic 0.2
제가 이것을 묶을 때는 $build에서 make로 컴파일 하고 Makefile를 좀 수정 해서 $RPM_BUILD_ROOT/usr에 파일들을 설치 하도록 구성 했습니다.(make install 할 때에) 그리고 $files에 해당 파일의 목록을 적어 주었고요. 이 경우 파일을 설치시 별 문제 없이 설치가 되었습니다. RPM은 물론 잘 생성 되었고요. 그리고 실행에도 큰 문제가 없었습니다. engdic는 정상적으로 /usr/share/engdic/{a~z}.dic.gz 파일을 찾아서 사전 자료를 출력 했고요...

2. Mutt 1.3.x(버젼번호 부정확함)
이것을 컴파일 해서 완전히 빌딩 하고 RPM으로 묶을 때 BuildRoot를 /tmp/mutt-1.3.x-root/로 지정 했습니다. 이 후에 역시 같은 바업으로 빌딩을 다 하고 나니... 물론 빌딩은 성공 했습니다. 프리픽스는 $RPM_BUILD_ROOT/usr로 했고요. configure 시에 --install-prefix나 --exec-prefix는 지정 하지 않았습니다. 이렇게 RPM을 빌드시, RPM을 설치 후 문제가 발생 했습니다. /tmp/mutt-1.3.x-root/usr/share/.../.../.../........... 어쩌고를 찾을 수 없다고 하더군요. 이게 뭔 소린지... 그래서 RPM으로 안 묶고 그냥 설치 해 봤습니다. 아. 무론 잘 되었습니다.

위의 두 가정이 있습니다. 이런 경우 어떻게 해야 하나요? 의문이네요. --install-prefix --prefix --exec-prefix 등을 각자 다르게 지정해서 빌드될 때 파일이 위치하는 곳과 설치된 상태에서의 위치를 바꿔 줘야 하는 건가요? 음. 뭐 보니까 여러가지 스팩 파일 내에서 변수를 사용 하고 있던제 전반적으로 다 이해 하지는 못 했습니다. 보니 --install-prefix도 있고 --exec-prefix도 있고 그렇긴 합니다만 음...

잘 모르겠네요 어떻게 해야 할 것인지 음...

혹시 어떻게 묶어야 할 것인지, 그리고 그렇게 해야 하는 이유가 무엇인지 설명 해 주실 수 있는 분이 계신다면 설명 부탁 드립니다...

이여송 사도요한 드림.

hokim의 이미지

일단 /tmp 와 같은 임의의 디렉토리밑으로 install 하고 나서 그곳의 top(패키징하면 루트디렉토리가 됨)으로 가서 .tgz로 묶은 다음에 alien으로 deb 또는 rpm으로 컨버트하시는게 제일 쉽습니다. deb인 경우에는 alien이 의존성도 알아서 찾아주는 장점도 있습니다. 저도 우리 실험그룹에서만 사용하는 비표준디렉토리를 구조를 갖는 프로그램을 alien을 사용해서 deb으로 패키징해서 사용하고 있습니다.

사랑천사의 이미지

DEB는 그런데 RPM을 RPMBUILD로 빌딩 할 때는 좀 머리가 깨지네요 음 %makeinstall 이란 메크로가 잇긴 한대 이거 좀 마음에 안 드는 놈이라서 음... 어떻게 해야 할지 난감하군요. 아무튼 감사합니다. ALIEN도 생각 해 봐야 겠네요.
----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

사랑천사의 이미지

%prep
%setup
%build
./configure --prefix=/usr
%install
%makeinstall PREFIX=$RPM_BUILD_ROOT/usr install
%files
/*

----
일어나라! 싸워라! 그리고 이겨라!
다만!!! 의미 있는 것에 그 힘을!!!
그 능력과 노력을!!!

사람천사

댓글 달기

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