+1
Your best bet here is to install stuff from non Fedora sources to non-standard paths, such as /opt
, which the rpms will never write to, and then load them using your environment variables and so on. Faking the complete texlive
package is far from trivial. It is perhaps the most complex package in the Fedora repositories at this time: texlive.spec
So, if you want R from Fedora to work, you will have to let dnf
install the required dependencies, even if you later use your own installation of texlive instead.
dnf
can only find dependencies that are listed in the rpm packages as metadata. You can see what each rpm requires using
rpm -qp --requires <complete path to the rpm package>`
This only works if you have the package installed, or if you have the rpm
file downloaded.
When repositories are created, this information is extracted and included in the metadata for each repository. dnf
downloads this and then figures out how to go about setting up a complete transaction where all dependencies are satisfied. If they aren’t, it’ll tell you that there are missing requires and so on. You can get this type of information using the dnf repoquery
plugin:
sudo dnf repoquery --whatprovides <package or some other capability listed as provides in rpm metadata>
R-core
, for example, requires:
$ sudo dnf repoquery --requires R-core
/bin/bash
/bin/sh
cups
gawk
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.2.5)(64bit)
ld-linux.so.2
ld-linux.so.2(GLIBC_2.1)
less
libRblas.so
libRblas.so()(64bit)
libRmath(x86-32) = 3.5.3-1.fc30
libRmath(x86-32) = 3.6.0-1.fc30
libRmath(x86-64) = 3.5.3-1.fc30
libRmath(x86-64) = 3.6.0-1.fc30
libX11.so.6
libX11.so.6()(64bit)
libXmu.so.6
libXmu.so.6()(64bit)
libXt.so.6
libXt.so.6()(64bit)
libbz2.so.1
libbz2.so.1()(64bit)
libc.so.6(GLIBC_2.27)(64bit)
libc.so.6(GLIBC_2.28)
libcairo.so.2
libcairo.so.2()(64bit)
libcurl.so.4
libcurl.so.4()(64bit)
libdl.so.2
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libdl.so.2(GLIBC_2.2.5)(64bit)
libgcc_s.so.1
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.3.1)
libgcc_s.so.1(GCC_3.3.1)(64bit)
libgfortran.so.5
libgfortran.so.5()(64bit)
libgfortran.so.5(GFORTRAN_8)
libgfortran.so.5(GFORTRAN_8)(64bit)
libgobject-2.0.so.0
libgobject-2.0.so.0()(64bit)
libgomp.so.1
libgomp.so.1()(64bit)
libgomp.so.1(GOMP_1.0)
libgomp.so.1(GOMP_1.0)(64bit)
libgomp.so.1(GOMP_4.0)
libgomp.so.1(GOMP_4.0)(64bit)
libgomp.so.1(GOMP_4.5)
libgomp.so.1(GOMP_4.5)(64bit)
libgomp.so.1(OMP_1.0)
libgomp.so.1(OMP_1.0)(64bit)
libicui18n.so.63
libicui18n.so.63()(64bit)
libicuuc.so.63
libicuuc.so.63()(64bit)
libjpeg.so.62
libjpeg.so.62()(64bit)
libjpeg.so.62(LIBJPEG_6.2)
libjpeg.so.62(LIBJPEG_6.2)(64bit)
liblzma.so.5
liblzma.so.5()(64bit)
liblzma.so.5(XZ_5.0)
liblzma.so.5(XZ_5.0)(64bit)
libm.so.6
libm.so.6()(64bit)
libm.so.6(GLIBC_2.0)
libm.so.6(GLIBC_2.1)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.23)
libm.so.6(GLIBC_2.23)(64bit)
libm.so.6(GLIBC_2.27)
libm.so.6(GLIBC_2.27)(64bit)
libm.so.6(GLIBC_2.29)
libm.so.6(GLIBC_2.29)(64bit)
libpango-1.0.so.0
libpango-1.0.so.0()(64bit)
libpangocairo-1.0.so.0
libpangocairo-1.0.so.0()(64bit)
libpcre.so.1
libpcre.so.1()(64bit)
libpng16.so.16
libpng16.so.16()(64bit)
libpng16.so.16(PNG16_0)
libpng16.so.16(PNG16_0)(64bit)
libpthread.so.0
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.0)
libpthread.so.0(GLIBC_2.2)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libreadline.so.8
libreadline.so.8()(64bit)
librt.so.1
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2)
librt.so.1(GLIBC_2.2.5)(64bit)
libtcl8.6.so
libtcl8.6.so()(64bit)
libtiff.so.5
libtiff.so.5()(64bit)
libtiff.so.5(LIBTIFF_4.0)
libtiff.so.5(LIBTIFF_4.0)(64bit)
libtk8.6.so
libtk8.6.so()(64bit)
libtre.so.5
libtre.so.5()(64bit)
libz.so.1
libz.so.1()(64bit)
make
openblas-Rblas
perl-interpreter
redhat-rpm-config
rtld(GNU_HASH)
sed
tex(dvips)
tex(latex)
unzip
vi
xdg-utils
It requires tex(dvips)
and tex(latex)
which are provided by the Fedora texlive installation. Confirmed by looking at the spec file here: Tree - rpms/R - src.fedoraproject.org
You could file a bug asking the maintainer to make these optional dependencies if know that they are not required by R all the time. (I don’t know R well enough to know this.)
(If you can confirm that these are the only tex requirements for the complete R suite, you can write yourself a new fake package and make it provide these two capabilities. I would not suggest it, though, and cannot say exactly how much work it’ll take. I would not expect it to be a trivial undertaking)