[教程]OpenSUSE安装配置TeXLive2015、前端软件Kile、TeXstudio及TeX更新软件的使用

我的系统为 OpenSUSE42.1 64 位系统。
SUSE 其他版本的 64 位系统应该也适用此方法,32 位系统未测试过,如果 TeXLive.iso,texlive-dummy 支持的话同样也是可以的。
其他版本的 Linux 发行版本,只要找到合适的 texlive-dummy 文件也是可以的。

注意:这里不讨论从源安装软件和下载安装包安装软件的优劣,只讨论解决问题的方法。

因为 opensuse 源里的 texlive 版本为 2013 年的,为了使用更新的软件,所以自己下载官方的源文件镜像进行安装,目前为 TeXLive2015.iso。
下载地址有很多,我给一个国内的镜像地址:
mirrors.ustc.edu.cn/CTAN/systems/texlive/Images/
注意:自己下载最新软件安装后会有一个问题,就是日后从系统源安装依赖此软件的别的软件时会把系统源的这个软件安装上导致冲突。所以这里安装 texlive 需要 texlive-dummy-opensuse(防止安装与 texlive 有依赖关系的软件时把系统源的旧版本安装上,如安装 TeX 前端软件 Kile),texlive-dummy-opensuse 版本需要和 TeXLive 的版本想对应,所以这里是 texlive-dummy-2015.9999。
下载地址: ctan.org/pkg/texlive-dummy-opensuse

一、安装 TeXLive2015.iso

  1. opensuse 没有自带 perl-tk,无法使用图形界面安装 TeXLive2015,可以使用字符界面安装。
    如果要用图形界面安装的话到 YaST 软件管理搜 perl-tk 安装就可以了。
    或者命令行
    sudo zypper in perl-tk

  2. 下载源文件 TeXLive2015.iso
    下载地址有很多,我给一个国内的镜像地址:
    见文章前面

  3. 挂载镜像
    找到镜像下载的位置,在这个地方打开终端

    $su
    (要用到管理员权限)
    注意:前面带 $ 的是普通用户,下面带 # 的表示是 root 权限,不是代码,不要复制到终端,下同。

    #mkdir /mnt/texlive
    mount -o loop texlive2015.iso /mnt/texlive
    注意:texlive2015.iso 是你下载的文件名,注意修改。

  4. 安装
    因为要安装到 /usr/local 下,所以需要管理员身份,如果安装到自己的家目录则不用(这里要用到 texlive-dummy,所以要默认路径,不要修改安装路径)

    #cd /mnt/texlive/
    #./install-tl -gui
    这时会出现下图:

上面画圈的根据需要更改,第一个圈是要安装的组件,一般都全部安装,也就不需要改。如果自己很熟悉,也可以按需安装。后一个圈是 TeX 默认的工作目录。其他的目录设置不要更改,其余默认就行。想知道选项的含义可以看 TexLive 的中文指南:
tug.org/texlive/doc/texlive-zh-cn/texlive-zh-cn.pdf
里面也有安装说明。

安装完之后会出现下图:


里面有环境设置说明。不过由于下面安装的 texlive-dummy-2015.9999 会自动设置好环境变量,所以不需要自己设置了。

二、安装 texlive-dummy-2015.9999
因为是自己安装而不是源安装 latex,所以在 YasT 安装和 Latex 相关的软件(如 TeX 前端软件 Kile、lyx,TeXstudio 等)时需要解决和旧版本的依赖问题,这时可以用 texlive-dummy-opensuse 来解决,避免系统安装上旧版本的 LaTeX。

  1. 下载包然后解压
    在包括下面两个软件包的目录下打开终端,运行命令如下

    #zypper in texlive-dummy-2015.9999-1.noarch.rpm

  2. 关于 texlive-dummy-2015.9999 包的说明
    里面有 texlive-dummy-2015.9999-1.src.rpm texlive-dummy-2015.9999-1.noarch.rpm 两个软件包,第一个软件包包括了 texlive-dummy.spec、zzz-texlive.csh、zzz-texlive.sh。后两个是用来设置 texlive 的 csh、bash 的环境变量,安装后是放到了 /etc/profile.d/ 目录下,这个目录都是所有用户的环境变量的脚本文件,比较好管理。前一个是打包用到的源码文件。后一个软件包有 zzz-texlive.csh、zzz-texlive.sh,从包的后缀名 noarch 可以看出,noarch 是 no architecture 的缩写,说明这个包可以在各个不同的 cpu 上使用。

3.texlive-dummy 的卸载
可以在 YaST 中找到 texlive-dummy,然后卸载,如图所示:

