PKG_DELETE(1)

명칭
pkg_delete - 인스톨 되고 있는 소프트웨어 배포 package 를 삭제하는 프로그램

서식
pkg_delete [-dDfGinrvx] [-p prefix] pkg-name ... pkg_delete -a [flags]

해설
pkg_delete 명령은, pkg_add(1) 명령에 의해 이미 인스톨 되고 있는 package (역주: FreeBSD 의 package system 에 있어서의 패키지를 가리키는 경우에 이렇게 표기합니다) (을)를 삭제하기 위해서 이용됩니다.

경고
pkg_delete 명령은 package 파일에 의해 제공되는 스크립트나 프로그램을 실행하는 일이 있으므로, 당신의 시스템은, 위험한 배포 파일을 만드는 극악인으로부터의 “트로이의 목마” (이)나 다른 교묘한 공격등을 받는다 가능성이 있습니다.

package 파일을 제공하는 인물의 능력과 신원을 확인하면(자) 좋을 것입니다. 보다 진행된 안전을 위해서(때문에)는, package 기록 디렉토리 (/var/db/pkg/<pkg-name>/) 에 있는 모든 package 제어 파일을 확인합니다. +INSTALL, +POST-INSTALL, +DEINSTALL, +POST-DEINSTALL, +REQUIRE, +MTREE_DIRS 의 각 파일에는 특별히 주위를 기울여, +CONTENTS 파일의 @cwd, @mode (setuid 를 체크), @dirrm, @exec, @unexec 지시문을 조사해 주세요. 인스톨 되고 있는 package 제어 파일을 조사하는데는 pkg_info(1) 명령도 사용할 수 있습니다.

옵션
이하의 명령행 옵션이 제공되고 있습니다:

pkg-name ...
    지정된 package 가 언인스톨됩니다.

-a  무조건, 현재 인스톨제의 package 를 모두 삭제합니다.

-i  각 package 의 삭제전에, 확인을 요구합니다. 이것은, 표준 입력 디바이스가 단말인지 어떤지에 관계 없습니다.

-v  요설인 출력으로 전환합니다.

-D  package 에 언인스톨용 스크립트가 존재해도, 그것을 실행하지 않습니다.

-n  실제로는 언인스톨은 실시하지 않고, 언인스톨했을 경우에 실행될 것이다 스텝을 표시합니다.

-p prefix
    인스톨 되고 있는 package 가 명시적으로 디렉토리를 설정하고 있지 않다 경우에, 삭제하는 파일의 전에 prefix (을)를 디렉토리로서 덧붙입니다. 대부분의 package 에서는, 이 디렉토리는 pkg_add(1) 에 의해 인스톨 된 장소에 자동적으로 설정됩니다.

-d  파일 삭제에 의해 생긴 하늘의 디렉토리를 삭제합니다. 디폴트에서는, package 의 내용 일람에 명시적으로 나열 되었다 파일/디렉토리 (통상의 파일/디렉토리인가 @dirrm 디렉토리를 수반한 것)만이 언인스톨시에 삭제됩니다. 이 옵션에 의해 pkg_delete (은)는 package 를 삭제하는 것으로써 발생하는 하늘 디렉토리도 삭제하도록(듯이) 됩니다.

-f  의존관계(dependencies)이 기록되어 있거나, 언인스톨 스크립트나 require 스크립트가 실패했을 경우에서도, 강제적으로 package 를 삭제합니다.

-G  삭제 대상의 package 의 선택시에, pkg-name 안의 시르그로브파탄의 전개를 시도하지 않습니다 (디폴트에서는, pkg_delete 하 pkg-name 안의 시르그로브파탄을 자동적으로 전개합니다).

-x  pkg-name (을)를 정규 표현으로서 취급해, 이름이 이 정규 표현에 매치 하는 전 package 를 삭제합니다. 복수의 정규 표현을 지정 가능해 내일. 이 경우, 리스트중의 적어도 1 개의 정규 표현에 매치 하는 전 package 가 삭제됩니다.

-r  재귀적인 삭제. 지정한 package 에 가세해 이것에 의존하는 package 도 또한 삭제합니다.

기술 상세
pkg_delete 유틸리티는 이름대로에 일합니다. pkg_delete 하 /var/db/pkg/<pkg-name> 에 기록된 인스톨 끝난 package 를 체크해, package 의 내용을 삭제해, 마지막에 package 의 기록도 삭제합니다. 환경 변수 PKG_DBDIR 하지만 설정되어 있는 경우에는, 전기 패스 /var/db/pkg/ 에 이것이 우선합니다.

