View previous topic :: View next topic |
Author |
Message |
dio n00b
Joined: 12 Nov 2003 Posts: 20 Location: Нижний Новгород
|
Posted: Sun Nov 16, 2003 1:26 pm Post subject: размер устанавливаемого пакета |
|
|
Как с помощью emerge узнать размер всех устанавливаемых пакетов и их зависимостей? |
|
Back to top |
|
|
Urs n00b
Joined: 25 Aug 2003 Posts: 72 Location: Russia, SPb
|
Posted: Mon Nov 17, 2003 3:22 pm Post subject: |
|
|
Quote: |
Как с помощью emerge узнать размер всех устанавливаемых пакетов и их зависимостей?
|
С помощью самой emerge, вроде никак. Есть повод изучить Питон
Вот я тут разбирался над похожей проблемой, выдрал из esearch (кстати - рекомендую, emerge esearch).
esize.py - возвращает размер пакета:
Code: |
#!/usr/bin/env python2.2
import portage
import sys
def getfs(pkg):
# from /usr/bin/emerge
try:
mysum = 0
mydigest = portage.portdb.finddigest(pkg)
myfile = open(mydigest, "r")
for line in myfile.readlines():
mysum += int(line.split(" ")[3])
myfile.close()
mystr = str(mysum/1024)
mycount = len(mystr)
while (mycount > 3):
mycount -= 3
mystr = mystr[:mycount] + "," + mystr[mycount:]
mysum = mystr + " kB"
return mysum
except:
return "[no/bad digest]"
for pkg in sys.argv[1:]:
pkgv = pkg
if len(pkgv) > 1:
filesize = getfs(pkgv)
else:
filesize = 0
print pkgv + " - " + filesize
|
Результат:
Code: |
$ esize.py kde-base/kdebase-3.2.0_beta1
kde-base/kdebase-3.2.0_beta1 - 16,131 kB
|
Теперь это дело можно пристроить, как-нибудь так:
Code: |
$ emerge -pe nano| perl -ne 'if (m/.+] (.+)/) { print "$1\n" }' | xargs esize.py
|
Получаем список зависимостей nano -> пихаем в perl -> получаем в виде <категория>/<пакейдж> -> пихаем список в esize.py
Итого:
Code: |
sys-devel/gnuconfig-20030708 - 26 kB
sys-devel/libtool-1.4.3-r1 - 1,663 kB
sys-libs/db-1.85-r1 - 264 kB
sys-libs/gdbm-1.8.0-r5 - 130 kB
sys-devel/gettext-0.11.5-r1 - 3,636 kB
sys-apps/sed-4.0.7 - 677 kB
sys-apps/texinfo-4.5 - 1,264 kB
sys-apps/groff-1.18.1-r3 - 2,310 kB
sys-apps/cronbase-0.2.1-r2 - 0 kB
sys-apps/man-1.5l-r6 - 213 kB
dev-lang/tcl-8.3.4 - 2,594 kB
sys-libs/db-4.0.14-r2 - 2,638 kB
sys-libs/zlib-1.1.4-r2 - 143 kB
dev-python/python-fchksum-1.6.1-r1 - 36 kB
sys-apps/bzip2-1.0.2-r2 - 649 kB
sys-devel/m4-1.4 - 315 kB
sys-devel/autoconf-2.57-r1 - 1,225 kB
sys-devel/automake-1.7.5-r2 - 1,888 kB
sys-apps/coreutils-5.0-r3 - 3,867 kB
sys-apps/debianutils-1.16.7-r3 - 25 kB
app-shells/bash-2.05b-r7 - 1,923 kB
sys-libs/readline-4.3-r4 - 940 kB
dev-libs/openssl-0.9.6k - 2,132 kB
media-libs/libpng-1.2.5-r4 - 369 kB
sys-devel/flex-2.5.4a-r5 - 372 kB
x11-base/opengl-update-1.5 - 0 kB
sys-apps/gawk-3.1.3 - 2,029 kB
sys-kernel/linux-headers-2.4.19-r1 - 25,432 kB
sys-apps/miscfiles-1.3-r1 - 2,153 kB
sys-devel/gcc-config-1.3.3-r1 - 0 kB
sys-libs/cracklib-2.7-r7 - 20 kB
sys-devel/gcc-3.2.3-r2 - 20,716 kB
dev-libs/glib-1.2.10-r5 - 411 kB
sys-libs/pwdb-0.61-r4 - 133 kB
sys-libs/pam-0.75-r11 - 977 kB
sys-apps/shadow-4.0.3-r7 - 1,030 kB
sys-apps/pam-login-3.11 - 128 kB
sys-apps/util-linux-2.11z-r6 - 1,254 kB
sys-apps/baselayout-1.8.6.10-r1 - 185 kB
net-misc/dhcpcd-1.3.22_p4-r2 - 148 kB
media-libs/freetype-2.1.4 - 996 kB
x11-misc/ttmkfdir-3.0.9 - 19 kB
dev-libs/expat-1.95.6-r1 - 285 kB
sys-apps/ed-0.2-r3 - 181 kB
media-libs/fontconfig-2.2.1 - 599 kB
app-arch/unzip-5.50-r2 - 1,043 kB
app-arch/cabextract-0.6 - 90 kB
x11-base/xfree-4.3.0-r3 - 71,026 kB
dev-lang/tk-8.3.4-r1 - 2,531 kB
dev-lang/python-2.2.3-r5 - 6,552 kB
sys-apps/portage-2.0.49-r15 - 230 kB
sys-devel/libperl-5.8.0 - 10,764 kB
dev-lang/perl-5.8.0-r12 - 10,854 kB
sys-devel/binutils-2.14.90.0.6-r6 - 10,155 kB
sys-libs/glibc-2.3.2-r1 - 13,417 kB
sys-devel/patch-2.5.9 - 197 kB
sys-libs/ncurses-5.3-r2 - 2,019 kB
sys-libs/slang-1.4.9 - 616 kB
app-editors/nano-1.2.2 - 868 kB
|
Вот. |
|
Back to top |
|
|
inv n00b
Joined: 13 Nov 2003 Posts: 28
|
Posted: Tue Nov 18, 2003 6:39 am Post subject: |
|
|
etcat size <пакет>
Или нужет размер скачиваемых файлов? для этого тоже есть скрипт. |
|
Back to top |
|
|
Urs n00b
Joined: 25 Aug 2003 Posts: 72 Location: Russia, SPb
|
Posted: Tue Nov 18, 2003 7:26 am Post subject: |
|
|
Quote: |
для этого тоже есть скрипт.
|
И какой же? Поделись. |
|
Back to top |
|
|
Zoltan Guru
Joined: 27 Aug 2003 Posts: 394 Location: Moscow, Russia
|
Posted: Tue Nov 18, 2003 2:37 pm Post subject: |
|
|
emerge -s показывает size of downloaded files, то есть сколько надо скачать. _________________ Light travels faster than sound. That's why some people appear bright before you hear them speak. |
|
Back to top |
|
|
dio n00b
Joined: 12 Nov 2003 Posts: 20 Location: Нижний Новгород
|
Posted: Tue Nov 18, 2003 3:56 pm Post subject: |
|
|
Zoltan wrote: | emerge -s показывает size of downloaded files, то есть сколько надо скачать. |
но не показывает размер всех зависимостей, emerge -sp ничего не даёт.
P.s. Скрипт от Urs работает хорошо |
|
Back to top |
|
|
inv n00b
Joined: 13 Nov 2003 Posts: 28
|
Posted: Wed Nov 19, 2003 6:33 am Post subject: |
|
|
Zoltan wrote: | emerge -s показывает size of downloaded files, то есть сколько надо скачать. |
х.м. а в man'е написано, что -s - это search.
Code: | $ sudo emerge -s dopewars
Searching...
[ Results for search key : dopewars ]
[ Applications found : 1 ]
* games-strategy/dopewars
Latest version available: 1.5.9
Latest version installed: 1.5.9: 0
Size of downloaded files: 1,154 kB
Homepage: http://dopewars.sourceforge.net/
Description: Re-Write of the game Drug Wars
$ sudo get_size dopewars
games-strategy/dopewars-1.5.9
1154Kb dopewars-1.5.9.tar.gz (ok)
Pkg size: 1154Kb Download: 0
Total Size: 1154Kb Download: 0
|
|
|
Back to top |
|
|
inv n00b
Joined: 13 Nov 2003 Posts: 28
|
Posted: Wed Nov 19, 2003 6:39 am Post subject: Скрип для выяснения размера и фа |
|
|
Конечно был случай, когда он не срабатывал, только что там конкретно было - непомню, поэтому если что, то пишите,
если у вас emerge -p работает только через sudo, то и этот сприпт надо запускать через sudo, он внутри себя выполняет emerge -p
А как в форум файл добавить ?
придётся сюда вставлять:
Если нигде не пропустил, строчки случайно, то заработает.
---get_size---
#!/bin/sh
print_size()
{
SIZE=$1
OUT_SIZE=$SIZE
# if [ $SIZE -gt 1500000 ]; then
# OUT_SIZE=`expr $SIZE / 1024 / 1024`Mb
if [ $SIZE -gt 10000 ]; then
OUT_SIZE=`expr $SIZE / 1024`Kb
fi
# fi
echo $OUT_SIZE;
}
PKG=$*
if [ -z "$PKG" ]; then
echo pack
exit 1
fi
PKGS=`emerge -p $PKG | grep '^\[' | sed 's/^................//' | sed 's/ \[.*$/
/'`
TOTAL_SIZE=0
TOTAL_SIZE_DOWNLOAD=0
for P in $PKGS; do
GROUP=`echo $P | sed 's/\/.*$//'`
CP=`echo $P | sed 's/^.*\///'`
PK=`echo $CP | sed 's/-[0-9].*$//'`
echo "$GROUP/$CP"
if [ -e /usr/portage/$GROUP/$PK/$CP.ebuild ]; then
DIGEST="/usr/portage/$GROUP/$PK/files/digest-$CP"
if [ -e $DIGEST ]; then
FILES=`cat $DIGEST | awk '{print $4_"|"_$3}'`
PKG_SIZE=0
PKG_SIZE_DOWNLOAD=0
for F in $FILES; do
FILE=`echo $F | sed 's/^.*|//'`
SIZE=`echo $F | sed 's/|.*$//'`
OUT_SIZE=`print_size $SIZE`
OUT_EX=''
if [ ! -e /usr/portage/distfiles/$FILE ]; then
PKG_SIZE_DOWNLOAD=`expr $PKG_SIZE_DOWNLO
AD + $SIZE`
else
OUT_EX=' (ok)'
fi
echo -e "\t\t\t" $OUT_SIZE "\t" $FILE $OUT_EX
PKG_SIZE=`expr $PKG_SIZE + $SIZE`
done
echo " Pkg size: `print_size $PKG_SIZE` " " Downloa
d: `print_size $PKG_SIZE_DOWNLOAD`"
TOTAL_SIZE=`expr $TOTAL_SIZE + $PKG_SIZE`
TOTAL_SIZE_DOWNLOAD=`expr $TOTAL_SIZE_DOWNLOAD + $PKG_SI
ZE_DOWNLOAD`
else
echo digest- Not found
fi
else
echo .ebuild Not found
fi
done
echo Total Size: `print_size $TOTAL_SIZE` " " Download: `print_size $TOTAL_SI
ZE_DOWNLOAD`
---end--- |
|
Back to top |
|
|
inv n00b
Joined: 13 Nov 2003 Posts: 28
|
Posted: Wed Nov 19, 2003 6:40 am Post subject: |
|
|
Блин, в прошлом сообщении забыл ``code'' нажать, sorry, если очень напрягает, то могу ещё раз запостить. |
|
Back to top |
|
|
Urs n00b
Joined: 25 Aug 2003 Posts: 72 Location: Russia, SPb
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|