[RHEL6] 패키지 관리 명령어 2탄(dpkg, pkgadd, pkgchk, pkginfo, pkgrm)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 패키지 관리 명령어 2탄(dpkg, pkgadd, pkgchk, pkginfo, pkgrm)

by 찬찬이 아빠 2020. 5. 6.
반응형
  5. dpkg(데비안 패키지 매니저)

 1) 경로 : /usr/bin/dpkg

 2) 요약 : 데비안 패키지 매니저

 3) 사용 방법 : dpkg [<옵션> ... ] <명령>

 4) 옵션

 -i|--instal <.deb 파일이름>... | -R | --recursive <디렉터리> ... : 패키지를 설치

 --unpack <.deb 파일이름>... | -R |--recursive <디렉터리> ... : 패키지의 패킹을 해제

 --A |--record-avail <.deb 파일이름> ... | -R|--recursive <디렉터리> ... : 패키지 파일의 정보를 dpkg나 dselect에서 사용하는 available로 업데이트

 --configure <패키지> ... | -a|--pending : 패킹이 해체된 패키지를 다시 설정

 --triggers-only <패키지> ... | -a|--pending₩n : 트리거만 프로세싱 함

 -r|--remove <패키지> .. | -a|--pending : 설치한 패키지를 제거

 -P|--purge <패키지> ... | -a|--pending : 의존성을 포함하여 모든 패키지를 제거

 --get-selections [<패턴> ... ] : 선택 목록을 표준 출력으로 보냄

 --set-selections : 선택 목록을 표준 입력으로 받음

 --clear-selectioins : 필수가 아닌 패키지는 선택을 모두 지움

 --update-avail <Packages-파일> : 사용할 수 있는 패키지 정보를 대체

 --merge-avail <Packages-파일> : 파일에 있는 정보와 합침

 --clear-avail : 기존 정보를 삭제

 --forget-old-unavail : 사용할 수 없고, 설치가 안된 패키지 목록을 삭제

 -s|--status <패키지> ... : 사용할 수 잇는 패키지 세부사항을 출력

 -p|--print-avail <패키지> ... : 사용할 수 있는 버전 정보를 출력

 -L|--listfiles <패키지> ... : 패키지가 소유하는 파일의 목록을 출력

 -l(엘)|--list  [<패턴> ...] : 패키지들을 간결하게 출력

 -S|--search <패턴> ... : 파일들을 소유하고 있는 꾸러미들을 찾음

 -C|--audit : 망가진 패키지를 찾음

 --print-architecure : dpkg의 구조를 표시

 --compare-versions <a> <연산자> <b> : 버전 정보를 비교

 --force-help : 강제 명령에 관한 사용법 출력

 --Dh|--debug=help : 디버깅에 관한 사용법 출력

 -h|--help : 사용법 출력

 --version : 버전 정보 출력

 --license|--licence : 저작권 정보를 출력

 

 5) 명령

 --admindir=<디렉터리> : /var/lib/dpkg 대신에 지정한 <디렉터리>를 사용

 --root=<디렉터리> : 지정한 다른 루트 디렉터리에 설치

 --instdir=<디렉터리> : 관리 디렉터리를 변경하지 않고, 설치 디렉터리를 변경

 -O(영어 오)|--selected-only : 설치하거나 업그레이드하기로 한 패키지는 생략

 -E|--skip-same-version : 같은 버전이 설치된 패키지는 생략

 -G|--refuse-downgrade : 설치된 것보다 이전 버전인 패키지는 생략

 -B|--auto-deconfigure : 다른 패키지를 망가뜨릴 수 있더라도 설치

 --[no-]triggers : 트리거를 건너 뛰거나 강제로 처리

 --no-debsig : 패키지 서명을 확인하지 않음

 --no-act|--dry-run|--simulate : 미리 할 행동을 보여주기만 하고 실제로 실행하지 않음

 -D|--debug=<8진수> : 디버깅을 활성화(-Dhelp이나 --debug=help 참고)

 -status-fd <n> : 파일 디스크립터로 상태 변경 내역을 보냄

 --log=<파일이름> : 상태 변경이나 행동을 <파일이름>에 로그로 남김

 --ignore-depends=<패키지>... : <패키지>와 관련된 의존관계를 무시

 --force-... : 문제점을 무시(--force-help 참고)

 --no-force-...|--refuse-... : 문제가 발생했을 경우 멈춤

 --abort-after <n> : 지정한 수치보다 많은 오류가 발생하면 멈춤

 

 6) 아카이브에서 사용하는 명령

 -b|--build <디렉터리> [<deb>] : 아카이브를 빌드

 -c|--contents <deb> : 내용 목록을 출력

 -I(대문자아이)|--info <deb> [<파일> ...] : 정보를 표준 출력에 표시

 -W|--show <deb> : 패키지 정보를 출력

 -f|--field <deb> [<필드> ...] : 지정한 필드를 출력

 -e|--control <deb> [<디렉터리>] : 컨트롤 정보를 출력

 -x|--extract <deb> <디렉터리> : 지정한 파일을 출력

 -X|--vextract <deb> <디렉터리> : 파일 목록을 출력

 --fsys-tarfile <deb> : 파일 시스템 tar 파일을 출력

 -h|--help : 사용법 출력

 --versioin : 버전 정보 출력

 --license|--licence : 저작권 정보 출력

 

 7) 추가 설명

