Debian 和 Ubuntu 的 texlive 打包功能非常好。但我希望tlmgr
对升级和要安装的软件包进行更细粒度的控制。
那么如何在 Debian/Ubuntu 上安装“原始” TeXLive?
另外我如何dpkg
知道我已经安装了 TeXLive?
答案1
使用来自的网络安装程序脚本tug.org 官方网站上的此页面安装“vanilla” TeXlive。
诱使 Ubuntu 满足软件包依赖关系更加复杂,需要使用 equivs 软件包。有一些基本的指导原则在 TeXblog 上的这篇文章中(非官方博客)。(此页面有点旧,针对的是较旧版本的 Ubuntu。)那里的软件包列表有点旧,但相同的总体程序应该仍然有效。恐怕我没有一份虚拟软件包应包含的内容的现成列表;也许其他人会有。(如果您尝试安装某些东西,它会告诉您您有未满足的 texlive 依赖项,您可以随时根据需要创建新的虚拟软件包。)
答案2
这些说明已针对 Ubuntu 16.04 和 TeX Live 2021 进行了更新,它们可能适用于大多数 Ubuntu/Debian 发行版。
安装
安装“原始” TeX Live 并不像您想象的那么难。您需要的东西:
- 互联网连接。
- 大约 4 GiB 的可用空间(如果不安装文档,则为 2 GiB)。
- 根(
sudo
)的幂。
笔记:这些说明适用于终端和安装 的“原始”最新版本texlive
。如果您不熟悉命令行和大量sudo
说明,您可能仍然可以从软件中心安装该texlive-full
软件包;您最终会得到 的“库存”版本texlive
,它通常会比 的最新发行版稍差一些texlive
。
安装依赖项
本指南需要以下软件包:wget
,perl-tk
。使用以下命令安装它们:
sudo apt install wget perl-tk
TeX Live 安装程序
首先需要使用以下命令下载官方安装程序:
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar -xf install-tl-unx.tar.gz
cd install-tl-20220211
该install-tl-20220211
文件夹的名称可能不同。您可以键入install-tl
然后tab按以自动完成文件夹名称。
现在可以开始安装,运行:
sudo ./install-tl
这将启动安装过程。您可以在此处更改所有类型的选项,大多数默认选项都是正确的。为了在安装后获得可执行文件和 man/info 页面,其中 (1) 是 Unix/Linux 中的推荐选项,而 (2) 是 Windows 中的推荐选项:
- 创建以下环境变量以在 TeXLive 2021 中查找新安装:
export PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH export INFOPATH=$INFOPATH:/usr/local/texlive/2021/texmf-dist/doc/info export MANPATH=$MANPATH:/usr/local/texlive/2021/texmf-dist/doc/man
这可以添加到~/.profile
打开终端时自动应用。
- 您可以通过更改选项让安装程序为您创建符号链接:使用o更改选项并l创建符号链接。默认位置是正确的,因此只需按enter即可使用它们。使用r返回安装菜单。
如果由于某种原因您忽略了这一点并运行了安装程序,则可以使用以下命令追溯创建符号链接:tlmgr path add
。请参阅相关文件更多细节。
当然,在某些情况下,更改其他选项可能会有所帮助。不安装文档和来源树将为您节省大量 (1.8 GiB,50%) 的磁盘空间。但缺点是必须在线查找文档,而不是在本地查找。
如果你想进一步减少磁盘空间,你也可以更改安装方案或者收藏,但这会导致某些软件包默认不安装。不过,您可以稍后通过 TeX live 管理器安装它们。
按i开始安装。完整安装可能需要很长时间,比如说一到三个小时(即使在相对较快的连接上)。通常,您的里程可能会有所不同,但如果在设置中选择的组件较少,则该过程会加快,并且稍后可以轻松安装缺少的组件。
中断:如果由于某种原因安装中断,则可能可以通过再次运行安装程序来恢复。这将提示您继续安装。如果您想从头开始安装,最好删除以下已安装的元素 +/- 主题答案中提到的可能元素如何删除与 TeX Live 相关的所有内容以便在 Ubuntu 上全新安装?
sudo rm -rf /usr/local/texlive/2021
失败:如此漫长的安装过程可能会因通信中断或其他原因而失败。在这种情况下,您可能希望重新启动安装,但这次请选择可以运行的最小配置。然后,您可以使用 安装所有缺少的组件sudo tlmgr --gui
。
完成安装
如果一切顺利,所有与 TeX 相关的命令都应该可以工作。通过检查 的输出来验证这一点which tex
,它应该是/usr/local/bin/tex
。
假包裹
现在 TeX Live 可以工作了,但还需要让 Ubuntu 认为您已经安装了 TeX Live。这可以通过以下软件包完成equivs
:
sudo apt install equivs --no-install-recommends freeglut3
mkdir -p /tmp/tl-equivs && cd /tmp/tl-equivs
equivs-control texlive-local
注意:如果您的/tmp
安装带有noexec
标志,则构建将失败,如下所述这里/tmp
。在这种情况下,您可以使用另一个目录来代替。
然后,您必须编辑texlive-local
。为此,请使用提供的文件这里与您正在安装的版本相对应。例如,对于 2020,使用:
wget -O texlive-local https://tug.org/texlive/files/debian-equivs-2021-ex.txt
有关所需编辑的更多信息,请参阅TeX Live Debian 指南。
现在您可以构建包并安装它(.deb
在下面的第一个命令中创建的确切名称;您也可以使用制表符自动完成):
equivs-build texlive-local
sudo dpkg -i texlive-local_2021-1_all.deb
sudo apt install -f
此后,通过软件包维护者安装将不会再安装 TeX Live。您可以通过安装 TeX 相关的软件包(如 、或)texworks
来检查是否确实如此。texworks
texstudio
qtikz
kile
字体
如果您想要安装所有 OpenType 和 TrueType 字体,以便在其他程序中也可以使用它们,则必须将 TeX Live 字体添加到系统配置中:
sudo cp $(kpsewhich -var-value TEXMFSYSVAR)/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
gedit admin:///etc/fonts/conf.d/09-texlive.conf
删除包含并保存的行type1
。现在运行:
sudo fc-cache -fsv
更新
如果您已从 CD、DVD 或 ISO 映像安装,则应将安装更新为所有软件包的最新版本。为此,请运行以下两个命令:
sudo tlmgr update --self
sudo tlmgr update --all
从现在开始,您可以通过具有 GUI 界面的 TeX Live Manager 更新 TeX Live:
sudo tlmgr --gui
它可能会抱怨缺少“Tk”,这可以通过安装解决perl-tk
:
sudo apt install perl-tk --no-install-recommends
启动器
您还可以为您的桌面环境创建一个启动器:
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/tlmgr.desktop << EOF
[Desktop Entry]
Version=1.0
Name=TeX Live Manager
Comment=Manage TeX Live packages
GenericName=Package Manager
Exec=pkexec /usr/local/texlive/2021/bin/x86_64-linux/tlmgr --gui
Terminal=false
Type=Application
Icon=system-software-update
EOF
您可能需要注销并重新登录才能使更改生效。
笔记:如果$XDG_DATA_HOME
设置了变量,则使用该变量的值而不是~/.local/share/applications
。也可以用于/usr/share/applications
系统范围的启动器。
升级到下一代 TeX Live
要升级,您需要再次下载并运行安装程序。不要忘记让安装程序创建符号链接。
再次运行字体部分可能也是个好主意。您可以通过运行以下命令删除旧发行版(例如):
sudo rm -rf /usr/local/texlive/2019
sudo rm -rf /usr/local/texlive/2020
卸载 TeX Live
要彻底删除 TeX Live,您需要撤消所做的所有操作:
- 删除
/etc/fonts/conf.d/09-texlive.conf
并更新字体缓存。 - 消除
/usr/local/texlive
。 equivs
删除使用( )创建的包sudo apt purge texlive-local
。- 请参阅主题答案如何删除与 TeX Live 相关的所有内容以便在 Ubuntu 上全新安装?对于 Linux。
参考文献和来源
答案3
我编写了一个脚本,可以自动执行 Silex 的回答,还可以(可选)执行更多操作。它支持 Ubuntu 12.04 到当前版本。
下载install-tl-ubuntu
并运行它
sudo ./install-tl-ubuntu
要下载该脚本,请运行
wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/install-tl-ubuntu && chmod +x ./install-tl-ubuntu
下面我列出了GitHub 存储库
- 安装 TeX Live 2013
- 自动寻找最快的存储库
- 提供安装的最新进度
- 如果安装失败则自动重启
tlmgr
然后可以用来保持你的安装是最新的- 通知
apt
以便 apt 不会尝试将 Ubuntutexlive-*
软件包作为依赖项进行安装(例如,如果您这样做sudo apt-get install lyx
) - 链接到 Ubuntu 安装 TeX 文件的文件夹,这样当你安装带有 LaTeX 文件的 Ubuntu 软件包(例如 FoilTeX 和 noweb)时,它们将可用
- 添加 TeX Live 字体以供全系统使用
- 其他与字体相关的便利
- 告诉 AppArmor 允许 Evince 访问 TeX Live 字体
- 可以安装用户提供的 TrueType 字体(
--truetype-dir
) - 可以安装 IvriTeX 希伯来字体(
--hebrew
)
- 可选择安装 TeX Live 2013 中未包含的常见期刊的附加 LaTeX 文件 (
--more-tex
) - 非交互方式工作,因此可以添加到批量安装脚本中
tlmgr
可以从桌面菜单运行(如果安装了“gksu”包)- 可以通过 ISO 文件安装 (-
-iso
)
有关详细信息,请参阅
./install-tl-ubuntu --help
答案4
编辑前请三思!请不要以特定于发行版的方式编辑此答案。虽然这个问题专门针对 Debian/Ubuntu 系统,但它可以向 GNU/Linux 用户提供更普遍的信息。你的系统可能不是他们工作的方式全部GNU/Linux 系统 - 甚至不是所有基于 Debian 的系统。
注意上游推荐不是以 root 身份安装。以 root 身份安装会带来一定风险,而且没有任何好处。
请注意,我信任 TeX Live 的负责人。但是,我有理由相信他们是会犯错的,而且无论他们多么能干、多么善意,他们都会犯错。此外,服务器会被黑客入侵,下载会被破坏或拦截。基本上,糟糕的事情都会发生。
关键在于使用 root 权限安装没有任何好处。它只会增加安全风险。尽管它可能很小,但我认为没有理由接受它。
可以以普通用户身份安装和管理安装。但是,这只能保护您的系统目录。您的主目录(您可能在其中保存所有个人文件和项目)仍然暴露在外。幸运的是,它/home
也很容易保护。
如果您想遵循上游的建议,那么,我是这样做的......
设置专门的用户/组并为其创建合适的主页
这是唯一需要 root 权限的部分。
以下是适用于大多数 GNU/Linux 发行版的通用说明。如果您使用的是基于 Debian 的系统或其他具有该adduser
脚本的发行版,请参阅下面的说明以了解更简单的方法。否则,请使用useradd
以下命令。
通用 GNU/Linux 发行版:useradd
sudo useradd -d /usr/local/texlive -m -r -U -s /bin/sh texlive
这将创建一个新用户,texlive
作为新组的成员。它为texlive
创建一个主目录。texlive
/usr/local/texlive
如果你之前已经从上游安装了 TeX Live,请忽略-m
上述命令中的标志。相反,在创建新用户后,请执行以下操作:
sudo chown -Rh texlive:texlive /usr/local/texlive
请务必设置密码:
sudo passwd texlive
系统会要求您选择并确认密码。请注意,您输入的内容根本不会显示在屏幕上。只需输入密码并按回车键即可。然后执行相同操作进行确认。
如果您愿意,可以为用户/组选择其他名称,只要它在系统上是唯一的即可。假设您想使用tladmin:tladmin
,那么您需要
sudo useradd -d /usr/local/texlive -m -r -U -s /bin/sh tladmin
sudo passwd tladmin
或者,如果你之前已经以其他用户身份安装了 TeX Live,请省略该-m
标志并添加
sudo chown -Rh tladmin:tladmin /usr/local/texlive
下文中,<username for texlive>
表示用户名,group of texlive>
表示组。因此,在我们的示例中, 都是texlive
或tladmin
。
基于 Debian 的发行版:adduser
如果你正在使用 Debian 或 Debian 衍生版本,那么根据这个问题并给出安德鲁·卡什纳的经历,你也许应该使用adduser
而不是useradd
。根据 Andrew 的说法:
sudo adduser texlive
或者,如果你想使用不同的用户名,例如tladmin
sudo adduser tladmin
就足够了,但请注意,这将创建一个额外的目录/home/texlive
,或者/home/tladmin
该useradd
方法不会创建。在这种情况下,<username for texlive>
的主页将/home/<username for texlive>
是不是 /usr/local/texlive
。此外,<username for texlive>
的主要组将取决于系统的默认值:您可能会得到<username for texlive>:<username for texlive>
(例如texlive:texlive
或tladmin:tladmin
)或者您可能会得到<username for texlive>:staff
(例如texlive:staff
或tladmin:staff
)或<username for texlive>:users
(例如texlive:users
或tladmin:users
)。您可以使用
groups <username for texlive>
发现<username for texlive>
被分配到哪个组。例如,使用
groups texlive
iftexlive
是您添加的用户的名称,或者
groups tladmin
为了tladmin
。
如果结果包含<username for texlive>
(例如texlive
或tladmin
),则在下文中使用此组。否则,您可能只会列出一个组 egusers
并应使用该组。在下文中,我将调用此组<group of texlive>
并用 表示您正在使用的用户名<username for texlive>
。如果您之前没有从上游安装过:
sudo mkdir -p /usr/local/texlive
sudo chown -Rh <username for texlive>:<group of texlive> /usr/local/texlive
如果你之前已经从上游安装过,那么只需:
sudo chown -Rh <username for texlive>:<group of texlive> /usr/local/texlive
安装前切换到新用户
现在登录为<username for texlive>
:
su -l <username for texlive>
输入密码后,您将进入<username for texlive>
的主目录。也就是说,您将进入/usr/local/texlive
。(如果您使用了上面的 Debian 方法,cd /usr/local/texlive
请从主目录移动。)
现在按照 Silex 的说明进行操作,但省略所有出现的sudo
。 你不需要它们。
请注意,此方法不仅可以保护您的系统目录,它还可以保护你的家。<username for texlive>
用户无法写入您的正常主目录。因此,即使有人搞砸了,安装程序试图删除您的所有文档,它也不会被允许这样做。事实上,如果您遇到任何权限错误,那将是一个危险信号。安装程序不应该接触任何外部内容/usr/local/texlive
。
后期护理:何时使用根
您需要sudo
安装伪软件包并将 TeX Live 的字体集成到系统配置中。这是因为这些步骤涉及系统目录。伪软件包会为系统安装,而字体配置则涉及更改中的文件/etc
。所有这些都需要 root 权限。
维护:更新您的安装
当您准备好更新 TeX Live 时,只需<username for texlive>
在运行更新之前登录即可:
su -l <username for texlive>
# give the password
tlmgr update --all
做不是使用sudo
或切换到 root。重点是tlmgr
作为无特权用户并且不能触碰您的主目录或系统目录。
一般来说,如果你想要更改 下的任何内容/usr/local/texlive
,su <username for texlive>
则必须先进行更改。如果你想要在/etc
或 下执行某些操作/opt
,则需要 root 权限(sudo
或类似权限)。
松散相关的笔记
在 中使用单个配置文件/etc
似乎已经过时了。如果您发现/etc/environment
未设置PATH
,则它可能在其他地方。例如,在某些系统上,PATH
已在 中设置,并且应通过为 shell(例如或 )/etc/profile
添加名为 的文件来扩展它:/etc/profile.d/texmf.sh
sh
bash
# /etc/profile.d/texlive.sh
if [ $UID != 0 ]
then
[ -d "<path to binaries>" ] && export PATH="<path to binaries>:${PATH}"
fi
这样可以避免自动将 TeX Live 二进制文件添加到 root 中PATH
。为了避免在安装新版本的 TeX Live 时需要调整此文件,您可以使用符号链接系统。
cd /usr/local/texlive
ln -s <YYYY>/bin/x86_64-linux bin.<YYYY>
ln -s <YYYY> current.<YYYY>
ln -s bin.<YYYY> bin
ln -s current.<YYYY> current
然后/etc/profile.d/texmf.sh
可以包含
# /etc/profile.d/texlive.sh
if [ $UID != 0 ]
then
[ -d "/usr/local/texlive/bin" ] && export PATH="/usr/local/texlive/bin:${PATH}"
fi
和PATH
将被设置为自动包含当前二进制文件。当您安装新版本的 TeX Live 时,只需添加更多链接(每个版本 2 个)并调整current
和bin
链接以指向您想要激活的任何版本。这一切都可以按 完成<username for texlive>
,无需 root 权限。(也就是说,必须使用 root 权限创建.sh
中的文件/etc/profile.d
,但在安装或激活新版本的 TeX Live 时无需触碰此文件。)