Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
размер устанавливаемого пакета
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
dio
n00b
n00b


Joined: 12 Nov 2003
Posts: 20
Location: Нижний Новгород

PostPosted: Sun Nov 16, 2003 1:26 pm    Post subject: размер устанавливаемого пакета Reply with quote

Как с помощью emerge узнать размер всех устанавливаемых пакетов и их зависимостей?
Back to top
View user's profile Send private message
Urs
n00b
n00b


Joined: 25 Aug 2003
Posts: 72
Location: Russia, SPb

PostPosted: Mon Nov 17, 2003 3:22 pm    Post subject: Reply with quote

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
View user's profile Send private message
inv
n00b
n00b


Joined: 13 Nov 2003
Posts: 28

PostPosted: Tue Nov 18, 2003 6:39 am    Post subject: Reply with quote

etcat size <пакет>

Или нужет размер скачиваемых файлов? для этого тоже есть скрипт.
Back to top
View user's profile Send private message
Urs
n00b
n00b


Joined: 25 Aug 2003
Posts: 72
Location: Russia, SPb

PostPosted: Tue Nov 18, 2003 7:26 am    Post subject: Reply with quote

Quote:

для этого тоже есть скрипт.


И какой же? Поделись.
Back to top
View user's profile Send private message
Zoltan
Guru
Guru


Joined: 27 Aug 2003
Posts: 394
Location: Moscow, Russia

PostPosted: Tue Nov 18, 2003 2:37 pm    Post subject: Reply with quote

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
View user's profile Send private message
dio
n00b
n00b


Joined: 12 Nov 2003
Posts: 20
Location: Нижний Новгород

PostPosted: Tue Nov 18, 2003 3:56 pm    Post subject: Reply with quote

Zoltan wrote:
emerge -s показывает size of downloaded files, то есть сколько надо скачать.

но не показывает размер всех зависимостей, emerge -sp ничего не даёт.
P.s. Скрипт от Urs работает хорошо
Back to top
View user's profile Send private message
inv
n00b
n00b


Joined: 13 Nov 2003
Posts: 28

PostPosted: Wed Nov 19, 2003 6:33 am    Post subject: Reply with quote

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
View user's profile Send private message
inv
n00b
n00b


Joined: 13 Nov 2003
Posts: 28

PostPosted: Wed Nov 19, 2003 6:39 am    Post subject: Скрип для выяснения размера и фа Reply with quote

Конечно был случай, когда он не срабатывал, только что там конкретно было - непомню, поэтому если что, то пишите,
если у вас 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
View user's profile Send private message
inv
n00b
n00b


Joined: 13 Nov 2003
Posts: 28

PostPosted: Wed Nov 19, 2003 6:40 am    Post subject: Reply with quote

Блин, в прошлом сообщении забыл ``code'' нажать, sorry, если очень напрягает, то могу ещё раз запостить.
Back to top
View user's profile Send private message
Urs
n00b
n00b


Joined: 25 Aug 2003
Posts: 72
Location: Russia, SPb

PostPosted: Wed Nov 19, 2003 6:44 am    Post subject: Reply with quote

[url]
http://www.gentoo.it/utility/get_size
[/url]

:)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
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