LINUX.ORG.RU

Обнуление gentoo


0

2

Решил очистить систему от мусора. Мне это видится удалением старого профиля и создания нового, но как получше подчистить системные папки от лишних файликов, нет ли утилиты специализированной?

★★★★★

>Решил очистить систему от мусора.

emerge -av --depclean && revdep-rebuild

подчистить системные папки от лишних файликов

Какие файлы, например, лишние? После удаления пакета мусора не остаётся, как в дебиане без purge.

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

Да чйорт его побери знает, но решил устроить полный клизьматрон (в рамках разумного конечно же)

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

После удаления пакета мусора не остаётся

Я заметил в home (и не только) остаются всякие конфиги от некоторых пакетов.

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

>Я заметил в home (и не только) остаются всякие конфиги от некоторых пакетов.

В ~ остаются, потому что пакетный менеджер там не заведует. И вдруг я потом снова ту программу поставлю, мне не надо будет её настраивать.

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

>Может где еще что завалялось, так как я netbeans не по Ъ методу ставил

Если это был make install - то всё сложно. Есть прекрасная маленькая утилита installwatch. Она запоминает в файл системные вызовы, относящиеся к ФС, во время make install. Потом оттуда легко вынуть список файлов пакета, я так в LFS делал. Если остался каталог исходников, оттуда можно попробовать make uninstall, но не все пакеты это умеют.

Кеш?

/var/cache

И да, ~ придётся или чистить основательно, или забекапить «~/.*», снести это, из бекапа восстанавливать нужные конфиги (~/.mozilla, ~/.zshrc) или настроить заново.

Можно ещё пройтись «qlist `eix -I --only-names` | sort -u», чтобы получить список файлов, контроллируемых portage, а потом «find / | sort -u | grep -vE '^/(home|mnt|media|boot|root|proc|sys|dev|tmp|lost+found|var/tmp)/'», чтобы получить список всех файлов, и сделать diff, чтобы найти файлы-сироты.

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

>в /etc тоже остаются

Странно, не встречал. Значит, они были созданы после установки пакета.

/var/log еще всякие

Ну это понятно, это же не конфиги.

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

>На примере самбы, в /etc остаются.

Какие конкретно файлы? /etc/samba/smb.conf, наверное? Он же не устанавливается с самбой, а пишется потом руками. С самбой идёт /etc/samba/smb.conf.default.

Но дебиан - зло. Там вообще ВСЕ конфиги остаются, если не делать руками purge. А аналог emerge --depclean в дебиане не делает purge.

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

>полный клизьматрон

Собери новую генту, на которую утащи старый /etc, /var/lib/portage/world и все остальное нужное. Будет та же твоя старая система, но гарантированно чистая.

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

>если не делать руками purge

А ещё в линуксе можно себе в ногу выстрелить.

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

>> Там вообще ВСЕ конфиги остаются, если не делать руками purge.

man apt.conf

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

Данные остаются.

Я заметил в home (и не только) остаются всякие конфиги от некоторых пакетов.

Как уже сказали, пакетный менеджер не лезет в HOME.

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

ещё /usr/share/emacs\//var/games/emacs после emerge -C emacs && emerge -c, /var/lib/[g,k]dm после emerge -C [g,k]dm && emerge -c

PS вроде как gentoo не удаляет редактрованные конфиги из /etc.(genkernel.conf,mpd.conf...,ntp.conf)

tn1
()
Ответ на: комментарий от anonymous

Если конфиги модифицированы то они саами остаются при удалении пакета

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

>вроде как gentoo не удаляет редактрованные конфиги из /etc.(genkernel.conf,mpd.conf...,ntp.conf)

Не только эти, а вообще все из /etc, /usr/share/config и т.п. Я вот сносил OpenRC, напротив изменённых конфигов emerge писал [!mtime] и не удалял, в /etc/conf.d они остались.

ещё /usr/share/emacs\//var/games/emacs

А что там вообще находится? (emacs не юзаю)

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

> А что там вообще находится? (emacs не юзаю)
ну в /usr/share/emacs какие то файлы, в var/log/games/emacs пусто.

tn1
()
Ответ на: комментарий от tn1
kolan@nickolay-842 ~ $ eix findcruft
* app-admin/findcruft2 [2]
     Available versions:  ~20090615
     Homepage:            http://git.xnull.de/cgit/findcruft2/
     Description:         findcruft2 is a tool to find orphaned files for unmerged packages

* app-portage/findcruft
     Available versions:  ~1.0.4-r1!m[1] ~1.0.4-r1[3] ~1.0.4-r1[4] ~1.0.4-r1[5] ~1.0.4-r1!m[6]
     Homepage:            http://forums.gentoo.org/viewtopic.php?t=254197
     Description:         Yet another script to find obsolete files

