Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

biber is incompatible with texlive #121738

Closed
3 tasks done
nwhetsell opened this issue Jan 28, 2023 · 15 comments
Closed
3 tasks done

biber is incompatible with texlive #121738

nwhetsell opened this issue Jan 28, 2023 · 15 comments
Labels
bug Reproducible Homebrew/homebrew-core bug outdated PR was locked due to age stale No recent activity

Comments

@nwhetsell
Copy link
Sponsor Contributor

brew gist-logs <formula> link OR brew config AND brew doctor output

% brew config
HOMEBREW_VERSION: 3.6.20-143-g10845a1
ORIGIN: https://github.com/Homebrew/brew
HEAD: 10845a1122b916dc91d04f00a4d8b7b888d52654
Last commit: 25 hours ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 3c1408e72eaa44545ead62fff22a0866a42033ae
Core tap last commit: 4 days ago
Core tap branch: master
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CASK_OPTS: []
HOMEBREW_INSTALL_FROM_API: set
HOMEBREW_MAKE_JOBS: 16
Homebrew Ruby: 2.6.10 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: 16-core 64-bit kabylake
Clang: 14.0.0 build 1400
Git: 2.37.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 7.79.1 => /usr/bin/curl
macOS: 12.6.2-x86_64
CLT: 14.2.0.0.1.1668646533
Xcode: 14.2

% brew doctor
Your system is ready to brew.

Verification

  • My "brew doctor output" says Your system is ready to brew. and am still able to reproduce my issue.
  • I ran brew update and am still able to reproduce my issue.
  • I have resolved all warnings from brew doctor and that did not fix my problem.

What were you trying to do (and why)?

Run biber with a document typeset with pdflatex installed from Homebrew’s texlive formula.

What happened (include all command output)?

biber produced an error that it’s expecting a biblatex control file with a version later than what’s installed:

% biber test
INFO - This is Biber 2.18
INFO - Logfile is 'test.blg'
INFO - Reading 'test.bcf'
ERROR - Error: Found biblatex control file version 3.8, expected version 3.9.
This means that your biber (2.18) and biblatex (3.17) versions are incompatible.
See compat matrix in biblatex or biber PDF documentation.
INFO - ERRORS: 1

In theory, one way to fix this is to run—

sudo tlmgr update --self
sudo tlmgr update --all

—but this seems to be impossible with Homebrew’s texlive. Those commands exit with:

tlmgr: action not allowed in system mode: update

What did you expect to happen?

biber to execute normally.

Step-by-step reproduction instructions (by running brew commands)

brew install biber texlive

cat <<'EOF' > test.bib
@book{test,
  author = {Test},
  title = {Test}
}
EOF

cat <<'EOF' > test.tex
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\bibliography{test.bib}
\begin{document}
\cite{test}
\printbibliography
\end{document}
EOF

pdflatex -interaction=errorstopmode test.tex
biber test
@nwhetsell nwhetsell added the bug Reproducible Homebrew/homebrew-core bug label Jan 28, 2023
@SMillerDev
Copy link
Member

Isn't the issue that texlive ships a biblatex version that is too old?

@nwhetsell
Copy link
Sponsor Contributor Author

nwhetsell commented Jan 28, 2023

