gjuhasz írta:NTamas írta:minden telepítéshez kéne egy külön file még???
Nem kell. A pet csomagok telepítésekor a Puppy linuxok automatikusan készítenek egy fájl-listát a
/root/.packages mappában.
Az uninstall során az általam módosított
removepreview.sh szkript (ami mindegyik puppyban ott van, gyakorlatilag csak egy sort javítottam/bővítettem ki) ezt a listát használja fel a csomag törléséhez.
Ha jól sejtem, akkor Nálad a /usr/local/petget/removepreview.sh 100. sorának környékén ez található:
...amit kell átírni a következőre:
Kód: Egész kijelölése
vajonkelle="$ONESPEC"; [ ! `grep $vajonkelle /root/.packages -R | grep ".files" | grep -v "${DB_pkgname}"` ] && rm -f "$ONESPEC"
gjuhasz
A programok a /root /packages mappában a telepítendő program nevével megegyező szövegfilében tárolják a telepítendő csomagból a gépre feltelepített fájlokat, azok könyvtárszerkezetével együtt. Ez eddig is tiszta volt számomra, és ok is! DE!
Ha a telepítendő program tartalmaz külső, külön telepítendő függőséget is kíván maga alá, ez utóbbi már nincs ebben az említett feltelepített programnévvel megegyező .packages-ben lévő szövegfilében felsorolva, az külön annak a függőségnek a feltelepítésekor, egy, a telepített függőség nevével ellátott filében van leírva, ha jól emlékszem.
Ezért is írtam a második file meglétét, erre akartam célozni vele.(közös programlista!) Bocs, ha nem jól fejeztem ki magam, nem vagyok képzett programozó.
És ha jól vettem ki, a te megoldásod gyakorlatilag a feltelepített program .packages-beli csomaglistáját greppeli ki, és hasonlítja össze a már feltelepített csomag adatbázisával, de mi van a programhoz szükséges, és ahhoz feltelepített függőségekkel? Akkor végül végül is mégis csak kell egy második(vagy több) fájl is, amiben a feltelepített függőségek vannak beleírva, nyilvántartva, továbbá ezt a gépre feltelepített függőséglistákat kell (vagy ezt is teszi az általad beírt kiegészítés-részlet?) összehasonlítani az egyes programok törlésekor, és azokban a közös függőségeket nem, de az eltérőeket már elvileg törölhetné, de azoknak a törlésére is a felhasználótól engedélyt kellene kérnie a csomagkezelőnek. Nagy kérdés az az, hogy a felhasználó ekkor hogyan-miből fogja tudni eldönteni azt, hogy neki melyik közös programcsomagra, illetve azokban meglévő, eltérő nevű, ezáltal elvileg már törölhető fájlokra van egyáltalán még szüksége a későbbiekben? Ezt még a képzett Linux bűvészek sem tuják mindig fejből megmondani, hát még egy abszolút kezdő Puppy-s felhasználó. Mert az odáig oké, hogy az azonos nevű függőségi filéket nem engedi törölni, (vagy a felhasználói engedélyhez köti annak a kitörlését) de az eltérő nevű, és a függőséghez eleve még hozzátartozó, telepített egyéb filékel mi lesz? Mert, ha ezeket viszont kitörli, akkor meg ezért nem fog elindulni az a program, amihez ezek az eltérő nevű csomagban lévő filék hozzátartoznak. Ha viszont a kiegészítésed egy komplett függőségi csomagra vonatkozik, és nem csak a függőségi programban lévő azonos filenevű fájlokra, akkor rendben lévőnek tűnik a csomagkezelőben tett módosításod.
Te írtad fentebb:
... Az egyik ilyen gond az, hogy ha utólag installálunk két (vagy több) olyan pet csomagot, amelyek ugyanott ugyanolyan nevű közös fájlt tartalmaznak (legtöbbször az /usr/lib mappában), akkor bármelyik csomagnak a törlésekor ez a közös fájl is törlődik. Innentől a többi csomag sem indul el, vagy hibásan működik. ...
Nos, az a több csomag által is feltett, közös csomaglista ha mindig ugyanazt a közös programot, függőséget tartalmazza, van ilyen, akkor az adott közös programfilét a feltelepített utolsó program esetleges eltávolítása esetében a csomagkezelő sajnos valóban letörli, ez a szomorú tapasztalat.
Viszont már láttam olyat is, hogy a példádban az azonos nevű, közös függőség filéire mutató szimlinkek nem ugyanolyan nevűek voltak, noha a szimlinkek hivatkozása végül is mindig ugyanarra az egy fontos filére mutat. Ez egy okosabb név választási megoldás, ha én ezt jól láttam, és jól értelmeztem, hogy arra a közös filére, ami mondjuk a példa kedvéért legyen egy python.lib nevű fontos file, -amit nem kéne kitörölni, mert az eleve egy elsőnek telepített programhoz tartozna, mert az telepítette fel először a gépre- nos, erre a fontos filére egy python.so, vagy python.so.0, vagy python so.0.1 nevű szimlinkel hívatkoznak a másodikként(harmadikként) feltelepített programban, és csak a hozzá vezető szimlink fájl van a második(harmadik) program telepítési listájában, és maga a fontos file eleve viszont már nincs is benne a második(harmadik) program telepítőjének a filelistájában, de azoknak a függőségi követelményeiben már igen! - ott már szerepel,(lásd az egyes pet csomag leírásában, a deb-es telepítők controll filéjében, már, ha ezt a program készítője eleve következetesen beleírta, és nem hagyta el) így jó esetben csak ez az utóbbi, a másodikként(harmadikként) települt és említett másnevű szimlink file törlődik ki csak a második(harmadik) program esetleges eltávolítása esetén, így maga az elsőre feltelepített fontos file, és az ahhoz vezető eredeti, első szimlink (az original nevű) file már nem./nem biztos, hogy így van, én így értelmeztem, de lehet, hogy rosszul látom, és közelítem meg a kérdést./