본문 바로가기

IT's Life/Linux

Linux SRPM 소스 패키지 설치 (두 가지 방법)

이전 섹션에서는 RPM 패키지를 사용하여 소프트웨어를 설치하는 방법을 소개했지만이 섹션에서는 SRPM 소스 패키지 설치 소프트웨어 인 다른 RPM 패키지를 사용하는 방법을 배웁니다. 

SRPM 패키지는 RPM 패키지보다 "S"를 가지며 "Source"의 첫 글자이므로 SRPM은 문자 그대로 "소스 코드 형태의 RPM 패키지"로 번역 될 수 있습니다. 즉, SRPM 패키지는 더 이상 컴파일 된 이진 파일이 아니며 소스 코드 파일입니다. SRPM 패키지는 소스 형태로 배포 된 후 RPM 패키지로 직접 패키지 된 소프트웨어의 제품이라는 것을 이해할 수 있습니다. 


표 1에는 RPM 패키지와 SRPM 패키지의 차이점이 나와 있습니다.

표 1 RPM과 SRPM

파일 형식

파일 이름 형식 

직접 설치 여부 

임베디드 프로그램 유형 

 매개 변수를 수정하고 컴파일 할 수 있습니까

 RPM

 Xxx.rpm

 깡통

컴파일 

아닙니다 

SRPM 

Xxx.src.rpm 

 아닙니다

 컴파일되지 않은 소스 코드

깡통 

표에서 볼 수 있듯이 SRPM 패키지의 이름은 기본적으로 RPM 패키지와 비슷하지만 SRPM 패키지에는 "src"플래그가 있습니다. 즉, SRPM 패키지는 "패키지 이름-버전 번호-게시 수-게시자-src.rpm" " MySQL -5.5.29-2.el6.src.rpm" 과 같이 이름을 지정하는 방법 입니다. 

또한 SRPM 패키지는 소프트웨어를 설치하는 데 직접 사용할 수없는 컴파일되지 않은 소스 패키지이며 다음 두 단계가 필요합니다.

  1. SRPM 패키지를 이진 RPM 패키지로 컴파일하십시오.
  2. 컴파일 된 RPM 패키지를 사용하여 소프트웨어를 설치하십시오.

이전 장에서는 RPM 패키지를 사용하여 소프트웨어를 설치하는 방법을 설명 했으므로 SRPM 패키지를 사용하여 소프트웨어를 설치하는 핵심은 SRPM 패키지를 RPM 패키지로 컴파일하는 첫 번째 단계입니다. 

이 섹션에서는 여전히 설치 아파치를 사용합니다 .SRPM 패키지 설치 소프트웨어를 사용하는 두 가지 방법이 있습니다 (SRPM 패키지 컴파일).

  1. rpmbuild 명령을 사용하여 SRPM 패키지를 사용하여 소프트웨어를 직접 설치하거나 SRPM 패키지를 RPM 패키지로 컴파일 한 다음 RPM 패키지를 사용하여 소프트웨어를 설치할 수 있습니다.
  2. * .spec 파일을 사용하여 SRPM 패키지를 RPM 패키지로 컴파일 한 다음 RPM 패키지를 사용하여 소프트웨어를 설치하십시오.


rpmbuild 명령 설치

rpmbuild 명령도 프로그램이지만이 프로그램은 기본적으로 설치되지 않으므로 rpmbuild 명령을 사용하려면 미리 설치해야합니다. 여기서 rpm 명령을 사용하여 다음과 같이 rpmbuild 명령을 설치합니다.

[root @ localhost ~] #rpm -ivh /mnt/cdroin/Packages/rpm-build-4.8.0-27.el6.i686.rpm 

준비 중 ... 

############### ##### 

[100 %] 

1 : rpm-build 

################# 

