Did somebody succseed to compile a qtcreator qt project on Ubuntu 13.10? I did see answers on other environment up until 13.04, but it seams the packages have changed and I can install any of the mentioned packages. I need to know what dev package needs to be installed to satisfy the missing link library.
I can install any of the mentioned packages
Do you mean you can't install any of the mentioned packages? Why not?
Anyhow. You need two things here:
figuring out what's the file name you're looking for
figuring out how to locate the package containing that file name
Given that you're looking for a shared library, and you're passing -lGL to the linker, then the file name you're looking for is libGL.so.
Now, there are two strategies for figuring out which Ubuntu package contains what:
Using apt-file:
install it: apt-get install apt-file
search for the file apt-file search libGL.so
Using the online package search:
point your browser to http://packages.ubuntu.com/
scroll to the "Search the contents of packages" section
put libGL.so in the search field, and select your version (saucy) and architecture
Both of these ways will return three families of packages:
mesa-related packages
nvidia-related packages
flgrx-related packages
The last two are there because NVidia and AMD provide vendor-specific libGL.so overrides. But the one you're looking for is actually the first. So just install it.
Check /usr/lib/x86_64-linux-gnu/libGL.so and /usr/lib/i386-linux-gnu/libGL.so, they should point to existing files.
Related
I installed a FreeBSD virtual machine and then I ran sudo pkg install clang-devel.
clang-format seems to be missing however:
-sh: clang-format: not found
How to install clang-format in FreeBSD 11.2?
You may look at the files installed by the clang-devel package (for example on FreshPorts).
I can see a couple of files which might be the one you are looking for:
bin/clang-format-devel
llvm-devel/bin/clang-format
They are installed under /usr/local by default.
Alternatively, you may use the advanced search feature on FreshPorts. Here's the link to the search result for clang-format in pkg-plists (pkg-plist is a file with a list of files installed by a package): https://www.freshports.org/search.php?stype=pkg-plist&method=match&query=clang-format&num=100&orderby=category&orderbyupdown=asc&search=Search&format=html&branch=head
It's worth noting that there is no easy way to do it with pkg(8) or ports(7) as some packages generate their pkg-plists dynamically. This is why the easiest solution is to use external services like FreshPorts. There is also a plugin for pkg(8) called pkg-provides available in the FreeBSD ports tree, which might be what you are looking for. I've never tried it, however.
There are many packages that are listed on the Debian site as being included in the repositories and fully supported by Debian, but when I try 'apt-get install' I am told: E: Unable to locate package. They also do not exist in synaptic.
Specifically, I am trying to install remmina (which should be simple), but has consumed several hours from my day. There seems to be no info on this. As I installed Debian with only DVD 1, I am assuming I need to download the references to most of the packages somewhere, but cannot find where or how to go.
I wanted to post a view of my sources list, but there are all kinds of formatting rules that I must follow, and then I am told I need x reputation points to post links (many addresses in sources.list). Basically I have main, contirb, and non-free enabled.
Thanks
If a package is available on repository, then it should be available to you too.
Check name of the package with apt-cache search <packagename> or aptitude search <packagename> ( I do prefer aptitude to search packages ).
Double check if the desired component is enabled at your sources.list file and under sources.list.d/. Many people forget to enable the famous contrib and non-free components. Check which component is related to your package and update your sources.list.
I found these .deb files:
http://ftp.us.debian.org/debian/pool/main/r/remmina/remmina_1.0.0-4+deb7u1_amd64.deb
http://ftp.us.debian.org/debian/pool/main/r/remmina/remmina-common_1.0.0-4+deb7u1_all.deb
As you can see, according to sources.list documentation these files are under the main component.
I have been trying to do build and use OpenCV 2.3.0 on my Fedora15 Lovelock 64bit machine.
Background:
First, on my 64bit Fedora15, OpenCV2.2.0 seems to be in the locations namely
/usr/share/opencv
/usr/doc
/usr/lib64 &
/usr/bin
I do not find the include files though (in /usr/include). This means that the development package was n t installed. My package manager does not list the development packages when i try to Add/remove software.
I have a need to create applications, some of which just link to 2.2 and others which link to 2.3.O of the OpenCV library.So, I thought the best solution would be to have a separate location for 3rd party libraries that i use for my development . So I created a directory in /local named soft and created an OpenCV directory. A directory structure like this one.
/local/soft/
OpenCV/
OpenCV2.2.0/
source-files
build
OpenCV2.3.0/
source-files
build
installation
share/opencv
doc
include
lib
Now, i tried building OpenCV2.3.0 and i succeeded. I configure CMake to use CMAKE_INSTALL_PREFIX to the directory named "installation" (see above), instead of the default /usr/local/. Clean. huh?
I tried building and installing OpenCv 2.2.0 in the same way. Alas 2.2.0 complains something during the build. So i thought i ll link to the already existing version in the standard locations. BUT, when i try to install the dev packages for 2.2 using my package manager,the development files for x86_64 are not found :-) which means i dont have the headers to link to the libraries in the standard location.
I cant build my executable since linker ld would not find the OpenCV that i have installed in the non-standard location.(although i point it to the exact location using the -L and -l options with gcc in my Eclipse).
Question 1: Am i doing the right thing in maintaining installations in non-standard locations? Is /usr/ the standard location where the package manager will always do the installation?
Question2 : What is the right way of linking to these libraries installed in non-standard locations? Why would not ld recognize my .so files in the lib folder?
sudo g++ logpolar.cpp -o logpolar.o -I /local/soft/OpenCV/opencv2.3.1/installation/include/ -l/local/soft/OpenCV/opencv2.3.1/build/lib/libopencv_core.so
But ld canot find -l/local/soft/OpenCV/opencv2.3.1/build/lib/libopencv_core.so
I checked the lib folder and there sure is a beautiful symbolic link to libopencv_core.so.2.3
The standard approach is to use /usr/local directory structure that already has predefined paths like /usr/local/bin, /usr/local/sbin, /usr/local/include, /usr/local/lib.
You put your software here and everything will JustWork(TM). Every Linux distro (incl. Fedora) is set up so it will load programs (libraries, headers) from this libraries.
If you would use GNU toolchain (autoconf, automake => autotools) you would be fine. With CMake you probably need to setup paths for /usr/local/include and /usr/local/lib.
On the other hand this approach wont let you use multiple versions. You can only have one. The one in /usr/local overrides the system one (installed in /usr/bin) because these paths goes first.
You can keep your approach, it is nothing incorrect. We usually put such a software in the /opt folder, so you would go for /opt/opencv/X.Y where X.Y are the version numbers.
Q2: Read the gcc man page and search for the -L option. You need something like:
gcc ... -I/opt/opencv/2.0/include -lsystem_lib -L/opt/opencv/2.0/lib -lopencv ... ...
Do not forget to set LD_LIBRARY_PATH when running programs in multiple versions to properly load correct version:
LD_LIBRARY_PATH=/opt/opencv/2.0/lib /opt/opencv/2.0/bin/opencv
I want to install multiple versions of a package (say libX) from src. The package (libX) uses Autotools to build, so follows the ./configure , make, make install convention. The one installed by default goes to /usr/local/bin and /usr/local/lib and I want to install another version of this in /home/user/libX .
The other problem is that libX is a dependency for another package (say libY) which also uses autotools. How to I make libY point to the version installed in /home/user/libX ? There could be also a possibility that its a system package like ffmpeg and I want to use the latest svn version for my src code and hence build it from src. What do i do in that case ? What is the best practice in this case so that I do not break the system libraries?
I'm using Ubuntu 10.04 and Opensuse 10.3.
You can usually pass the --prefix option to configure to tell it to install the library in a different place. So for a personal version, you can usually run it as:
./configure --prefix=$HOME/usr/libX
and it will install in $HOME/usr/libX/bin, $HOME/usr/libX/lib, $HOME/usr/libX/etc and so on.
If you are building libY from source, the configure script usually uses the pkg-config tool to find out where a package is stored. libX should have included a .pc file in the directory $HOME/usr/libX/lib/pkgconfig which tells configure where to look for headers and library files. You will need to tell the pkg-config tool to look in your directory first.
This is done by setting the PKG_CONFIG_PATH to include your directory first.
When configuring libY, try
PKG_CONFIG_PATH=$HOME/usr/libX/lib/pkgconfig:/usr/local/lib/pkgconfig ./configure
man pkg-config should give details.
Is it possible to paqckage multiple rpms into one file. I have got two bundles one of which requires that the other be installed. I would like to create a single installable out of them in such a way that this installer will first invoke pkg 1 and then install pkg 2. Is this possible? What about deb packages? Sorry if it a basic question. I have not worked with installers on Linux before. I have created Windows installers. There you can create two merge modules (.msm) and package them into a standalone installer (.msi) and specify the order of execution. I am looking for similar functionality on Linux.
EDIT: I think the question was not clear enough. Let me try to rephrase it. I have a bunch of runtime libraries which is currently shipped as a standalone installer. Another team develops products which use these libraries at runtime. I now want to provide the libraries to the product team in some form (sub-package) which they can include with their installer and configure their installer to install my sub-package first. Both packages should be available locally to the end user. They are not available on any repository and cannot be pulled down from the net at install time.
Try packaging them into a self extraction bash script. You won't have to modify or aggregate the libraries and rpms together. This should yield an executable file that can be included in another installation process. The last step of the extraction should be to call "rpm -i" with the rpm files as arguments.
Reference on building a self extracting bash script:
http://www.linuxjournal.com/node/1005818
First : you don't have to repackage anything, especially not if your application uses some external libraries. You just have to mention in your recipe that your RPM (or DEB) depends on the other one. Both apt-get (for deb) and yum (for rpm) will check these dependencies and install them if needed.
See :
http://rpm5.org/docs/api/dependencies.html (rpm) and http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/ (deb)
(These were just the first ones I found, you can find better resources out there :p).