Bug 1651282
Summary: | Latex fails to run because of missing latex.fmt file | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Frank Ansari <mail> | ||||
Component: | texlive | Assignee: | Tom "spot" Callaway <tcallawa> | ||||
Status: | CLOSED CANTFIX | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | 29 | CC: | 7d28c752, tcallawa, than, walters | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | If docs needed, set a value | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2018-12-06 20:44:27 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Frank Ansari
2018-11-19 15:32:21 UTC
I do not have a Silverblue setup, but I cannot reproduce this on stock Fedora 29. Can you try removing your cache (~/.texlive2018) and trying again? I have tried this before and again now but it gives the same error. This is a fresh Silverblue installation. Maybe something is different on Silverblue or I miss some package. Unfortunatly I have no idea how to create this missing latex.fmt file I add a list of installed packages. Created attachment 1508627 [details]
installed tex packages
Huh, my best guess is that something in the read-only nature of Silverblue/ostree is clashing with texlive's desire to write/manipulate itself. You have texlive-kpathsea installed, but your logs do not show any attempt to read /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf. I'm downloading Fedora 29 Silverblue ISO now, to see if I can figure anything out from a VM. I could identify the problem. I had to run "sudo texconfig rehash". But this tries to write to /usr/share/texlive - so this fails. I could force it to work doing "sudo mount -o remount,rw /usr". But I guess the changes it does in /usr/share/texlive will only remain until the next os-tree commit. But the latex.fmt file was now written to my homedir - so at least this will stay. So my conclusion is that the way texlive works does is not usable with Silverblue. [fansari@bat pdftex]$ sudo texconfig rehash mktexlsr: /usr/share/texlive/texmf-config: directory not writable. Skipping… mktexlsr: /usr/share/texlive/texmf-dist: directory not writable. Skipping… mktexlsr: /usr/share/texlive/texmf-local//: directory not writable. Skipping… mktexlsr: /usr/share/texlive/texmf-var: directory not writable. Skipping… mktexlsr: Done. On approach could be like this: /etc/texlive/web2c/mktex.cnf Here I can set: TEXMFROOT = /usr/local/texlive But this means I have to put all the content of /usr/share/texlive there. When I do this: how is this maintainable for updates? So this seems to be only a temporary fix. I would install texconfig in a container personally, not on the host. You might want to try out https://github.com/debarshiray/fedora-toolbox/ One thing isn't clear to me - are you installing 3rd party texlive "packages"? Is this like dropping a 3rd-party libfoo.so in /usr/lib64 and then needing to run `ldconfig`? I tried to setup a container and installed texlive there and it is working. But this is not the behaviour I am used to and what I have expected. What do you mean "3rd-party" packages? I just did "rpm-ostree install texlive". I guess the problem is that not all software packages assume that /usr is a read-only mount. Given that texlive is hardwired in a number of places to assume /usr is read-write, I think I have to close this CANTFIX. Tom, one thing I want to emphasize: `/usr` is mounted read-write while e.g. RPM %post scripts are running. For example, it works to install a 3rd party RPM that drops /usr/lib64/libfoo.so have its `%post` run `ldconfig` etc. (Just like how all the existing RPM %post in RPMs we ship work) However, some scripts and filesystem layout may need adjustment; see https://bugzilla.redhat.com/show_bug.cgi?id=1352154 (In reply to Colin Walters from comment #11) > Tom, one thing I want to emphasize: `/usr` is mounted read-write while e.g. > RPM %post scripts are running. > > For example, it works to install a 3rd party RPM that drops > /usr/lib64/libfoo.so have its `%post` run `ldconfig` etc. > > (Just like how all the existing RPM %post in RPMs we ship work) > > However, some scripts and filesystem layout may need adjustment; see > https://bugzilla.redhat.com/show_bug.cgi?id=1352154 Thanks for the clarification. The issue here is that texlive, in the course of normal operation (not just scriptlets) is making writes under /usr/share/texlive (TEXMFROOT). I'm sure it is possible to setup texlive to have its root in a Silverblue friendly space, but it would: A) Be really hard B) Be a massive difference from what other Linux distros do C) Probably break lots of corner cases in texlive that would not be noticed for YEARS Ah, OK. Yep, sounds like stuff that should go in `/var`. But I'd believe you that it's hard. Bigger picture though again texlive is something I'd install in a container, not the host; this is part of the whole idea is that any where you read instructions to "yum install xyz" you generally think "is this something that *really* needs to be on my host" -> rpm-ostree, otherwise do it in a container. The fact that `yum` works basically the same as it always has in a container is for exactly these types of reasons. (In reply to Frank Ansari from comment #7) > On approach could be like this: > > /etc/texlive/web2c/mktex.cnf > > Here I can set: > TEXMFROOT = /usr/local/texlive > > But this means I have to put all the content of /usr/share/texlive there. > > When I do this: how is this maintainable for updates? > > So this seems to be only a temporary fix. typo, it this file: /etc/texlive/web2c/texmf.cnf |