三、安装 TeX 前端软件 Kile、lyx、TeXstudio 等
因为 zzz-texlive.sh,zzz-texlive.csh(这两个文件放着 LaTeX 的环境变量)是在 /etc/profile.d/ 里面,而 /etc/profile.d/ 是系统启动时加载 /etc/profile, 然后 /etc/profile 从 /etc/profile.d 目录的配置文件中搜集 shell 的设置使修改生效,所以需要 source /etc/profile 或者重启才能使系统识别 LaTeX 的环境变量(如果没有这步的话打开相关软件时会提示找不到命令等错误,可以查看这个帖子( [[已解决]Kile如何配置(链接)自己手动安装的TeXLive2015 - #5 by weiming07) )。TeX 前端软件需要加载 LaTeX 的环境变量(主要是 /usr/local/texlive/2015/bin/x86_64-linux/ 下面的那些可执行文件(即命令))才能正常使用例如 PDFLaTeX 这些命令。
所以执行命令:

#source /etc/profile

好了,YaST 里面这些软件还比较新,现在可以直接在 YaST 里面搜索软件名安装即可,这个时候可以看到 YaST 只会安装软件本身,不会安装与 Texlive 相关的依赖。
你可以试试在没有安装 texlive-dummy 之前安装其中的一个软件,你会发现各种 texlive 的依赖全部会安装。

现在打开这些软件就不会有问题了。
注意如果还不行就重启一下即可。

小插曲:上述过程没有问题了。在 Kile 中遇到一个问题,就是用 Kile 的系统检查时会提示 Okular 版本过低而失败,如下图所示:
但是我在 YaST 里看到 Okular 版本很高,如下图所示:
请问是什么原因?
无法上传附件请查看帖子 [[已解决]Kile如何配置(链接)自己手动安装的TeXLive2015 - #5 by weiming07)

四、卸载 texlive2015.iso 和删除创建的目录
凡事有始有终,现在卸载 texlive2015.iso

#umount /mnt/texlive

删除创建的目录

#rm -r /mnt/texlive/

五、查看 tex 版本
命令:

$tex --version

TeX 3.14159265 (TeX Live 2015)
kpathsea version 6.2.1
Copyright 2015 D.E. Knuth.
There is NO warranty. Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.
出现上述信息表示 TeX 安装成功。

六、LaTeX 的更新
LaTeX 有个自带的更新软件 tlmgr
首先需要更新这个软件自己
命令:

#tlmgr update --self

完成后运行命令:

#tlmgr --gui

如下图所示:

点击红圈里的 Load,tlmgr 会自动选择源 Repository,然后点全部更新。等待更新完毕退出即可。
因只允许上传三个附件,此图已无法上传。

在此感谢

提供的帮助!具体查看帖子:在

里面

由于网址链接数限制为 10,所以不能都点击就能链接,附件只允许上传三个,所以有的图不能显示。我到时候会整理一份完整的文档出来给大家一份链接。谢谢理解!

参考:

zhuanlan.zhihu.com/LaTeX/20069414
cnblogs.com/ishell/p/4188701.html
blog.csdn.net/lansesl2008/article/details/12782489
baike.baidu.com/link?url=pGN2n-jUsGJyeo65hpZNMSqealx7Bbs-BxAq7lsDi3TJCVKj-Z65ToeMkBrrns6JBmYBGrXnScvdxbeokS7eVK
zhidao.baidu.com/link?url=5svKUPodvsiQlHKPEWKnyRpAF3yaT_sg63E45Vt-r4aRYH3EuSJybDelT7lM8kFaNMyNohZ2dctht8oHNm0SVztydexOoBF0ydWglfyCkcC
](
zhuanlan.zhihu.com/LaTeX/20069414
cnblogs.com/ishell/p/4188701.html
blog.csdn.net/lansesl2008/article/details/12782489
baike.baidu.com/link?url=pGN2n-jUsGJyeo65hpZNMSqealx7Bbs-BxAq7lsDi3TJCVKj-Z65ToeMkBrrns6JBmYBGrXnScvdxbeokS7eVK
zhidao.baidu.com/link?url=5svKUPodvsiQlHKPEWKnyRpAF3yaT_sg63E45Vt-r4aRYH3EuSJybDelT7lM8kFaNMyNohZ2dctht8oHNm0SVztydexOoBF0ydWglfyCkcC
)

这篇文章我已经挂到 blog.csdn.net/abel_qy/article/details/50403124 ,在上面教程中图片网址不全的可以到这个网址查看。
有什么问题欢迎大家交流讨论!

-devel 后缀的包一般是开发者才会用得上的开发包, 或者是编译别的包的时候需要用到的头文件之类的东西, 所以在这里应该是不需要安装 perl-tk-devel 的.
.src.rpm 里面是打包用到的源码文件, 一般用户也不需要安装的, 所以也不应该安装 texlive-dummy-2015.9999-1.src.rpm.

以及, openSUSE 的 texlive 系列包是某大神写了个 Perl 脚本自动打包的, 拆包很细碎, 可惜他本人似乎是在为 SUSE 工作, 然后没时间更新了, 也没有人来接班, 于是源里的 texlive 就一直没有更新. 我看过, 他生成的依赖关系比较细碎. 他甚至为了让用户在使用 texlive 的命令编译 tex 文件时, 如果缺少某个 LaTeX 宏包的话, 需要安装哪个包, 提供了个钩子之类的东西, 当然这很是不错, 但是感觉让依赖关系更加复杂了.

之前我也想过安装 dummy 包, 但是有些依赖关系就是没有解决得很好. 不过自己只用到 kile 这个会依赖到源里的 texlive 的包, 于是干脆重新打包了 kile, 去掉了其中 texlive 相关的依赖.

其实 texlive 是有分层的, 最底层就是一个个的宏包, 网上一点是 collection, 是宏包按照不同的分类的集合, 不同的 collection 之间没有重叠 ; 最上层的就是 scheme, 可以说是按照功能来分类吧, 但是 scheme 之间可能会有重叠. 理论上来说, 能够按照 collection 层来打包是比较合适的, 这样大约有几十个软件包吧, 然后 texlive 的二进制文件再编译出一个 texlive-bin 软件包来. 据我所知, Debian 就是这样子打包的, 但是它移除了部分许可证有问题的包 (因为 Debian 追求的是自由 / 开源). 很可惜我看不懂啊. 想过尝试自己打包, 但是进展缓慢, 现在懒得搞了.

如果哪位朋友有兴趣接手, 我可以提供一些思路. :joy:

非常感谢,我更正一下~

这个是不是很麻烦啊,需要什么样的水平可以做好?

可以看看苏姐的打包教程, 会基本的打包就可以做了啊.

你可以看一下 texlive.iso 里面, tlpkg 目录下有一个文件 texlive.tlpdb, 里面记载了 texlive 包含的所有宏包以及相关的信息, 包括名称, 版本号, 许可证, 许可证版本, 宏包包含的文件, 文档, 依赖, 在 ctan 上的哪个目录等等信息.

比如说 ctex 这个包的信息如下:

如果能够提取出名称作为 rpm 打包时的包名, 许可证就对应打包时的许可证, 还有许可证版本号, 等等内容, 基本上就可以打包出来了. 除了二进制包, 其他包都只是需要复制文件到合适的位置, 然后刷新一下数据库 (texhash), 或者刷新一下字体缓存 (字体包), 基本上就完成了. 将几千个宏包都打包成对应的 rpm 包, 基本上就完成了. 如果按照 texlive collection 层来打包的话, 就是各种宏包的集合而已, 可以考虑打一个 texlive-collection-name, 里面依赖所需的各种宏包对应的 rpm 包即可. 或者就直接按照 collection 层来打包的话, 源码部分就是这个 collection 依赖到的所有宏包的源码咯, 数据量会比较大, 上传到打包服务器有压力, 但是可以直接给 openSUSE Build Service 提供 texlive 网站的下载地址, 让打包服务器自己去下载. 而每个宏包的文件在 texlive 的网站上都可以下载到. 地址是 mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet/archive/
. 这个是中科大的 CTAN 镜像, tug 的 ftp 站点似乎访问有点慢.

当然, 如果能够根据 texlive.tlpdb 里面的信息, 写一个脚本, 自动生成打包所需的 spec 文件, 必然是事半功倍啊. 目前源里的 texlive 相关的各种 rpm 包就是这么来的. 打包者写了个 Perl 脚本吧. 但是我真的不懂 Perl, 所以也看不懂.

然后要编译二进制包的话, 编译所需的源码在这里 mirrors.ustc.edu.cn/CTAN/systems/texlive/Source/ . 这个编译比较费时, 我有在 OBS 上编译过, 大概需要一个小时吧. 但是并不会太难. 跟其他普通的包的打包差不多. 编译指南在 tug.org/texlive/doc/tlbuild.html. 如果有需要, 也可以请教一下 Debian 的打包者, 似乎是日本的萌妹子呢.

这个脚本在哪可以找到?如果搞懂这个脚本工作量是不是就减轻很多了?

这个好 :smirk:
如果有时间我可以研究研究。如果其他有感兴趣的也可以一起做~

[quote=“hottea”][/quote]

有什么相关的资料可以放在这里,然后有想做的可以做个参考~

我当时是看到 jaegerandi.blogspot.jp/2012/05/full-tex-live-modularized-for-opensuse.html 说的打包者用一个 Perl 脚本来打包 texlive. 博文中提到的打包者是 build.opensuse.org/user/show/WernerFink . 搜到了他的主页 users.suse.com/~werner/ , 不过似乎是德语? 看不懂. 没有提到那个 Perl 脚本在哪里.

TeXLive 相关的打包内容都在 build.opensuse.org/project/show/Publishing:TeXLive . 有兴趣可以看一下.

看描述内容, 可能是 build.opensuse.org/package/show/Publishing:TeXLive/Meta , 可以看一下. 也许可以把其中的 Perl 脚本当成伪代码来阅读, 看看能不能理解吧.

其实目前源中提供最新的版本是 TeXLive 2014, 但是考虑到 ctex 今年的重大更新, 还是能用最新版的更好啊.

感谢分享,收教了!

看样子不是短时间能弄好的了。。。
女王的那个打包视频看时不清晰啊,有没有清晰版的啊?

现在滚动版已经有了 2015 版本了!!!

是的 LOL,不过还是为楼主点个赞。 :sunglasses:

看了下 changes,还是 werner 在做.只怕别人没法接手啊.