Üdv!
Az a problémám, hogy neten szeretném közzétenni a programjaimat bináris és forráskód formájában is. Viszont ahoz, hogy a bináris fusson, szükségesek a függőségei is. Hogy megtudjam, hogyan lehet megtudni egy bináris csomagfüggőségeit, szétnéztem a neten, és ezt a shell-script-et raktam össze:
objdump -p PROGI | grep "NEEDED.*.so" | awk '{ print $2 }' | xargs dpkg -S | \
awk '{ print $1 }' | sort | uniq | sed "s/://"
Tudom, nem túl szép, de a célnak hellyel-közzel megfelel. Íme a kimenet egy GTK-s progi esetén:
libatk1.0-0
libc6
libcairo2
libfontconfig1
libfreetype6
libgdk-pixbuf2.0-0
libglib2.0-0
libgtk2.0-0
libpango1.0-0
libpng12-0
Namost ezzel az a baj, hogy nincsenek feltüntetve a verziószámok, másfelől meg tuti van ennek elegánsabb megoldása is. A kérdés az, hogy valaki tudja-e, hogy miként lehet megtudni egy bináris csomagfüggőségeit álltalánosabb formában?
Megoldás:
dpkg-shlibdeps -O PROGI
Ha ezzel a hibaüzenettel találkoztok:
dpkg-shlibdeps: error: cannot read debian/control: No such file or directory
...akkor:
mkdir debian
touch debian/control
dpkg-shlibdeps -O PROGI 2> /dev/null
Egy példa kimenet az előbb említett GTK-s program esetén:
shlibs:Depends=libatk1.0-0 (>= 1.29.3), libc6 (>= 2.1), libc6 (>= 2.3.6-6~),
libcairo2 (>= 1.2.4), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.2.1),
libgdk-pixbuf2.0-0 (>= 2.21.6), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.18.0),
libpango1.0-0 (>= 1.14.0), libpng12-0 (>= 1.2.13-4)
- 1384 megtekintés
Hozzászólások
készíts belőle csomago(ka)t!
- A hozzászóláshoz be kell jelentkezni
Igen, ez nekem is eszembe jutott, de különböző az nem igazán disztró-független dolog, annyit meg nem akarok vele szórakázni, hogy minden létező csomagformában megcsináljam...
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
Nem kell minden létező csomagformában, támogatod a kedvenc 1-2 disztribúciódat, a többieknek meg ott a forrás. Vagy: https://build.opensuse.org/
- A hozzászóláshoz be kell jelentkezni
dpkg -s csomagnév
- A hozzászóláshoz be kell jelentkezni
ldd binaris |grep -v linux-gate.so.1 |cut -f 2 |cut -f 1 -d \ |xargs dpkg -S|cut -f 1 -d : |sort -u| xargs dpkg-query -W
Kicsit csúnya meg lassú, de azt csinálja amit szeretnél. Biztos szebben is meg lehet írni, hirtelen ez jutott eszembe.
--
Debian - The "What?!" starts not!
http://nyizsa.uni.cc
- A hozzászóláshoz be kell jelentkezni
Na, ez volt, ami hiányzott: dpkg-query -W
Köszönöm a segítséget. (mindenki másnak is)
Egyébként a te megoldásod több függőséget mutat. Az lehet a különbség, hogy az enyém közvetlen függőségeket muatat, a tied pedig a progi alatt elterülő teljes 'függőség-fát'?
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
feliratkozás
- A hozzászóláshoz be kell jelentkezni
Minden kommentar nelkul segitenek ennyit:
awk '{ gsub(/:/, "", $1); print $1; }'
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
:) Köszönöm! Ok, tudom, utánnanézhetnék magam is - csak nem akarom sok apró (jelen pillanatban jelentéktelen) dologra irányítani a figyelmem.
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
dpkg-shlibdeps -O "$PROGI"
- A hozzászóláshoz be kell jelentkezni
Ez valóban azt adja, amit szeretnék, de egy dolgot furcsálok: mások a verziószámok, mint az én megoldásom esetében:
libatk1.0-0 (>= 1.29.3 )
libc6 (>= 2.1 )
libc6 (>= 2.3.6-6~)
libcairo2 (>= 1.2.4 )
libfontconfig1 (>= 2.8.0 )
libfreetype6 (>= 2.2.1 )
libgdk-pixbuf2.0-0 (>= 2.21.6 )
libglib2.0-0 (>= 2.16.0 )
libgtk2.0-0 (>= 2.18.0 )
libpango1.0-0 (>= 1.14.0 )
libpng12-0 (>= 1.2.13-4)
Ezt megtudnád-e magyarázni, miért van?
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni
Azert, mert te kinyerted a telepitett csomag verziojat. dkpg-shlibdeps pedig a libraryt kerdezi meg, hogy melyik a legkisebb verzio, amivel meg kompatibilis - es ez altalaban kisebb, mint az aktualis.
- A hozzászóláshoz be kell jelentkezni
Értem. Köszönöm a megoldást és a magyarázatot - ez pöttytet könnyebb, mint az én verzióm. :D
--
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.
- A hozzászóláshoz be kell jelentkezni