Függőségek másolása

Programozás, programnyelvek, kiegészítők, alkalmazások, programnyelvek, programfejlesztéssel kapcsolatos témák, közvetlenül a programozással összefüggő kérdések
Avatar
S-kami
Adminisztrátor
Hozzászólások: 1089
Csatlakozott: 2014.04.16. 12:54
Kapcsolat:

Függőségek másolása

Hozzászólás Szerző: S-kami »

Nemrég szükségem volt rá, így mintegy magamnak is elmentve leírom, hátha pont kapóra jön valakinek.

Ki kellett mentenem egy program függőségeit - a lib fájlokat:

Kód: Egész kijelölése

ldd fájlnév | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /célkönyvtár
A fájlnév nálam mindig teljes path, például :
/usr/local/bin/mc
Puppy linux ! Mert megérdemlem !
Gyertek fel a csetre ! Katt ide a csevegéshez: https://discord.gg/9pm6rTfG5s

Avatar
KuLuSz
Adminisztrátor
Hozzászólások: 606
Csatlakozott: 2014.06.17. 21:19

Re: Függőségek másolása

Hozzászólás Szerző: KuLuSz »

ebből lehetne akár 1 függőség vadász szkriptet is írni :)
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube

NTamas
Hozzászólások: 1872
Csatlakozott: 2014.06.19. 13:36

Re: Függőségek másolása

Hozzászólás Szerző: NTamas »

S-kami írta:Nemrég szükségem volt rá, így mintegy magamnak is elmentve leírom, hátha pont kapóra jön valakinek.

Ki kellett mentenem egy program függőségeit - a lib fájlokat:

Kód: Egész kijelölése

ldd fájlnév | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /célkönyvtár
A fájlnév nálam mindig teljes path, például :
/usr/local/bin/mc
Köszi szépen, hogy megosztottad a scrip-et!!!

Ezzel csak egy gondom van, én nem vagyok programozó, sem linux guru, csak egy puppy linux-ot kedvelő amatőr felhasználónak mondott egyén, aki igaz, már több, mint két év óta csak puppy-t használ fő rendszerként mellette néha azért még elindítja a windows-t is, ha kellhet netán.
Szóval, -bár nem vagyok programozó- de ennyi idő után azért már úgy kezdem sejteni, hogy egyes állományokat, -úgy a rendszerhez tartozó /lib könyvtárban lévőket, és az egyes programokhoz tartozó /usr/lib könyvtárba kerülőket hol is kell keresni, illetve az utóbbiakat hova kell pótolni, ha netán hiányoznak, lásd a függőségi lib-ek hiányának a problémakörét.
Viszont ez a script sajnos nem úgy menti ki a szükséges libeket, ahogyan azok a rendszerben helyet foglalnak hanem a célkönyvtárban egy kupacba, ún. mindent egybe jelleggel!
/tudom, illetve sejtem csak, hogy ez a script egy gyors mentési művelet miatt jött létre, ahhoz oké is, de talán a végeredményként kimentett lib-ek megtarthatnák az eredeti könyvtárszerkezet szerinti helyzetüket, úgy talán még könnyebben menne a visszaállításuk is./

Lásd ezt a példát.

ldd /usr/bin/audacious | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' /root/libelmentes

Kép

Az audacious program engem már sokszor megviccelt, egyes puppy verziókra bizonyos audacious programverziók nem, vagy csak nagy nehezen, kínlódva mentek fel, még az általam favorizált, precise 571 lite linux-ra is. Most nem a csomagkezelőből telepített/telepíthető verzióra értem ezt ott természetesen megkapom a program mellé a kellő függőségeket és azok a megfelelő helyre fel is települnek. Hanem, ha kézzel akarok egy frissebb verziót feltenni ebből a programból, akár egy audacious-486-os típusként, akár egy audacious-686-os típusként, ezek eltérő függőségi igénnyel lépne fel azokat nekem kel összevadásznom, és a rendszerbe illesztenem kézzel, a megfelelő helyre, ha van a függőségi lib-ehez mellékelt telepítési infó, ez általában sikerül is, és a lib-ek a megfelelő helyre kerülnek bemásolásra, így, ha mindent jól csináltam, a program hajlandó lesz elindulni, de néha még így is gondom volt vele, mert például egyes audacious verzió, amikben gyárilag pl. nem szerepelt az mp3 lejátszáshoz szükséges 123mpeg.pet, mert a program készítő úgy vélte ez eleve egy rendszerben már benne van, holott volt olyan puppy verzió, amiben ez pl. nem szerepelt, és az audacious-t feltelepítve -meg a függőségeit is- majd a programot elindítva, és egy mp3 fájl lejátszást elindítva az audacious program egyszerűen bezáródott, kilépett! És nagyon nehezen jöttem rá arra, hogy az említett 123mpeg.pet kell neki, azt feltelepítve ezután a program már működött is. És a legszebb az egészben az, hogy az audacious program -annak, amit éppen utólag akartam telepíteni, illetve a régi verziót törölve frissíteni- nos, annak a függőség igényében ez az állomány nem szerepelt! Gondolom, a program készítő úgy vélte, ezen álomány eleve már adott a puppy verzióban, hát egyes verziókban nem. Ha pedig, a telepítendő audacious program fő, bin fájljának a függőségi igényét megnézem, (jobb egérgomb a Rox-ban) ezt kapom:
-------------------------------------------------------------------------------
### Dependencies ###
-------------------------------------------------------------------------------

