Apt Peak project[GUI+PPA]

 ( taxy | 2012. március 5., hétfő - 22:53 )

Gyakori jelenség, hogy mikor az ember csomagokat távolít el a rendszerből, kevesebb csomag tűnik el, mint amennyi a telepítéskor települt. Így mindig maradnak használaton kívüli függőségek, melyek sok telepítés után felhalmozódhatnak. Ezzel a programmal ezt lehet morzsolgatni le, ha nyilván tartjuk hogy mire is van szükségünk tulajdonképpen.
Készíthetünk a segítségével olyan csomaglistát mely csak az általunk használt programok csomagneveit tartalmazza. A többi szükségtelen csomag és azok függőségeinek eltávolításához segítséget nyújt.

Apt Peak a GitHub-on

Újdonságok:
-Apt Peak GitHub Wiki: Példa a használatra
-Ubuntu PPA
-GUI

Tároló: ppa:taxy443/ppeak
Csomag: apt-peak-gtk2
Desktop menüben megjelenik.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

grat a projectnek!;)

Köszönöm. :) Végre valami hasznossal töltöttem az időmet, ezek szerint. :)

Mit jelent az alábbi?

PYTHON-APT BUG: apt_pkg.Dependency.TYPE_RECOMMENDS is not equal to 4

Nekem ezt kiírja, de aztán szerintem jól lefut. 506 csomagot ad vissza. (Ubuntu 11.10, apt-pkg.VERSION=0.8.16~exp5ubuntu13.3, apt_pkg.Dependency.TYPE_RECOMMENDS=3)

Nem lehetne feltenni pl. github.com-ra. Én belenyúlnék a kódba, és szerintem jó lenne, ha verziókövetve lenne.

Oké, elkezdtem amúgy nézegetni a github-ot, de egyelőre még nem tudom kezelni. Ígérem időt szakítok majd a megismerésére. SVN-el már dolgoztam, úgyhogy alap szinten nem lesz nehéz.

"Mit jelent az alábbi?"

Azt hogy küldtem egy bugreportot hogy a apt_pkg.Dependency.TYPE_RECOMMENDS változó értéke helytelen, de a bugfix természetesen csak az újabb verzióknál van jelen. Ezért benn hagytam a programban, hogy saját maga által definiált értéket használjon, de figyelmeztessen, ha ez nem egyezik a rendszer által meghatározottal.

Feltettem:
https://github.com/taxy/packet-peak

Szólj ha valamit tehetek még az ügy érdekében.
pl. Vegyelek be a projectbe? Hogyan?

Köszönöm, nem szükséges. Készítettem egy fork-ot, és én azon tudok dolgozni, ha akarok, és ha valami változás történt, akkor küldhetek egy "Pull request"-et. Megnézheted, hogy tetszenek-e a változások, és merge-ölheted a sajátoddal. Pár apró javaslat, bár egyik sem lényegi.

Próbálok hozzászokni a python3-hoz, ezért használni szoktam a

from __future__ import print_function

sort, így sokszor változtatás nélkül lefut python3 alatt is, természetesen, ha a megfelelő modulok azalatt is megvannak. (Nem néztem a python-apt megvan-e python3-ra.)

Én jobban szeretem a reStructuredText formátumot a markdown-nál, mert a python dokumentáció is azt használja, és azzal formázva a docstringeket a pygmentize szép webes dokumentációt tud készíteni azokból. Ezt az oldalt is így készítettem. Ilyenkor rst kiterjesztés kell: README.rst

A readme abszolút hasra ütésszerűen készült, mert a github felajánlotta. :)
Kösz a tippet.

A másik témában írtad, de ide jobban illik a folytatás.

Erre van példa a programban:

    elif pkg.has_provides:
      for provider in pkg.provides_list:
	if is_available(provider[2].parent_pkg):
		deps.add(provider[2].parent_pkg.id)
		dependencies(provider[2].parent_pkg, deps)

Úgy látom, Te az apt_pkg -vel modullal dolgzol, én meg a rá épülő apt modullal. Van valami előnye az előbbinek?

Ez a dolog még itt jött a képbe. Akkor ismerkedtem meg ezzel a könyvtárral, és rájöttem hogy ezzel az alacsonyabb szintű API-val sokkal gyorsabban tudom végigpörgetni az összes csomagot. És úgy rémlik mintha a funkcionalitása is teljesebb lenne, de erre már nem tudnék példát mondani. Úgy éreztem hogy ez a magasabb szintű dolog csak konc a nyakamon, ugyanakkor nem sokat ad hozzá kényelmileg. Viszont bizonyos feladatokhoz lehet ez az ideálisabb.

Off: azt áruld el, miért packet, miért nem package?

Azért mert ezt a nevet adtam a fájlnak mert jól hangzott, aztán később elgondolkodtam ezen, meg is kérdeztem valakit, de nem találtam meggyőző érvet hogy átnevezzem.

De ha már kérdezed, hátha tudod hogy melyiket miért használják.

