Author |
Message |
sunburnt

Joined: 08 Jun 2005 Posts: 5087 Location: Arizona, U.S.A.
|
Posted: Wed 09 Jan 2013, 01:08 Post subject:
HowTo find which Ubuntu package a library is in? |
|
I`m writing an Ubuntu library downloader in Bash.
I have it parsing the web files for the FTP dirs.
Example: libavcodec.so.52 is needed for Kino and mPlayer.
These are the relevant links from the Ubuntu web page:
Code: | libavcodec52_0.6.2-1ubuntu1_amd64.deb
libavcodec52_0.6.2-1ubuntu1_i386.deb
libavcodec52_0.6.6-0ubuntu0.11.04.1_amd64.deb
libavcodec52_0.6.6-0ubuntu0.11.04.1_i386.deb
libavcodec53_0.7.2-1ubuntu1_amd64.deb |
This command shows the real library Puppy has:
Code: | realpath `ldd /root/.usr/bin/mplayer |awk '{print $3}'` |
The needed library is: /usr/lib/libavcodec.so.52.72.2
### How to know what package contains the needed library?
This is a problem for finding any dependency.
|
Back to top
|
|
 |
postfs1
Joined: 27 Mar 2010 Posts: 820
|
Posted: Thu 10 Jan 2013, 20:46 Post subject:
|
|
Code: | find /mnt/sr0/_Files/GParted/Ubuntu-Karmic_files -type f -exec dpkg-deb --contents {} \; -print|sed -n '/libparted-1.8.so.12/,/.deb/p'|sed '/libparted-1.8.so.12/b;/.deb/b;d' ; |
|
Back to top
|
|
 |
sunburnt

Joined: 08 Jun 2005 Posts: 5087 Location: Arizona, U.S.A.
|
Posted: Thu 10 Jan 2013, 23:27 Post subject:
|
|
postfs1; I see what you`re doing, but I`m not sure how it applies to web.
I suppose if I download an Ubuntu CD and use "find" to generate a list...
A list search is much faster than extracting Deb. files from a CD.
# The perfect thing would be a list of: files and libs. => package.
# I`m really surprised ( and disappointed...) Ubuntu doesn`t have this.
It seems that a file manifest list like this would be part of the Ubuntu CD.
So ldd shows missing libs. and the list shows what packages they`re in.
Then awk could find the package in one command.
Then it`s easy to find and download the packages from a Ubuntu mirror.
I have several Ubuntu files of lists, but none that are: file => package.
One I have is package descriptions, but no package contense is listed,
and it doesn`t contain all of the available packages.
|
Back to top
|
|
 |
amigo
Joined: 02 Apr 2007 Posts: 2647
|
Posted: Fri 11 Jan 2013, 03:10 Post subject:
|
|
I think you need to be looking elsewhere for the info. rather than using ldd. When you download and install some deb/ubuntu package, it contains a file called 'control' which will list the other packages needed by the package.
I guess there is a way to do what you want, but the info you get may not be accurate -you may find the wrong version before finding the right one. Only the control file will tell you all the info you need.
|
Back to top
|
|
 |
postfs1
Joined: 27 Mar 2010 Posts: 820
|
Posted: Fri 11 Jan 2013, 05:07 Post subject:
Re: HowTo find which Ubuntu package a library is in? |
|
sunburnt wrote: |
HowTo find which Ubuntu package a library is in?
...
|
http://packages.ubuntu.com/en/lucid/ gives such a file:
http://packages.ubuntu.com/en/lucid/allpackages?format=txt.gz
https://launchpad.net/ubuntu/lucid/i386/+builds?build_text=&build_state=built gives such a files:
https://launchpad.net/ubuntu/+source/portmidi/1:200-0ubuntu1.10.04.1/+build/4207230/+files/buildlog_ubuntu-lucid-i386.portmidi_1%3A200-0ubuntu1.10.04.1_BUILDING.txt.gz
|
Back to top
|
|
 |
sunburnt

