texlive-20230313-source

Introdução ao TeX Live a partir do fonte

[Nota]

Nota

De acordo com https://www.tug.org/historic/ o site mestre na França suporta somente FTP e rsync. Agora que o FTP está geralmente obsoleto, essa página tem links para espelhos, alguns dos quais suportam HTTPS, por exemplo, em Utah e Chemnitz, bem como na China. Se você preferir usar um espelho diferente a partir dos links de exemplo aqui, você precisará navegar até systems/historic/texlive/2023 ou systems/texlive/2023 conforme o caso.

A maior parte do TeX Live pode ser construída a partir do fonte sem uma instalação pré existente, mas o xindy (para indexação) precisa de versões funcionais de latex e pdflatex quando o configure for executado e a suíte de teste e a instalação do asy (para gráficos vetoriais) falharão se o TeX ainda não tiver sido instalado. Além disso, biber não é fornecido no fonte do texlive e a versão de dvisvgm na árvore do texlive não pode ser construída se bibliotecas de sistema compartilhadas forem usadas.

Todos esses pacotes são tratados em nas próprias páginas deles e podem ser construídos depois de se instalar esse pacote. Se ainda não tiver feito isso, você deveria iniciar em Configurando o PATH para TeX Live, de forma que os comandos finais para inicializar a nova instalação sejam encontrados.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.0.

Informação do Pacote

Transferências Adicionais Exigidas

Grande parte do ambiente do texlive (incluindo conjuntos de comandos sequenciais, documentação, fontes e vários outros arquivos) não faz parte do tarball do fonte. Você precisa baixá-lo separadamente. Isso te dará todos os arquivos adicionais fornecidos por uma instalação completa da versão binária; não existe uma maneira realista de restringir quais partes serão instaladas.

Devido ao tamanho desse pacote, é improvável que seja espelhado por espelhos do BLFS. Em caso de dificuldade, vá até http://www.ctan.org/mirrors/ para encontrar um espelho mais acessível.

A partir do ano de 2019, a base de dados tlpdb dos pacotes do texlive não mais é instalada com o fonte. Mas, o texdoc precisa de um arquivo de cache derivado a partir desse (e criará o cache na primeira execução dele).

Dependências do TeX Live a partir do fonte

Recomendadas

Opcionais

O fonte vem com as próprias versões dele de diversas bibliotecas, as quais ou não estão em desenvolvimento ativo ou são usadas somente para funcionalidades limitadas. Se você instalar essas, como acontece com algumas outras dependências opcionais neste livro, você precisará dizer ao configure para usar as versões do sistema. GD, t1lib, ZZIPlib, TECkit

Dependências de tempo de execução

Instalação do TeX Live

Instale o TeX Live executando os seguintes comandos:

[Cuidado]

Cuidado

Se você desejar atualizar para o texlive atual em um sistema mais antigo, onde pacotes extras (asymptote, biber, dvisvgm ou xindy) tenham sido instalados, você precisará reinstalá-los, bem como corrigir teu PATH para $TEXLIVE_PREFIX.

[Nota]

Nota

Uma instalação bem-sucedida requer que alguns comandos do texlive sejam executados como o(a) usuário(a) root, de forma que nós exportaremos a variável TEXARCH para permitir que o(a) root a use.

Agora, como um(a) usuário(a) normal:

export TEXARCH=$(uname -m | sed -e 's/i.86/i386/' -e 's/$/-linux/') &&

patch -Np1 -i ../texlive-20230313-source-security_fix-1.patch &&

mkdir texlive-build &&
cd    texlive-build &&

../configure -C                                   \
    --prefix=$TEXLIVE_PREFIX                      \
    --bindir=$TEXLIVE_PREFIX/bin/$TEXARCH         \
    --datarootdir=$TEXLIVE_PREFIX                 \
    --includedir=$TEXLIVE_PREFIX/include          \
    --infodir=$TEXLIVE_PREFIX/texmf-dist/doc/info \
    --libdir=$TEXLIVE_PREFIX/lib                  \
    --mandir=$TEXLIVE_PREFIX/texmf-dist/doc/man   \
    --disable-native-texlive-build                \
    --disable-static --enable-shared              \
    --disable-dvisvgm                             \
    --with-system-cairo                           \
    --with-system-fontconfig                      \
    --with-system-freetype2                       \
    --with-system-gmp                             \
    --with-system-graphite2                       \
    --with-system-harfbuzz                        \
    --with-system-icu                             \
    --with-system-libgs                           \
    --with-system-libpaper                        \
    --with-system-libpng                          \
    --with-system-mpfr                            \
    --with-system-pixman                          \
    --with-system-zlib                            \
    --with-banner-add=" - BLFS" &&

