При удалении пакета удаляются и папки, которые при его инсталляции не создавались (Почему так?)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение жучара »

Друзья! Есть папка /bar:

Shell

user@astra:~$ ls -ld /bar
drwxr-xr-x 2 root root 4096 апр 5 16:30 /bar
user@astra:~$ ls /bar
user@astra:~$
И вот такой простой-препростой пакет, собранный equivs-build her

Shell

user@astra:~$ dpkg -c her_1.0_amd64.deb
drwxr-xr-x root/root 0 2020-04-05 16:30 ./
drwxr-xr-x root/root 0 2020-04-05 16:30 ./bar/
-rw-r--r-- root/root 0 2020-04-05 16:30 ./bar/foo
drwxr-xr-x root/root 0 2020-04-05 16:30 ./usr/
drwxr-xr-x root/root 0 2020-04-05 16:30 ./usr/share/
drwxr-xr-x root/root 0 2020-04-05 16:30 ./usr/share/doc/
drwxr-xr-x root/root 0 2020-04-05 16:30 ./usr/share/doc/her/
-rw-r--r-- root/root 741 2020-04-05 16:30 ./usr/share/doc/her/README.Debian
-rw-r--r-- root/root 118 2020-04-05 16:30 ./usr/share/doc/her/changelog.gz
-rw-r--r-- root/root 936 2020-04-05 16:30 ./usr/share/doc/her/copyright
user@astra:~$
Как видим, при установке пакета файл foo должен запихаься в папку /bar
Устанавливаю грамотно, из локального репозитория:

Shell

user@astra:~$ echo y | sudo apt-get install her
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Пакеты, которые будут обновлены:
her
обновлено 1, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 0 B/2 058 B архивов.
После данной операции, объём занятого дискового пространства уменьшится на 3 072 B.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
her
Пол:1 file:/home/user/rep myorel/main amd64 her amd64 1.0 [2 058 B]
E: Невозможно записать журнал (Смонтирован ли /dev/pts?) - posix_openpt (2: Нет такого файла или каталога)
(Чтение базы данных … на данный момент установлено 22297 файлов и каталогов.)
Подготовка к распаковке …/main/h/her/her_1.0_amd64.deb …
Распаковывается her (1.0) на замену (1.0) …
dpkg: предупреждение: не удалось удалить старый каталог «/cafebabe»: Каталог не пуст
Настраивается пакет her (1.0) …
user@astra:~$
Смотрю, чё в папке /bar

Shell

user@astra:~$ ls -l /bar
итого 0
-rw-r--r-- 1 root root 0 апр 5 16:30 foo
user@astra:~$
...И удаляю пакет her:

Shell

user@astra:~$ echo y | sudo apt-get remove her
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Пакеты, которые будут УДАЛЕНЫ:
her
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 10,2 kB.
Хотите продолжить? [Д/н] E: Невозможно записать журнал (Смонтирован ли /dev/pts?) - posix_openpt (2: Нет такого файла или каталога)
(Чтение базы данных … на данный момент установлено 22295 файлов и каталогов.)
Удаляется her (1.0) …
user@astra:~$
Снова смотрю папку /bar

Shell

user@astra:~$ ls -ld /bar
ls: невозможно получить доступ к '/bar': Нет такого файла или каталога
user@astra:~$
Чё-то как-то нехорошо. Взял и удалил папку, которая ему вообще не принадлежала, мало ли она для чего была мне нужна! Почему же так получилось и как этого избежать? Спасибо, кто откликнется. Астралинукс Орёл 2.12
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение /dev/random »

Так делают все пакетные менеджеры во всех дистрибутивах. Без единого исключения, насколько я знаю. Пакетный менеджер удаляет каталог тогда и только тогда, когда удаляет из него последний файл (подкаталоги тоже считаются файлами). Если каталог нужен лично вам, а не только пакету, поместите в него какой-нибудь файл.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение Vascom »

Сообщение удалено.
Последний раз редактировалось Vascom 27.06.2020 08:31, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение Hephaestus »

жучара писал(а):
05.04.2020 20:02
Взял и удалил папку, которая ему вообще не принадлежала,
Ну, как же не принадлежала, когда
жучара писал(а):
05.04.2020 20:02
при установке пакета файл foo должен запихаься в папку /bar
Каталог /bar был прописан в составе пакета? Был.
И был бы создан в процессе установки при необходимости.
При удалении пакета удаляются файлы и каталоги, входящие в состав пакета.
Каталог в составе пакета был? Был. Должен быть удален? Должен.
Откуда пакетному менеджеру знать, что каталог всё ещё Вам нужен?
Но, как уже сказали выше, каталоги удаляются, только если в них ничего не осталось.

Более того, в один и тот же каталог могут помещаться файлы при установке разных пакетов. Это файлы типа значков, шрифтов и т.п. Соответственно, при удалении пакета будет обнаружена коллизия (в каталоге присутствуют "чужие" файлы) и такой каталог удален не будет. Коллизия также возникнет в обратном случае: если при установке пакета записывается файл, который в каталоге уже есть (из другого пакета).
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение Bizdelnick »

жучара писал(а):
05.04.2020 20:02
Взял и удалил папку, которая ему вообще не принадлежала, мало ли она для чего была мне нужна! Почему же так получилось и как этого избежать?
Если бы там остались ещё какие-то файлы, каталог бы не удалился. Чтобы этого избежать, можно было сделать, например, touch /bar/.keep.
/dev/random писал:
05.04.2020 20:15
Так делают все пакетные менеджеры во всех дистрибутивах. Без единого исключения, насколько я знаю.
Нет, rpm так не делает. Он удаляет только те каталоги, которые явно прописаны в спеке (и, кажется, только в том случае, если они не принадлежат какому-либо другому установленному пакету; тут, впрочем, я могу ошибаться, поскольку ситуация, когда каталог принадлежит нескольким rpm-пакетам, нетипичная). Но в deb (точнее, в tar, который внутри deb) действительно не предусмотрено помещение файла в каталог, отсутствующий в пакете.
Vascom писал:
05.04.2020 20:19
Надо смотреть исходники или параметры пакета, принадлежит ли ему этот каталог.
Не может не принадлежать. Это не rpm.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: При удалении пакета удаляются и папки, которые при его инсталляции не создавались

Сообщение Bizdelnick »

жучара писал(а):
05.04.2020 20:02

Shell

user@astra:~$ echo y | sudo apt-get install her
Хозяйке на заметку: используйте sudo apt-get -y install her
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить