linux tools package container - linux

I'm fairly new to Docker, and I'm trying to use perf to check performance on some stuff. Perf doesn't come with the images I'm using, so I went to install it.
I used
apt-get update
apt-get install perf
which didn't work because perf is part of another package.
I then tried
apt-get install -y linux-tools-common linux-tools-generic linux-tools-`uname -r`
which resulted in
E: Unable to locate package linux-tools-common
E: Unable to locate package linux-tools-generic
E: Unable to locate package linux-tools-3.10.0-862.3.3.el7.x86_64
E: Couldn't find any package by glob 'linux-tools-3.10.0-862.3.3.el7.x86_64'
E: Couldn't find any package by regex 'linux-tools-3.10.0-862.3.3.el7.x86_64'
Any recommendations as to what I should try?

I assume that you have a fairly recent Linux in your container and an old one on the host.
Note that perf has to be the exact same version as your Linux kernel. And that with containerization the kernel of the host system is used.
When you install the generic perf package in the container the package manager retrieves the version of the (host) kernel and tries to install the perf package with the very same version. Due to the newer version of the Linux distribution in the container, the necessary older perf package is not part of its package repository anymore leading to the error message you are seeing.
There are multiple solutions to this:
a) update the host Linux kernel to supported by the containers Linux distribution's release,
b) downgrade the containers Linux distribution, or
c) make the necessary perf package available in the container. This is probably tricky and you might screw up the container's package manager. But it's just a container ;). You can figure out the necessary version with uname -a.

What helped me on Debian 10 was:
apt install linux-perf

Related

Trying to install Linux kernel headers but getting an error

I am trying to follow the NVIDIA Driver Installation Quickstart Guide:
https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
The first instruction says:
The kernel headers and development packages for the currently running
kernel can be installed with:$ sudo apt-get install linux-headers-$(uname -r)
When I try this I get the error:
Unable to locate package linux-headers-4.9.140-tegra
Couldn't find any package by glob 'linux-headers-4.9.140-tegra'
Couldn't find any package by regex 'linux-headers-4.9.140-tegra'
I'm not sure how to proceed.
Your version of Ubuntu is running a tegra kernel. The headers for this kernel are not in the Ubuntu repositories (or any other repositories you may have enabled). You will probably need to these before proceeding with the driver installation.
However. NVIDIA Tegra is a small SoC (system on chip) processor AFAIK. Like a Jetson Nano or something. The instructions you linked are for NVIDIA Tesla GPUs which are data center GPUs. Again, AFAIK. Check you are following the right instructions. Also, in those instructions, look at: 'Section 1.1 - Pre-installation requirements', and this pre install checklist.
Here is a list of all the different kernel headers in the Ubuntu 20.04 repos (not the same I know). tegra is not there.
Before you can install the appropriate kernel headers, update your packages index. First use the update command.
sudo apt-get update
then run sudo apt-get install linux-headers-$(uname -r) again. If this doesn't work, try out
sudo apt-get install linux-headers-generic
which should install the right version.

missing libmpfr.so.6 when using a cross-compiler

I am using Ubuntu 18.04
I built a mips cross-compiler using buildroot, but when I tried to test whether it would work,I got this message
/home/daisy/repos/repo/buildroot/output/host/bin/../libexec/gcc/mipsel-buildroot-linux-uclibc/9.3.0/cc1: error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory
I searched for solutions , one of which said this:
sudo pacman -S mpfr
Well , my Linux isn't archlinux, this didn't work for me.
somebody please tells me how to deal with it.
The above suggestions of installing libmpfr on your host system are wrong. Buildroot is supposed to have build libmpfr, it should be present in host/lib, and picked up by the cross-compiler by virtue of it having a proper RPATH. If it doesn't work, we need to figure out why, but the correct thing is not to install libmpfr on your host system.
In Ubuntu, apt command (Advanced Packaging Tool) is used for performing such functions as installation of new software packages, upgrade of existing software packages, updating of the package list index, and even upgrading the entire Ubuntu system.
Try this command :-
sudo apt-get update
sudo apt install libmpfr6
This will install shared libraries: libmpfr.so.6 to your Ubuntu system.
Hope It Helps !

