问题的简短版本
我需要自动(而不是手动)安装一些在安装 MiKTeX 2.9 后未包含的软件包。我通过以下方法解决了这个问题Leo Liu 的回应,但这个过程非常手动...有没有办法做同样的事情,但使用命令行?或者更好的是使用批处理文件或类似的东西?
问题的详细版本
我正在创建一个自动流程来安装 MiKTeX 并编译 .tex 文件以生成 .pdf 文档。此流程将在我们的车间使用,并在我们的所有系统中实施。这些系统运行 Windows 7 Professional 32 位,但无法访问互联网。这就是为什么我们必须将 USB 安装程序中的所有可执行文件和所需文件带到车间。
到目前为止我尝试过的所有事情:
- 起初我以为如果 MiKTeX 安装时带有选项“即时安装缺失的软件包:“ 设置是的,这样就可以了。不幸的是,这似乎只有在有互联网连接的情况下才有效……
然后我尝试在 MiKTeX 中创建一个本地 texmf 树,如下所示Speravir 在这里解释,或者其他几个人也解释了。不幸的是,就像@user5751924 [1] 和其他人一样,创建一个“符合 TDS 的根目录”似乎是一项不可能完成的任务……这与尝试使用
mpm
(MiKTeX 包管理器)命令 [2] 一起出现,同样无济于事。特别是,mpmcli_管理员日志当我尝试例如时总是说“不是软件包存储库”:mpm --admin --install-some=list.txt --repository=C:\localtexmf
在这里,“列表.txt“包含(除其他外)以下我需要安装的软件包:
标题安全
花式高清
西弗森
彩色
tikzpage节点
图形文件
所有这些包都是手动下载并添加到 USB 安装程序中的,其方式应该符合 TDS 标准,但显然出了问题。
我也尝试过查阅 MiKTeX 手册,但没有成功。我甚至查看了 PackageManager.cpp 源代码,试图了解我的目录出了什么问题,但这是一条死路 :(
最后,我按照@Leo Liu 的回复进行了手动安装,它在一台机器上成功了!但由于这个过程需要为地板工厂的数百台机器完成,因此这个过程必须自动化。所以他的回答对我没有太大帮助。
我怎样才能自动化这个过程来做到这一点使用命令行?使用批处理文件也是可以的。或者任何其他帮助也非常欢迎!
提前致谢!
附言:如果需要的话我很乐意提供任何额外的信息...
答案1
graphicx 是必需的包。因此无需安装它。
安装其他软件包
使用本地存储库
从 CTAN 获取所需的 miktex 包
http://mirrors.ctan.org/systems/win32/miktex/tm/packages/
大多数包都是 lzma 文件,但也有其他格式。
同时获取miktex-zzdb1-2.9.tar.lzma
和miktex-zzdb2-2.9.tar.lzma
。确保所有文件都来自同一个 ctan 镜像,以便版本匹配。
把所有东西都放到一个文件夹中(不要解压文件!)例如C:\localrepository
。然后使用以下命令安装它们
mpm --admin --install-some=list.txt --repository=C:\localrepository
我不知道这个--admin
开关是否适合您。如果没有它,mpm 将在 USERINSTALL 树中安装软件包。
list.txt
应该包含一个列表米克泰克斯-package 名称。因此不是hhline
但是tools
(但这应该已经安装),也不是zref
但是oberdiek
。
使用 localtexmf
从同一来源获取包。创建一个C:\localtexmf
。解压此文件夹中的包(例如 7zip 可以处理 lzma)。检查所有文件是否位于正确的子文件夹中。例如 xcolor.sty 应该位于C:\localtexmf\tex\latex\xcolor
。您可以在 miktex 的包管理器中查看包属性中每个文件的正确路径:
当 localtexmf 正确填充后,您可以将其复制到合适的位置,然后将其附加到 miktex 系统
initexmf --register-root=C:\localtexmf
再次,是否使用取决于您的实际设置--admin
。
可能有更快、更自动化的方法来设置这样的 localtexmf(也可能使用 mpm),但无论如何,我认为本地存储库是更明智的解决方案。