Nekem erről a névről mindég valami hálózati forgalom vizsgáló ugrik be elsőre.

Ebben van valami, kvantummechanikában a hullámcsomagot hívják így. Ráadásul úgy hangzik, mintha egy ubuntu kiadás neve lenne. :)

Lehetne rövidebben: Pack_peak, és akkor mindegyikre jó. (Amúgy, úgy tudom, a githubon lehet átnevezni tárolót, ha mégsem tetszene a név.)

Üdv, majdnem jo, de nekem ezt mondja futattaskor:

$ ./packet_peak.py 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
List of orphan packages:
Traceback (most recent call last):
  File "./packet_peak.py", line 102, in 
    list_orphans(orphans)
  File "./packet_peak.py", line 85, in list_orphans
    count_pkg_revrecommends(otherpkg, 1) == 0:
  File "./packet_peak.py", line 66, in count_pkg_revrecommends
    dependencies(pkg, deps)
  File "./packet_peak.py", line 51, in dependencies
    count_pkg_revdepends(otherdep.target_pkg, 2) == 1:
  File "./packet_peak.py", line 24, in count_pkg_revdepends
    rev_depends += count_pkg_revdepends(cache[provided[0]], maxcount)
  File "./packet_peak.py", line 24, in count_pkg_revdepends
    rev_depends += count_pkg_revdepends(cache[provided[0]], maxcount)
----------------------ugyanez ^ sokszor, majd:--------------------------
 File "./packet_peak.py", line 14, in count_pkg_revdepends
    if otherdep.parent_pkg.current_ver != None and \
RuntimeError: maximum recursion depth exceeded in cmp
$

Rendszer:
$ cat /etc/issue
Ubuntu 12.04 LTS \n \l

$ dpkg -l | wc -l
1814

$ python --version
Python 2.7.3

Packet Peak verzio: commit 565760f8f71b0cf98405fb71ca4eb098336547c1 (mostani master)

fix committed :)

Tippem szerint az volt a hiba, hogy a virtuális csomagjaid kört alkotnak. ;| Ilyet nem tapasztaltam még máshol.

fix verified :)

most megy jol, kosz

Végül a saját dolgomat nem az apt_pkg, hanem a Pythonosabb, de állítólag még kevésbé kiforrott, apt modullal oldottam meg, valószínűleg nem sokat fogok hozzányúlni a kódodhoz, bár nagyjából átrágtam magam rajta. Remélem azért hasznos lesz, hogy git-tel verzióköveted. Látom, már egy hibajelentés is érkezett és javítódott :-) Sok sikert a projekthez, és kéz- és lábtörést a vizsgaidőszakhoz.

Aminek korábban nem néztem utána: van python3 alá python-apt.

up

A korábbi észrevétellel a csomag félreérthető nevével kapcsolatban tervezel foglalkozni? Illetve hivatalos terjesztésbe nem akarod bevetetni? Szerintem elég hasznos segédeszköz.

A nevet illetően van jobb ötletem. Legyen apt-peak.(egyre inkább zavar hogy az apt szó nincs benne) A két fontos szó benne lenne. Viszont egy átnevezési manőver a PPA-ban érdekes lesz. Metacsomagra kell cserélnem a mostanit. A lényeg hogy ez tetszik, majd megoldom a többit.

Hivatalos terjesztés:De jó lenne, de írták nekem hogy ott elég lassan megy a frissítési mechanizmus, és be kell vallanom, állandóan jönnek még az ötleteim mit lehetne hozzáadni. Kapásból most, hogy a GUI listák frissítése elég béna, ezért ha sok elem van ugrál és lassú. De szerintem már közel járunk a hivatalos terjesztés állapotához. A legnagyobb hiányosság ehhez talán az angol nyelvű dokumentálás.

Ez miben más/jobb, mint az apt-get autoremove?

--

Abban hogy az autoremove nem működik. A probléma a sok körkörös függőségi lánc tekintetében bonyolult. Ha kicsit agresszívebbek akarunk lenni mint az autoremove sok mindenre oda kell figyelni. Nem akarunk az eltávolítással problémát okozni a rendszer működésében, de egy csomag eltávolításánál legalább annyi függőséget el akarunk távolítani mint amennyit telepítettünk, mikor felraktuk a programot. Ha megfigyeled a nagyon vadul összedrótozott függőségi láncokban ez nem teljesül.

Valamint az sem utolsó szempont hogy nyilván tarthatjuk hogy mit telepítettünk. Vagy ha nem mi, hogy mit telepítettek egy gépre, aminek nincs ikonja a menüben. Mindezt nem összehányva a függőségekkel egy listában.

Subscrible. :)

A névváltoztatás megtörtént a PPA-ban is. A packet-peak csomagok frissítés után törölhetők. apt-peak marad.

Következő napirendi pont a dokumentálás/fordítás. Utána megnézem mi a helyzet Debianon. Állítólag oda lehet bekerülni először.