dpkg는 시스템에 설치된 데비안 패키지를 설치, 빌드, 제거 및 관리하는 툴입니다(dpkg보다 사용자 친화적인 프론트엔트는 aptitude가 있습니다). dpkg 명령어는 명령행 파라미터로 정확하게 하나의 명령을 지정하여 실행하거나, 하나 이상의 옵션과 함께 실행합니다.

 

내려받은 패키지를 설치할 경우 -i 옵션을, 제거할 경우 -r 옵션을 사용합니다. -i 옵션에 의존성 등의 문제로 에러가 발생하더라도 이들을 무시하고 강제적으로 설치하고 싶다면 --force-all 옵션을 사용합니다.

# dpkg -i --force-all linux-image-2.6.32-22-generic-pae

 

시스템에 설치된 전체 패키지 목록을 보려면 -l(엘) 옵션을 사용합니다. 현재 시스템에 1,461개의 패키지가 설치되어 있음을 확인 할 수 있습니다.

# dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ 이름            버전            설명
+++==========================================
ii acpi-support   0.136          scripts for handling many ACPI events Interface e
ii adduser        3.112ubuntu1   add and remove users and groups
ii adium-theme-ub 0.1-0ubuntu1   Adium message style for Ubuntu
ii aisleriot      1:2.30-0-0ubun Solitaire card games
--- 이하 생략 ---

# dpkg -l | wc
 1461   12562   185428

 

시스템에 설치된 일부 파일을 추적하여 이와 관련한 패키지명을 알고자 하는 경우에는 -S 옵션을 사용합니다.

# ls -al /boot/vmlinuz-2.6.32-22-generic-pae
-rw-r--r--	1	root	root	4158880		2010-04-29	03:39	/boot/vmlinuz-2.6.32-22-generic-pae

# dpkg -S /boot/vmlinuz-2.6.32-22-generic-pae
linux-image-2.6.32-22-generic-pae: /boot/vmlinuz-2.6.32-22.generic-pae

 

지정한 패키지가 포함하고 있는 전체 파일 목록을 살펴볼 경우에는 -L 옵션을 사용합니다.

# dpkg -L linux-image-2.6.32-22-generic-pae | more
/.
/boot
/boot/vmlinuz-2.6.32-22-generic-pae
/boot/config-2.6.32-22-generic-pae
/boot/abi-2.6.32-22-generic-pae
/boot/System.map-2.6.32-22-generic-pae
/boot/vmcoreinfo-2.5.32-22-genric-pae
/lib

/lib/modules/2.6.32-22-generic-pae
/lib/modules/2.6.32-22-generic-pae/kernel
/lib/modules/2.6.32-22-generic-pae/kernel/arch
/lib/modules/2.6.32-22-generic-pae/kernel/arch/x86
/lib/modules/2.6.32-22-generic-pae/kernel/arch/x86/crypto

 

-l(엘) 옵션에 패키지명을 지정하면 패키지의 간략한 설명을 확인할 수 있습니다.

# dpkg -l linux-image-2.6.32-22-generic-pae
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ 이름                                  버전               설명
+++======================================================================
ii  linux-image-2.6.32-22-generic-pae   2.6.32-22.33   Linux kernel image for version 2.6.32 on x86

 

-s 옵션은 -l(엘) 옵션과 달리 패키지가 포함하고 있는 자세한 정보를 모두 출력합니다.

