LINUX

Linux/RPM (redhat package management)

25G 2021. 11. 6. 12:52

linux package installation(리눅스에서 프로그램 설치 과정)

 

*. c(소스파일) -> *. obj(목적 파일) -> *. exe(실행파일)

 

프로그램을 설치하기 위해서는 일단 소스파일부터 구성을 한 다음에 컴파일링 작업을 거치게 되면서 하나의 목적 파일이 구성이 된다. 이때 컴파일링 작업은 크게 두 가지로 나뉘는데 하나는 기계어로 변환하는 것 또 한나는 문법적 오류검증이다.

이렇게 만들어진 목적 파일은 linking을 통해서 실행파일이 되는데 linking은 파일이 각자 자리에 위치할 수 있도록 연결해주는 작업이다.

 

 

1. 소스 - 컴파일 - 환경설정 - 설치 - 실행 : tar& make

-직접 프로그램 소스파일을 구해서 설치하고 자신의 linux에 맞게 환경 설정까지 하는 완전 수동 설치이다.

ex)

-./configure [명령어] == 소스파일에 대한 환경설정, makefile 생성 설치 경로 지정 등의 작업

    ex)./configure --prefix = /usr/local/java 이런 식으로 입력

- make == 소스파일을 실행 가능한 파일로 변환 , 소스 컴파일 작업

make파일 설치 시엔 make install을 통해서 설치 파일을 시스템에 설치

 

순서

configure -> make -> make install 순으로 일반적 진행이 이루어진다.

 

위 방식의 단점은 진행 중에 오류가 발생하면 여러 가지 작업을 해야 해서 번거롭다.

 

2. x    x    x    -설치 - 실행 : RPM

   [package]

- 1번의 작업이 하나하나 따로 진행을 해 나가야 한다면 1번의 작업이 다 마무리되어있는 방식이 RPM이라고 한다. 

 

3.                            인터넷 : yum

-인터넷이 연결이 돼 있다면 package파일들을 좀 더 편하게 내려받을 수 있다.

 

centos사이트에서 다운로드하였던 os의 package를 보면

다음과 같이 rpm확장자를 가진 패키지 파일이 엄청나게 많은 것을 확인할 수 있다. 이 파일들이 내 리눅스 시스템에서 설치할 수 있는 프로그램 파일들인데. 저 rpm파일 하나가 하나의 프로그램이 아니라 rpm파일여러게가 모여서 하나의 프로그램이 된다.(패키지 구조를 알아야 하는 이유이다. 즉 의존성 관계에 있는 프로그램을 관리하는 방법을 알기 위함)

리눅스에서는 프로그램에 필요한 프로그램이 있다면 찾아서 부분 설치해 주는 것이 윈도와 또 다른 점이 되겠다.

 

패키지 파일 구조 ex)

vim-enhanced-7.0.109-3.i386.rpm

vim-enhanced : 하이픈(-)을 기준으로 왼쪽 문자열은 패키지 명이다.

7.0.109-3 : 소스 버전 

- 7 (첫 번째 숫자): 주 버전-> 대규모 작업을 거친 횟수 

- 0 (두 번째 숫자) : 마이너 버전 (보조 버전) -> 시스템상에 자잘한 버그나 오류를 수정한 횟수

- 109 (세 번째 숫자) : 수정 버전 

- 3 (네 번째 숫자) : 베포 버전 -> 베포를 한 횟수

패키지 작업을 할 때는 위 숫자를 맞춰주는 것이 가장 이상적이다.

하지만 상황이 여의치 않다면

최소한 주 버전과 보조 버전 숫자는 맞춰줘야 한다.

i386 : 아키테쳐 36bit인 지 64bit인지 나타내는 부분

-i386, i586, i686은 36bit라는 얘기이다.

-x86.64는 64bit라는 얘기이다.

rpm : 확장자의 의미를 가지고 있지만 쓰는 경우에 따라서 의미가 달라지기도 한다.


 

rpm 사용 형식

 

rpm 작업 유의 사항

1. 의존성 오류(Failed dependencies)를 무시하지 말자

2. 의존성 오류가 재기된다면 의존성 오류를 재기한 것들부터 작업한다.

3. 의존성 오류에 디렉터리 구조 또는 lib..으로 시작을 하고 중간에 so 가 들어간 형식들이 있다면 무시한다.

4. 가급적 의존성 무시 옵션 (--nodeps)를 가급적 사용하지 않도록 한다.

==의존성 무시 옵션 --nodeps

==강제 진행 옵션 == --force

5. 패키지 작업 시 대표 패키지부터 작업을 한다, 나머지는 화면에 보이는 순서대로 작업한다.

6. 패키지는 버전을 일치시켜주도록 한다.

의존성 오류

 

설치 : rpm -ivh [package]... rpm

 

 

-i : 설치

-v :설치 과정을 보여주는 옵션

-h :설치 과정 중 #으로 퍼센트 표현

-U : 패키지가 없다면 설치 진행, 업데이트를 하면서 설치

설치 시에는 왼쪽에 있는 의존 패키지부터 설치

 

설치 시 의존성 오류가 나오면 왼쪽에 있는 의존성 패키지부터 설치한다.

삭제 : rpm -e [package]

 

 

-e : 삭제

의존성 오류

패키지를 삭제할 때 다음과 같은 오류 메시지가 나온다면 삭제하려는 패키지의 의존하고 있는 패키지부터 삭제하라는 말이다.

삭제 시에는 오른쪽에 뜨는 의존 패키지부터 삭제

삭제를 할때는 왼쪽에나오는 패키지부터 제거

vim패키지는 vi에디터 패키지이다

vim패키지를 삭제하면 vi명령어가 먹히지 않고 문서작업을 할 수 없게 된다.

리눅스에서 패키지를 삭제한다는 뜻은 리눅스 시스템에 하나의 기능을 삭제하겠다는 뜻과 같다.

 

 

확인 : rpm -qa | grep [package]

 

-qa : 시스템에 설치되어 있는 전체 패키지 목록 조회

-qf : 어떠한 파일을 포함하고 있는 패키지 조회

ex) rpm -qf /etc/vsftpd/vsftpd.conf

-qi : 패키지 정보 조회

ex) rpm -qi vsftpd

-qR : 패키지가 의존하고 있는 파일, 패키지 목록 조회

ex) rpm -qR vsftpd

-qc : 해당 패키지의 설정 파일들만 추려서 조회

ex) rpm -qc vsftpd

-qs : 패키지 내에 속한 파일들에 상태를 확인할 때

ex) rpm -qs vsftpd

 

grep : 패턴 검색