Ключевые слова:freebsd, install, make_world, (найти похожие документы)
_ RU.UNIX.BSD (2:5077/15.22) _____________________________________ RU.UNIX.BSD _
From : Maxim Sobolev 2:5020/400 25 Sep 99 11:00:58
Subj : [FreeBSD] make world: Как вычистить трупы?
________________________________________________________________________________
From: Maxim Sobolev <[email protected]>
Lev Serebryakov wrote:
> Поддерживаю вопрос. Если долго апдейтился с 3.0 до 3.3-STABLE через cvsup
> && make world, очевидно, что в бинарниках много мусора. Hо есть, так же,
> и пакаджи, которые апдейтить надобности нет. Есть ли способ выловить все
> старые бинарники, которые остались в наследство от предыдущих релизов?
Есть один способ. Для этого потребуется
1. Свободное место на диске (100МБ)
2. Построеный и уже проинсталенный world в /usr/obj
3. Полчаса времени
Далее делаем таким образом:
1. Создаем в любом удобном месте файловой системы где есть свободные 100МБ
временный каталог, например так: mkdir /tmp/world
2. Инсталлируем в эту директорию world: cd /usr/src ; make DESTDIR=/tmp/world
installworld
3. Создаем листинги файлов, директорий и линков во временной директории:
find /tmp/world -type f | sed 's/\/tmp\/world//' | sort > /tmp/world.f
find /tmp/world -type d | sed 's/\/tmp\/world//' | sort > /tmp/world.d
find /tmp/world -type l | sed 's/\/tmp\/world//' | sort > /tmp/world.l
4. Удаляем временный /tmp/world:
chflags -R noschg /tmp/world/* ; rm -rf /tmp/world
5. Создаем листин файлов, директорий и линков в реальной файловой системе:
find / -type f | sort > /tmp/real.f
find / -type d | sort > /tmp/real.d
find / -type l | sort > /tmp/real.l
6. Фильтруем из листингов /tmp/real.* все вхождения /etc, /stand, /tmp, /root,
/compat, /home , /usr/local, /usr/obj, /usr/src , /usr/X11R6, /usr/ports, /proc,
/dev, /mnt и любых других каталогов, неизменяющихся при установке world -
например
/usr/lib/aout. Hапример так
cat /tmp/real.f | grep -v "/etc" | grep -v "/stand" | ......| grep -v "/mnt" >
/tmp/real.f_
cat /tmp/real.d | grep -v "/etc" | grep -v "/stand" | ......| grep -v "/mnt" >
/tmp/real.d_
cat /tmp/real.l | grep -v "/etc" | grep -v "/stand" | ......| grep -v "/mnt" >
/tmp/real.l_
7. С помощью diff определяем, какие файлы, директории и линки существующие на
вашей
файловой системе не входят в world:
diff -d world.f real.f_ | grep ">" | more
diff -d world.d real.d_ | grep ">" | more
diff -d world.l real.l_ | grep ">" | more
8. Внимательно изучив полученные листинги смотрим, какие каталоги, файлы и линки
можно удалить. При этом надо учитывать, что например поддержка aout по умолчанию
не
билдится и не устанавливается, поэтому если она вам нужна, то не стоит спешить с
удалением /usr/libexec/ld.so, /usr/lib/aout/* и /usr/lib/compat/aout/*. Также не
рекомендуется удалять /kernel, /boot.conf и другие файлы в /.
9. Чтобы убедится, что ничего лишнего не было удалено, можно сделать cd
/usr/src;
make installworld.
У меня для этой цели есть простой скрипт, что очень облегчает всю процедуру.
-Макс
--- ifmail v.2.14dev3 * Origin: UkrNet News Server (2:5020/400)