[1] "arcon" layman/arcon
[2] "betagarden" layman/betagarden
[3] "gentoo-taiwan" layman/gentoo-taiwan
[4] "ibormuth" layman/ibormuth
[5] "laurentb" layman/laurentb
[6] "maggu2810-overlay" layman/maggu2810-overlay

, кстати, если в скрипт обновления добавить после eix-update eix-remote update, то eix будет по оверлеям искать. Сам не тестировал, способ с find больше нравится.

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

> Ты пробовал? работает нормально?

Нет, не пробовал!! Думаю допилить gentoo_root-вский костыль, надо только разобраться с симлинками.

#!/bin/bash
# Finds files not registered in portage

CURRENT_LIST=/tmp/current-$RANDOM.lst
PORTAGE_LIST=/tmp/portage-$RANDOM.lst

qlist `qlist -IC` | sort -u >$PORTAGE_LIST
find /boot /bin /etc /lib /lib32 /lib64 /opt /sbin \
`ls /usr/ | grep -vE 'portage|local|src|lost\+found' | sed 's/\(.*\)/\/usr\/\1/'` \
`ls /var/ | grep -vE 'tmp|lost\+found' | sed 's/\(.*\)/\/var\/\1/'` \
2>/dev/null | sort -u >$CURRENT_LIST

diff $CURRENT_LIST $PORTAGE_LIST

rm -f $CURRENT_LIST
rm -f $RANDOM_LIST
backbone ★★★★★
()
Ответ на: комментарий от backbone

Я как бы не очень доверяю неизвестным скриптам с лора, можно подробнее как он работает?

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

Я его не собирал из исходников и его инсталятор цивильнинько положил все в одну папку.

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

> Я как бы не очень доверяю неизвестным скриптам с лора, можно подробнее как он работает?

Печатает список файлов(и их число), к которым следует присмотреться. У меня данный скрипт находит около 1600 файлов, в основном, это старый python2.6 и perl-5.12.2. Без них где-то 520 файлов. У Вас может будет по-другому, неплохо бы как-то допилить этот скрипт с учётом другого набора программ. Учитывает симлинки, одинаково должно работать на x86 и amd64. Запускается от обычного пользователя. У меня выполнялся приблизительно 23 секунды.

Кстати, потестил findcruft-20090615, без /usr/src он выдал с теми же exclude-ами 1875 файлов, но также предлагал удалить файлы из текущей версии perl-а.

#!/bin/bash
# Finds files not registered in portage

DIRLIST="/bin /etc /lib /lib32 /lib64 /opt /sbin
`ls /usr/ | grep -vE 'portage|local|src|lost\+found' | sed 's/\(.*\)/\/usr\/\1/'`
`ls /var/ | grep -vE 'tmp|lost\+found' | sed 's/\(.*\)/\/var\/\1/'`"

EXCLUDES='\\
^/etc/make.conf|\\
^/etc/portage|\\
^/usr/lib64/portage|\\
^/usr/lib64/portage|\\
^/usr/lib64/gedit-2|\\
^/var/db/pkg|\\
^/var/run|\\
^/var/cache|\\
^/usr/share/mime'

REPLACES="
s~^/lib64/grub/~/lib/grub/~ ;
s~^/usr/lib64/bcc/~/usr/lib/bcc/~ ;
s~^/usr/lib64/debug/~/usr/lib/debug/~ ;
s~^/usr/lib64/fpc/~/usr/lib/fpc/~ ;
s~^/usr/lib64/fvwm/~/usr/lib/fvwm/~ ;
s~^/usr/lib64/gcc/~/usr/lib/gcc/~ ;
s~^/usr/lib64/gentoolkit/~/usr/lib/gentoolkit/~ ;
s~^/usr/opt/~/opt/~ ;
"

#   ===========================================================
#  ========================= C O D E ===========================
# ===============================================================
# summarize dirlist
DIRLIST="`echo $DIRLIST`"
echo "DIRLIST=$DIRLIST"

# exclude current python, perl, kernel modules
EXCLUDES="$EXCLUDES\|`qlist -ICev python | sed 's~[^0-9]*\([0-9]*\.[0-9]*\).*~\^\/usr\/lib64\/python\1\|\\\\~'`"
EXCLUDES="`echo $EXCLUDES | sed 's~\ ~~g ; s~\\\~~g ; s~|$~~'`"
EXCLUDES="$EXCLUDES\|`qlist -ICev perl | sed 's~[^0-9]*\([0-9]*\.[0-9]*\.[0-9]*\).*~\^\/usr\/lib64\/perl5/\1\|\\\\~'`"
EXCLUDES="`echo $EXCLUDES | sed 's~\ ~~g ; s~\\\~~g ; s~|$~~'`"
EXCLUDES="$EXCLUDES\|^`realpath /lib/modules/\`uname -r\``"
EXCLUDES="`echo $EXCLUDES | sed 's~\ ~~g ; s~\\\~~g ; s~|$~~'`"

