[L17] 프로그램 설치와 압축, 그리고 의존성 오류_Linux/centOSLinux공부2022. 2. 7. 10:00
목차
프로그램 설치 과정 종류
- 소스 파일 다운로드 -> compile -> 설정 및 파일 배치 -> 프로그램 실행
- tar + 압축
- 패키지 파일 마련한 상태 -> 명령어를 이용한 설치 -> 프로그램 실행
- rpm
- (Internet 연결) 명령어를 이용한 설치 -> 프로그램 실행
- yum
압축
- 파일의 용량을 줄이기 위해 사용한다.
- 원본 파일 자체가 압축된다 (복사본 생성 후 압축하는 작업x)
- 여러 파일이 동시에 압축하면 각각의 파일이 개별 압축된다.
- 디렉토리 압축은 불가능하다.
- 형식
- 명령어 [옵션] 대상
- *압축의 형식과 압축/압축해제 작업에 따라 명령어가 달라진다.
-
압축 형식 압축 압축 해제 .zip zip unzip .gz gzip gunzip (gzip -d) .bz2 bzip bunzip2 (bzip2 -d)
tar
- Tape ARchive : 초창기에는 여러 파일을 하나의 파일로 묶어서 백업하는 용도로 사용
- 여러 파일을 하나의 tar파일로 묶어주기 때문에 압축 가능
- 파일을 담을 공간을 만들고 거기에 파일 담아주는 개념
- tar 파일 용량이 커진다.
- 형식
- tar 파일 생성 : tar cvf 만들이름.tar 대상 [대상] ... [대상]
- tar 파일 내부 확인 : tar tvf 파일명
- tar 파일 해체 : tar xvf 파일명
- 추가 압축 옵션
- z : gzip
- j : bzip2
rpm
- redhat package manager : 패키지를 이용한 프로그램 / 서비스 관리
- 패키지 : 프로그램을 나눠놓은 조각
- Linux는 kernel 부터 시작하여 모든 구성 요소가 패키지로 이루어져 있고 패키지는 다른 패키니와 의존 관계에 놓여 있는 경우가 많다.
- 패키지를 설치하거나 삭제하는 과정에서 의존성 관련 오류가 굉장히 많이 나온다.
- rpm은 redhat에서 처음 만들어서 도입했고, redhat 계열의 모든 Linux에서 rpm 명령어 사용
- debian 계열의 Linux에서는 rpm이 아닌 dpkg 명령 사용
- 형식
- 설치 : rpm -ivh 패키지명-버전아키젝쳐.rpm
- (i=install, v=visual, h=hash)
- hash 기호를 이용해서 막대기를 구현하여 설치가 진행되는 과정이 차오르는 것을 눈으로 확인할 수 있다.
- 확인 : rpm -qa | grep 패키지명
- 삭제 : rpm -e 패키지명[-버전.아키텍쳐]
- 설치 : rpm -ivh 패키지명-버전아키젝쳐.rpm
- 패키지 이름 구조
vim-filesystem-7.4.629-7.el7.x86_64
<------------>|<----------->|<---->
패키지명 버전 아키텍쳐
- 패키지명
- 패키지명은 한 단어이거나 - 기호를 이용하여 여러 단어의 조합으로 구성되어 있다
- 이 때 숫자만 단독으로 나오는 경우가 없기 땜누에 버전과 구별이 가능하다
- 패키지명이 한 단어라면 그 단어가 해당 패키지로 설치되는 프로그램 or 서비스의 이름을 나타낸다
- 여러 단어로 구성되어 있다면 첫 단어가 설치되는 프로그램 or 서비스의 이름이고 뒤에 이어지는 단어들이 세부 역할을 의미한다
- 버전
- 버전은 여러가지 세부 버전으로 구성
7 : major
4 : minor
629 : patch
7 : release 버전
e17 : OS(운영체제) 버전
* 운영체제 버전의 경우 어느 운영체제에서 동작하는지 알려주는 역할
e17 = centOS 7.X
e17_9 = centOS 7.9
centos = 모든 버전의 centOS
<생략> = 모든 운영체제
3. 아키텍쳐
- CPU의 bit와 관계되어서 특정 수준 이상의 CPU에서 사용 가능하다라는 의미
- CPU의 bit 수는 한 번에 처리 사능한 데이터의 bit 수이다
ex) 32bit : i386, i586, i686
64bit : x86_64
*아키텍쳐에 noarch가 들어가는 경우에는 32bit CPU와 64bit CPU가 공용으로 사용가능
의존성 오류
- 확인 방법
- A is needed by B : B에게 A가 필요하다
-
- 설치 할 때
- B를 설치하기 위해 A가 먼저 설치되어야 한다
- 삭제 할 때
- B에게 A가 필요하기 때문에 A를 지울 수 없다
- 설치 할 때
- 해결 방법
- 의존성 오류 메세지를 읽고 해당 내용 해결
- 설치 할 때에는 A를 먼저 설치
- 삭제 할 때에는 B를 지워도 되는지 확인하고 먼저 삭제
- 의존성 오류를 무시하는 보조 옵션 --nodeps 사용
- 의존성 오류 해결을 위한 패키지를 찾을 수 없거나(설치할 때) 그 패키지가 중요 패키지라서 삭제가 불가능하다면(삭제할 때) 의존성 오류 무시
- 의존성 오류 메세지를 읽고 해당 내용 해결
- 의존성 오류에서 패키지명이 아닌 다른 내용이 출력되면?
- 파일이 절대 경로로 출력되는 경우
- 패키지에 해당 파일이 포함되어 있는 경우(일반적으로 삭제할 때 출력)
- 파일 이름을 패키지 이름으로 대체해서 읽으면 된다
lib~~~.so.숫자(~~~) > ~~~부분이 패키지를 의미(설치/삭제 시 전부 출력) 해당 의존성 오류를 검색하여 패키지명 확인
-
pkgconfig(~~~) > ~~~부분이 패키지를 의미(설치/삭제 시 전부 출력) 해당 의존성 오류를 검색하여 패키지명 확인
- 파일이 절대 경로로 출력되는 경우
실습
/etc 에서 여러 파일들 복사해오기
inittab 파일을 gzip으로 압축한다. (용량 511 -> 316로 감소)
대상 여러 개을 넣어서도 가능하다.
gunzip 명령어로 압축 해제한다.
gzip -d 명령어로도 압축 해제할 수 있다.
test 디렉토리를 만들어서 파일들을 옮기고 압축을 시도했지만 불가능하다.
파일들을 묶어서 tar파일을 생성하고, 목록이 나오는 것은 v옵션 역할이다.
tar로 묶을 시 용량이 10240이 된다.
정해진 tar 공간이 있고 그 안에 파일을 집어 넣는 식으로 사용한다.
남은 빈 공간은 압축을 하고 나면 없어진다.
tar tvf 명령어로 묶인 내용들을 확인한다.
10240이었던 용량이 압축되어 줄었다.
tar xvf로 tar를 해체한다.
연습
/usr/bin 내부의 파일들을 gzip 압축 및 tar로 묶어서
/home 내부에 binlist.tar.gz라는 이름으로 백업해보기
*작업 순서 주의
tar cvf binlist.tar /usr/bin/*
gzip binlist.tar
mv binlist.tar.gz /home
cfz 옵션으로 tar로 묶고 압축하는 과정을 한 줄로 실행할 수 있다.
cfj는 tar로 묶은 후 bz2로 압축해준다.
grep 명령어는 출력 되는 내용 중에 특정 내용이 포함된 라인만 보여준다.
vim 이라는 단어가 들어간 패키지들을 확인한다.
의존성 오류 때문에 vim-minimal이 삭제되지 않는 모습이다.
sudo 파일을 먼저 지웠더니 잘 지워진다
나머지 항목들도 순서에 맞게 삭제한다.
vi 에디터가 삭제되었다.
728x90
반응형
LIST
'Linux공부' 카테고리의 다른 글
[L18] rpm과 세부적인 패키지 파일 설치 방법_Linux/centOS (0) | 2022.02.09 |
---|---|
[L16] 여러가지 특수 권한_Linux/centOS (0) | 2022.02.05 |
[L15] http와 허가권 및 소유권_Linux/centOS (0) | 2022.02.03 |
[L14] 권한과 권한 표현 방법_Linux/centOS (2) | 2022.02.01 |
[L13] 사용자 계정과 그룹 수정 및 삭제_Linux/centOS (2) | 2022.01.30 |
@kdj :: Childev'note
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!