0. 프로그램 설치 과정
소스파일 다운로드 → compile → 설정 및 파일 배치 → 프로그램 실행 : tar + 압축
패키지 파일 준비 → 명령어를 이용한 설치 → 프로그램 실행 : rpm
(internet 연결) 명령어를 이용한 설치 → 프로그램 실행 : yum
# 리눅스에서 압축
- 파일의 용량을 줄이기 위해 사용
- 원본 파일 자체가 압축 된다(복사본 생성 후 압축 x)
- 여러 파일을 동시에 압축하면 각각의 파일 개별 압축
- 디렉토리 압축 X
- 형식
압축 형식 | 압축 | 압축해제 |
.zip | zip | unzip |
.gz | gzip | gunzip (gzip -d) |
.bz2 | bzip2 | bunzip2 (bzip2 -d) |
- 압축효율은 원본 파일 사이즈마다 다르다
1. tar
- Tape Archive; 초창기에는 여러 파일을 하나의 파일로 묶어서 백업하는 용도로 사용
- 여러 파일을 하나의 tar로 묶어준다
> 결과문이 하나의 파일이기 때문에 압축가능
- 파일을 담을 규격화된 공간을 만들고 그 내부에 파일을 담아주는 개념
> 생성된 tar 파일의 용량은 내부에 보관한 파일들의 전체 용량보다 클 수 있다
- 형식
tar 파일 생성 : tar cvf 생성이름.tar [대상] ... [대상] (확장자를 직접 넣어주어야함)
cfz 생성이름.tar.gz : gz으로 압축하면서 tar 생성
cfj 생성이름.tar.bz2: bzip2으로 압축하면서 tar 생성
tar 파일 내부 확인 : tar tvf <tar 파일명>
tar 파일 해체 : tar xvf <tar 파일명>
2. rpm
- redhat package manager; 패키지를 이용한 프로그램/서비스 관리
* 패키지 : 프로그램을 나눠놓은 조각
- Linux는 Kernel부터 시작하여 모든 구성이 패키지로 이루어져 있고
패키지는 다른 패키지와 의존 관계에 놓여있는 경우가 많다
> 패키지 설치/삭제 과정에서 의존성 관련 오류가 굉장히 많이 나온다
- rpm은 redhat에서 처음 만들어서 도입했고, redhat 기반의 모든 Linux에서는 rpm 명령어 사용
> debian 기반의 Linux에서는 dpkg 명령어 사용 (ubuntu)
- 형식
설치 : rpm -ivh 패키지명-버전.아키텍처.rpm
확인 : rpm -qa | grep 패키지명
삭제 : rpm -e 패키지명[-버전.아키텍처]
- 패키지 이름 구조
libgphoto2-2.5.15-3.el7.x86_64
<-------->|<---------->|<---->
패키지명 버전 아키텍처
1) 패키지명
패키지명은 한단어이거나 _기호를 이용하여 여러 단어의 조합으로 구성되어 있다
(이때 숫자만 단독으로 나오는 경우가 없기 때문에 버전과 구별이 가능)
패키지명이 한 단어이면 해당 패키지로 설치되는 프로그램 or 서비스의 이름을 나타낸다
패키지명이 여러단어이면 첫 단어가 설치되는 프로그램 or 서비스의 이름이고
뒤에 이어지는 단어들이 세부 역할을 의미한다
2) 버전
버전은 여러가지 세부 버전으로 구성
2. : major
5. : minor
15 : patch
-3 : release
el7 : OS
* OS 버전 예시
el7 : CentOS 7.X
el7_9 : CentOS 7.9
centos : all version CentOS
<생략> : all OS
3) 아키텍처
CPU의 bit와 관계되어 특정 수준의 CPU 이상에서 사용 가능하다 라는 의미
32bit : i386, i586, i686
64bit : x86_64
* 아키텍처에 noarch가 들어가면 32bit CPU와 64bit CPU에서 전부 사용 가능
# 의존성 오류
Failed dependencies:
/usr/bin/vi is needed by (installed) sudo-1.8.23-10.el7.x86_64
1) 확인 방법
A is needed by B : B에게 A가 필요하다
2) 설치할 때
B를 설치하기 위해 A가 먼저 설치되어야 한다
3) 삭제할 때
설치되어 있는 B에게 A가 필요해서 A를 지울 수 없다
## 해결 방법
1) 의존성 오류 메세지를 읽고 해당 내용 해결
> 설치할 때는 요구하는 패키지를 먼저 설치
> 삭제할 때는 의존성 오류를 제시한 패키지를 먼저 삭제
2) 의존성 오류를 무시하는 보조 옵션 --nodeps 사용
> 패키지를 확인했을 때 중요 패키지이거나(삭제할 때_) 찾을 수 없는 패키지라면 의존성 오류 무시
### 의존성 오류에서 패키지명이 아닌 다른 내용이 출력되면?
1) 파일의 절대경로
> 패키지에 해당 파일이 포함되어 있는 경우(일반적으로 삭제할 때 출력)
파일명을 패키지 이름처럼 읽으면 된다
2) lib~~~.so.숫자(~~~~)
>~~~~ 부분이 패키지를 의미(설치/삭제 시 전부 출력)
해당 의존성 오류를 검색하여 패키지명 확인
3) pkgconfig(~~~~)
> ~~~~ 부분이 패키지를 의미 (일반적으로 설치할 때 출력)
해당 의존성 오류를 검색하여 패키지명 확인
- rpm 명령어를 사용하기 위한 패키지 파일을 구하는 방법
1) 설치 CD에 있는 패키지 파일을 사용
2) Internet에서 패키지 파일을 다운로드 받은 후 사용
3. VIM Package 설치 실습
1) CentOS 홈페이지 미러사이트 X86_64 OS Package 에서 vim 찾아서 5개 다운로드
2) ftp server로 설치 파일 업로드
ftp mput ---* 같은 이름 한번에 ftp 서버로 업로드
3) rpm -ivh vim-[tab 키]
의존성 오류 내용에 따라 순서대로 설치
구글 오류 내용 검색
pkgconfig()나오는 오류들
libmysqlclient.so.18 Pkgs.org 사이트로 해당 파일 이름 확인
- rpm 작업 시 주의 사항
1) 의존성 오류는 가급적이면 무시 X
>의존성 오류를 무시하면 작게는 프로그램부터 크게는 운영체제까지도 문제가 생길 수 있다.
2) 설치/삭제 작업은 눈에 보이는 순서대로 진행
단, main 패키지가 있는 경우에는 main 패키지를 최우선으로 진행
(프로그램 이름으로 되어 있는 것들이 main)
3) 동일한 프로그램 or 서비스의 패키지들은 가급적이면 버전 정보를 일치
> 의존성 오류에 나오는 내용
패키지명 = 버전 : 해당 버전의 패키지
패키지명 > 버전 : 해당 버전보다 높은 버전의 패키지
> 동일한 CD or site에 있는 패키지들은 버전이 일치한다
4) 패키지 설치 시 * 기호를 이용하여 모든 패키지를 한번에 설치 X
>의존성 오류 발생 시 패키지 의존 관계 확인이 힘들다
keyutils-libs-devel is needed by krb5-devel-1.15.1-50.el7.x86_64
libcom_err-devel is needed by krb5-devel-1.15.1-50.el7.x86_64
libkadm5(x86-64) = 1.15.1-50.el7 is needed by krb5-devel-1.15.1-50.el7.x86_64
libselinux-devel is needed by krb5-devel-1.15.1-50.el7.x86_64
libverto-devel is needed by krb5-devel-1.15.1-50.el7.x86_64
libsepol-devel(x86-64) >= 2.5-10 is needed by libselinux-devel-2.5-15.e l7.x86_64
pkgconfig(libpcre) is needed by libselinux-devel-2.5-15.el7.x86_64
pkgconfig(libsepol) is needed by libselinux-devel-2.5-15.el7.x86_64
3. yum
- Internet을 이용한 자동 패키지 관리
- 반드시 Internet이 연결되어 있어야 사용 가능
- 의존성 오류를 알아서 처리
- 형식 * { A | B } 이것들 중에 하나를 선택하여 사용
yum [옵션] {install | update | remove} 패키지명
install : 설치
update : 업데이트
remove : 삭제
* 옵션
-y : y/N 물어볼 때 자동으로 y 선택
- yum -y update : 전체 패키지 최신화
'Base > Linux(CentOS)' 카테고리의 다른 글
9. 프로세스 / boot loader / run-level (리눅스 root 암호 없이 root 접근) (0) | 2022.06.21 |
---|---|
8. 파티션과 마운트 (Partition / mount) (0) | 2022.06.21 |
6. 권한 (허가권, 소유권, 특수권한) (0) | 2022.06.20 |
5. 사용자계정과 그룹 (0) | 2022.06.19 |
4. VI(M) 에디터 (0) | 2022.06.18 |
댓글