I’m honestly not sure because biber is usually included as part of TeX Live. The version of biber currently available from Homebrew (2.18) is the same as the one available on CTAN (https://ctan.org/pkg/biber), but this version of biber can’t be used without also updating TeX Live, and it seems to be impossible to update Homebrew’s TeX Live (using tlmgr).

It’s in a private repository (so I can’t link to it here), but for what it’s worth, I’ve very recently installed TeX Live on a Linux GitHub Actions runner using install-tl-unx.tar.gz, installed biber and its dependencies using tlgmr, and got biber to run successfully.

@SMillerDev
Copy link
Member

We're using the latest released version of texlive though. I'm not sure how to solve this without partially patching in some different dependencies into the texlive build.

@nwhetsell
Copy link
Sponsor Contributor Author

First, thank you for all you do for Homebrew and for looking at this issue.

Since TeX Live is in some ways a package manager itself, I’m not sure there’s a “latest release” of TeX Live in the same way there’s a latest release of, say, Python. At any rate, if one installs an off-the-shelf distribution of TeX Live (like MacTeX), one will get an older biber with a corresponding version of BibLaTeX. If one installs TeX Live using a TeX Live installation script, one will get the latest biber with the latest BibLaTeX.

Here are some other things that might fix this. These are off the top of my head; I don’t know how feasible they are:

  • Install biber as part of TeX Live (this is currently done with the older, but similar, bibtex) and make the biber formula keg-only. This would ensure that biber and BibLaTeX are updated together.

  • Permit Homebrew-installed TeX Live to be updated using tlmgr update.

@SMillerDev
Copy link
Member

Permit Homebrew-installed TeX Live to be updated using tlmgr update.

This would mean that your Homebrew install is impossible to debug since it depends on another update system. It's why we have https://docs.brew.sh/Acceptable-Formulae#we-dont-like-tools-that-upgrade-themselves

Install biber as part of TeX Live (this is currently done with the older, but similar, bibtex) and make the biber formula keg-only. This would ensure that biber and BibLaTeX are updated together.

This would be an option, but as far as I know we use the default TeX Live install so someone would need to make a pull request to add that.

@nwhetsell
Copy link
Sponsor Contributor Author

I’m happy to make a pull request to add biber to the texlive formula, but in case this is something that couldn’t be merged, here’s what that would entail.

Apparently, the TeX Live installer doesn’t include a setting to install biber. Instead, projects (like MacTeX) that build TeX Live are building biber separately and then including the binaries (and whatever else gets built) as part of TeX Live (this is described at https://tug.org/texlive/build.html#biber). So, while I can give this a shot, the biber formula includes 122 resources, all Perl packages. The texlive formula currently depends on 45 Perl packages; adding biber to texlive would make texlive depend on 139 Perl packages (biber and texlive have 28 Perl resources in common), which seems like a pretty steep increase. In addition, if biber then becomes keg-only, there would effectively be two independent, resource-heavy versions of biber in homebrew-core.

Here are some other alternatives:

  • Make the biber formula depend on texlive (or maybe it should be the other way around); the goal is to include a test in one or the other formula that gets run whenever either formula is updated.

  • There’s a synced_versions_formulae.json; maybe adding ["biber", "texlive"] to this file would keep biber and texlive in sync, but I’m totally unfamiliar with this file and how it’s used.

  • Make texlive a test-only dependency of biber, and add a test that creates a document with a biber-built bibliography. This seems like the least intrusive option, but the drawback is that such a test won’t pass until TeX Live 2023 is released in March.

@SMillerDev
Copy link
Member

Make texlive a test-only dependency of biber, and add a test that creates a document with a biber-built bibliography. This seems like the least intrusive option, but the drawback is that such a test won’t pass until TeX Live 2023 is released in March.

This seems to suggest it's really a problem between the two upstreams though, which will only really be fixed once TeX Live updates their dependencies.

@nwhetsell
Copy link
Sponsor Contributor Author

I’ll understand if this issue is closed, but it seems like TeX Live has updated its dependencies. The version of BibLaTeX available on CTAN, and the one that would be installed currently using TeX Live’s installer, is 3.18, which is compatible with the latest biber.

@cho-m
Copy link
Member

cho-m commented Jan 30, 2023

I think the problem is that texlive has a slow release cycle of essentially once a year. When texlive 2023 is released, it should align to newer biber.

We previously discussed this before with biber 2.17 and an older texlive. Not sure if we made a decision at that time:

There were some ideas of aligning biber to be compatible to texlive or adding a versioned biber.


We originally introduced biber to be used with texlive (#87247) so it does sound like we should provide a biber that works with texlive. Though, may need user input of how commonly biber is used standalone.

@nwhetsell
Copy link
Sponsor Contributor Author

I’d be happy to open a PR to add a biber@2.17 formula.

@cho-m
Copy link
Member

cho-m commented Feb 13, 2023

As note, TeX Live 2023 is planned for public release on March 19.

@MB175
Copy link

MB175 commented Feb 14, 2023

I’d be happy to open a PR to add a biber@2.17 formula.

Is there an easy fix until this formula does not exist ?

@dguest
Copy link

dguest commented Feb 14, 2023

I ended up fixing this by stitching together some instructions I found on stack overflow. I think you should be able to run

brew tap dguest/homebrew-biber
brew install biber@2.17
brew link --overwrite biber@2.17

I guess it could probably be added to homebrew-core directly if enough people need this fix and they don't want to add my tap.

@MB175 does this work for you?

@MB175
Copy link

MB175 commented Feb 14, 2023

I ended up fixing this by stitching together some instructions I found on stack overflow. I think you should be able to run

brew tap dguest/homebrew-biber
brew install biber@2.17
brew link --overwrite biber@2.17

I guess it could probably be added to homebrew-core directly if enough people need this fix and they don't want to add my tap.

@MB175 does this work for you?

Nice thank you

@github-actions
Copy link
Contributor

github-actions bot commented Mar 9, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@github-actions github-actions bot added the stale No recent activity label Mar 9, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Mar 17, 2023
@github-actions github-actions bot added the outdated PR was locked due to age label Apr 17, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 17, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Reproducible Homebrew/homebrew-core bug outdated PR was locked due to age stale No recent activity
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants