Linux

리눅스 설치 및 관리. 일반운영

laughcryrepeat 2020. 8. 30. 22:05

패키지를 통한 소프트웨어 설치

 

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.