TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm new to LaTeX, investigating using it for some work projects. I'm using MiKTeX on Windows. My employer's locked-down network blocks the application's automatic installation function. I can take my laptop home and successfully install from there, but if I need a package in the middle of the day I'm stuck.

I am able to access the CTAN website and download the package files (.dtx or .ins?), but I don't know what do do with them. How can I do a manual package installation?

share|improve this question
In case someone is looking for that: How to install an individual package on a Linux system (TeX Live) – riddleculous Apr 15 at 14:32
up vote 120 down vote accepted

Firstly, check README files, available documentation of the package, perhaps the beginning of the .dtx file to get installation information.

Installing a package available as dtx/ins bundle:

  • Download the content of the package directory. dtx is the extension of a documented source file, ins is the extension of an installation file. Put this in a temporary directory.

  • If there's nothing differently written in a README file run LaTeX (or TeX) on the .ins file. This is best done using the command prompt (latex packagename.ins), but you may use your TeX editor in LaTeX/DVI-LaTeX mode or what it is called there. This would usually produce one or more files ending with .sty, perhaps some additional files. As you now have cls or sty files or the like, the remaining steps are the same like in the next alternative way:

Installing sty or cls files:

  • Create a new directory with the package name in your local texmf directory structure, see also Create a local texmf tree in MiKTeX. Why not to choose the main MiKTeX texmf tree see in Purpose of local texmf trees.

  • Copy the package files (*.sty, *.cls etc.) into this directory.

  • Make the new package known to MiKTeX: refresh the MiKTeX filename database. To do this, click "Start/ Programs/ MiKTeX 2.x/ Maintenance/ Settings" (or similar) to get to the MiKTeX options, click the button "Refresh FNDB". The installation is complete.

  • If you did not download the documentation already, you could get it by running pdfLaTeX or LaTeX on the .dtx file. Compile twice to get correct references.

Obtaining and installing packaged universal archives:

Perhaps you could get a file with the extension .tds.zip. Such files are archives fitting to your TeX directory structure. Open it, check the content structure. You could extract it to the right place. Also here, as after any installation, refresh the MiKTeX filename database.

Installing a font package

Installing a font package, especially for Type1 fonts, requires additonal steps. See Manual font installation.

Links with further information:

A different and very effective way, using a local repository:

(works only for all in the MiKTeX package repository available packages)

  • Use the MiKTeX net installer to download the complete MiKTeX repository to a USB drive.

  • On a MiKTeX system, choose this directory as the local package repository in the package manager.

  • Use this local repository for installation and updates.

  • You may update that local repository later using the net installer: it loads the database from the server, compares and downloads new or updated packages.

share|improve this answer
this looks like a great answer! I'm not ready to call it "answered" as I haven't been able to successfully follow the process yet. I'd been able to get all the packages I'm immediately needing from home. Semi-randomly choosing other packages to install leads to dependencies on other missing packages that seems like a goose chase. Some packages, like "epsf", seem to come directly with .sty files instead of .ins. I'm assuming I just copy those in place? It doesn't seem to be recognized as installed... – mbmcavoy Aug 23 '10 at 18:08
Copying .sty files would be sufficient. To get them recognized click "Refresh FNDB" or run mktexlsr or texhash at the command prompt. I'm not sure if the package manager shows them afterwards as installed but TeX would know about them. – Stefan Kottwitz Aug 23 '10 at 18:14
If you put packages in the main tree C:\Program Files\MiKTeX 2.8\texmf\tex\latex\packagename you must update the FNDB in admin mode if you have a multiuser setup. But my advice is to use the trees UserData, CommonData or even better a dedicated local tree for such additions. Packages in the main tree could get lost if one update to miktex 2.9. while one can easily attach a local tree to a new miktex version. The package manager will never show packages installed manually. And the update manager will ignore them too. – Ulrike Fischer Aug 29 '10 at 17:22
See my answer here tex.stackexchange.com/questions/1137/… – xport Jun 6 '11 at 22:28
@StefanKottwitz: Thanks for your comprehensive answer. Can you please explain what you mean by your line (For tds.zip file struture)..."Also here, as after any installation, refresh the MiKTeX filename database...How is this refreshing done? – Abhimanyu Arora Jun 11 '14 at 17:38

You can set up a local packages repository on your computer.

You need an internet access to download the MikTex packages.