Linux Installation libX11-devel

I am trying to build QT4 (porting from Redhat 5 to 7 with an upgraded gcc compiler) in RedHat 7 and I was getting an error saying X11/Xlib.h can't be found. Anyways, after doing some research most people said to install libX11-devel to get those x11 libraries. Since I am using an offline machine I can't do "apt-get" type commands and have to manually install RPMs. So, I went to my RH-7 installation DVD and got "libX11-devel-1.6.3-3.el7.x86-64" (I have 64 bit OS) and tried to install using "yum install libX11-devel-1.6.3-3.el7.x86_64" and I am getting dependencies errors. It's saying
...Requires: pkgconfig(kbproto)
...Required: pkgconfig(xcb)
...Requires: pkgconfig(xproto)
...Requires: pkgconfig(xcb) >= 1.1.92
So, here are my questions.
1) when it says "pkgconfig(kbproto)", is it saying find the "kbproto....RPM" and do a "yum install". In my dvd I only have "xorg-x11-proto-devel-7.7.13.el7.noarch.rpm". Do I have to somehow find "xorg-x11-proto......x86_64.rpm" since it's a 64 bit machine?
2) Is there a difference between "yum install" and pkgconfig "install"? Are there any other installation variants in Linux?
3)For an offline machine, Is there anyway I can get all the dependencies and install everything at once ?
4) Why is it saying "xcb" requires twice. If I just get a xcb...rpm version above 1.1.92 can I just install it once?
Before actually answering the questions, I am going to suggest to see if you can get the latest version of the packages. The packages on the installation DVD may be really out of date and contain known vulernabilities, and other bugs. Can you use yumdownloader - in an online environment - to download the latest version onto a separate DVD and use that as the installation source? See https://access.redhat.com/solutions/10154 for more information.
To answer the questions themselves:
Requires: foo can refer to a package foo or a "feature" foo. pkgconfig(kbproto) is a "feature" (or virtual requires). You can use yum/rpm to see what provides this. On my Fedora box, for example, rpm -q --provides xorg-x11-proto-devel shows that this package indeed provides pkgconfig(kbproto).
As for x86_64 vs noarch, it doesn't matter. noarch packages work everywhere. Other packages are restricted to the platform. So x86_64 only works on intel/amd x86 64-bit machines. Installing noarch should be fine in your case. If you only had a i686 package, though, that wouldn't be sufficient. You would have to find a x86_64 or noarch package.
Yes, there's a big difference between yum and pkg-config. They do completely different things. One is a system tool for installing RPM packages. The other is a tool for developers for using the right headers and compiler flags. If your concern is finding/installing RPMs, do not use pkg-config directly.
Do you have access to an online machine that can access the RHEL 7 yum repositories? On that machine, do something like this:
mkdir rhel7-packages
cd rhel7-packages
yum provides '*/X11/Xlib.h' # make a note of the package that provides this file. it's libX11-devel on Fedora here
yumdownloader --resolve libX11-devel # download libX11-devel and all dependencies not installed on the system
Then copy/install the RPMs on the machine without internet access.
It's probably printing out xcb twice because it's two different requirements. The unversioned requirement will be satisfied if you install any verison of xcb. The versioned requirement will only be satisfied if you install 1.1.92. If you install 1.1.92, it will satisified both the requirements.
1.
You have to resolve the dependency on the system where you are building your package. This means you need to have those dependencies installed, inclusing libX11-devel. To do that, download the RPMs manually from EL7 repos to local disk and run this:
$ mkdir -p /tmp/libX11_dep_rpms && cd /tmp/libX11_dep_rpms
# Download all dependencies from here. All your packages should be available here:
# http://mirror.centos.org/centos-7/7/os/x86_64/Packages/
# Then install
$ yum localinstall *.rpm
# After this you should be able to build your qt4 package, provided all dependencies are resolved. Otherwise, repeat the procedure for all dependencies
# If you can't download packages, then you need to create a FULL DVD ISO that will contain all packages.
2.
pkgconfig ensures that a requirement is coming from a particular build that provides a particular version of the library. Here are some detail.
3.
Get the Everything ISO from EL7.
4.
This has to do with the pkgconfig and library versions.

