Skocz do zawartości

Plugin Do Yum Pokazujący Prócz Ilości Mb Do ściągnięcia, Ile Program Zajmie Po Instalacji.


Jusko

Rekomendowane odpowiedzi

Witam.

 

Dla mnie przydatna informacja. Używając aptitude strasznie podobało mi się przy ściąganiu programu takie coś:" Do pobrania X MB pakietów. Po instalacji zostanie użyte Xyz MB na dysku". W Yum widzę tylko, ile MB ważą paczki a nie ile miejsca zajmie mi np. k3b za zainstalowaniu. Czy jest plugin pokazujący ile prócz MB paczek do pobrania, zajmie program?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

Mhmm...teraz wszystko jest jasne co do pokazywania ilości MB po zainstalowaniu. Troszeczkę szkoda, ponieważ nie wiadomo nawet, ile dany program zajmuje. Wprawdzie przy obecnych dyskach to nie problem, ale fakt faktem, że nie wiadomo ile program zajmuje jest nieco...dziwne. Pamiętam, jak w 1999 roku udało się kupić dysk 8GB, a trzy lata później musiałem już liczyć MB, ile program mi zajmie i tym podobne operacje, by po prostu jakoś to pomieścić na tym dysku. Dlatego do dziś wolę wiedzieć co i ile mi zajmuje - lubię mieć zwyczajnie kontrolę nad niektórymi rzeczami. Teraz wiem, że w tym przypadku nic z tego - dzięki za info.

Odnośnik do komentarza
Udostępnij na innych stronach

Pakiet RPM nie przechowuje takiej informacji. Panuje bowiem(nie do końca nieuzasadnine) przekonanie techniczne, że rozmiar zainstalowanego programu może być zmienny.

 

no nie wiem. zypper w openSUSE pokazuje rozmiar pakietu i ile zajmuje on po instalacji, a to w koncu tez RPM.

Odnośnik do komentarza
Udostępnij na innych stronach

[...] rozmiar zainstalowanego programu może być zmienny.
Hmmm... Jakoś nie bardzo w to wierzę. Przecież zawartość paczki RPM jest stała, gotowa binarka czy skrypt tylko rozpakowywana. Do tego ew. wykonywane są dodatkowe czynności/skrypty nie mające jak sądzę wpływu na wielkość instalacji (a nawet jeśli tak, to ten wpływ znaczący raczej nie jest).

 

Sprawa oczywiście trochę się komplikuje przy DRPM, chociaż paczka wynikowa też powinna być niezmienna, bo inaczej nie zgodziłby się skrót SHA1 czy SHA256 czy jak tam to jest liczone.

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Może zmienny w tym sensie, że zależny od systemu plików (od wielkości bloku sektorów)? Chociaż w przypadku pakietów powyżej 1MB różnica jest i tak niezauważalna dla użytkownika. Poza tym kompresja jest mała na poziomie 10% i każdy może sobie oszacować na podstawie rozmiaru pakietu ile będzie zajmował po instalacji. Jak dla mnie zbędna informacja.

Odnośnik do komentarza
Udostępnij na innych stronach

* Jakby się uparł, to ilość zajmowanego miejsca zależy od systemu plików i szczegółów ustawień partycji, ale to jakby nie patrzeć detal :rolleyes:

* Trzeba by stworzyć nie tylko plugin do yum, ale też umieścić więcej informacji w samym repozytorium. Dzwoń do developerów, że suse ma a my nie.

* Jakimś rozwiązaniem było by włamywanie się na inne komputery z fedorą i sprawdzanie ile tam te paczki zajmują :D

Odnośnik do komentarza
Udostępnij na innych stronach

A czy ogólnej zajętości po rozpakowaniu nie pokazuje taki plik siedzący w RPM w INFO/SIZE (tak jak to widać z MC) lub po prostu wartość "Size:" w pliku HEADER?

Albo tak bardziej ogólnie nie jest to wartość → rpm -qa --qf %{SIZE} <paczka>

 

sprawdziłem sobie na paczce "brasero".

Instalowanie:
brasero          x86_64          2.26.3-1.fc11          updates          3.4 M

Usuwanie:
brasero                x86_64       2.26.3-1.fc11        installed       9.3 M

[root@F11 ~]# rpm -qa --qf %{SIZE}"\n" brasero
9781344
[root@F11 ~]# bc -l

9781344/1024/1024
9.32821655273437500000

Czyli właśnie owe 9,3MB które yum widzi przy usuwaniu.

 

BTW jak widać kompresja nie zawsze jest ok.10% ;)

 

 

Podsumowując wyciągnięcie tej wartości z paczki jest wg mnie możliwe. Użyteczność tej informacji to już inna sprawa, ale jak ktoś ma mało placu na partycji / czy /usr, to może to być istotne.

 

 

[EDIT]

Widzę, że te wartości siedzą w pliku bazy danych yuma w /var/cache/yum/updates (mówię ciągle o przykładowym "brasero")

[waldo@F11 updates]$ ls -l *sqlite
-rw-r--r-- 1 root root 25930752 12-10 12:52 cc40360885d45a01963957cc95448325d58be0e14707ced20846ff3d8fe073ea-primary.sqlite
[waldo@F11 updates]$ sqlite3 *.sqlite
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select name, size_installed from packages where name = 'brasero';
brasero|9781344

Czyli jak ktoś umie programować a w szczególności robić wtyczki do yuma, to chyba dałby sobie radę z problemem ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Twoje modły zostały wysłuchane :D Podziękuj WalDo, że dostrzegł te dane. Poskładałem to w prościutki skrypt

 

yum-size-of

wystarczy podać nazwę paczki jako argument.

yum-size-of firefox