My problem is that I can't succeed in setting up the internet proxy setup of MikTex in my system, so I have tried today the following solution with MikTex 2.9 and it worked with no problems; the on-the-fly package installation worked well too.

  1. Create the folder, for example c:\miktex_pkgs
  2. Copy the following file to the folder c:\miktex_pkgs (If you do not copy the files you will probably get some errors from MikTex. See http://bruceyf.wordpress.com/2008/05/07/miktexs-secret-local-package-repository/ for the details):




  3. You can copy any packages you may need from http://www.ctan.org/tex-archive/systems/win32/miktex/tm/packages to your local folder c:\miktex_pkgs

  4. At this point you have two options.

    • Update your MikTex system: from the Windows Start menu -> Programs -> Miktex 2.9 -> Maintenance (Admin) -> launch the program "Settings (Admin)"

      Go to the tab "Package repository" and choose the folder c:\miktex_pkgs

      Install packages...

    • Open a command prompt and navigate to c:\miktex_pkgs

      Use mpm.exe --install {name} to install packages. The {name} does not include any of the extensions (.cab, .tar.lzma, .tar.bz2, etc.).

share|improve this answer
This task is simplified by the »MiKTeX Net Installer«. It lets you download a complete MiKTeX System to a folder of your choice (including the database files). You can also keep this folder up to date by the installer and use it for updates to the system. – Thorsten Donig Apr 19 '11 at 18:30
Thank you. My access to internet is via a proxy, have you ever try the "MiKTeX Net Installer" with a proxy? – Alessandro Jacopson Apr 19 '11 at 18:36
No. So you have to try on your own. But you can determine the connection settings and insert a proxy. – Thorsten Donig Apr 20 '11 at 8:25

Have you tried to log into your admin account and then - using the shortcuts in the start menu - to go to the package-manager? There you can manually search for the packages which you access using the \usepackage-command and install them by simply clicking onto the plus on the top left. Important note: Always open the package manager using a right click and choose "Open as admin".

For me this always works out...

share|improve this answer
The keyword of the question is manually. – percusse Jul 9 '15 at 9:44
Do you mean to use the Windows admin account? I do have admin privileges, but the problem in this case isn't that I don't have rights on my PC, but that the network firewalls were blocking the automatic installer, I could download packages manually, but could not figure out how to install so I could use them. – mbmcavoy Jul 9 '15 at 20:39

I give here my small personal contribution concerning manual installation of packages in MiKTeX (Windows).

As I find very annoying when there is an error 503 or 404 with the internet connection when trying to install a package (package manager - network update).

My environments:

My whole work is done in the great Debian Linux environment. In fact I rarely use Windows because of its alarming security holes and vulnerabilities. When there is no Debian Linux available and I am unfortunately forced to use Windows, then I do my Latex work using the USBTEX (Miktex + Texmaker) in Windows environment.

I download the target package from the CTAN repository.

The package xifthen is used as an example.

In Windows:

Directories used:

All the work is done in a USB stick. USBTEX is installed in this USB stick in the directory:


My work directory:


How to install a new package from CTAN if the internet connection is not working or I am getting server connection errors 404 or 503:

  1. MiKTeX - Missing package error during Texmaker compilation: error: LaTeX Error: Filexifthen.sty' not found.`

  2. Using your browser download package xifthen.tar.lzma from: http://www.ctan.org/tex-archive/systems/win32/miktex/tm/packages

  3. Using 7-zip open the archive xifthen.tar.lzma and enter xifthen.tar.lzma\xifthen.tar\texmf\

  4. Copy (just select all and drag) all directories like:




    when asked if "Do you still want to merge this folder" answer "Yes" and if asked to replace files say "Copy and Replace" to replace the old files.

  5. Then run (Windows double click and after give administrator user/password):


    In menu: General> click on "Refresh FRDB" to add the copied files to database. The files will look as newly installed.

  6. Now you can compile again in Texmaker (>tools>quick build). There will be no error concerning this missing package.

  7. Please follow the same procedure to install other missing packages.

I hope it will help other users who are having problems with missing packages and would like to perform a manual package installation in MiKTeX (Windows).

share|improve this answer

A similar yet a little bit different way than Alessandro Jacopson's answer is the following:

  1. Use the miktex setting (user and/or admin) program installed with the basic MikTex distribution to set "Install missing packages on-the-fly" to "Ask me first".
  2. Create a miktex local repository as in Alessandro Jacopson's answer, i.e., create a folder with appropriate name, then place

    miktex-zzdb1-2.9.tar.lzma miktex-zzdb2-2.9.tar.lzma

from CTAN in the folder.

  1. Compile a .tex file. If anything used in the file is missing, a dialog window will prompt up to ask you if you'd like to install the first missing package.

  2. Go to CTAN and download said package into the local repository where you have put miktex-zzdb1-2.9.tar.lzma and miktex-zzdb2-2.9.tar.lzma.

  3. Choose your local repository in the dialog window from step 3. Then click install in the dialog window.

  4. Repeat steps 4-5, if any other packages are missing.

This way, you could install needed packages on-the-fly, even on a computer that can only access Internet via a navigator. There is also no need to download everything from CTAN which can be a little challenging to do, if internet access is very limited. Potentially you may need to install quite a few packages, but every package only needs to be installed once. The steps for installing on-the-fly are also relatively short.

I have had to do this a few times, since my company uses a proxy script to control internet access, and MikTex does not allow this kind of proxy.

One thing that you need to look out for is that the two files miktex-zzdbxxxxxx are sometimes updated, and therefore your local repository wouldn't work any more. So if the trick worked before, and suddenly stopped working, it's probably because you have to update (manually download) these two files again.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.