# summarize excludes
echo "EXCLUDES=$EXCLUDES"

# summarize replaces
REPLACES="`echo $REPLACES`"
echo "REPLACES=$REPLACES"

CURRENT_LIST=/tmp/current-$RANDOM.lst
PORTAGE_LIST=/tmp/portage-$RANDOM.lst
RESULT_LIST=/tmp/result-$RANDOM.lst

qlist `qlist -IC` | sort -u >$PORTAGE_LIST
find -P $DIRLIST -type f 2>/dev/null | grep -vE "$EXCLUDES" | sed "$REPLACES" | sort -u >$CURRENT_LIST

diff $PORTAGE_LIST $CURRENT_LIST | grep -E '^>' | sed 's/> //' >$RESULT_LIST

echo "`wc -l $RESULT_LIST | cut -d" " -f1` orphaned files found:"
echo "-------------------------------------------------------------------------"
cat $RESULT_LIST

rm -f $PORTAGE_LIST $CURRENT_LIST $RESULT_LIST

Обновляемая версия тут.

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

> pkg_cutleaves в Gentoo ещё не портировали разве?

Тред читали? :)
Требуется не аналог deborphan|debfoster|depclean, а утилита, работающая непосредственно с отдельными файлами!

backbone ★★★★★
()

> Мне это видится удалением старого профиля и создания нового

в рамках разумного

Кхм.

Почистите-ка ~? Можно начать с `du -hsx ~/*`

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

Неучтённые файлы в системе и среди установленного ПО? Бред какой-то. Не знаю, как в GNU/Linux, но для Unix-системы это нетипично. Каждый системный файл и каждый файл из списка установленного ПО прописан либо в системном каталоге инсталляции, либо в базе данных установленного ПО менеджера пакетов. Утилиты типа whereis(1) показывают, откуда взялся конкретный файл.

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

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

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

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

Никакого бреда! Причин может быть полно: незаконченная установка, шаловливые ручки, сгенерированные кеши, симлинки, конфиги и т.д. и т.п. BSD вряд ли чем-то может быть лучше Linux в этом плане.
whereis слабо связана с описанной проблемой, если не сказать больше. Введите whereis /usr/bin/ls ; ls /usr/bin/ls. Независимо от факта наличия /usr/bin/ls выдаётся наличие информации о нём в б.д., кт. использует whereis.

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

Не понял описанной Вами ситуации. Вы ставите новую систему поверх старой, затирая существующую базу пакетов?

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

>остаются только файлы в ~.

Это если purge. Если не purge, а просто remove, то остаются и в /etc.

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

>Если вместо portage стоит paludis, то с make install всё просто :)

Это cave import, что ли?

// До сих пор не завёл этот paludis. Хотел собрать систему с uclibc и paludis, но обнаружил, что не собираются glib и dbus-glib, и на uclibc забил.

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

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

Ага. Только всё это дерьмецо обычно оседает в /tmp и в подкаталогах /var/run/.

Не понял описанной Вами ситуации. Вы ставите новую систему поверх старой, затирая существующую базу пакетов?

Система и пакеты ПО в BSD физически разделены разными каталогами. Старые системные файлы могут остаться после переинсталляции новых ядра и системы, имеющих другой список опций сборки (изменили src.conf и собрали-установили новую систему).

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

> обычно

именно, что обычно, но никто как бы не гарантирует...

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

>USE=«portage» не забудь.

А это важно? Я хотел собирать отдельную систему с paludis, а не ставить на уже существующую. Тогда тоже надо этот юз?

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

> Тогда тоже надо этот юз?
Подстраховка.(у меня к примеру после обычного обновления(emerge -uDN world) исчезла часть файлов portage(emerge к примеру))

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

>Подстраховка.

Ну, значит, не нужно, если собирать новую систему. Если что-то пойдёт не так, ничего не потеряю.

после обычного обновления(emerge -uDN world)

Можно одновременно использовать и portage, и paludis? Это нормально, что 2 пакетных менеджера?

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

> Можно одновременно использовать и portage, и paludis? Это нормально, что 2 пакетных менеджера?
А что плохого?

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

>А что плохого?

Я уже дочитал до того места в wiki, где это написано. Получается, они используют одинаковую базу данных для установленных пакетов. Но всякие /etc/portage/package.* придётся 2 раза прописывать.

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

> Я уже дочитал до того места в wiki, где это написано.
Русскоязычная устарела.(если ты её читал)

Но всякие /etc/portage/package.* придётся 2 раза прописывать.

USE=«portage» же.(хотя сам не пробовал)

Получается, они используют одинаковую базу данных для установленных пакетов.

в exherbo /var/lib/portage/world не было.

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