Skrypt jest prosty, więc błędów nie obsługuje :D

 #!/bin/bash

# yum-size-of - skrypt pokazuje miejsce zajmowane przez paczkę podaną jako argument
# np. 
#  yum-size-of kadu

paczka=${1:-gimp}
mydb="/var/cache/yum/updates/*primary.sqlite"

query(){
     echo "SELECT name, size_package, size_installed, size_archive 
     FROM packages
     WHERE name = '$1'; "
}

sqlite_select(){
     sqlite3 $mydb "$(query $paczka)"
}

SQLITE_SELECT=$(sqlite_select)

SIZE_PACKAGE=$( echo $SQLITE_SELECT | cut -d\| -f2 )
SIZE_PACKAGE_MB=$( echo "scale=3; $SIZE_PACKAGE/1024/1024" | bc -l )

SIZE_INSTALLED=$( echo $SQLITE_SELECT | cut -d\| -f3 )
SIZE_INSTALLED_MB=$( echo "scale=3; $SIZE_INSTALLED/1024/1024" | bc -l )

SIZE_ARCHIVE=$( echo $SQLITE_SELECT | cut -d\| -f3 )
SIZE_ARCHIVE_MB=$( echo "scale=3; $SIZE_ARCHIVE/1024/1024" | bc -l )

# wyświetl ładne wyniki
echo -e "yum-size-of - skrypt pokazuje miejsce zajmowane przez paczkę podaną jako argument"
echo -e "name \t\t= \t" ${SQLITE_SELECT%%|*}
echo -e "size_package \t= \t" $SIZE_PACKAGE_MB MB
echo -e "size_installed \t= \t" $SIZE_INSTALLED_MB MB
echo -e "size_archive \t= \t" $SIZE_ARCHIVE_MB MB

 

[EDIT]

właściwie to może być całkiem przydatne, może to gdzieś na wiki wrzucić ?

 

[EDIT]

właściwie to zapomniałem, że to jest tylko dla jednego repozytorium ustawione aaaaaaaaaaaaaaaaaaaaaaa!!!

Odnośnik do komentarza
Udostępnij na innych stronach

w sumie to już mam :) tylko mi się kolumienki rozjeżdżają, ale tego nie przeskoczę byle czym

wersja 2 - sprawdza każde repo

#!/bin/bash

# yum-size-of - skrypt pokazuje miejsce zajmowane przez paczkę podaną jako argument
paczka=${1:-gimp}

query(){
     echo "SELECT name, size_package, size_installed, size_archive, version, release, arch 
     FROM packages
     WHERE name = '$1'; "
}

sqlite_select(){
     sqlite3 "$mydb" "$(query $paczka)" 
}

show_result(){
     REPO=${mydb##/var/cache/yum/}
     
     VERSION="$( echo $SQLITE_SELECT | cut -d\| -f5 )"
     VERSION+=".$( echo $SQLITE_SELECT | cut -d\| -f6 )"
     VERSION+=".$( echo $SQLITE_SELECT | cut -d\| -f7 )"
     
     SIZE_PACKAGE=$( echo $SQLITE_SELECT | cut -d\| -f2 )
     SIZE_PACKAGE_MB=$( echo "scale=3; $SIZE_PACKAGE/1024/1024" | bc -l )

     SIZE_INSTALLED=$( echo $SQLITE_SELECT | cut -d\| -f3 )
     SIZE_INSTALLED_MB=$( echo "scale=3; $SIZE_INSTALLED/1024/1024" | bc -l )

     SIZE_ARCHIVE=$( echo $SQLITE_SELECT | cut -d\| -f4 )
     SIZE_ARCHIVE_MB=$( echo "scale=3; $SIZE_ARCHIVE/1024/1024" | bc -l )

     # wyświetl ładne wyniki
     echo -e " $SIZE_PACKAGE_MB MB \t| $SIZE_INSTALLED_MB MB \t| $SIZE_ARCHIVE_MB MB \t| ${VERSION} \t( ${REPO%%/*} )"
}

# rezultaty
echo -e "yum-size-of \e[1;31m$paczka\e[0m"
echo -e "--------------------------------------------------------------------------------"    
echo -e " size_package \t| size_installed | size_archive | version ( repo )"
echo -e "--------------------------------------------------------------------------------"    
for mydb in $( find /var/cache/yum/ -type f -name \*primary\*.sqlite ); do
     SQLITE_SELECT=$(sqlite_select)
     if [ "$SQLITE_SELECT" != "" ]; then
         show_result
     fi
done

a na wiki wrzucę za parę dni, jak błędy wyłapie

 

[EDIT]

- korekta w skrypcie (size_archive było równe size_installed :huh: )

Odnośnik do komentarza
Udostępnij na innych stronach

Coraz bardziej podoba mi się to forum :D Fedora w sumie też - nie mam problemów - przynajmniej jeśli chodzi o to wydanie, kto wie co stanie się po upgrade do F13 ;)

 

Może robię coś nie tak. Czego nie chcę sprawdzić, otrzymuję tylko wynik:

 

yum-size-of yum-size-of
--------------------------------------------------------------------------------
size_package     | size_installed | size_archive | version ( repo )
--------------------------------------------------------------------------------

 

I to wszystko.

Odnośnik do komentarza
Udostępnij na innych stronach

a takie rzeczy jak

chmod u+x yum-size-of

wykonałeś

Potem mozesz dodac

cp -f yum-size-of /usr/bin

 

@borzole

Jeżeli mozesz to jeszcze pewnie jakis warunek do obliczania MB bo jak paczka mniej niz 1MB to trochę tak nie ladnie wygląda. wierze że tobie to zajmie 10 min, a mi miesiąc

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...