man pkg_delete

untitled аватар

man pkg_delete

PKG_DELETE(1) NetBSD General Commands Manual

NAME
pkg_delete -- утилита для удаления установленных пакетов.

SYNOPSIS
pkg_delete [-DdFfNnORrVv] [-K pkg-dbdir] [-p prefix] pkg_name ...

DESCRIPTION
Команда pkg_delete используется для удаления пакетов, установленных с помощью команды pkg_add(1)

WARNING
pkg_delete может запускать скрипты или программы содержащиеся в пакете и ваша система может быть подвергнута заражению "Троянцами" и другим видам атак со стороны сборщиков пакетов.

Мы советуем всегда проверять происхождение пакета. Для усиления безопасности проверяйте все контрольные фаилы пакета находящиеся в /var/db/pkg/. Обратите особое внимание на файлы +INSTALL, +DEINSTALL, +REQUIRE и +MTREE_DIRS. Проверяйте файл +CONTENTS на такие директивы как @cmd, @mode(проверьте setuid), @dirrm, @exec и @runexec, так же вы можете использовать pkg_info(1)для проверки контрольных фаилов пакета.

OPTIONS
Поддерживаются следующие флаги:

pkg_name ...
Названные пакеты удаляются, могут быть использованы wildcards, см. pkg_info(1). Если не указана версия пакета, удаляется установленная на данный момент. Если указан флаг -F, одно или несколько названий фаилов может быть задано и база данных пакетов сама определит какому пакету принадлежат файлы. Данные пакеты будут удалены.

-D Если для пакета существует скрипт удаления, не запускать его.

-d Удалять пустые директории, созданные фаилом cleanup. По умолчанию
удаляются только фаилы и директории, содержащиеся в списке удаляемых
в пакете. Эта опция также заставляет pkg_delete удалять все
директории, которые были опустошены в результате удаления пакета.

-F Любой аргумент будет интерпритироваться как составное имя,
трансформируемое в (настоящее) название пакета с помощью базы данных
пакетов. Такой подход разрешает указывать названия фаилов вместо
названий пакетов.

-f Удалить пакет, даже если deinstall или require скрипт завершился
ошибкой.

-K pkg_dir
Определить pkg_dir как директорию базы данных пакетов. Если этот флаг
не установлен, директория базы данных пакетов считается со значения
переменной окружения PKG_DBDIR, если она установлена, в другом случае
используется значение по умолчанию /var/db/pkg.

-N Удалить регистрацию пакета в системе и все записи из базы
данных пакетов, но не удалять сам пакет. Не запускать скрипта deinstall
или строк @unexec.

-n Показать предпринимаемые действия при удалении пакета, не удалять пакет.

-O Удалить только записи о пакете из базы данных пакетов, не трогать пакет
и принадлежащие ему фаилы.

-p prefix
Указать prefix как директорию, из которой будут удалены фаилы
установленных пакетов, которые небыли явно определены как принадлежащие
им. Для большенства пакетов pkg_add(1) устанавливает prefix автоматически.

-R Этот флаг задает рекурсивное удаление указанного пакета и всех пакетов,
от которых он зависит, только если зависимый пакет не является зависимостью
другого пакета. Этот флаг может быть использован для очистки, удаляя сам
пакет и все пакеты, не имеющие других зависимостей.

-r pkg_delete составляет список зависимостей пакета (которые зависят от него)
и удаляет все пакеты в списке до удаления самого пакета. Эта опция может
быть использована для рекурсивного удаления пакета и всех его зависимостей.

-V Показать версию и выйти.

-v Включить verbose output.

ТЕХНИЧЕСКИЕ ДЕТАЛИ
Название pkg_delete говорит само за себя. Программа проверяет записи пакета в
/var/db/pkg/, удаляет пакет, и, наконец, удаляет все записи о пакете
(если опрелелен другой путь к базе данных, он переписывает назначенный по умолчанию).

Если пакет является зависимостью другогих установленных пакетов, pkg_delete перечислит
такие пакеты и откажется удалять пакет (если не указан флаг -f).

Если пакет маркирован как _охраняемый_, он не может быть удален (если флаг -f
встречается не больше одного раза).

Если в качестве аргумента указан фаил (не имя пакета), пакет может быть определен
по имени фаила если указан флаг -F. Имя фаила должно быть полным, смотрите вывод
команды pkg_info -aF.

Если пакет содержит фаил require (см. pkg_create(1)), сначала выполняется:
require DEINSTALL
(где pkg-name - имя пакета и DEINSTALL - опция, указывающая на удаление) чтобы
посмореть требуется ли продолжать процесс удаления. Статус завершения отличный от
нуля значит нет, если не установлен флаг -f.

Если для пакета существует скрипт deinstall, он запускается до и после удаления
каждого фаила. Обязанность этого скрипта - очистка всего мусора, оставшегося после
установки пакета, так как pkg_delete умеет только удалять фаилы, созданные пакетом.
Скрипт deinstall запускается таким образом:
deinstall VIEW-DEINSTALL
до удаления пакета из _view_,
deinstall DEINSTALL
до удаления всех фаилов, и
deinstall POST-DEINSTALL
после удаления. Опции VIEW-DEINSTALL, DEINSTALL и POST-DEINSTALL позволяют обьеденить
все аспекты удаления пакетов в один скрипт/программу.

Все скрипты запускаются с переменной окружения PKG_PREFIX, установленной как prefix
установки (см. флаг -p). Это разрешает авторам пакетов писать скрипты, которые могут
производить какие-то действия в директории, куда производилась установка пакета, даже
если пользователь поменяет ее место нахождения с помощью флага -p во время выполнения
pkg_delete или pkg_add(1). Скрипты также запускаются с переменной окружения
PKG_METADATA_DIR, установленной как место расположения _+*_ фаилов мета данных, и с
переменной окружения PKG_REFCOUNT, установленной как место нахождения базы данных
счётчиков ссылок.

ENVIRONMENT
PKG_DBDIR Если флаг -K не установлен, PKG_DBDIR является местом нахождения
базы данных пакетов. Директория базы данных пакетов по умолчанию
/var/db/pkg.

PKG_REFCOUNT_DBDIR
Место нахождения базы данных счётчиков ссылок. По умолчанию -
путь к базе данных пакета с .refcount на конце. Например:
/var/db/pkg.refcount.

SEE ALSO
pkg_admin(1), pkg_create(1), pkg_info(1), pkg_add(1), mktemp(3),
packages(7), mtree(8)

AUTHORS
Jordan Hubbard
John Kohl
Hubert Feyrer

NetBSD 4.0_BETA November 4, 2006