[[100 %]

rpmbuild가 성공적으로 설치되었음을 증명하는 두 개의 100 %가 나타났습니다.


SRPM 패키지를 설치하기위한 Rpmbuild 명령

소스 코드를 수정하지 않고 SRPM 패키지 만 설치하려면 rpmbuild 명령을 사용하십시오. rpmbuild를 사용하여 SRPM 패키지를 설치하기위한 명령 형식은 다음과 같습니다.

[root @ localhost ~] # rpmbuild [옵션] 패키지 이름

다음 두 가지 옵션을 사용할 수 있습니다.

  • -rebuild : SRPM 패키지를 컴파일하여 RPM 바이너리 패키지를 생성합니다.
  • -재 컴파일 : SRPM 패키지를 컴파일하고 동시에 설치하십시오.
  • SRPM은 여전히 ​​기본적으로 RPM 패키지이므로 설치시 패키지 간 종속성을 고려해야하므로 제대로 설치하려면 해당 종속성을 설치해야합니다.

여기서는 -rebuild 옵션을 사용하여 SRPM 패키지를 RPM 이진 패키지로 컴파일합니다. 명령은 다음과 같습니다.

[root @ localhost ~] # rpmbuild -rebuild httpd-2.2.15-5.el6.src.rpm 

경고 : InstallSourcePackage at psm.c : 244 : 헤더 V3 RSA / SHA256 서명, 키 

ID fd431d51 : NOKEY 

경고 : 사용자 mockbuild 존재하지 않음-루트 

경고 사용 : 그룹 mockbuild가 존재하지 않음 

-mockbuild 사용자에 대해 루트 #warp를 사용하지 않는 경우 root를 대신 사용하십시오. 이것은 오류가 아니며, 신경을 쓸 필요가 없습니다. 

일부 출력을 생략하십시오 ... 

Wrote : / root / rpmbuild / RPMS / i386 / httpd-2.2.15-5.el6.i386.rpm 

Wrote : / root / rpmbuild / RPMS / i386 / httpd- devel- 2.2.15-5.el6.i386.rpm 쓰기 

: /root/rpmbuild/RPMS/noarch/httpd-manual-2.2.15-5.el6.noarch.rpm 쓰기 

: / root / rpmbuild / RPMS / i386 / httpd- Tools-2.2.15-5.el6.i386.rpm 쓰기 

: / root / rpmbuild / RPMS / i386 / mod_ssl-2.2.15-5.el6.i386.rpm #RPM 

패키지의 위치를 ​​확인하십시오. 설명이 성공적으로 컴파일되었습니다

실행 (% clean) : / bin / sh -e / var / tmp / rpm-tmp.Wb8TKa 

+ umask 022 

+ cd / root / rpmbuild / BUILD 

+ cd httpd-2.2.15 

+ rm -rf / root / rpmbuild / BUILDROOT /httpd-2.2.15-5.el6.i386 

+ exit 0 

실행 (-clean) : / bin / sh -e / var / tmp / rpm-tmp.3UBWql 

+ umask 022 

+ cd / root / rpmbuild / BUILD 

+ rm -rf httpd-2.2.15 

+ exit 0


종료 0은 성공적인 컴파일 플래그이며이 컴파일 프로세스에서 생성 된 임시 파일은 자동으로 삭제됩니다. SRPM 패키지가 컴파일 된 후 rpmbuild 디렉토리가 현재 디렉토리에 생성되고 전체 컴파일 프로세스 중에 생성 된 파일 (패키지)이 여기에 저장됩니다.

[root @ localhost ~] # ls / root / rpmbuild / 

빌드 RPMS 소스 사양 SRPMS

ls 명령에서 볼 수 있듯이 rpmbuild 디렉토리에는 여러 개의 서브 디렉토리가 있으며 여기에 저장된 파일 카테고리가 표 2에 표시되어 있습니다.

표 2 서브 디렉토리의 역할

파일명 

파일 내용 

빌드 

컴파일 중 생성 된 데이터 저장 위치 

RPMS 

성공적인 컴파일 후 생성 된 RPM 패키지 저장 위치 

출처 

SRPM 패키지에서 저장된 소스 패키지 (* .tar.gz)가 저장됩니다. 

사양 

 생성 된 설정 파일의 설치 위치입니다. 두 번째 설치 방법은이 파일을 사용하여 설치하는 것입니다.

SRPMS 

SRPM 패키지를 배치 할 위치 

보시다시피 컴파일 된 RPM 패키지는 / root / rpmbuild / RPMS / 디렉토리에 저장되며 다음 명령을 사용하여 확인할 수 있습니다.

[root @ localhost ~] #ll / root / rpmbuild / RPMS / i386 / 

-rw--r--r-- 1 루트 루트 3039035 11 월 19 일 06:30 httpd-2.2.15-5.el6.i386.rpm 

-rw--r--r-- 1 루트 루트 154371 11 월 19 일 06:30 httpd-devel-2.2.15-5.el6.i386.rpm 

-rw--r--r-- 1 루트 루트 124403 11 월 19 06:30 httpd-tools-2.2.15-5.el6.i386.rpm 

-rw--r--r-- 1 루트 루트 383539 11 월 19 일 06:30 mod_ssl-2.2.15-5.el6. I386.rpm


따라서 소프트웨어를 직접 설치하는 RPM 패키지가 제공됩니다. 실제로 rpmbuild 명령을 사용하여 SRPM 패키지를 컴파일하는 과정은 다음 세 가지 과정을 거쳤습니다.

먼저 SRPM 패키지의 포장을 풀고 소스 패키지를 받으십시오.

소스 패키지를 컴파일하여 이진 파일을 생성하십시오.

바이너리를 다시 패키지하여 RPM 패키지를 생성하십시오.


* .spec 파일로 설치

.spec 파일로 소프트웨어를 설치하려면 먼저 SRPM 패키지의 포장을 풀어야합니다. 물론, 우리는 즉 사용하여 다른 방법을 선택하려면 여기 SRPM의 rpmbuild 잠금 해제 명령을 사용할 수 있지만, rpm -i다음과 같이 명령을 :

[root @ localhost ~] # rpm -i httpd-2.2.15-5.el6.src.rpm

-i 옵션은 rpm 패키지를 설치하는 데 사용되지만 SRPM 패키지 설치의 경우 .src.rpm 패키지 만 압축 해제되고 파일은 설치와 관련이없는 현재 디렉토리의 rpmbuild 디렉토리에 배치됩니다. 운영. 

이 명령을 사용하면 현재 디렉토리에서 rpmbuild 디렉토리를 생성 할 수 있지만 표 2와 달리이 rpmbuild 디렉토리에는 두 개의 서브 디렉토리 SOURCES 및 SPECS 만 있습니다. 그중에서 소스 코드는 SOURCES 디렉토리에 있고 설정 파일은 SPECS 디렉토리에 있습니다. 


다음으로 SPECS 디렉토리의 설정 파일을 사용하여 RPM 패키지를 생성하십시오. 명령은 다음과 같습니다.

[root @ localhost ~] # rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec

그 중에서도 -ba 옵션의 의미가 컴파일되고 RPM 바이너리 패키지와 SRPM 소스 패키지가 동시에 생성됩니다. -bb 옵션을 사용하여 RPM 바이너리 패키지 만 생성 할 수도 있습니다. 

명령이 실행 된 후 BUILD, RPMS, SOURCES, SPECS 및 SRPMS 디렉토리가 / root / rpmbuild / 디렉토리에 생성되고 RPM 패키지는 RPMS 디렉토리에 배치되고 SRPM 패키지는 SRPMS 디렉토리에 생성됩니다.

위의 두 가지 방법을 사용하여 SRPM 패키지를 RPM 바이너리 패키지로 컴파일 할 수 있습니다. 나머지 작업은 RPM 패키지를 사용하여 소프트웨어를 설치하는 것입니다.이 부분은 이전 장에서 이미 다루었으므로 자세한 내용은 다루지 않겠습니다.