make

Para testar os resultados, emita: make -k check. Dois testes, psutils.test e eptexdir/wcfname são conhecidos por falharem.

Agora, como o(a) usuário(a) root:

make install-strip &&
/sbin/ldconfig     &&
make texlinks      &&
mkdir -pv                                $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
install -v -m644 ../texk/tests/TeXLive/* $TEXLIVE_PREFIX/tlpkg/TeXLive/ &&
tar -xf ../../texlive-20230311-tlpdb-full.tar.gz -C $TEXLIVE_PREFIX/tlpkg
[Nota]

Nota

Execute make texlinks somente uma vez. Se for executado novamente, poderá mudar todos os links simbólicos do aplicativo, de forma que eles apontem para eles mesmos e sejam inúteis.

Agora instale os arquivos adicionais como o(a) usuário(a) root:

tar -xf ../../texlive-20230313-texmf.tar.xz -C $TEXLIVE_PREFIX --strip-components=1

Foi estabelecido pelo Debian que os conjuntos de comandos sequenciais do python em latex-make funcionarão com o python3, de forma que atualize-os para invocar isso executando o seguinte comando como o(a) usuário(a) root:

for F in $TEXLIVE_PREFIX/texmf-dist/scripts/latex-make/*.py ; do
  sed -i 's%/usr/bin/env python%/usr/bin/python3%' $F
done

Ainda como o(a) usuário(a) root, inicialize o novo sistema (o comando fmtutil-sys --all produzirá um monte de saída gerada):

mktexlsr &&
fmtutil-sys --all

Para permitir que o Evince-44.3, ou o dvisvgm-3.1, se vincule a libkpathsea.so, como o(a) usuário(a) root, (re)crie um link simbólico a partir de /usr/lib:

ln -svf $TEXLIVE_PREFIX/lib/libkpathsea.so /usr/lib
[Nota]

Nota

TeXLive inclui alguns arquivos para ConTeXt, mas o fonte deles é separado e passou do uso de luatex na versão 'mkiv' anterior para o uso de luametatex, que pode ser extraído com git a partir de luametatex do github. LuaMetaTeX usa meson e ninja, mas não se encaixa facilmente no esquema do BLFS do TeXLive.

Entretanto, com um pouco de trabalho extra, os arquivos 'mkiv' ainda podem ser processados usando os arquivos enviados no texmf.

As correções para usar o ConTeXt serão removidas quando o fonte do texlive tiver que ser atualizado para uma correção de vulnerabilidade que exija backporting das mudanças do luatex ou para o TeXLive 2024. Se você for um(a) usuário(a) BLFS do ConTeXt, você deveria estar preparado(a) para usar a etiqueta mais recente a partir do GitHub (o link está no primeiro parágrafo desta Observação). Construir e instalar isso para funcionar com uma instalação BLFS do TeXLive não será um exercício trivial.

As seguintes etapas, executadas como o(a) usuário(a) root, criarão mtxrun e context.

sed -e '/local template=\[\[--ini/s/\(primaryflags%\)\(.*\)/\1 --socket --shell-escape \2/' \
 -e '/local template=\[\[%primaryflags%/s/\(primaryflags%\)\(.*\)/\1 --socket --shell-escape \2/' \
  -i $TEXLIVE_PREFIX/texmf-dist/scripts/context/lua/mtxrun.lua &&

mkdir -pv $TEXLIVE_PREFIX/texmf-var/luatex-cache/context/ &&

ln -sfv /$TEXLIVE_PREFIX/texmf-dist/scripts/context/lua/mtxrun.lua \
        /$TEXLIVE_PREFIX/bin/$TEXARCH/mtxrun &&

cat > $TEXLIVE_PREFIX/bin/$TEXARCH/context << EOF
#!/bin/sh
export TEXMF=$TEXLIVE_PREFIX/texmf-dist;
export TEXMFCNF=$TEXLIVE_PREFIX/texmf-dist/web2c;
export TEXMFCACHE=$TEXLIVE_PREFIX/texmf-var/luatex-cache/context/;
$TEXLIVE_PREFIX/bin/$TEXARCH/mtxrun --script context "\$@"
EOF
chmod -v 0755 $TEXLIVE_PREFIX/bin/$TEXARCH/context

Agora você pode prosseguir para asymptote-2.86, biber-2.19, dvisvgm-3.1 e (ou) xindy-2.5.1 se desejar instalá-los.

Explicações do Comando

patch -Np1 -i ../texlive-20230313-source-security_fix-1.patch: isso atualiza o fonte do luatex para v1.17.0 para corrigir problemas de segurança.

sed -e '/local template (...)' (...)mtxrun.lua: isso faz uma mudança em um conjunto de comandos sequenciais do texmf-dist, de forma que o ConTeXt agora consiga executar com o luatex-v1.17.0.

-C: cria config.cache; isso economiza tempo significativo em uma construção paralela.

--prefix=, --bindir=, --datarootdir=, --infodir=, --mandir= ... : essas chaves asseguram que os arquivos instalados a partir do fonte sobrescreverão quaisquer arquivos correspondentes previamente instalados por install-tl-unx, de forma que os métodos alternativos de se instalar o texlive sejam consistentes.

--includedir=, --libdir= ... : essas chaves garantem que as bibliotecas e os arquivos de inclusão estarão dentro dos diretórios do texlive deste ano.

--disable-static: Essa chave impede a instalação das versões estáticas das bibliotecas.

--enable-shared: Use versões compartilhadas de libkpathsea, libptexenc, libsynctex, libtexlua52 e libtexluajit.

--with-system-...: A menos que esse parâmetro seja usado, as versões incluídas dessas bibliotecas serão compiladas estaticamente nos aplicativos que necessitarem delas. Se você decidiu não instalar uma biblioteca recomendada, omita a chave correspondente.

--disable-dvisvgm: Conforme observado acima, a versão enviada do dvisvgm, que tem arquivos modificados de configuração, não pode ser construída com bibliotecas de sistema compartilhadas.

/sbin/ldconfig: isso tem que ser executado aqui, de forma que make texlinks possa usar kpsewhich.

make texlinks : isso executa o conjunto de comandos sequenciais texlinks.sh para criar links simbólicos de formats para engines. Na prática, vários dos alvos, como o xetex, agora são binários separados e para esses ele informará "file already exists".

tar -xf texlive-20230313-texmf.tar.xz -C $TEXLIVE_PREFIX --strip-components=1: o tarball contém os arquivos para o diretório texmf-dist e, devido ao tamanho dele, nós não queremos desperdiçar tempo e espaço desempacotando-o e depois copiando os arquivos.

install -v -m644 ../texk/tests/TeXLive/* $TEXLIVE_PREFIX/tlpkg/TeXLive/: Isso coloca os módulos do Perl TLConfig.pm e TLUtils.pm no diretório onde o instalador do binário os coloca - está no início do PATH @INC@ do Perl dentro do texlive quando instalado usando as chaves de configuração acima. Sem esses módulos, o texlive não é usável.

mktexlsr: Crie um arquivo ls-R que lista o que foi instalado - isso é usado pelo kpathsea para encontrar arquivos.

fmtutil-sys --all: Isso inicializa os formatos do TeX, bases Metafont e memorandos Metapost.

mkdir -pv $TEXLIVE_PREFIX/texmf-var/luatex-cache/context/: o conjunto de comandos sequenciais de contexto criado depois disso não executará corretamente se esse diretório não estiver presente.

--without-x: use isso se você não tiver o Xorg instalado.

Existem muitas outras opções '--disable' ou '--without'. Algumas delas, como --without-texinfo, são aceitas, mas não mais fazem nada; outras impedirão um aplicativo de ser construído - mas a quantidade muito maior de espaço usado para os itens relacionados no texmf significa que não existe nenhum benefício óbvio em desabilitar alguns dos aplicativos.

Conteúdo

Aplicativos Instalados: Mais que trezentos (300) binários e links simbólicos para conjuntos de comandos sequenciais
Bibliotecas Instaladas: libkpathsea.so, libptexenc.so, libsynctex.so, libtexlua52.so, libtexluajit.so
Diretórios Instalados: $TEXLIVE_PREFIX/bin, $TEXLIVE_PREFIX/include, $TEXLIVE_PREFIX/lib, $TEXLIVE_PREFIX/texmf-dist

Descrições Curtas

TeXprograms

Os aplicativos incluídos no TeX são numerosos demais para se listar individualmente. Por favor, consulte as páginas HTML e PDF do programa individual nos vários arquivos html, man ou pdf nos subdiretórios de 2023/texmf-dist/. Usar texdoc pdflatex (substitua pdflatex pelo nome do comando) também possivelmente seja útil

libkpathsea.so

(kpathsearch) existe para procurar um arquivo em uma lista de diretórios e é usado pelo kpsewhich

libptexenc.so

é uma biblioteca para pTeX japonês (publicação de TeX)

libsynctex.so

é a biblioteca do analisador SyncTeX (Synchronize TeXnology)

libtexlua52.so

fornece Lua 5.2, modificado para uso com o LuaTeX

libtexluajit.so

fornece LuaJIT, modificado para uso com o LuaJITTeX