I am waiting for a package update to become available on TeX Live. Think

enter image description here

In this process, I noticed I had no idea how many steps are required for a package update to be visible by tlmgr update. So far, I have identified the following, using siunitx v3.0.3 as an example:

  1. A release is made on GitHub (Optional, I guess). Timestamp is "2021-05-20T14:56:29Z". Conveniently, one asset is named siunitx-ctan.zip.

  2. The update appears on CTAN, which say "3.0.3 2021-05-20" (I don't find a timestamp.)

  3. The update appears on the TeX Live SVN. Interestingly, as of now (Friday, 21 May 2021, 06:14 GMT), that newest version is v3.0.2, with a commit time of "Thu May 20 20:17:51 2021 UTC". (So that commit was later than the GitHub release - still, there's a only lower version number.)

  4. The update appears on the TeX Live package repository (hosted by CTAN, it seems). That one hosts siunitx.tar.xz which is identical to siunitx.r59239.tar.xz, timestamped "2021-05-18 01:52". This is v3.0.0.

  5. Consequently, tlmgr show siunitx says:

package:     siunitx
revision:    59239
cat-version: 3.0.0

So I am confident that, had I done the same overview before the update in step 2, I might have seen v3.0.3, v3.0.2, v3.0.1 and v3.0.0 at different stages of this pipeline. This seems to take a lot of time. Aren't these steps automated? Are these all relevant steps, anyway, or what am I missing?

  • 1
    No this not all automatic. On ctan there are real people involved who check and install incoming packages, and in tex live too. May 21, 2021 at 6:28
  • 1
    In my case (circuitikz) I send manually a release to CTAN when I think it's worth it. I try to keep GitHub and CTAN in sync, but that's a manual thing. The nice people at CTAN check my submission and the it's out in a couple of days and it got picked by TeXLive. So you can think that there is a kind of sync with a two-day time granularity...
    – Rmano
    May 21, 2021 at 6:34
  • 2
    essentially none of the steps are automated, real people are involved making individual decisions about each package update. May 21, 2021 at 6:50

1 Answer 1


The workflow is as follows.

  1. A package author makes changes and decides they want to do a release
  2. They create a zip file containing their code and documentation plus any other files
  3. The zip file is uploaded to CTAN using https://ctan.org/upload
  4. A mail is sent to the CTAN maintainers saying an upload is available (these are visible in https://ctan.org/incoming to 'outsiders')
  5. A member of the CTAN team unpacks the zip, checks it using a script and looking at it
  6. Assuming all is OK, they install it into the live area of the central server
  7. The mirroring system propagates the upload around the network over 1-2 days
  8. In parallel with (7), the TeX Live team (for TeX Live) or Christian Schenk (for MiKTeX) pick up that a change has been made - this is done by scripting I think
  9. The TL team import the changes into their SVN - there is scripting for this but any changes in file structure can require manual intervention
  10. TL changes are automatically sent out to CTAN and propagate around the mirror network, again over 1-2 days

Automation here is limited to some handy scripts, the CTAN mirror system and (I think) notifications to the TL team. Notice that none of this is at all dependent on how a package author chooses to track changes in their own code. They can just use a single file with no version control at all - CTAN don't care.

Notice that due to the mirroring and manual checking, it's possible to uploads to CTAN which are close together to occur before TL picks up the first one. Thus some releases can get 'skipped', particularly when there is active development happening.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .