# How can I manually install a package on MiKTeX (Windows)

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?

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.

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.

• 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.

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):

http://mirrors.ctan.org/systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma

http://mirrors.ctan.org/systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma

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.).

• 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
• The links you gave didn't work for me, but I'm found the needed files here: ftp.uni-erlangen.de/mirrors/CTAN/systems/win32/miktex/tm/… both miktex-zzdb1-2.9.tar.lzma and miktex-zzdb2-2.9.tar.lzma are there, and you don't need the readme file – Adi Ro Oct 31 '16 at 8:01
• @AlessandroJacopson, Is there a link to download all packages at once? Thank You. – Royi Dec 4 '16 at 6:44

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...

• 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

This is a simple and straightforward answer that worked for me.

As an example I'll take the listofitems package of CTAN and Miktex 2.9. We suppose the package is not available in the Miktex Package Manager, otherwise it can be directly installed with the manager.

1. Create a local directory where you are gonna have all your manually installed packages. For example: C:\myextrapackages\tex\latex (the tex\latex folder and subfolder must be there, if not Miktex won't accept the directory as S. Kottwitz said above, but myextrapackage can be any path you choose.)
2. Add the directory C:\myextrapackages\ to Miktex. Procedure: go to Miktex Settings -> select the tab Roots -> and click on the Add Button (more details here)
Note: See that we have left out the \tex\latex folders from the added path. If you try to add the full path C:\myextrapackages\tex\latex to Miktex you may get an error.
3. Download the .zip file with the package (in our case listofitems.zip available on the CTAN page)
4. Unpack the contents of the .zip package file in a package folder with the same name (in our case listofitems.zip is unpacked in the folder listofitems).
5. Copy the package folder into your already new added directory. (in this example the final result is the directory C:\myextrapackages\tex\latex\listofitems with all the unpacked files inside)

In the future, if you download more packages, you skip steps 1. and 2. And follow steps 3 through 5 using your available local directory (in this case C:\myextrapackages\tex\latex)

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.

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:

X:\USBTeX-1.7\


My work directory:

X:\Latex\My_documents


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:

doc
source
tex
tpm
...


to:

X:\USBTeX-1.7\programs\MiKTeX_2.9


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.

X:\USBTeX-1.7\programs\MiKTeX_2.9\miktex\bin\mo_admin.exe
`

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.

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).

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.

1. Create a folder in your computer (for example, C:\MyUsepackage).

miktex-zzdb1-2.9.tar.lzma
miktex-zzdb2-2.9.tar.lzma
You might need to wait a minute for loading the list if you visit this website first time. Thanks for this post.

3. Put these two files into the folder you created.

4. Start->All Programs->MiKTeX 2.9->Maintenance (Admin)->Settings (Admin). Don't use "Search programs and files". It's an idiot!

5. Switch to the "Packages" label and press "Change" button.

6. Select "Packages shall be installed from a directory" and browse the folder you created.

7. Wait a minute.

8. Now you just download the usepackages you need from the archive and place them in the folder C:\MyUsepackage. They are all xxx.tar.lzma files. You don't have to extract them if you use WinEdt. It will do that when it is compiling your tex file.

9. Note that sometime the usepackage you included has a different name from the xxx.tar.lzma file. You can know the xxx.tar.lzma file's name in the warning message.