Is it feasible to package TeX Live 2022 as a snap given that it install many GB on the harddrive?
Thanks,
LRP
Is it feasible to package TeX Live 2022 as a snap given that it install many GB on the harddrive?
Thanks,
LRP
I’d love to know that Too! I was thinking if this is posible.
Hmm. This does sound feasible depending on what the intended use case is. A good test might be to see how a snapped version of texlive plays with pandoc
.
I was originally trying to use texlive as part of a snap package but having no luck due to conflicts with the deb
texlive package and the gnome
extension snap. It would be interesting to see if we could use TexLive as a build and standalone snap.
I’d love to collaborate on making this happen — even pay a modest bounty.
Here’re official TeX Live installation notes for Linux:
Linux:
Changing defaults:
LRP
Hello again,
My use case is work-in-progress toward most efficient possible self-publishing workflow.
I’m writing several books for self-publishers but fear current TeX Live installation methods are too challenging for most of the self-publishers I know.
Apt is easy for Debian et. al. users, but keeping TeX Live up to date seems to be an issue. Plus, it doesn’t work for other Linux distributions nor MacOS.
Is my understanding that snap works across all major OS installations and automatically updates the application correct?
Best wishes to all,
LRP
Yes! snaps will work on any major distribution. For the best experience, you should use one of the distros mentioned on the website, but it should work with any distro that can support snapd
(the service used to manage snap packages).
Let me take a look at snapping texlive. Somebody already reserved the name, but if I can get somewhere I will probably file a dispute to claim the name for the Snapcrafters.
Yes! Outstanding!
Please do keep me posted.
Thanks,
LRP
Hi Jason,
Some thoughts about naming:
The full TeX Live installation is more than 4 GB of LaTeX packages. To make this more manageable, TL provides “schemes,” e.g. smaller specialized collections of LaTeX packages. One can select a scheme by clicking a radio button midway through the install.
I’m interested in a snap that installs the book publishing scheme. So the name “texlive-bp” or similar qualification might work. This could be distinguished from “texlive-fi” for full install.
Best wishes,
LRP
Good idea. I have a rough snapcraft.yaml
file that successfully installs the full texlive distribution, but now I am trying to figure out how to correctly prime the components so that folks who install the snap can access them. override-build
does the trick for running the perl installer:
# apps:
# TODO: Define all the apps for texlive
parts:
texlive:
plugin: nil
build-packages:
- gzip
- perl-base
- wget
override-build: |
craftctl default
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
zcat install-tl-unx.tar.gz | tar xf -
rm install-tl-unx.tar.gz
cd install-tl-*
perl ./install-tl --no-interaction
Now I need to figure out how to what to put for the apps
section of the snapcraft.yaml document.
Wow! This is outstanding.
I’ll be setting up a Ubuntu system within the next few days. Looking forward to testing.
Many thanks,
LRP
Hi Jason,
Any more progress on the TeX Live snap?
Best,
Lloyd
Hi! I I volunteer for testing! I too think that TexLive in snap format would be great and naming with the schemas is a good idea, because a full install is too large, maybe even make the same for languages packages by region could be nice to have
Hi! quick update
Manage to make a snap that works with the basic scheme of TexLive. Tested in strict mode
name: texlive-basic # you probably want to 'snapcraft register <name>'
base: core20 # the base snap is the execution environment for this snap
version: '0.0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: testing for snapping texlive-basic schema # 79 char long summary
description: |
testing snap for texlive-basic schema
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots
parts:
texlive-small:
# See 'snapcraft plugins'
plugin: nil
build-packages:
- gzip
- perl-base
- wget
override-build: |
cd /tmp
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
zcat install-tl-unx.tar.gz | tar xf -
rm install-tl-unx.tar.gz
cd install-tl-*
perl ./install-tl --scheme=basic --texdir=$SNAPCRAFT_PART_INSTALL --no-interaction
After installing the snap you just need to PATH=/snap/texlive-basic/current/bin/x86_64-linux:$PATH; export PATH
like in the documentation
I think this snap can work like another really good snap that I frequently use openjdk-snap by jgneff where the snap export to PATH the java installation
What do you think?
For me this way is much easier but there are some downsides:
Hi Edurojas,
Outstanding!
Selective scheme install is a definite plus.
I plan to bring up a new NUC next week. This will be a good opportunity to test.
Many many thanks for your work.
LRP
This is great! I should have something with the publishers collection later. I already have a snap repo set up (I get a 404 errors when I click on the link to your repository). I am thinking we can combine our snap build recipes in a single repo in the Snapcrafters organization that folks can reference. I will post the link to the repo later today!
Reason why I think this group repo will be beneficial is that you need to use a different texlive.profile
if selecting a specific collection or build for a different arch. I have found that by default install-tl
will only build for x86_64.
Also, regarding TEXMFHOME
and TEXMLOCAL
, they should be mappable via the apps
section. This will require manually specifying where the executables are, but it should be rather trivial.
Hi @nuccitheboss link fixed!
I’m not a snap expert (just a curious mind with machine learning experience). Maybe snap layouts are the way to implement the TEXMFHOME
and TEXMLOCAL
or it’s better with apps environment?
UPDATE: I updated my repo, as I say earlier, I like the implementation of openjdk snap, so I added a way to the snap to export the PATH I don’t know if this is a good idea btw
Layouts are more for pointing to configuration files located under /etc
. Some programs have the location of their configuration files hardcoded in, so layouts are essentially for convincing the program that the path is still valid (even if the config file is located under $SNAP/current
). There is an environment
tag that you can use in the snapcraft.yaml
file to set TEXMFHOME
and TEXMLOCAL
.
Even if the apps are added in, you can still use the openjdk
implementation that you are referring to. Having the apps just prevents needing users to modify their environment on their Linux machine.
Here’s my spin on the texlive snap, but with the publishers collection specifically. It should be working in strict confinement, I just need some testers. I specified all the CLI utilities as apps, and I set TEXMFLOCAL
and TEXMFHOME
within the snap.
@edurojas --texdir
ended up being the missing piece. I was wondering how to get the executables to stage correctly, so thanks for sharing your experimentation. You can check out my branch here: https://github.com/NucciTheBoss/texlive.
I am planning on publishing the package tomorrow (along with requests for aliases) along with my full scheme package version on the Snap Store, so if you wanted to submit a pull request with your basic scheme version to my repo, I can publish that package as well. My plan is that after the public testing period, I will transfer the packages to the Snapcrafters organization on GitHub.
Hi Jason,
Terrific!
I really look forward to testing and using this snap. I’ll be configuring a NUC later this week or next, so we’ll have a good testbed.
I’m currently working on a typesetting how-to book for self-publishers. This snap promises to greatly simplify the getting started chapter. I’ll definitely give you credit in the book.
Very much appreciate your work.
Lloyd