패키지를 통한 소프트웨어 설치
1) 패키지를 통한 소프트웨어 설치 개요
현재 미리 컴파일된 프로그램을 패키지 형태로 제작하고 배포하여 사용자가 손쉽게 설치할 수 있게 함.
리눅스 배포판마다 각자의 패키지 도구 사용함. 레드햇 계열 rpm, 데비안 계열 dpkg, openSUSE rpm .
패키지 도구는 저수준 패키지 도구와 고수준 패키지 도구로 나눌수 있는데
저수준 패키지 도구는 패키지의 설치, 업그레이드, 제거 등 개별동작 제공
고수준 패키지 도구는 저수준 패키지 도구를 이용해 패키지 의존성을 고려하여 설치함.
배포판 | 저수준 패키지 도구 | 고수준 패키지 도구 |
레드햇/CentOS 계열 | rpm | yum |
데비안 | dpkg | apt-get, apt, aptitude |
openSUSE 계열 | rpm | zipper/YaST |
2) 저수준 패키지 도구의 사용법
1. 패키지 설치하기
레드햇 계열 패키지 명령어는 rpm 이고 확장자도 rpm
데비안 계열 패키지 명령어는 dpkg 확장자는 deb
모두 -i 옵션 사용.
#rpm -i file.rpm
#dpkg -i file.deb
2. 패키지 업그레이드
#rpm -U file.rpm
#dpkg -i file.deb
3. 설치된 패키지 확인
이미 설치된 모든 패키지를 확인하기위해 -qa 옵션과 -l 옵션을 사용.
#rpm -qa
#dpkg -l
특정 패키지가 설치되었는지 확인하기 위해 -q 과 --status 옵션을 사용
# rpm -q package_name
# dpkg --status package_name
특정 패키지가 설치되었는지 확인하기 위해 옵션대신 grep 사용해 확인
# rpm -qa | grep sysdig
# dpkg -l | grep mysql-common
4. 특정 파일을 설치한 패키지 찾기
시스템에 설치된 파일이 어떤 패키지를 통해 설치되었는지 확인하기 위해 -qf , --search 옵션 사용.
# rpm -df file_name
# dpkg --search file_name
3) 고수준 패키지 도구의 사용법
1. 패키지 검색하기
레드햇 계열 - yum 명령어를 사용하여 설치된 패키지를 검색
search 옵션으로 검색.
whatprovides 옵션 특정파일이 포함된 패키지를 찾는 명령
데비안 계열 - apt-cache, apt, aptirude 명령어로 설치된 패키지 검색.
--search 사용하고 apt-cache는 패키지명 및 매키지 설명등의 키워드를 찾아주고,
apt와 aptitude는 패키지명만을 비교하여 찾음.
2. 패키지 설치
yum과 apt-get 모두 update 옵션을 사용해 레파지터리의 패키지 정보를 갱싱
install 옵션으로 패키지를 레파지터리에서 다운로드 받아 설치
# yum update && install package_name
# apt-get update && apt-get install package_name
3. 패키지 제거
# yum erase package_name
# apt-get remove package_name
패키지와 관련된 환경설정 파일까지 지우려면 purge 옵션을 사용.
4. 패키지 정보 출력
yum 명령어는 info 옵션 사용
apt-cache, apt, aptitude 명령어는 show 옵션 사용
레드햇 패키지 관리와 데비안 패키지 관리
1) 레드햇 패키지 관리 (RPM: Red Hat Package Manager)
1. RPM의 개요
소스코드 또는 패키지를 시스템에 설치하기 위한 오픈소스 패키지 관리 시스템.
패키지 파일 .rpm을 의미하기도하고 패키지 관리 프로그램 자체를 의미하기도 함.
2. RPM 사용법
옵션에 따라 패키지 설치, 제거, 업그레이드, 질의, 검증
rpm [options] package_name
3. 일반적 옵션
-v | 상세정보 출력 |
--quiet | 에러메시지만 |
--version | rpm의 버전 |
4. RPM 설치 및 업데이트
-i | 동일한 패키지가 설치되지 않은경우 패키지 새로 설치 |
-h | 설치하거나 업그레이트할 떄 경과를 #로 표시 |
-U | 설치된 패키지를 최신으로 업그레이드 설치된 패키지가 없으면 설치 |
-F | 이전버전이 설치되있는 경우만 업그레이드 |
--force | 패키지 설치되어있어도 강제로 설치 |
--nodeps | 의존성 체크 하지않음. |
--test | 설치전 잠재적 충돌 확인. |
5. RPM 제거
-e | 패키지 삭제 |
--nodeps | 삭제시 의존성 체크 안함 |
--test | 모의로 삭제. -vv 옵션과 함께 사용하여 디버깅 |
--allmatches | 패키지의 모든버전 제거 각 파일 상태는 normal, not installed, replaced로 표시 |
6. RPM 질의
-q | 질의를 위해 기본적으로 사용해야 하는 옵션 패키지 이름과 버전, 릴리즈등 정보 표시 |
-i | 자세한 정보 표시 |
-l | 패키지 목록을 출력 |
-f | 설치된 모든 패키지에 대해 질의 |
-a | 설치된 모든 패키지에 대해 질의 |
-c | 설정파일이나 스크립트 파일 출력 |
-s | 패키지 각 파일상태를 표시 상태는 normal, not installed, replaced 표시 |
7. RPM 검증
-V | 검증시 사용하는 기본 옵션 |
-a | 시스템에 설치되어 있는 모든 패키지에 대해 검증 |
8. 소스 RPM 빌드하기
소스파일 .src .rpm 을 통해 패키지 .rpm 를 생성하는 명령어
$sudo rpmbuild -rebuild /tmp/mypackage-1.0.0-1.src.rpm
2) YUM (Yellowdog Updater, Modified)
1. 설명
RPM 설치방식을 개선한 패키지 관리자.
패키지가 가지고있는 의존성을 체크하여 쉽게 패키지 설치.
2. 로컬 레파지터리 만들기
- createrepo 패키지를 설치
$sudo yum install createrepo - 특정 디렉터리를 선정하고 원하는 패키지를 모두 복사
$copy *.rpm /mnt/local_repo - createrepo 명령어를 통해 레파지터리 생성
$sudo createrepo /mnt/local_repo
3. yum 명령어 형식
yum [options][command][package_name]
4. 옵션
-y | 모든 선택에 yes로 답변 |
-v | 자세한 정보 출력 |
5. yum 명령어
list | 사용가능한 패키지 목록과 정보 출력 |
info | 지정한 패키지 정보 출력 |
install | 패키지나 그룹의 최신버전 설치 동일한 패키지가 존재하지 않으면 일무 매칭하는 패키지라도 설치 |
update | 특정 패키지를 최신 버전으로 업그레이드 패키지명 없이 사용하면 모든 패키지 업데이트 |
check-update | 시스템에 설치된 패키지 중 업데이트가 필요한 패키지가 있는지 확인 |
remove | 패키지 삭제 패키지 의존성이 있는 패키지도 함께 제거 |
provides | 특정 파일이나 기능을 제공하는 패키지 찾음. |
search | RPM 패키지의 모든 필드에서 지정한 키워드와 매칭되는 패키지 찾음 |
clean | yum 캐시 디렉터리에 축적된 데이터 삭제 |
repolist | 설정된 모든 리파지토리 목록 살펴봄 |
grouplist | 패키지 그웁에 대한 정보를 출력 |
groupinfo | 지정한 패키지 그룹명에 대한 정보를 출력 |
groupupdate | 지정한 그룹 패키지를 업데이트 |
groupinstall | 지정한 그룹 패키지 설치 |
groupremove | 지정한 그룹 패키지 제거 |
whatprovides | 파일이 포함된 패키지 찾거나 관련기능 제공하는 패키지 찾을때 사용. |
6. 환경설정
yum 환경설정은 /etc/yum.conf 파일에 저장
7. yum-utils
yum 레파지터리를 관리하고 패키지 관리를 편하게 할 수있게 해주는 유틸리티
yum install yum-utils 로 설치
*
8. yum 예제
httpd 패키지 응답 기다리지 않고 설치
$ sudo yum install httpd -y
*
3) 데비안 패키지 관리
1. 개요
저수준 패키지 관리도구 dpkg
상위 수준 패키지 관리도구 apt-get, apt 있음.
새로운 도구 altitude 도 존재.
2. dpkg
dpkg 명령어는 패키지 관리 명령어로 하나로 의존성 관계를 고려해 .deb 확장자의 패키지 설치, 제거, 질의 역할 수행
파일 형식은 package_version_architecture.package-type
dpkg-name 명령어로 패키지 이름을 형식에 맞게 변경
dpkg [option] action
-i, --install | 패키지 설치 -R 사용해 패키지명 대신 디렉터리 지정 |
-R, --recusive | -i옵션과 함께 지정한 디렉터리 하위에 있는 .deb 패키지 설치 |
-l, --list | 설치되 있는 패키지 출력 |
-I, --info | 패키지에 대한 정보 출력 |
-c, --contents | 설치하는 파일정보 출력 |
-L, --listfiles | 시스템에 지정한 패키지가 설치한 파일을 출력 |
-r, --remove | 패키지 제거 |
-P, --purge | 환경설정 파일 포함해 패키지 삭제 |
-S, --search | 지정한 패턴과 일치하는 설치된 패키지 이름 출력 |
-C, --audit | 일부만 설치된 패키지 찾음. |
--unpack | 환경설정 없이 압축만 해제 |
--configure | 압축 해제된 패키지를 환경설정할때 사용 |
-s, --status | 지정한 패키지 상태 출력 |
*
3. apt-get
- 내부적으로 dpkg의 명령어를 사용해 패키지 설치, 제거, 패키지 관련 명령을 수행하는 관리도구
- apt-get과 apt-cache를 통합한 apt 명령어를 좀 더 선호하는 추세임.
apt-get [option][command][package]
옵션
-y | 질의에 yes 응답 |
--purge | remove 시 환경설정까지 제거. |
명령어
update | 최신 패키지 설치정보 목록 가져오기 |
upgrade | 최신버전 다운받아 업그레이드 |
install | 패키지 설치 |
remove | 패키지 삭제 |
clean | 패키지 모두 삭제 |
소스 코드 컴파일을 통항 소프트웨어 설치
1) 소스코드 컴파일을 통한 소프트웨어 설치 개요
1. 설명
소스코드는 보통 tar로 소스코드를 아카이브 한 후 gzip이나 bzip2로 압축
2. 소스코드 컴파일 및 설치 절차
- 해당 디렉터리에서 3가지 명령을 입력해 환경설정 및 소스코드 컴파일, 설치까지 완료
$ ./configure
$ make
$ sudo make install
2) 빌드 도구
1. CMake(Cross Platform Make)
크로스 플랫폼에서 소스코드를 빌드할 수 있도록 해당 시스템에 적합한 Makefile의 생성만을 수행하는 기존 make의 발전된 빌드도구.
cmake는 윈도우 계열에서도 컴파일해 Makefile 생성가능.
3) 컴파일러
gcc(GNU Compiler Collection)
다양한 프로그래밍 언어를 지원하는 컴파일러
리눅스 커널 뿐 아니라 GNU 프로젝트, 리눅스 등 대부분의 프로젝트 표준 컴파일러로 사용됨.
$gcc [options] 파일명
4) 아카이브하기
tar
- 백업하거나 다른사람에게 배포할 필요가 있을때 여러 파일을 하나의 아카이브 파일로 만드는 유틸리티
- 생성된 아카이브 파일을 타르볼 tarball이라 부름
- 타르볼은 데이터 뿐아니라 소유권 허가권 디렉터리 구조 등 파일시스템 파라미터도 함깨 묶음.
- 리눅스의 tar는 compress, gzip, bzip2, xz 등 압축하는것도 지원.
tar [options] [filename]
*
5) 압축하기
1. compress, uncompress
압축 알고리즘으로 렘펠지브를 사용하고 파일 권한을 유지하며 압축하는 유틸리티
설치
$sudo yum install ncompress
compress [options] filename
uncompress [options] filename
2. gzip, gunzip
렘펠지브 알고리즘을 사용해 파일 압축.
소유권, 접근권한, 파일수정시간 들 유지하며 파일이름 뒤에 .gz로 교체.
'-' 를 사용해 표준 입력을 받거나 표준 출력으로 결과를 받거나 보낼수 있어 다른 명령어와 파이프 조합을 통해 사용가능
일반 모든 파일을 압축시토하나 링크파일 symplic links 는 제외.
gzip [options] filename
gunzip [options] filename
*
3. bzip2, bunzip2
버로우 휠러 알고리즘 과 허프만 코딩을 사용해 압축.
압축효율은 좋지만 압축 속도가 느림. 원본파일의 파일명 끝에 bz2 가 붙음.
bzip2 [options] filename
bunzip2 [options] filename
*
4. xz, unxz
압축 알고리즘은 LXMA를 사용해 높은 압축률 보임.
확장자는 .xz
파일명을 지정하지 않고 '-' 사용하면 수행결과를 표준출력으로 보내는 것도 기존의 명령어와 동일
xz [options] file_name
unxz [options] filename
5. zip, unzip
다양한 OS에서 압축기능 제공
zip [options] archive inpath inpath ...
unzip [options] archive
-r 디렉터리를 압축하라 경우 하위의 파일과 디렉터리 모두 압축
data 디렉터리 하위 파일 및 모든 디렉터리 압축해 backup.zip 파일생성
$zip -r backup data.
'Linux' 카테고리의 다른 글
주변장치 관리 (0) | 2020.09.06 |
---|---|
장치의 설치 및 관리 (0) | 2020.09.03 |
리눅스 프로세스 관리 (0) | 2020.08.28 |
파일시스템 관리 (0) | 2020.08.23 |
리눅스 사용자 관리 (0) | 2020.08.22 |