RPM패키지는 어떻게 만드나요?

익명 사용자의 이미지

솔라리스의 소스를 가지고 리눅스로 포팅 작업을 하고 있슴다.
솔라리스에서는 패키지를 만들어서 pkgadd라는 것을 통해 인스톨한다고 알고
있습니다. 물론 거기에 필요한 파일(prototype,respfile등등)들이 부가적으
로 존재하게 되겠지요.
리눅스에서는 pkgadd라는 유틸이 존재하지 않고 RPM형식으로 패키지를 작성
하여 쉽게 관리하고자 하는데 방법을 알길이 없군요..
어딘선가 RPM패키지를 만들기 위해서는
1. /usr/src/redhat/이하의 디렉토리를 이용하고...
2. Spec파일의 정의가 필요하고...
위와 같은 방법이 동원된다고 정보를 뒤져서 얻어 들었지만...
막상..해보니까 잘 모르겠군요...

<가장 이해 안가는 부분> 1.Spec 파일을 작성하는 부분.

제가 머리가 딸려서 그러니 쉽게 설명해 주시면..대단히 감사하겠습니다.

익명 사용자의 이미지

http//www-903.ibm.com/developerworks/kr/linux/
에 보시면
RPM을 이용한 소프트웨어 패키지, Part 1 Red Hat Linux 7.1에서
RPM 사용하기(기술자료)

RPM을 이용한 소프트웨어 패키지, Part 2 Root 없는 구현, 소프트
웨어 패치, RPM 배포(기술자료)
라고 있습니다..참조하세여.
rpm 만드는 것은 매우 쉽습니다.
저는 아주 용량이 적은 프로그램의 SRPM 파일을 받아다가 분석을 해서
만들었었는데 금방하실수 있습니다.

익명 사용자의 이미지

대단히 감사합니다.
근데...제가 패키지화 하고자 하는 것이 몇개의 디렉토리와 실행파일
그리고...텍스트파일인데....
그것도 가능한건가요?
결국...abc ------------ directory1---abc1
|______ directory2---sh1
|______ abc.txt
|______ binary.bin
이런식의 정보를 패키지로 묶어서 설치하고 삭제가 rpm에선 가능하다는 건가
요?
(내용중에...컴파일이란 말이 언급되어서리...궁금해서)

익명 사용자의 이미지

Summary GNU indent
Name indent
Version 2.2.6
Release 2
Source0 %{name}-%{version}.tar.gz
License GPL
Group Development/Tools
BuildRoot %{_builddir}/%{name}-root
%description
The GNU indent program reformats C code to any of a variety of
formatting standards, or you can define your own.
%prep
%setup -q
%build
./configure
make
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/local/bin/indent
%doc /usr/local/info/indent.info
%doc %attr(0444,root,root) /usr/local/man/man1/indent.1
%doc COPYING AUTHORS README NEWS

만약에 이런식으로 만든다면 저같은 경우는 다른것은 다 빼고 %files 밑에
다가 제가 패키징할 파일이름을 써주었습니다.
쉽게 ls 를 /usr/local/ls 로 카피를 하시고 만들어 보시기 바랍니다.

익명 사용자의 이미지

죄송합니다. 도대체 이해가 잘 되지 않아서...
제가 구현하고자 하는 소스를 간단하게 올립니다. 지금까지 도움으로도 충분히
감사한데도 제가 염치가 없어서...죄송합니다.

<<<< 쉘 스크립트 소스 코드 >>>> # 패키지화할 디렉토리(로컬에 있슴돠)에 심볼릭 링크를 걸어 둔다. if [ ! -h bin ] then ln -s ../../bin fi if [ ! -h lib ] then ln -s ../../lib fi

CurrentDir="`pwd`"

# 변수 정의 부분
TARNAME="ttt-10.0.tar" <- 위에서 링크로 걸어 둔 파일들을 압축할 파일명
SPECNAME="ttt.spec" <- 스펙명
RPMNAME="ttt-10.0-1.rpm" <- rpm명

SOURCES_PATH="/usr/src/redhat/SOURCES"
RPMS_PATH="/usr/src/redhat/RPMS/$HOSTTYPE"
SPECS_PATH="/usr/src/redhat/SPECS"

# 1.현재의 디렉토리를 압축하기 시작한다.<- 이것이 패키지 소스가 된다.
tar -cvf ../$TARNAME $CurrentDir
gzip ../$TARNAME

# 2. 위의 1에 의해 생성된 패키지를 /usr/src/redhat/SOURCES로 옮겨놓는
다.
mv ../$TARNAME.gz $SOURCES_PATH/$TARNAME.gz

# 3. 미리 작성한 스펙파일을 /usr/src/redhat/SPECS으로 옮겨 놓는다.
mv $CurrentDir/$SPECNAME $SPECS_PATH/$SPECNAME

# 4. rpm패키지를 생성한다.
rpm -ba $SPECS_PATH/$SPECNAME

<<< 스펙 파일 내용 >>> Summary xxx Name ttt Version 10.0 Release 1 Source0 %{name}-%{version}.tar.gz License Commercial Group Applications

%description
aaa

%prep
%setup -q

%install
make install

%files
%defattr(-,root,root)

==================================================================
위의 쉘 스크립트를 실행시키면...다음과 같은 에러 화면이 뜹니다.
source/FJSVswsts/StorageMGR/SE/5.1/pkg/Linux/bin
source/FJSVswsts/StorageMGR/SE/5.1/pkg/Linux/lib
에러 File /usr/src/redhat/SPECS/FJSVswsts.spec does not appear to
be a specfile.
==================================================================

이상입니다.
패키지 제작은 바이너리만 하는 것은 아닌 것 같은데...스펙파일을 보면
%build라는 섹션이 있고...제가 압축하여 패키지로 만들고자 하는 파일들은
일반 파일(텍스트파일)도 있고..이미 컴파일되어 바이너리로 된 파일도 있는
데...그냥 원하는 위치에 설치하면 되는 거 아닌가 싶은데...무지 복잡하게
생각되네요.
<<<짧은 저의 지식>>>
1.패키지는 관련있는 파일(텍스트,디렉토리,이진파일등)을 뭉쳐 놓은 것이다.
2.설치라 함은 원하는 위치에 관련 패키지를 풀어 놓는 것이다.
3.rpm이라는 것은 설치/제거/갱신등..패키지 관리를 위해 레드헷사에서 만든
유틸리티이다.

댓글 달기

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