saját program csomagfüggőségei

Fórumok

Ü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)

Hozzászólások

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

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.

Minden kommentar nelkul segitenek ennyit:


awk '{ gsub(/:/, "", $1); print $1; }'

--


Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

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.