Unused direct dependencies:
linux-gate.so.1
/usr/lib/libaudcore.so.1
/usr/lib/libaudgui.so.1
/usr/lib/libaudtag.so.1
/usr/lib/libaudclient.so.2
/lib/libm.so.6
/usr/lib/libSM.so.6
/usr/lib/libICE.so.6
/lib/libglib-2.0.so.0
/usr/lib/libgthread-2.0.so.0
/usr/lib/libgtk-3.so.0
/usr/lib/libgdk-3.so.0
/usr/lib/libgdk_pixbuf-2.0.so.0
/usr/lib/libgobject-2.0.so.0
/usr/lib/libdbus-glib-1.so.2
/lib/libdbus-1.so.3
/lib/libpthread.so.0
/usr/lib/libguess.so.1


-------------------------------------------------------------------------------
### ! ! ! End of Information ! ! ! ###
-------------------------------------------------------------------------------
tehát az 123mpeg hiánya itt nem szerepel, pedig ehhez az is kell ám! Továbbá, még ott vannak a programhoz kellő, egyéb codec ib-ek is, mert ez sem jellemző, hogy minden puppy verzióban benne lennéne alapból, sajnos!
Na mindegy, valahogy összehoztuk-telepítettük a rendszerre a programot, és ugye jó lenne a függőségi lib-eket kimenteni, hátha kellenének később még netán. Oké, itt jön jól a Skami féle script, kimenti nekünk, igaz egy kupacba (a célkönyvtárba!) teszi mindegyik lib-et! Ez annak, aki tudja fejből, mi hova való, annak ez nem gond!
De mindenki másnak igen! Ja, és ebben a lib-mentésben sem szerepel(nek) ám a programhoz szükséges 123mpeg csomagban lévő függőség fájl(ok), sem a klf. codec-lib filék sem!
Talán ezt a scrip-et meg lehetne úgy is variálni, -nem tudom, mert nem vagyok programozó- hogy a célkönyvtárban is az eredeti könyvtárszerkezeti helyfoglalásnak megfelelően kerülnének a függőségi lib-ek elmentésre, tehát ne mindent egybe jelleggel, hanem a tényleges, a script elején megadott, source helyzetnek megfelelően lenne a lib mentés is elkészítve a célkönyvtárban!
Mert az ok, hogy Skami, és a többi profi linux-os egyből vágja, mit hova is kell majd visszatenni, de lehet, lesznek netán olyan felhasználók is, -mint pl. én is!- akinek ez nem fog egyből az eszébe jutni.