# dpkg -s linux-image-2.6.32-22-generic-pae | more
Package: linux-image-2.6.32-22-generic-pae
Status : install ok installed
Priority : optional
Section : admin
Installed-Size : 94856
Maintainer: Ununtu Kernel Team <kernel-team@lists.ubuntu.com>
Architecture : i386
Source: linux
Version: 2.6.32-22.33
Provides: fuse-module, ivtv-modules, kvm-api-4, linux-image, linux-image-2.6, ndiswrapper-modules-1.9, redhat-cluster-modules
Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.3-pre11-4ubuntu3), wireless-crda
Pre-Depends: dpkg (> 1.10.24)

 

-c 옵션은 다운로드한 패키지의 파일 목록을 미리 살펴 볼 수 있습니다.

# dpkg -c linux-image-2.6.32-22-generic-pae_2.6.32-22.33_i386.deb | more
tar: 레코드 크기 = 8 블럭
drwxr-xr-x root/root		0	2010-04-29 03:42	./
drwxr-xr-x root/root		0	2010-04-29 03:39	./boot/
-rw-r--r-- root/root	4158880	2010-04-29 03:39	./boot/vmlinuz-2.6.32-22-generic-pae
-rw-r--r-- root/root	116302	2010-04-29 03:39	./boot/config-2.6.32-22-generic-pae
-rw-r--r-- root/root	643984	2010-04-29 03:39	./boot/abi-2.6.32-22-generic-pae
-rw-r--r-- root/root	1728514	2010-04-29 03:39	./boot/System.map-2.6.32-22-generic-pae
-rw-r--r-- root/root	1200	2010-04-29 03:39	./boot/vmcoreinfo-2.6.32-22-generic-pae
drwr-xr-x  root/root		0	2010-04-29 03:39	./lib/
drwr-xr-x  root/root		0	2010-04-29 03:39	./lib/modules/

 

-c 옵션으로 확인한 패키지를 -i 옵션으로 설치하지 않고, -x 옵션으로 지정한 디렉터리에 풀수 있습니다. 만일 디렉터리를 지정하지 않으면 현재 디렉터리에 풉니다.

# dpkg -x linux-image-2.6.32-22-generic-pae_2.6.32-22.33_i386.deb ~/test/
# ls -alh ~/test
합계 20K
drwxr-xr-x	5	user user 4.0K	2010-04-29 03:42	.
drwxr-xr-x	50	user user 4.0K	2010-04-29 03:42	..
drwxr-xr-x	2	user user 4.0K	2010-04-29 03:42	boot
drwxr-xr-x	4	user user 4.0K	2010-04-29 03:42	lib
rwxr-xr-x	3	user user 4.0K	2010-04-29 03:42	usr

 

 

 

  6. pkgadd(패키지 설치)

 1) 경로 : /usr/sbin/pkgadd

 2) 요약 : 유닉스 기반에서 소프트웨어 패키지를 시스템에 설치

 3) 사용 방법

 pkgadd [-nv] [-a admin] [-G] [-x proxy] [[-M] -R root_path]

               [-r response] [-k keystore] [-P passwd] [-V fs-file]

               [-d device | -d datastream pkginst | all]

               [pkginst | -Y category [, category] ...]

 pkgadd -s [-d device | -d datastream pkginst | all] [pkginst | -Y category [,category] ...]

 

 4) 옵션

 -a admin : 인스톨 관리파일, 관리자, 기본 관리 파일의 위치를 지정. 위치를 지정하지 않으면 현재 디렉터리에서 파일을 찾음. 만이 ㄹ현재 디렉터리에 파일이 없다면 /var/sadm/install/admin 디렉터리에서 파일을 찾음

 -G : 현재 위치에서만 패키지를 추가

 -k keystore : 디지털 서명을 위한 키 스토어(keystore) 위치를 지정

 -M : 클라이언트 마운트 위치로 $root_path/etc/vfstab 파일을 이용하지 않음

 -n : 비대화형 모드(non-interactive mode)로 패키지를 설치

 -P passwd : 지정한 암호화 키 스토어를 패스워드로 사용

 -R root_path : 디렉터리(root_path)를 전체 패스로 지정

 -s spool : 패키지를 설치하지 않고, 지정한 ㄷ디렉터리(spool)에 패키지를 저장

 -V fs_file : 클라이언트 파일 시스템(fs_file)을 지정

 -x proxy : 패키지를 다운로듷라 HTTP(s) 프록시(proxy)를 지정

 

 5) 추가 설명

