scriptek
Re: scriptek
ez volna a szkript lényege hogy csak olyan fájlok törlődjenek , amik nem kellenek . a szkript átvizsgálja az összes binárisan futtatható fájl függőségeit a saját és beéptett csomag logok alapján, és a csomag törlésénél szüri azokat a függőségeket ami kell vagy épp nem kell a többi csomaghoz. Ez volt a legelső szempont amit felállítottam a "program" kiötlésekor. Nem mellesleg néztem a beépített "csomagokat" és ha megnézed a busybox -ot benne van az összes alap parancs , ebből arra következtetek hogy abszolut lehetséges mindent törölni a rendszerből . persze a te problémád egyedi ... viszont ennek fényében vagy szerkeszteni kell a remaszter programot hogy a telepített program log-okat is tegye be a remaszterbe , vagy manuálisan bemásolni azt , amennyiben a későbbiekben törölni szeretnéd a remaszterből...
Mellesleg azt is néztem hogy a woofpackages lista nem egyezik a builtin könyvtár tartalmával , ezt csak onnan szürtem le hogy kevesebb fájl van a builtin könyvtárban mint a woofpackages sorainak száma ...
Mellesleg azt is néztem hogy a woofpackages lista nem egyezik a builtin könyvtár tartalmával , ezt csak onnan szürtem le hogy kevesebb fájl van a builtin könyvtárban mint a woofpackages sorainak száma ...
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
Mindeközben KuLuSszal egyetértettem abban amit utóbb írt hirtelen fellángolásból közzé tett hozzászolásomhoz. A helyzet nem olyan vészes mint amilyennek látszik, de ha lehet, aki abba a hibába esik mint én, és sok hosszú ősz hajszál tépkedéstől szeretne megmenekülni annak azt javaslom, ha egy remaszterbe új csomagokat telepít amiket később meggondol hogy mégsem tett volna bele, azt lehetőleg ne utólag bányássza ki a puppyból, mert akkor csak a következő félautomata megoldás játszik. Vagy készítsen több változatot és őrizze meg a telepítő csomagokat, mert sosem lehet tudni....
...én se tudtam
Körmöltem egy aprócska szkriptet, amivel létrehozhatunk egy kvázi-adatbázist pl.: jelen esetben a skype csomagról. Mindenek előtt a módszert írnám le:
1.: pfind keresővel indítunk egy rendszerfájlok közti keresést a skype -ra.
2.: a kilistázott találatok alapján megvizsgáljuk mely mappákban szerepel a név
3.: módosítjuk a szkriptet amit lentebb taglalok ha kell, a találatok alapján
4.: futtatjuk a szkriptemet és leellenőrizzük az így kapott fájlt, hogy találatilag stimmelnek e mennyiségek.
5.: pfind keresővel teszünk még egy full keresést is, és átböngésszük minden maradhat e.
6.: ha további mappákban is van találat, pl.: root könyvtárban írjuk be a kapott fájlba elérését.
7.: nevezzük át a kapott fájlt, skype.files -ra.
8.: másoljuk a /root/.packages könyvtárba
9.: ha kész lesz KuLuSz az ő szkriptjével akkor pedig azon futtatása után jelöljük törlésre a már ott szereplő saját csomagot a skype -ot.
Jelenleg KuLuSz általam tesztelt szkriptje könyvtárakat nem, csak fájlokat töröl, így ha megmarad pl.: az /usr/share/skype mappa akkor azt rox filerrel “csendesen” törljük.
A kvázi-adatbázis készítő szkript valahányszor átírandó ha a fent taglalt lépések és csomagok szerint szükséges:
(mentsük el fájlként és terminálból futtassuk)
Frugal módban mentésfájl mellett dolgoztam. Ha lesz remaszter amihez ezt a módszert alkalmazom sikerrel, arról mindenképp írok még, jelenleg az utólagos törlés volt a szempont.
...én se tudtam
Körmöltem egy aprócska szkriptet, amivel létrehozhatunk egy kvázi-adatbázist pl.: jelen esetben a skype csomagról. Mindenek előtt a módszert írnám le:
1.: pfind keresővel indítunk egy rendszerfájlok közti keresést a skype -ra.
2.: a kilistázott találatok alapján megvizsgáljuk mely mappákban szerepel a név
3.: módosítjuk a szkriptet amit lentebb taglalok ha kell, a találatok alapján
4.: futtatjuk a szkriptemet és leellenőrizzük az így kapott fájlt, hogy találatilag stimmelnek e mennyiségek.
5.: pfind keresővel teszünk még egy full keresést is, és átböngésszük minden maradhat e.
6.: ha további mappákban is van találat, pl.: root könyvtárban írjuk be a kapott fájlba elérését.
7.: nevezzük át a kapott fájlt, skype.files -ra.
8.: másoljuk a /root/.packages könyvtárba
9.: ha kész lesz KuLuSz az ő szkriptjével akkor pedig azon futtatása után jelöljük törlésre a már ott szereplő saját csomagot a skype -ot.
Jelenleg KuLuSz általam tesztelt szkriptje könyvtárakat nem, csak fájlokat töröl, így ha megmarad pl.: az /usr/share/skype mappa akkor azt rox filerrel “csendesen” törljük.
A kvázi-adatbázis készítő szkript valahányszor átírandó ha a fent taglalt lépések és csomagok szerint szükséges:
(mentsük el fájlként és terminálból futtassuk)
Kód: Egész kijelölése
#!/bin/sh
echo "Type the name of package, followed by [ENTER]:"
read package
rm /tmp/$package.txt
cd /
rekesz1=$(find /usr -name *"$package"* && find /etc -name *"$package"* && find /bin -name *"$package"* && find /dev -name *"$package"* && find /lib -name *"$package"* && find /opt -name *"$package"* && find /sbin -name *"$package"* && find /selinux -name *"$package"* && find /sys -name *"$package"* && find /var -name *"$package"*)
echo "$rekesz1" >> /tmp/$package.txt
Re: scriptek
No úgy néz ki hogy kész van a szkript , de korán sem biztos hogy tökéletes . Csak úgy tudom ajánlani mint kísérleti verzió. A szkriptről csak annyit hogy : régóta probléma a puppyban a csomagok eltávolítása . Ezen probléma alapján nekiálltam írni 1 szkriptet, ami valószínüleg fényévekkel jobb a mostani "Beépített csomag eltávolító" -nál . A szkriptben tudjuk törölni a "beépített" és a programban úgy nevezett "saját csomag"-jainkat . A saját csomagok azok amiket a felhasználó telepít legyen az pet ,deb vagy akármi... a lényeg hogy a csomag a csomag kezelő által települjön. Mert a szkript ezeknek a csomagoknak vizsgálja és törli a könyvtárait fájljait , már amelyiket szabad. A szkript elviekben ellenörzi a csomagok függőségeit és a szerint különíti el a fájlokat hogy melyik törölhető és melyik nem.
1 kis részlet a program leírásáról a szkriptben:
Na de ennyit a rizsáról. Bárkinek bármilyen bajavan (a szkriptel) , tesenek szólni , vagy kézzel inteni .
Mellesleg próbáltam optimalizálni a sebességét, de egyenlőre minden egyes csomag törlésénél várni kell géptől függően (nálam 48 mp) kb 1-2 percet míg a szkript kilistázza a függőségeket ... eleinte 6 perceket vártam . Gondolkoztam még nagyobb volumenü műveleten is , de ahoz bele kellett volna nyulnom a csomagkezelőbe, vagy ha nem az, akkor még kellett volna a szkript mellé 2 fájllista hogy tudjon mihez viszonyítani a szkript ... de olyan ötlet is volt hogy 1 egész adatbázist csinálna a szkript de azt meg sokallom ide ... viszont akkor valószínüleg sokkal gyorsabb lenne ... na de e-van jelenleg
Mj.: A .tgz kiterjesztést távolítsuk el, azaz nevezzük át a fájlt remove_packages -re, vagy rp -re!
1 kis részlet a program leírásáról a szkriptben:
Nos . A fentiek alapján szerintem nem kell hangsúlyoznom hogy , odafigyelős a dolog , tehát csak olyan ember használja a programot, aki tudja mit csinál. A busybox csomagot ignoráltam,mer ugye "b*szni nem lehet f*sz nélkül" ... hogy szépen fogalmazzak De aki nem értené annak leírom : a busybox-ban van az összes olyan parancs amit a szkript és az egész rendszer használ mindentéren . Tehát ezt vehetjük amolyan fő függőségnek , bár még gondolkoztam azon is hogy a fontosabb dolgokat is kiveszem mint például :X , xorg , gtkdialog és hasonszőrü barátai amit ha eltávolítunk azonnal csak konzol felületünk lesz ...FRUGAL telepített rendszer esetén, csak a saját csomagjaidat tudod fizikailag eltávolítani a mentésfájlodból, a beépített csomagok csak látszólag törlődnek a rendszerből (ezzel nem tudsz helyet felszabadítani a mentésfájlból ). Amennyiben új rendszert (remaster) készítesz vagy FULL azaz teljes telepítésed van, tudod törölni a beépített csomagokat is.
FIGYELEM: A programmal súlyos károkat tehetünk a rendszerben!
Na de ennyit a rizsáról. Bárkinek bármilyen bajavan (a szkriptel) , tesenek szólni , vagy kézzel inteni .
Mellesleg próbáltam optimalizálni a sebességét, de egyenlőre minden egyes csomag törlésénél várni kell géptől függően (nálam 48 mp) kb 1-2 percet míg a szkript kilistázza a függőségeket ... eleinte 6 perceket vártam . Gondolkoztam még nagyobb volumenü műveleten is , de ahoz bele kellett volna nyulnom a csomagkezelőbe, vagy ha nem az, akkor még kellett volna a szkript mellé 2 fájllista hogy tudjon mihez viszonyítani a szkript ... de olyan ötlet is volt hogy 1 egész adatbázist csinálna a szkript de azt meg sokallom ide ... viszont akkor valószínüleg sokkal gyorsabb lenne ... na de e-van jelenleg
Mj.: A .tgz kiterjesztést távolítsuk el, azaz nevezzük át a fájlt remove_packages -re, vagy rp -re!
- Csatolmányok
-
- remove_packages.tgz
- A .tgz kiterjesztést távolítsuk el, azaz nevezzük át a fájlt remove_packages -re , vagy rp -re!
- (6.74 KiB) Letöltve 333 alkalommal.
A hozzászólást 4 alkalommal szerkesztették, utoljára KuLuSz 2017.11.20. 20:09-kor.
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
hupsz , most gondolkozok hogy valamit rosszul írtam benne , majd este kicserélem a csatolmányt .
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
no kicseréltem a szkriptet , mosmá 'elvileg ' okés lesz a dolog
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
Mai napon KuLuSz kollegát megkértem, hogy javítson az eredeti remove_packages beépített és csomageltávolító szkriptjén, amit készséggel megtett. Erről írnék most és arról a módszerről, amivel már ily módon sem törölhető csomagok mégis törlését lehet megoldani arra az esetre, ha már remasztereltünk a rendszerbe már elavult vagy felesleges helyfoglaló csomagokat újragondolt formában (ez arra az esetre is érvényes, ha új remasztert készítünk a meglévőből és a feleslegessé vált csomagoktól megszabadulnánk):
Példának okáért az elsőként felhízlalt NOS-LX7 remaszteremre gondolok ahol pl.: a skype is így járt. Elavult, nem kell de benne van, ehhez konkrét példa:
1.: pfind keresővel indítunk egy rendszerfájlok közti keresést pl.: a skype -ra.
2.: a kilistázott találatok alapján megvizsgáljuk mely mappákban szerepel a név
3.: módosítjuk a szkriptet amit lentebb taglalok ha kell, a találatok alapján
4.: futtatjuk a szkriptemet és leellenőrizzük az így kapott fájlt, hogy találatilag stimmelnek e mennyiségek.
5.: pfind keresővel teszünk még egy ellenőrző keresést is, és átböngésszük minden maradhat e.
6.: ha további mappákban is van találat, pl.: root könyvtárban írjuk be a kapott fájlba elérését vagy módosítsuk a szkriptet, hogy ott is keressen.
7.: KuLuSz szkriptjével pedig azon futtatása után jelöljük törlésre a már ott szereplő saját csomagot a skype -ot.
példaszkriptem módosítva a skype csomaghoz:
nocsak_skype_remover.sh
A nocsak_skype_remover.sh működése:
Terminált nyitunk a szkript elérési útvonalába, majd futtatjuk abból. Elsőre megkérdi milyen csomag nevével szeretnénk fájlokat keresni, beírjuk, majd ha ezzel a csomagnévvel ő találkozik a /root/.packages/ útvonalon akkor figyelmeztet, hogy már van ott ilyen adatbázis fájl, ha nem talál akkor létrehoz.
Ha KuLuSznak elérhetővé válik a fórum, vélhetően közzé teszi a javított friss csomageltávolítóját.
Megjegyzés:
A jövőben inkább már csak csomagok készítésével bővítem a készletet, remasztert épp ebből az okból kifolyólag nem biztos, hogy készítek. Én legalábbis nem minden esetben dolgozom időtálló alkalmazásokkal például a böngészőt és egyéb kommunikációs alkalmazást vagy irodai csomagot is ideértve. Ahogy a világ is változik én ezt a csomagok készítésével látom értelmét bővíteni. Azok telepíthetők eltávolíthatók ugyanúgy begyűjthetők és archiválhatók.
Példának okáért az elsőként felhízlalt NOS-LX7 remaszteremre gondolok ahol pl.: a skype is így járt. Elavult, nem kell de benne van, ehhez konkrét példa:
1.: pfind keresővel indítunk egy rendszerfájlok közti keresést pl.: a skype -ra.
2.: a kilistázott találatok alapján megvizsgáljuk mely mappákban szerepel a név
3.: módosítjuk a szkriptet amit lentebb taglalok ha kell, a találatok alapján
4.: futtatjuk a szkriptemet és leellenőrizzük az így kapott fájlt, hogy találatilag stimmelnek e mennyiségek.
5.: pfind keresővel teszünk még egy ellenőrző keresést is, és átböngésszük minden maradhat e.
6.: ha további mappákban is van találat, pl.: root könyvtárban írjuk be a kapott fájlba elérését vagy módosítsuk a szkriptet, hogy ott is keressen.
7.: KuLuSz szkriptjével pedig azon futtatása után jelöljük törlésre a már ott szereplő saját csomagot a skype -ot.
példaszkriptem módosítva a skype csomaghoz:
nocsak_skype_remover.sh
Kód: Egész kijelölése
#!/bin/sh
echo "Type the name of package, followed by [ENTER]:"
read package
if [ ! -f /root/.packages/$package.files ];then
cd /
rekesz1=$(find /usr -name *"$package"* && find /etc -name *"$package"*)
echo "$rekesz1" >> /root/.packages/$package.files
else
echo "Already there is $package.files in /root/.packages/"
fi
Terminált nyitunk a szkript elérési útvonalába, majd futtatjuk abból. Elsőre megkérdi milyen csomag nevével szeretnénk fájlokat keresni, beírjuk, majd ha ezzel a csomagnévvel ő találkozik a /root/.packages/ útvonalon akkor figyelmeztet, hogy már van ott ilyen adatbázis fájl, ha nem talál akkor létrehoz.
Ha KuLuSznak elérhetővé válik a fórum, vélhetően közzé teszi a javított friss csomageltávolítóját.
Megjegyzés:
A jövőben inkább már csak csomagok készítésével bővítem a készletet, remasztert épp ebből az okból kifolyólag nem biztos, hogy készítek. Én legalábbis nem minden esetben dolgozom időtálló alkalmazásokkal például a böngészőt és egyéb kommunikációs alkalmazást vagy irodai csomagot is ideértve. Ahogy a világ is változik én ezt a csomagok készítésével látom értelmét bővíteni. Azok telepíthetők eltávolíthatók ugyanúgy begyűjthetők és archiválhatók.
Re: scriptek
No kicseréltem a fentebb található "csomagot/fájlt" , lehet töltögetni , akár ide kattintva is . A probléma leírása amit nekem jelzett nocsak , az volt hogy , a szkriptben beállítottam azt a funkciót/feltételt, hogy ha található .desktop fájl a csomagban akkor frissítse a menüt , igenám csakhogy amikor írtam a szkriptet én fikarcnyit se törődtem azzal (nem is gondoltam erre) hogy 1 csomagban lehet több desktop fájl is , ezért amikor nocsak törölt 1 olyan csomagot ahol volt 8-10 db .desktop fájl is , akkor a szkript elindította 10x a menüfrissítést , és kb hazavágta a mentésfájlt (bár erről, inkább ő tudna mesélni) . Szóval ez a probléma lett javítva , mostmár csak 1x fut le minden eggyes csomag törlése után . ha van .desktop fájl ( melynek száma végtelen is lehet )
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
Arra gondoltam, hogy tovább írom a szkriptet a sebesség végett. Beleírnék pár cuccot meg az eddig eldobott tmp fájlokból megtartanék egyet , és létre hoznék még 1 fájlt . Ami alapján a szkript érzékelné ha új csomag települt és csak akkor futtatná le a függőség kiíratást (na meg persze első indításnál) . Ez azért kellene ,mert így még mindig független lenne a csomagkezelőtől a szkript. Viszont akkor ezeket a fájlokat meg kellene tartani valahol a rendszerben . Persze akkor már csinálnék neki menü bejegyzést is , meg külön könyvtárat , és betenném csomagba .
Kérdésem annyi hogy megéri-e szöszölni vele nekem ?
Van-e igény a sebesség javításra vagy nincs ?
Kérdésem annyi hogy megéri-e szöszölni vele nekem ?
Van-e igény a sebesség javításra vagy nincs ?
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
no teleírtam kommenttel az egész szkriptet hátha segít valakinek a programozásban valamicskét
a kommentek a # jel után olvashatók , előttük maga a parancs halmaz
Amikor if -el kezdődő sort láttok az 1 feltétel ami a fi -vel záródik be ...
ha for -al kezdődő sort láttok, az 1 ismétlődő feladat, mindaddig tart míg a bemenetén van érték , amikor nincs érték , a done -al bezáródik a metódus.
a folyamatok oszloposan el vannak különítve egymástól hogy , jól látható legyen melyiknek hol a vége .
a kommentek a # jel után olvashatók , előttük maga a parancs halmaz
Kód: Egész kijelölése
#!/bin/sh
# Made by KuLuSz at y2017 m06 d11
# for correct remove used librarys in own and based pkgs...
if [ ! -f /tmp/installed_pkg_list ];then # ha nem létezik a /tmp/installed_pkg_list fájl akkor ...
for i in `ls /root/.packages | grep '\.files$'` # .files fájlok listázása
do
PKGS=$(basename "$i" | sed 's/.files//') # sztring a beillesztéshez > fájlok átnevezése , kit. eltávolítás
echo "<item>$PKGS|Saját csomag</item>" >> /tmp/installed_pkg_list # lista elem létrehozása a csomag nevével a fenti sztringet beillesztve
done
for i in `ls /root/.packages/builtin_files` # builtin_files fájlok listázása
do
[ "$i" != "busybox" ] && echo "<item>$i|Beépített csomag</item>" >> /tmp/installed_pkg_list # feltétel a busybox eltüntetéséhez, lista elem létrehozása
done
INSTALLEDPKGS=$(cat /tmp/installed_pkg_list) # sztring beállítása a GUI felé , a fenti kész lista alapján
else
INSTALLEDPKGS=$(cat /tmp/installed_pkg_list) # sztring beállítása a GUI felé , a már meglevő lista alapján
fi
function lister (){ # funkció egy egyedi szkripten belüli parancs megadásával (lister)
for PKG in $(ls /root/.packages/ | grep '\.files$') # .files fájlok lista olvasása soronként
do
for x in $(cat /root/.packages/"$PKG") # 1 .files fájl olvasása soronként
do
if [ -x "$x" ];then # feltétel , ha a sorban futtatható fájl szerepel akkor...
SEND=$(file "$x" | grep 'executable,' | cut -f1 -d':') # sztring a beillesztéshez , szűri a szkripteket
if [ ! -z "$SEND" ];then # ha a sztring értéke nem semmi, akkor ...
for dep in $(ldd "$SEND" | cut -f3 -d' ') # futtatható fájl függőségeinek kiolvasása soronként
do
[ ! "$dep" = "not" -a ! "$dep" = "dynamic" ] && echo "$dep" >> /tmp/installed_pkg_dep_list # hamis értékek eltüntetése a listából, függőség kiírása a /tmp/installed_pkg_dep_list fájlba
done
fi
fi
done
done
for PKG in $(ls /root/.packages/builtin_files/) # builtin_files fájlok lista olvasása soronként
do
for x in $(cat /root/.packages/builtin_files/"$PKG") # builtin_files fájl olvasása soronként
do
if [ -d "$x" ];then # ha a sorban könyvtár szerepel,akkor...
DIR=$x # sztring létrehozása a könyvtárból , a fájlhoz
else
if [ -x "$DIR/$x" ];then # a fentebbi sztring használata , hogy megtudjuk a fájl futtatható-e
SEND=$(file $DIR/$x | grep 'executable,' | cut -f1 -d':') # sztring a beillesztéshez , szűri a szkripteket
if [ ! -z "$SEND" ];then # ha a sztring értéke nem semmi, akkor ...
for dep in $(ldd "$SEND" | cut -f3 -d' ') # futtatható fájl függőségeinek kiolvasása soronként
do
[ ! "$dep" = "not" -a ! "$dep" = "dynamic" ] && echo "$dep" >> /tmp/installed_pkg_dep_list # hamis értékek eltüntetése a listából, függőség kiírása a /tmp/installed_pkg_dep_list fájlba
done
fi
fi
fi
done
done
}
lister & # a lister parancs elindítása szkripten kívül
PID0=$! # a lister parancs pid-jének megjegyzése sztringben
export MAIN_DIALOG="
<window title=\"Csomag eltávolító\">
<vbox>
<text><label>Az alábbi listában találod az általad, és a fejlesztő által telepített csomagokat. FRUGAL telepített rendszer esetén, csak a saját csomagjaidat tudod fizikailag eltávolítani a mentésfájlodból, a beépített csomagok csak látszólag törlődnek a rendszerből (ezzel nem tudsz helyet felszabadítani a mentésfájlból ). Amennyiben új rendszert (remaster) készítesz vagy FULL azaz teljes telepítésed van, tudod törölni a beépített csomagokat is.</label></text>
<text><label>Megjegyzés: Az általad telepített csomagokat a lista tetején találod (Saját csomag)-ként kategorizálva.</label></text>
<text><label>FIGYELEM: A programmal súlyos károkat tehetünk a rendszerben!</label></text>
<table><width>340</width><height>150</height><variable>LIST</variable><label>Csomag neve |Kitől</label> ${INSTALLEDPKGS}</table>
<hbox>
<button><input file stock=\"gtk-remove\"></input><label>Csomag törlése</label></button>
<button><input file stock=\"gtk-quit\"></input><label>Kilépés</label></button>
</hbox>
</vbox>
</window>
"
RETSTUFF="$(gtkdialog --program=MAIN_DIALOG --center)" # a gtk gui értékének kinyerése a retstuff sztringgel
eval "$RETSTUFF" # a sztring értékének exportálása , hogy a szkript is olvasni tudja
if [ "$EXIT" = "Csomag törlése" ];then # feltétel , ha a kapott érték csomag törlése (gomb), akkor...
export MAIN_DIALOG2="
<window title=\"Csomag eltávolító\">
<vbox>
<text><label>Biztosan törölni szeretnéd a kiválasztott</label></text>
<text><label>${LIST} csomagot?</label></text>
<hbox homogeneous=\"true\">
<button><input file stock=\"gtk-clear\"></input><label>Igen</label></button>
<button><input file stock=\"gtk-redo\"></input><label>Nem</label></button>
</hbox>
</vbox>
</window>
"
RETSTUFF2="$(gtkdialog --program=MAIN_DIALOG2 --center)" # a gtk gui értékének kinyerése a retstuff2 sztringgel
eval "$RETSTUFF2" # a sztring értékének exportálása , hogy a szkript is olvasni tudja
if [ "$EXIT" = "Igen" ];then # feltétel , ha a kapott érték igen (gomb), akkor...
yaf-splash -close never -icon /usr/local/lib/X11/pixmaps/info.xpm -text "Függőségek kilistázása/szűrése. (Eltarthat egy ideig. kb 1-2 perc)" & # felugró üzenet
PID1=$! # a felugró üzenet pid-jének megjegyzése sztringben
wait $PID0 # megvárja a már korábban elindított lister parancs végét
kill $PID1 # kilép a felugró üzenetből
yaf-splash -close never -icon /usr/local/lib/X11/pixmaps/info.xpm -text "Fájlok és könyvtárak törlése a rendszerből." & # felugró üzenet 2
PID2=$! # a felugró üzenet 2 pid-jének megjegyzése sztringben
DESKTOP_FILE="" # sztring a menüfrissítéshez , az értéke semmi marad ha nincs desktop fájl
if [ "$(cat /tmp/installed_pkg_list | grep $LIST | cut -f2 -d'|' | cut -f1 -d'<' )" = "Saját csomag" ];then # feltétel , ha a kiválasztott elem saját csomag, akkor...
for x in $(cat /root/.packages/$LIST.files) # a listában kiválasztott saját csomag fájl olvasása soronként
do
if [ -L $x ];then # ha a sor 1 link, akkor...
if [ ! $(cat /tmp/installed_pkg_dep_list | grep '$x' | grep -c -m 2 -v '$x[.-_]') -gt "1" ];then # lista átnézése ha nincs több mint 1, akkor...
rm -rf $x # fájl törlése
fi
else
if [ -f $x ];then # ha a sor 1 fájl,akkor ...
SO=$(basename "$x" | cut -f1 -d".") # string létrehozása , kiterjesztés eltávolítása
if [ ! "$(cat /tmp/installed_pkg_dep_list | grep -c -m 2 "$SO")" -gt "1" ];then # a fenti sztring fájl ellenőrzése a listában, ha nincs több mint 1,akkor...
[ $(echo "$x" | grep "\.desktop$") ] && DESKTOP_FILE="1" # ha a fájl egy desktop fájl , akkor a sztring értéket kap , hogy fusson a menü frissítés később
rm -rf $x # fájl törlése
fi
fi
fi
done
for x in $(tac /root/.packages/$LIST.files) # a kiválasztott saját csomag fájl visszafele olvasása
do
if [ -d $x ];then # ha a sor 1 könyvtár,akkor...
SPACE=$(echo "$x" | sed 's/ /\\ /') # sztring a szóközös könyvtárak megbuherálásához
rmdir $SPACE 2>/dev/null # törli a könyvtárat, ha üres
fi
done
grep -v "$LIST" /root/.packages/user-installed-packages > /tmp/user-installed-packages-cut2 # a csomag eltávolítása a /root/.packages/user-installed-packages listából
mv -f /tmp/user-installed-packages-cut2 /root/.packages/user-installed-packages # az új lista beillesztése a rendszerbe
rm -rf /root/.packages/$LIST.files # a kiválasztott csomag log fájljának eltávolítása
elif [ "$(cat /tmp/installed_pkg_list | grep $LIST | cut -f2 -d'|' | cut -f1 -d'<' )" = "Beépített csomag" ];then # feltétel , ha a kiválasztott elem beépített csomag, akkor...
for x in $(cat /root/.packages/builtin_files/$LIST) # a listában kiválasztott beépített csomag fájl olvasása soronként
do
if [ -d $x ];then # ha a sor könyvtár,akkor...
DIR="$x" # sztring létrehozása a könyvtárból , a fájlhoz
else
if [ -L $DIR/$x ];then # ha a sor 1 link, akkor...
if [ ! $(cat /tmp/installed_pkg_dep_list | grep '$DIR/$x' | grep -c -m 2 -v '$DIR/$x[.-_]') -gt "1" ];then # lista átnézése ha nincs több mint 1, akkor...
rm -rf $DIR/$x # fájl törlése
fi
else
if [ -f $DIR/$x ];then # ha a sor 1 fájl,akkor ...
SO=$(basename "$DIR/$x" | cut -f1 -d".") # string létrehozása , kiterjesztés eltávolítása
if [ ! "$(cat /tmp/installed_pkg_dep_list | grep -c -m 2 "$SO")" -gt "1" ];then # a fenti sztring fájl ellenőrzése a listában, ha nincs több mint 1,akkor...
[ $(echo "$DIR/$x" | grep "\.desktop$") ] && DESKTOP_FILE="1" # ha a fájl egy desktop fájl , akkor a sztring értéket kap , hogy fusson a menü frissítés később
rm -rf $DIR/$x # fájl törlése
fi
fi
fi
fi
done
for x in `tac /root/.packages/builtin_files/$LIST` # a kiválasztott beépített csomag fájl visszafele olvasása
do
if [ -d "$x" ];then # ha a sor 1 könyvtár akkor...
SPACE=$(echo "$x" | sed 's/ /\\ /') # sztring a szóközös könyvtárak megbuherálásához
rmdir $SPACE 2>/dev/null # törli a könyvtárat, ha üres
fi
done
grep -v "$LIST" /root/.packages/woof-installed-packages > /tmp/woof-installed-packages-cut2 # a csomag eltávolítása a /root/.packages/woof-installed-packages listából
mv -f /tmp/woof-installed-packages-cut2 /root/.packages/woof-installed-packages # az új lista beillesztése a rendszerbe
rm /root/.packages/builtin_files/$LIST # a kiválasztott csomag log fájljának eltávolítása
fi
rm /tmp/installed_pkg_list # a felhasznált csomag fájllista törlése
rm /tmp/installed_pkg_dep_list # a felhasznált függőség lista törlése
kill $PID2 # felugró üzi 2 bezárása
export MAIN_DIALOG3="
<window title=\"Csomag eltávolító\">
<vbox>
<text><label>A(z) ${LIST} csomag el lett távolítva a fájlrendszerből.</label></text>
<hbox homogeneous=\"true\">
<button><input file stock=\"gtk-redo\"></input><label>Másik csomag törlése</label></button>
<button><input file stock=\"gtk-quit\"></input><label>Kilépés</label></button>
</hbox>
</vbox>
</window>"
RETSTUFF3="$(gtkdialog --program=MAIN_DIALOG3 --center)" # a GUI értékének kinyerése
eval "$RETSTUFF3" # a retstuff3 értékek exportálása a szkript számára
if [ "$EXIT" = "Kilépés" ];then # ha a kimeneti érték "kilépés", akkor...
[ ! -z $DESKTOP_FILE ] && fixmenus & # ha a desktop_file sztring értéke nem semmi akkor , menüfrissítés
exit # kilépés a programból
else
[ ! -z $DESKTOP_FILE ] && fixmenus & # ha a desktop_file sztring értéke nem semmi akkor , menüfrissítés
"$0" && exit # szkript újraindítása
fi
else
"$0" && exit # szkript újraindítása
fi
else
rm /tmp/installed_pkg_list # a felhasznált csomag fájllista törlése
rm /tmp/installed_pkg_dep_list # a felhasznált függőség lista törlése
exit
fi
ha for -al kezdődő sort láttok, az 1 ismétlődő feladat, mindaddig tart míg a bemenetén van érték , amikor nincs érték , a done -al bezáródik a metódus.
a folyamatok oszloposan el vannak különítve egymástól hogy , jól látható legyen melyiknek hol a vége .
A hozzászólást 2 alkalommal szerkesztették, utoljára KuLuSz 2017.11.05. 16:16-kor.
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube
Re: scriptek
Én értékelem a fáradozásod és köszönöm, hogy közzé tetted így a szkriptet! Jó módszer egy éles példa magyarázata, mintsem ha valaki kapásból elküld az alapokhoz. Persze az esetemben nem ismeretlen a téma, láttam én már shell szkriptet jó sok évvel ezelőtt is, de a motiváció mellett a te interaktív segítségeddel jutottam el a jelenlegi szintre. Továbbá jó módszer, ha a már mögöttünk hagyott szkripteket archiváljuk, mivel azokhoz ismétlés emlékeztetés céljából mindig támpontként vissza lehet nyúlni és emlékzeni fogunk hogy mit miért úgy csináltunk ahogy.