LINUX.ORG.RU
ФорумTalks

Недопонимаю portage

 , ,


2

2

Сказать что portage в gentoo забавный это не сказать ничего... Иногда он ставит в тупик. Ну к примеру собирать в sandbox это Ок не смотря на то что зачастую при этом огребаешь проблем а собирать в chroot и при этом не засирая основную систему а использовать бинпакеты это видимо чем-то не ок.

Но это ладно. Сейчас погорим о более простых вещах. Вот portage собирает какой-то софт. При этом при установке все нужные ему юзеры/группы создаются автоматически. И это вроде-бы хорошо.

Однако при удалении все, даже дефолтные, конфиги из /etc никуда не исчезают. Это называют фичей необходимой якобы для того что-бы юзер не потерял свои драгоценные настройки. Внимание вопрос - никакой разницы дефолтный конфиг или нет? Ну я понимаю если конфиг отличается от стандартного - в таком случае он представляет ценность и его может быть и жаль потерять. Какую ценность может представлять стандартный конфиг и зачем даже его оставлять нетронутым после удаления самого пакета?

Но даже это пол беды - созданные при установке юзеры/группы после удаления пакета никуда не деваются. Таким образом в системе остаются юзеры/группы «мёртвые души» и просто замечательно если там /sbin/nologin или /bin/false в качестве оболочки и нет возможности их эксплуатировать. Но кто может дать такую гарантию что ни один пакет не сделает подобный «подарок»?

По-моему это как минимум нелогично и при удалении пакета надо хотя-бы предупреждать о ненужных юзерах/группах.

★★★★★

Это надо писать разработчикам. Что току от того, что ты тут будешь всем рассказывать какой портаж странный?

sudopacman ★★★★★
()
Ответ на: комментарий от sudopacman

Это надо писать разработчикам.

Как говорится успехов.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

CONFIG_PROTECT="-*"

И как бы да хорошо что есть хотя-бы это.

init_6 ★★★★★
() автор топика

А если часть конфигов отредактрована, а часть нет? удалять половину? Это никому не нужная логика, проще все оставить.

TDrive ★★★★★
()

К тому же при удалении пакета нельзя однозначно сказать менялся конфиг или нет. Исходников установленного пакета может уже не быть, а если они и остались, скачивать, распаковывать, сравнивать... оно тебе надо?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Это никому не нужная логика, проще все оставить.

Проще перед удалением сделать бинпакет всего включая конфиги и после этого спокойно удалять. Но видимо это тоже слишком сложно.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

Кому он нужен? мне не нужен, меня устраивает что конфиги просто лежат на своих местах и их ни кто не трогает без моего ведома.

Но видимо это тоже слишком сложно.

https://github.com/gentoo/portage все в твоих руках.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

К тому же при удалении пакета нельзя однозначно сказать менялся конфиг или нет.

:) /var/lib/portage/config ну да при обновлении portage умеет узнавать обновлен конфиг или нет... А при удалении узнать дефолтный он или нет это просто невероятно сложно.

init_6 ★★★★★
() автор топика

При чём тут portage? При удалении пакета запускаются фазы pkg_prerm и pkg_postrm где автор ebuild может удалять пользователей, сравнивать конфиги, которые при установке он сохранит где-нибудь в /usr/share/mypackage/defaults и т.п. Почему мэйнтейнеры генты так не делают, хрен их знает, наверное просто не заморачиваются.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от init_6

ну да при обновлении portage умеет узнавать обновлен конфиг или нет...

Он просто делает diff текущего конфига с конфигом из пакета. Если конфиг менялся разработчиком софтины потедж то же спросит про изменения не смотря на то что обе версии конфига дефолтные

TDrive ★★★★★
()
Ответ на: комментарий от init_6

ну да при обновлении portage умеет узнавать обновлен конфиг или нет... А при удалении узнать дефолтный он или нет это просто невероятно сложно.

При обновлении текущий конфиг сравнивается с новым. А при удалении с чем текущий конфиг сравнивать?

Gentooshnik ★★★★★
()
Ответ на: комментарий от TDrive

«нет», значит «нет».

То, что ты написал не является правдой, и portage определяет то, что конфиг не менялся, если upstream конфиг изменился и применяет изменения автоматически.

qnikst ★★★★★
()
Ответ на: комментарий от Pinkbyte

Patches are welcome

LOL Смешно! Какие нафиг патчи если сперва надо понять как оно вообще задумывалось и в чем глубокий смысл.

init_6 ★★★★★
() автор топика
Ответ на: комментарий от init_6

Оно задумывалось именно так как сейчас работает. Пользователи/группы сохраняются на случай переустановки, так как созданные демоном файлы(в /var/lib/daemon_name например), которые стоит сохранить останутся, а если пользователя/группу валить, то им может быть в следующий раз выданы другие uid/gid. И демон будет «приятно» удивлен невозможностью писать в /var/lib/daemon_name