pkgadd 명령어는 유닉스 기반의 명령어로 소프트웨어 패키지의 내용을 기준으로 CD-ROM과 같은 배포 매체나 지정한 디렉터리에서 패키지를 설치합니다. 만인 -d device 옵션을 지정하지 않으면 /var/spool/pkg 디렉터리 위치에서 패키지를 찾습니다. -s 옵션은 패키지를 설치하는 대신 스풀 디렉터리에 쓰게 됩니다.

 

pkgadd는 패키지를 설치할 때 쓸 임시 공간을 요구합니다. 임시 디렉터리는 $TMPDIR 환경 변수에서 결정합니다. 만일 $TMPDIR 변수가 정의되어 있지 않드면 stdio.h에서 지정한 P_tmpdir 값인 /var/tmp 디렉터리로 결정합니다.

 

-d 옵션으로 CD-ROM에 있는 패키지를 설치합니다.'

# pkgadd -d /cdom/CD-ROM0/s0/Solaris_10/Product

 

/var/tmp/datastream 파일에서 지정한 패키지 전체를 설치할 수 있습니다.

# pkgadd -d /var/tmp/datastream all

 

 

  7. pkgchk(패키지 무결성 체크)

 1) 경로 : /usr/sbin/pkgchk

 2) 요약 : 유닉스 기반의 패키지 인스톨 무결성 검사

 3) 사용 방법

 pkgchk [-l(엘)| -acfnqvx] --i file | -] [-p path... | -P partial-path...]

              [-R root_path] [[-m pkgmap [-e envfile]] | pkginst... | -Y category, category...]

 pkgchk -d device [-l(엘 | -fv] [-i file | -] [-M] [-p path]... [-V fs_file]

              [pkginst... | -Y category[, category... ]]

 

 4) 옵션

 -a : 파일 속성만을 감사(audit)하고, 파일의 내용은 검사하지 않음. 기본값은 두 가지 모두 검사

 -c : 파일 내용만 감사하고, 파일 속성은 검사하지 않음

 -d device : 스풀 패키지의 디바이스(device)를 지정. 디바이스는 디렉터리 위치, 테이프, 플로피 디스크, 제거 가능한 디스크(/var/tmp 또는 /dev/diskette) 중 하나를 지정할 수 있음

 -e envfie : 패키지 정보 파일 이름(envfile)을 지정

 -f : 가능하다면 파일 속성을 수정. -x 옵션과 같이 사용하여 숨김 파일을 제거

 -i file | - : 파일(file)이나 표준입력(-)에서 위치를 읽고, 목록을 설치할 소프트웨어 데이터베이스인 패키지 맵 파일과 비교

 -l(엘) : 선택된 파일 정보를 출력. 이 옵션은 -a, -c, -f, -g, -v 옵션과는 호관되지 않음

 -m pkgmap : 지정한 패키지 맵 파일(pkgmap)에서 패키지를 체크

 -n : 파일의 내용을 체크하지 않음

 -p path : 지정한 위치(path)에서만 체크

 -q : 에러에 관한 메시지를 출력하지 않음

 -R root_path : 전체 디렉터리(root_path)를 지정

 -v : 상세 정보 출력

 -V fs_file : 클라이언트 파일 시스템(fs_file)을 지정

 

 5) 명령

 pkginst : 설치하거나 체크할 패키지(pkginst)를 지정. "pkginpkginit.*" 형태는 pkginst로 시작하는 모든 패키지를 뜻함. 기본값은 패키지의 정보를 모두 출력

 

 6) 추가 설명

pkgchk 명령오는 유닉스 기반의 명령으로 인스톨된 파일의 무결성을 체크하고 차이점을 발견하면 상세 정보를 출력합니다. -l(엘) 옵션은 패키지 파일의 정보를 출력합니다.

 

아래 명령은 시스템에 설치된 오브젝트의 내용 또는 속성을 출력합니다.

pkgchk [-l(엘)| -acfnqvx] --i file | -] [-p path... | -P partial-path...]

              [-R root_path] [[-m pkgmap [-e envfile]] | pkginst... | -Y category, category...]

 

아래 명령은 디바이스의 스풀 패키지나 설치되지 않은 패키지의 목록을 체크할 때 사용합니다.