어느 package 가 다른 인스톨 끝난 package 로부터 필요하게 되고 있는 경우, pkg_delete (은)는 그러한 의존하고 있는 package 의 일람을 표시해, package 의 삭제는 실시하지 않습니다 (다만 -f 옵션이 지정되었을 경우를 제외하다).

package 가 require 파일( pkg_create(1) (을)를 참조)를 포함하고 있는 경우, 우선 그 파일을 이하의 인수를 붙여 실행해, 언인스톨 작업을 계속해야할 것인가 제발을 확인합니다:
require <pkg-name> DEINSTALL

(여기서 pkg-name (은)는 문제로 하고 있는 package 의 이름이며, DEINSTALL (은)는 이것이 언인스톨인 것을 나타내는 키워드입니다) 종료 스테이터스가 0 이외의 경우에는, -f 옵션이 지정되어 있지 않은 한 언인스톨을 중단합니다.

package 에 deinstall 스크립트가 포함되어 있는 경우, 그 스크립트는 파일이 삭제되기 전에 실행됩니다. pkg_delete (은)는 오리지날의 package 에 포함되어 있던 파일을 삭제할 수 밖에 칸치 하지 않기 때문에, package 의 인스톨에 관련되는 잡다한 사항을 예쁘게 정리하는 것은 이 deinstall 스크립트의 책임입니다. deinstall 스크립트는 이하의 인수를 붙여 실행됩니다:
script <pkg-name> DEINSTALL

여기서, pkg-name (은)는 대상의 package 명이며, DEINSTALL (은)는 이것이 언인스톨전의 국면인 것을 나타내는 키워드입니다.

주: ( -k 및 -K 의 플래그를 pkg_create(1) 에 사용하는 것으로써) package 작성시에 deinstall 와 post-deinstall 의 스크립트가 따로 따로 주어지는 경우에는, DEINSTALL 키워드는 등장하지 않습니다.

post-deinstall 스크립트가 package 에 대해서 존재하는 경우, 전파일이 삭제되었다 후 그리고 실행됩니다. package 의 인스톨에 즈음하는 한층 더 세들로 한 것을 정리해 (원원) package 인스톨전과 같은 시스템 상태에 되돌리는 것은, 이 스크립트의 책임입니다.

post-deinstall (은)는 다음과 같이 불려 갑니다:
script <pkg-name> POST-DEINSTALL

여기서 pkg-name (은)는 대상의 package 명이며, POST-DEINSTALL (은)는 이것이 언인스톨 후의 국면인 것을 나타내는 키워드입니다.

주: ( -k 및 -K 의 플래그를 pkg_create(1) 에 사용하는 것으로써) package 작성시에 deinstall 와 post-deinstall 의 스크립트가 따로 따로 주어지는 경우에는, POST-DEINSTALL 키워드는 등장하지 않습니다.

POST-DEINSTALL 및 PRE-DEINSTALL 의 키워드를 건네주는 배경에는, 인스톨과 삭제의 모든 것을 취급할 수가 있는 단일의 프로그램/스크립트 (을)를 기술 가능하게 하는 일이 있습니다.

그렇지만, 이 방법은 메인트넌스가 꽤 어렵고, 인스톨 및 언인스톨의 각 국면을 취급하는 다른 스크립트를 가지는 방법 에는 미치지 않은 것이, 경험에 의해 알았습니다.

모든 스크립트는 환경 변수 PKG_PREFIX 에 인스톨시의 prefix 가 설정된 상태로 실행됩니다 (상기의 -p 옵션을 참조). 이것에 의해, package 의 저자는 pkg_delete (이)나 pkg_add 의 -p 플래그에 의해 package 가 인스톨 되는 디렉토리가 변경되어도, 제대로 대접하는 스크립트를 쓰는 것이 가능하게 됩니다.

환경 변수
환경 변수 PKG_DBDIR (은)는, 인스톨이 끝난 package 의 대체 데이타베이스를 지정합니다.

관련 파일
/var/db/pkg
    인스톨이 끝난 package 의 데이바베이스의 디폴트의 위치.

관련 항목
pkg_add(1), pkg_create(1), pkg_info(1), pkg_version(1), mktemp(3), mtree(8)

저자
Jordan Hubbard

협력자
John Kohl <jtk@rational.com>

버그
아직 있을 것입니다.