Amit pedig a függőségvadász script-hez megjegyeznék, ha pl. a példában is szereplő programhoz, annak a függőségeinek levadászásához alkalmaznánk is ezt az ügyes scrip-et, arra azért oda kell figyelni, hogy a program működéséhez (nem csak az elindulásához!) még pár szükséges függőségi csomag is kellhet néha, ami nem biztos, hogy már eleve megvan, létezik a saját puppy rendszerünkön belül.
Jó esetben ez a program leírásában, a programon belül elhelyezett megfelelő állományban rögzítésre is kerül(het, nem mindig van így, sajnos!) és ekkor elvileg a program fő bin fájl függőség ellenőrzése ezt felszínre hozhatja, és ekkor ezen szükséges állomány (ha tudjuk, hol, melyik repó-ban, tárolóban van ez, le is szedhető a megfelelő útvonal, elérés megadásával. Bocs, hogy kissé hosszúra sikeredett a mondanivalóm, elnézést érte.

Avatar
S-kami
Adminisztrátor
Hozzászólások: 1089
Csatlakozott: 2014.04.16. 12:54
Kapcsolat:

Re: Függőségek másolása

Hozzászólás Szerző: S-kami »

mindegy, hogy hová rakod a libed, nincs jelentőssége, hogy az usr könyvtárba, vagy a /lib, meg ez csak egy lehetőség, ha nagyon más a program, nem fog futni, csak egy -két program esetében.
Nálam ez a midnight commander volt meg a zsnes emulátor, ott használtam és egy kupacban a libeket...
Ha kell egy program, érdemes időt szánni rá, szedni forráskódot és fordítani akár saját libekkel együtt, ahogy az eredeti midnight commander és links illetve lynks, slang és ncurses csomagokat készítettem tahr puppy alá.
Puppy linux ! Mert megérdemlem !
Gyertek fel a csetre ! Katt ide a csevegéshez: https://discord.gg/9pm6rTfG5s

Avatar
KuLuSz
Adminisztrátor
Hozzászólások: 606
Csatlakozott: 2014.06.17. 21:19

Re: Függőségek másolása

Hozzászólás Szerző: KuLuSz »

foglalkoztam a dologgal 1 kicsit , és írtam 1 szkriptet ami átmásolja az aktuálisan használt bináris fájlt és annak függőségeit (amire ntamas gondolt ) tehát a szkript szétbontja könyvtárszerkezetre IS . A szkript aféle ráhúzós cucc (drag and drop) azaz be lehet építeni jobbklikkes menübe is . a szkript a tmp könyvtárba tesz 1 könyvtárat , a könyvtárnak a neve a ráhúzott fájl neve lesz , azon belül találni fogunk könyvtárakat illetve 1 log fájlt a fájlok listájáról.
jó szórakázást

MJ a csatolmányhoz :
A .tgz kiterjesztést távolítsuk el !
Csatolmányok
dep_backup.tgz
A .tgz kiterjesztést távolítsuk el !
(386 bájt) Letöltve 253 alkalommal.
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube

Avatar
KuLuSz
Adminisztrátor
Hozzászólások: 606
Csatlakozott: 2014.06.17. 21:19

Re: Függőségek másolása

Hozzászólás Szerző: KuLuSz »

Azt ne feledje senki , hogy a tmp könyvtár tartalma törlődik leállítás/újraindítás előtt, érdemes kimásolni onnan a cuccot . A szkriptet lehetne még cicomázni hogy kiírja melyik függőség hiányzik, de feleslegesnek éreztem (komplikált a dolog, mert hiába íratom ki vele a függőséget ha amit a felhasználó letölt és pl pont nem működik a glibcxxx miatt vagy egyéb fő függőség miatt)... plusz gondoltam arra hogy a fő függőségeket szűrje ki, ami tönkre tehet 1 másik rendszert ha bemásoljuk ...
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube

NTamas
Hozzászólások: 1872
Csatlakozott: 2014.06.19. 13:36

Re: Függőségek másolása

Hozzászólás Szerző: NTamas »

... A szkriptet lehetne még cicomázni ...
Igen, és talán célszerű is lenne.
Ugyanis, ezen állapotában, a ráhúzós módszer miatt semmilyen visszajelzést nem kap a művelet elvégzője hogy a művelet végeredménye már elkészült, és a tmp-ben megtalálható.
Ugyanis, a programfile ráhúzása a dep_backup-ra semmilyen látható reagálást nem vált ki, az művelet a háttérben láthatatlanul megy végbe, és erről a felhasználó semmilyen visszajelzést nem kap.
Meg azután jó lenne egy ablak is, amiben meg lehetne adni, hogy éppen melyik program legyen az, amelyiknek a függőségi libjeit menteni akarjuk. Erre az a script már most is módot ad, hiszen a
#!/bin/sh
PROGNAME=$(basename $1)
PROGDIRNAME=$(dirname $1)
már eleve lehetőséget adna itt egy keretablak elkészítésére, -nem tudom, én nem vagyok programozó, de pár ilyen program esetében ez így működik, ahogy én láttam- amiben ugye meg lehetne adni, mely program is lenne a kiválasztott, és esetleg a kereteblak alsó részében oda lehetne írni hogy a mentett dolgokat hol lehet elérni.

Avatar
KuLuSz
Adminisztrátor
Hozzászólások: 606
Csatlakozott: 2014.06.17. 21:19

Re: Függőségek másolása

Hozzászólás Szerző: KuLuSz »

vicces vagy ... konkrétan milyen programokra gondoltál , mert ha én beállítom hogy írja ki az összes futtatható fájlt a rendszeren, kapsz kb 2 - 3000 programot :)
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube

NTamas
Hozzászólások: 1872
Csatlakozott: 2014.06.19. 13:36

Re: Függőségek másolása

Hozzászólás Szerző: NTamas »

Hát egy olyan hbox-ban megadható ablakra gondoltam, ahol az ablakban a scriptedben input-ént megemlített,
PROGNAME=$(basename $1)
ehhhez rendelhető programnév kézzel beírható lenne, és így adható meg a scriptednek a menteni kívánt program, nem csak ráhúzással, mint a script mostani állapotában.
A PROGNAME=$(basename $1) kialakítás miatt gondoltam erre, hátha ez is megoldható lenne, így kiváltható lenne a ráhúzásos módszer, de mint írtam, nem vagyok programozó....így lehet nem jól közelítem meg a dolgot.

Avatar
KuLuSz
Adminisztrátor
Hozzászólások: 606
Csatlakozott: 2014.06.17. 21:19

Re: Függőségek másolása

Hozzászólás Szerző: KuLuSz »

itt most aza kérdés hogy melyik neked az egyszerűbb beírni pl : /usr/local /bin/gipszjakab vagy megnyitod fájlkezelőben és egyszerüen odanavigálsz és rádobod a szkriptre . figyelmeztető üziket rakok bele neked 100-at ha gondolod , de ehez nem szükséges teljes gtk támogatás (mint 1 program)...
-<(].K.u.L.u.S.z.[)>-
-----------------------------------------------
Elérhetőségeim: Angol irc csevegő, (reg mentes) Discord, YouTube

Válasz küldése

Vissza: “Programozás, alkalmazásfejlesztés”