pkgchk -d device [-l(엘 | -fv] [-i file | -] [-M] [-p path]... [-V fs_file]

              [pkginst... | -Y category[, category... ]]

 

아래 명령어는 /usr/bin/ls 명령과 관련한 패키지를 출력합니다. 이는 레드햇 리눅스의 rpm -qf 명령과 같습니다.

# pkgchk -l - /usr/bin/ls

 

 

 

  8. pkginfo(패키지 정보)

 1) 경로 : /usr/sbin/pkginfo

 2) 요약 : 유닉스 기반의 지정된 패키지의 정보를 출력

 3) 사용 방법

 pkginfo [-q | -x | -l(엘)] [-p | -i] [-r] [-a arch] [- version] [-c category]... [pkginst]...

 pkginfo [-d device] [-R root_path] [-q | -x | -l(엘)] [-a arch] -v version] [-c category]... [pkginst]...

 

 4) 옵션

 -a arch : 지정한 아키텍처(arch)의 정보를 출력

 -c category : 카테고리(category)와 일치하는 패키지를 출력

 -d device : 디바이스(device)를 지정. 디바이스는 디렉터리의 절대 경로, 테이프, 플로피 디스크, 제거할 수 있는 디스크의 id를 지정할 수 있음

 -i : 설치한 패키지의 정보만 출력

 -l(엘) : 설치한 패키지를 자세한 형태의 정보로 출력

 -p : 설치한 패키지의 정보의 일부분만 출력

 -q : 메시지를 출력하지 않음

 -r : 위치를 재지정한 패키지의 정보를 출력

 -R root_path : 디렉터리(root_path)의 전체 경로를 지정

 -v version : 지정한 버전(version)의 정보를 출력

 -x : 패키지 정보의 목록을 출력. 목록은 패키지 축약, 패키지 이름, 패키지 아키텍처와 패키지 버전을 포함

 

 5) 추가 설명

아래의 pkginfo 명령어는 시스템에 설치한 소프트웨어 패키지에 관한 정보를 출력합니다.

pkginfo [-q | -x | -l(엘)] [-p | -i] [-r] [-a arch] [- version] [-c category]... [pkginst]...

 

아래의 pkginfo 명령어는 디바이스나 디렉터리에 존재하는 정보를 출력합니다.

pkginfo [-d device] [-R root_path] [-q | -x | -l(엘)] [-a arch] -v version] [-c category]... [pkginst]...

 

만일 옵션을 지정하지 않으면 주요 카테고리, 패키지 인스턴스, 설치한 모든 패키지의 이름을 출력합니다.

 

 

 

  9. pkgrm(패키지 제거)

 1) 경로 : /usr/sbin/pkgrm

 2) 요약 : 유닉싀 기반의 패키지를 제거

 3) 사용 방법

 pkgrm [-nv] [-a admin] [[-A | -M] -R root_path] [-V fs_file]

             [pkginst... | -Y category[,category...]]

 pkgrm -s spool [pkginst... | -Y category[,category...]]

 

 4) 옵션

 -a admin : 설치를 위한 관리 파일(admin)을 지정

 -A : 클라이언트 파일 시스템의 패키지 파일을 제거. 만일 하나의 파일이 다른 패키지와 공유하면 파일을 제거하지 않음

 -n : 비대화형 모드

 -R root_path : 디렉터리의 전체 경로(root_path)를 지정

 -s spool : 지정한 디렉터리(spool)에서 패키지를 제거. 기본 스풀 디렉터리는 /var/sadm/pkg 임

 -v : 상세 정보 출력

 -V fs_file : 클라이언트 파일 시스템 맵(fs_file)을 지정

 -Y category : 카테고리(category)를 지준으로 패키지를 제거

 

 5) 명령

 pkginst : 제거할 패키지를 지정. pkginit.* 형태는 pkginst로 시작하는 모든 패키지를 제거

 

 6) 추가 설명

pkgrm 명령어는 이전에 설치된 패키지를 제거하고, 의존성이 잇는 패키지 목록을 출력합니다. 만일 의존성이 있으면 파일(admin)에서 정의한 내용을 따릅니다. 기본으로는 비 상호 대화형 모드(interactive mode)로 실행합니다.

 

아래는 client1에서 SUNWjunk로 시작하는 모든 패키지를 제거합니다.

# pkgrm -R /export/root/client1 SUNWjunk*
반응형

댓글