Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
November 20, 2023 15:59
April 11, 2022 23:16
April 22, 2022 21:41
July 3, 2023 10:50
March 12, 2022 17:56
July 3, 2023 10:57
December 9, 2020 22:50
July 3, 2023 11:46
March 18, 2022 18:56
December 12, 2021 00:39
March 19, 2022 13:22
July 3, 2023 10:50
March 24, 2023 08:42
December 28, 2021 14:33
December 25, 2022 23:26
July 3, 2023 10:26
March 17, 2022 23:54
March 17, 2022 23:54



I was in the process of transferring the hosting of these packages to the Zotero organisation. That may or may not yet happen soon, but right now, if you're reading this, you'll likely have to update the pointer to the repo. If you are getting errors, please re-run or see the instructions below to re-install the repo manually. I have had to restructure the repos. I apologize, but it was a necessary simplification. Simply re-running the install is all that is required, no need to do anything at all with your current install of Zotero.

Primary source:

  • (re)install using curl -sL | sudo bash


Deprecated sources, please change to the primary source.

If you still use these, you will get errors -- apologies for this, but they had become so unreliable I cannot support them. Please re-install using the instructions above. The following are no longer supported:

  • the downloads on this repo
    • github has made changes to how they're hosting release files, which triggered a long-standing bug in apt.
  • sourceforge
    • sourceforge uses a mirror system that updates haphazardly and which may redirect you to a mirror that is down.
  • deprecated URL on backblaze

This repository contains packaged releases of Zotero and Juris-M for Debian-based Linux systems and Crostini-enabled chromebooks, and the script used to build them. It also offers the latest nightly zotero-beta.

This repository updates to new releases of Zotero and Juris-M within 2 hours, usually faster.

Contents of the packages

The packages include the whole Zotero/Juris-M binaries, as built by Zotero / Juris-M teams themselves.

The packages provide a system-wide installation (into the /usr/lib directory), as opposed to a single-user installation (e.g. in your HOME directory).

They manage both desktop file registration and MimeType registration.

Installing Zotero / Juris-M

Installing Zotero

To install Zotero, use the following commands:

wget -qO- | sudo bash
sudo apt update
sudo apt install zotero

Installing Juris-M

To install Juris-M, use the following commands:

wget -qO- | sudo bash
sudo apt update
sudo apt install jurism


You can use curl instead of wget by typing

curl -sL | sudo bash

Updating Zotero / Juris-M

The Zotero / Juris-M programs provided by this repository have their self-update facility disabled.

Simply rely on on your system's package manager to give you update notifications when a new version comes out.

Alternatively, you can use the following commands:

sudo apt update
sudo apt upgrade will ask for sudo permissions to install the pointer to the apt repo, and to add the signing key to the keyring.

Beta packages

This repo also has the nightly beta's, installable as the zotero-beta and jurism-beta packages. You can install these alongside the regular packages.

Package signing errors in Debian/Ubuntu/...

The accepted key format in Debian-based systems seems to have changed a while ago, which means the existing signing verification key you have may no longer be available during install. Re-running the install script will remedy that:

wget -qO- | sudo bash

Instructions for installation on Crostini-capable Chromebooks

Instructions for installation on Crostini-capable Chromebooks can be found on the wiki.


wget -qO- | sudo bash
sudo apt-get purge zotero

What goes on under the hood in

The is convenient, but there's a risk to running random scripts from the internet as root. What the script does, and what you could manually do yourself, is:

Check whether you are installing on a supported architecture:

case `uname -m` in
  "i386" | "i686" | "x86_64")
    echo "Zotero is only available for architectures i686 and x86_64"

Set up some basic information about the repo and your environment:


checks whether you have curl or wget and use that to download the public key for signature verification

if [ -x "$(command -v curl)" ]; then
  sudo curl -L $GPGKEY -o $KEYRING
elif [ -x "$(command -v wget)" ]; then
  sudo wget -O $KEYRING $GPGKEY
  echo "Error: need wget or curl installed." >&2
  exit 1
sudo chmod 644 $KEYRING

remove old key with too broad reach if present

sudo rm -f /etc/apt/trusted.gpg.d/zotero.gpg

install repo pointer

cat << EOF | sudo tee /etc/apt/sources.list.d/zotero.list
deb [signed-by=$KEYRING by-hash=force] ./

clean up remnants from previous use of another mirror, if any

sudo apt-get clean


To rebuild this repo you need:

  • a deb-based system (I use Ubuntu)
  • Python 3.10