shared libraries libgconf-2.so.4 is missing

I want to install chromedriver in one of the AWS EC2 instance which is linux(Red Hat Enterprise Linux Server release 6.7 Santiago - 64 bit). While installing the chromedriver, we ran into issue due to missing packages. I could find the package here but this in turn requires many other packages. Using any other AMI is not an option.
Error is -
error while loading shared libraries libgconf-2.so.4 cannot open shared object file
I am using Ubuntu x64 and yum didn't work for me. But I found somebody mentioning simply use
$sudo apt install libgconf-2-4
worked for me to install the libgconf.
Please ask yum for the file, libgconf-2.so.4 : $ yum provides */libgconf-2.so.4
Install GConf2 : # yum install GConf2
Packages http://mirror.centos.org/centos/6.8/os/ ... and updates http://mirror.centos.org/centos/6.8/updates/
The chromedriver depends on the same packages / files as GConf2, and then some. Please see for yourself : $ ldd chromedriver , where 'chromedriver' is the unzipped executable.
EDIT :
Solution for the chromedriver issue : Install a chromedriver for RHEL 6, chromedriver-31.0.1650.63-1.el6.x86_64.rpm https://drive.google.com/file/d/0B7S255p3kFXNX1c0UWlGOWpZOHM/view?usp=sharing
Please download the package, and 1) cd Downloads/ 2) yum install chromedriver-31.0.1650.63-1.el6.x86_64.rpm ... and you have /usr/local/bin/chromedriver
P.S. : The EL6 chromedriver was built from the source package chromium-31.0.1650.63-1.el6.src.rpm
You might want to read this CentOS thread about your GLIBCXX_3.4.15. Especially apropos is this answer on the thread, especially the FAQ it references.
CentOS (which aims to be as compatible with RHEL as possible) is a curated LTS distribution (as is RHEL). You might find a version of chromedriver compiled for RHEL 6 in one of the many repositories. If not, you'll probably have to build it yourself.

System crash after oracle installation with yum

recently i tried to install oracle on my linux with apt (I never used yum before) using fast manual:
http://www.oracle.com/technetwork/articles/servers-storage-admin/ginnydbinstallonlinux-488779.html
And after command:
sudo yum install oracle-rdbms-server-11gR2-preinstall
I got error:
Failed: ca-certificates.noarch 0:2010.63-3.el6_1.5 chkconfig.x86_64 0:1.3.49.3-2.el6 file-libs.x86_64 0:5.04-15.el6 filesystem.x86_64 0:2.4.30-3.el6
initscripts.x86_64 0:9.03.38-1.0.1.el6_4.2
Complete!
And something gone wrong because command like: ps, top are crashing
login#Ass-K55VJ:/etc/yum/repos.d$ ps -e
ps: relocation error: ps: symbol procps_number_version, version _3_2_5 not defined in file libproc-3.2.8.so with link time reference
login#Ass-K55VJ:/etc/yum/repos.d$ top
Segmentation fault (core dumped)
then I tryied to uninstall oracle and dependencies but after command:
sudo yum remove oracle-rdbms-server-11gR2-preinstall
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Jul 10 2013, 06:42:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]
If you cannot solve this problem yourself, please go to the yum faq at: http://wiki.linux.duke.edu/YumFaq
So it seems like yum install in my system new libraries but didn't link it correctly? I dont know what do in this moment because it seems like armagedon on my ubuntu...
Does this mean you're on ubuntu and tried to install rpm packages using yum? The manual you used is for Oracle Linux 6, why would you try that on ubuntu?
rpm packages are not compatible with debian based systems like ubuntu, which use deb packages. So you've probably screwed your system big time, overwriting important system libraries with incompatible ones.
If apt-get is still working, then you can try to reinstall (apt-get --reinstall install) the equivalent libraries to the ones mentioned in the install manual you linked to - naming isn't always the same for rpm and deb packages. dpkg -l should help you see which the correct installed libraries are. I'd start with the C libraries (libc) etc.
But if apt-get is screwed also, then you'd need to download the packages manually from an ubuntu mirror and install them using dpkg, but I think a reinstall (or restore from backup if you have one) would be the best option.

Resources