Если есть желание дописать опцию в стиле --cleanup-all-data для удаления - вперед. Учитывая что portage хранит список всех установленных им файлов(и не удаляет только то, что подпадает в CONFIG_PROTECT + не удаляет непустые каталоги) - пилить там не так уж и много(но покурить придется).

Почему не написали до сих пор? Видать никому не нужно

Pinkbyte ★★★★★
()

В дебиане кстати есть опции remove и purge для «удаления» и «совсем удаления», странно, что подобного нет в portage.

leg0las ★★★★★
()

Да, именно в этом самая главная проблема портежа.

// Уже неделю собираю вручную пакеты которые зависят от пакетов с сабслотами, потому что портеж не умеет этого понять сам. До обновления мира пока добраться не могу.

vurdalak ★★★★★
()

Но даже это пол беды - созданные при установке юзеры/группы после удаления пакета никуда не деваются

Это везде так, кроме вероятно совсем упоротых дистрибов. И это правильно.

d_a ★★★★★
()

Идея с удалением дефолтовых конфигов вместе с пакетом мне понравилась. Запили патч и выложи!
А с группами и юзерами все сложнее, как тут определить, что эта группа больше не нужна? Сканировать конфиги всего софта на предмет упоминания этой группы?

Lavos ★★★★★
()

Внимание вопрос - никакой разницы дефолтный конфиг или нет?

Как ты планируешь определять дефолтность? А вдруг этот конфиг — дефолтный от старой версии? В зависимости от ситуации такой «устаревший» дефолтный конфиг может быть как ненужным пользователю, так и нужным.

derlafff ★★★★★
()
Ответ на: комментарий от Gentooshnik

При обновлении текущий конфиг сравнивается с новым. А при удалении с чем текущий конфиг сравнивать?

Со старым же.

Неужели это так сложно — просто при установке определять что там меняет пакет, и при удалении предоставить возможность откатить всё обратно.

batekman ★★★
()
Последнее исправление: batekman (всего исправлений: 1)
Ответ на: комментарий от Deleted

С тем, который устанавливался.

Для /etc/passwd вообще всё просто — пакет делает useradd при установке, заносим это в базу, при удалении смотрим — такой-то юзер был нужен пакету. Делаем userdel, а в базе оставляем, чтобы пользователь мог посмотреть, что там у него за uid'ы в owner'ах в ФС.

batekman ★★★
()
Ответ на: комментарий от Deleted

Так пусть будет.

Плохо знаю portage, но по крайней мере у меня в /var/lib/portage/packages лежат архивы с собранными пакетами. Если портаге умеет так, то что сложного хранить конфиги всех версий?

batekman ★★★
()
Ответ на: комментарий от grem

А где-то при обычном удалении пакета исчезают дефолтные конфиги?

Во всех rpm-based, насколько я понимаю.

redgremlin ★★★★★
()
Ответ на: комментарий от batekman

Плохо знаю portage, но по крайней мере у меня в /var/lib/portage/packages лежат архивы с собранными пакетами.

Они не обязаны там храниться, я вот когда переводил портедж на git все удалил, у меня теперь система должна сломаться?

Если портаге умеет так, то что сложного хранить конфиги всех версий?

Не сложно, просто нахрен никому не нужно, конфиги отлично хранятся в /etc там где им и место.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

нет, я в курсе. Но тут вроде ты пишешь неверную информацию, в которой ты уверен на 100%, а доказывать тебе что-либо мне не интересно.

qnikst ★★★★★
()

Итого: portage ничего не знает о существовании chown и именно поэтому при удалении пакетов оставляет после них «мёртвые души»

init_6 ★★★★★
() автор топика
Ответ на: комментарий от TDrive

Они не обязаны там храниться, я вот когда переводил портедж на git все удалил, у меня теперь система должна сломаться?

Нет, я просто привёл пример того, где могут храниться выплюнутые портежом файлы кроме рута.

Не сложно, просто нахрен никому не нужно, конфиги отлично хранятся в /etc там где им и место.

Не нужно тем, кто разрабатывает portage, и тем, кто коммитит в Главную Ветку.

По-моему, эта тормозная параша в 2016-то году должна уметь отличать диффы между версиями и между тем, что поставилось, и что из этого сделал пользователь.

batekman ★★★
()
Ответ на: комментарий от qnikst

а доказывать тебе что-либо мне не интересно.

за то тебе интересно говорить о том чего сам не знаешь.

TDrive ★★★★★
()
Ответ на: комментарий от batekman

Не нужно тем, кто разрабатывает portage, и тем, кто коммитит в Главную Ветку.

Это не закрытое сообщество.

По-моему, эта тормозная параша в 2016-то году должна уметь отличать диффы между версиями и между тем, что поставилось, и что из этого сделал пользователь.

Или хотя бы варить кофе, только нах**я?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Для удобства же. Запилили же защиту конфигов, почему бы не усовершенствовать. Не думаю, что это так сложно тем, кто этим занимается.

batekman ★★★
()
Ответ на: комментарий от batekman

Видимо это никому не нужно раз не сделали.

TDrive ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.