본문 바로가기

시스템/Linux

패키징 관련

RPM


패키지 이름

어플명-버전(0.0.0)-릴리즈넘버.아키텍처(.src).확장자


패키지관련 설정(rc)파일

/usr/lib/rpm/rpmrc


기본구조

/패키지

/BUILD

/RPMS

/아키텍처

/아키텍처

/SOURCE

/SPECS

/SPRMS


spec 파일

spec파일은 ./SPECS 디렉토리에 포함되며, 패키지 빌드시 필요한 정보를 기술하게 된다. 


매크로 : define으로 정의한 매크로는 %이름으로 사용

%define 이름 값


헤더명: 값 부분으로 패키지 정보를 기술한다.

Summary: 설명

Name: 파일이름

Version: 버전

Release: 릴리즈넘버

BuildRoot: 빌드시 사용할 루트디렉토리(temp 디렉토리). 이 위치에 컴파일이 완료되고, 그 결과물로 최종 rpm 파일이 만들어진다.


Source: 파일.tar.gz

Source0:

Sourcd1:

.

.


Patch: 패치파일명.patch

Patch0

Patch1

.

.


Requires: 종속_패키지 기술

BuildRequires: 빌드에 필요한 rpm패키지를 기술한다



스크립트 정의

%desciption

%prep 준비작업 기술. 압축을 풀고, 해당 디렉토리 이동 등의 명령을 기술한다.

%setup Source의 파일의 압축을 풀어 ./BUILD/소스파일명/ 디렉토리를 생성해 해당 디렉토리에 압축을 푼다.

%patch 패치정보


%build 프로그램 빌드 명령. make 명령등 쉘 스크립트를 기술한다.


%install 빌드된 바이너리의 설치 관련 처리를 기술한다.


%files 패키징될 파일 목록


%clean


%pre 설치 전 수행할 스크립트

%post 설치 후 수행할 스크립트

%preun 제거 전 수행할 스크립트

%postun 제거 후 수행할 스크립트


빌드

rpmbuild -ba spec파일명



설치

rpm -Uvh rpm패키지명




DEB

build-essential 

dpkg-dev



기본구조

패키지 PATH에 /DEBIAN 폴더를 만들어 패키지 관련 정보를 포함하고, 기타 폴더에는 루트 아래에 복사할 파일들을 넣어주면 기본적인 패키지 파일을 만들 수 있다. 스크립트에는 실행권한을 주어야 하며, 필요한 경우에만 추가해 주면 된다.


~/패키지명(패키지루트 디렉토리)

/DEBIAN 디렉토리

/control : 패키지 관련 정보

/preinst : 설치전 수행할 스크립트

/postinst : 설치후 수행할 스크립트

/prerm : 제거 전에 수행할 스크립트

/postrm : 제거 후 수행할 스크립트


/설치 디렉토리

/복사할 파일들 or 폴더


다른 형태로(2.0) control 항목과 data를 tar.gz 로 묶어서 패키징도 가능하다. debian-binary 파일에 "2.0\n"을 기술해 버전을 알리고, control.tar.gz에는 DEBIAN 디렉토리를 data.tar.gz에는 설치할 디렉토리 내용을 넣으면 된다.

~/패키지 루트

/debian-binary

/control.tar.gz

/data.tar.gz


control 파일 헤더: 값 형태로 패키지에 관련된 정보를 기술한다.

Package: 패키지명

Version: 버전

Architecture: 아키텍처

Sector: 패키지종류

Depends: 종속 패키지 목록

Maintainer: 배포자

Description: 설명



패키지 빌드하기

dpkg -b 패키지


dpkg-deb : 데비안에서는 요걸 사용하란다.

dpkg-deb --build 패키지


패키지 설치하기

dpkg -i 패키지.deb


의존성이 있는 패키지도 자동으로 설치하는 경우 gdebi 를 사용한다.

gdebi 패키지.deb


패키지 제거

dpkg -r 패키지


패키지내용 살펴보기

ar tv 패키지.deb


패키지 풀기

ar x 패키지.deb



'시스템 > Linux' 카테고리의 다른 글

[VM] VirtualBox에 Ubuntu 18.04 server guest 설치  (0) 2020.02.07
특정일 이전 백업 파일 삭제하기  (0) 2017.07.20
curl 간단 명령  (0) 2017.04.03
EPEL/XRDP  (0) 2017.03.09
bonding 설정  (0) 2017.02.19
SSH, 방화벽 관련 설정  (0) 2017.01.20
[CentOS7] systemd 기본사항  (0) 2017.01.20
[centos7] 방화벽 설정하기  (0) 2017.01.20
쉘 스크립트  (0) 2014.07.27