Joined: 08 Jun 2005 Posts: 5087 Location: Arizona, U.S.A.
|
Posted: Fri 11 Jan 2013, 16:50 Post subject:
|
|
postfs1; I have the first link`s file. But none of them list package contents.
amigo; I have many Ubuntu app. .deb packages, none have a "control" file.
This should ( but doesn`t ) give control info.: dpkg-deb -e ( .deb file )
I can only assume it doesn`t work because the packages don`t have a control file.
Code: | Usage: dpkg-deb [<option> ...] <command>
Commands:
-b|--build <directory> [<deb>] Build an archive.
-c|--contents <deb> List contents.
-I|--info <deb> [<cfile> ...] Show info to stdout.
-W|--show <deb> Show information on package(s)
-f|--field <deb> [<cfield> ...] Show field(s) to stdout.
-e|--control <deb> [<directory>] Extract control info.
-x|--extract <deb> <directory> Extract files.
-X|--vextract <deb> <directory> Extract & list files. |
This shows info.: dpkg-deb -I ( .deb file )
But then you have to get the correct links for the deps. listed.
Any method of getting contents probably won`t guarantee the correct lib.
ldd will show the correct lib., but not the package that has it.
The only other way is to parse the apps. web page for it`s dep. links.
And that has been made rather difficult to do also.
What`s apparent is that Debian and Ubuntu made it difficult to do this.
.
Last edited by sunburnt on Fri 11 Jan 2013, 19:46; edited 1 time in total
|
Back to top
|
|
 |
pemasu

Joined: 08 Jul 2009 Posts: 5485 Location: Finland
|
Posted: Fri 11 Jan 2013, 17:47 Post subject:
|
|
This in Precise Puppy based Upup Precise:
dpkg-deb -e /mnt/sda6/woof-january/woof-out_x86_x86_ubuntu_precise/packages-deb-precise/autoconf_2.68-1ubuntu2_all.deb /root/testing
# ls /root/testing
conffiles control md5sums
control file content:
Version: 2.68-1ubuntu2
Architecture: all
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 1858
Depends: perl (>> 5.005), m4 (>= 1.4.13), debianutils (>= 1.
Recommends: automake | automaken
Suggests: autoconf2.13, autoconf-archive, gnu-standards, autoconf-doc, libtool, gettext
Conflicts: autoconf2.13 (<< 2.13-47), gettext (<< 0.10.39), pkg-config (<< 0.25-1.1)
Section: devel
Priority: optional
Multi-Arch: foreign
Homepage: http://www.gnu.org/software/autoconf
Description: automatic configure script builder
The standard for FSF source packages. This is only useful if you
write your own programs or if you extensively modify other people's
programs.
.
For an extensive library of additional Autoconf macros, install the
`autoconf-archive' package.
.
The Debian project regards the full documentation for autoconf to be
non-free, so it is not included in Debian. Nevertheless, the
non-free distribution that accompanies Debian includes the manual in
its `autoconf-doc' package.
.
This version of autoconf is not compatible with scripts meant for
Autoconf 2.13 or earlier. If you need support for such scripts,
you must also install the autoconf2.13 package.
Original-Maintainer: Ben Pfaff <pfaffben@debian.org>
|
Back to top
|
|
 |
sunburnt

Joined: 08 Jun 2005 Posts: 5087 Location: Arizona, U.S.A.
|
Posted: Fri 11 Jan 2013, 18:51 Post subject:
|
|
pemasu; That looks like the description file I have.
This give the same description:
Code: | dpkg-deb -I /mnt/sda3/ubuntu_bin/xtightvncviewer_1.3.9-6.2ubuntu2_i386.deb
new debian package, version 2.0.
size 57996 bytes: control archive= 1526 bytes.
32 bytes, 1 lines conffiles
1426 bytes, 30 lines control
355 bytes, 5 lines md5sums
601 bytes, 25 lines * postinst #!/bin/sh
160 bytes, 5 lines * postrm #!/bin/sh
146 bytes, 13 lines * prerm #!/bin/sh
Package: xtightvncviewer
Source: tightvnc
Version: 1.3.9-6.2ubuntu2
Architecture: i386
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 171
Depends: libc6 (>= 2.4), libjpeg8 (>= 8c), libx11-6, libxaw7, libxext6, libxmu6, libxt6, zlib1g (>= 1:1.1.4)
Recommends: xfonts-base
Suggests: tightvncserver, ssh
Provides: vnc-viewer, vncviewer
Section: x11 |
The "Depends:" line lists deps., but it doesn`t have links for download.
As amigo said, the dep. info. doesn`t guarantee you`ll get the right lib.
### If you can show me how to get the actual package and file name from this info.
So far the only reliable method would be the Ubuntu web site`s pages.
Like this deps. section of an app`s. web page:
Code: | avidemux-common
a free video editor - Internationalization files
# Depends:
libatk1.0-0 (>= 1.12.4)
ATK accessibility toolkit
libavidemux0 (>= 1:2.5.4)
a free video editor - shared libraries
libc6 (>= 2.14) [amd64]
Embedded GNU C Library: Shared libraries
also a virtual package provided by libc6-udeb
libc6 (>= 2.4) [i386]
libcairo2 (>= 1.2.4)
The Cairo 2D vector graphics library
libgcc1 (>= 1:4.1.1)
GCC support library
libgdk-pixbuf2.0-0 (>= 2.22.0)
GDK Pixbuf library
libglib2.0-0 (>= 2.14.0)
GLib library of C routines
libgtk2.0-0 (>= 2.24.0)
GTK+ graphical user interface library
libsdl1.2debian (>= 1.2.10-1)
Simple DirectMedia Layer
libstdc++6 (>= 4.6)
GNU Standard C++ Library v3
libvpx1 (>= 1.0.0)
VP8 video codec (shared library)
libx11-6
X11 client-side library
libxext6
X11 miscellaneous extension library
libxml2 (>= 2.7.4)
GNOME XML library
libxv1
X11 Video extension library
# Recommends:
avidemux-plugins-gtk
a free video editor - GTK plugins
|
So follow the links, page to page to get a mirror`s: /SubDir./Package.deb
.
|
Back to top
|
|
 |
amigo
Joined: 02 Apr 2007 Posts: 2647
|
Posted: Thu 17 Jan 2013, 16:13 Post subject:
|
|
You are using dpkg, so it should find the right package with just the name -if you have the repos configured correctly. If you are installing packages from contribs repo, then that will have to in the repos configuration. If a package needs updates of normal packages, then the updates should be in the same repo as the original extra/updated program.
Are we having fun yet, working with dependency-management? If not, try coming up with a better system than debian/dpkg. The only more-complete system would be what nix OS is doing -by providing multi-version capability for everything. A real nightmare for the devs!
Sorry if I'm being hard -it's been below freezing for days here and I am getting grumpy and ornery...
|
Back to top
|
|
 |
pemasu

Joined: 08 Jul 2009 Posts: 5485 Location: Finland
|
Posted: Thu 17 Jan 2013, 17:01 Post subject:
|
|
Quote: | -it's been below freezing for days here and I am getting grumpy and ornery... |
T-shirt weather here: Just - 25 c atm.
|
Back to top
|
|
 |
sunburnt

Joined: 08 Jun 2005 Posts: 5087 Location: Arizona, U.S.A.
|
Posted: Thu 17 Jan 2013, 17:30 Post subject:
|
|
pemasu; That`s a little chilly! The southwest U.S. here got Alaska`s weather, and Alaskan`s are wearing sweaters I hear ( warmish ).
amigo; No need to apologize, I remember how cold it was in Pennsylvania. And I remember how quickly you get use to the warmth here in the desert.
Tuesday night it actually got down to 27F ( ~ -2C ), the lowest it`s been. Any desert has greater temperature extremes than moist areas.
When the sun goes down the temp. can drop 10F to 20F in an hour.
If dpkg requires lots of configuration, then it`s no better than parsing web pages. Providing mirror URLs is easy, but I`m still not sure about using it.
About 2 to 3 web pages need to be parsed for the links to the dep. page. Then loop to check the dep. list for installed libs. or if it`s on a local drive.
I have an option to warehouse libs. in the AppPkg build dir. to keep from downloading libs. repeatedly in making AppPkgs.
At this point why not include it in the lib. path ( ld.so.conf ) so eventually no more downloading of libs. needs to be done.
That is, until the next major upgrade when you dump the whole mess and start downloading the next batch of newer libs.
### dpkg is the best way to manage this, but is it the easiest?
|
Back to top
|
|
 |
|