LINUX.ORG.RU

Latex не работает без root. Каких прав не хватает?

 , ,


0

1

Уже писал недавно про свою проблему.

Если кратко, при использовании кириллицы latex из пакета texlive выдает ошибку:

...
(/usr/share/texlive/texmf-dist/tex/latex/cyrillic/t2aenc.def File: t2aenc.def 2005/09/27 v1.0i Cyrillic encoding definition file ) LaTeX Font Info: Try loading font information for T2A+cmr on input line 100.

(/usr/share/texlive/texmf-dist/tex/latex/cyrillic/t2acmr.fd File: t2acmr.fd 2001/08/11 v1.0a Computer Modern Cyrillic font definitions ) ! Font T2A/cmr/m/n/12=larm1200 at 12.0pt not loadable: Metric (TFM) file not found. <to be read again> relax l.100 \fontencoding\encodingdefault\selectfont

? ! Emergency stop. <to be read again> relax l.100 \fontencoding\encodingdefault\selectfont

End of file on the terminal!


Недавно попробовал выполнить через ssh от имени root и все правильно заработало!

Каких прав не хватает? Подумал, latex генерирует какие-то вспомогательные данные в своей директории, а из под пользователя писать их там нельзя.

Проверил /usr# find -mtime -1 -print. Нет недавно измененных файлов связанных с latex.

И это не помогло.

chown -R root:root /usr/share/
chmod -R g+rwx /usr/share/
usermod -G root myusername

Вообще, я вызываю latex из php с помощью proc_open(). php работает как модуль Апача.
Пробовал так:

chown root myscript.php
chmod u+s myscript.php

Тоже не помогает.

В чем может быть причина? Как исправить? Где еще почмодить?



Последнее исправление: eugene8086 (всего исправлений: 4)

latex при работе генерит временные файлы (в частности это верно для шрифтов) и ему нужно их куда-то складывать (по умолчанию сейчас это скрытая директория в директории пользователя). Если такого места нет, то ты получишь, то что получаешь.

У тебя не шибко стандартный случай, но web-решений с latex не так уж и мало, так что как-то люди эту проблему решают. Придётся таки тебе читать документацию и экспериментировать.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)

Если лень читать доки

su - <apache_user>
strace -ffo slog latex .....
и смотреть где есть EPERM

От обычного юзера должно работать. Посмотри на переменные окружения. Может там есть что-то для latex-а

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Сейчас попробовал выполнить latex через ssh как обычный пользователь myusername и тоже все правильно сработало! Значит проблема не в правах, а в том, что latex вызывается через php, который работает как модуль Апача.

Если лень читать доки

Не лень, просто времени нет на подробное изучение, надо быстрее наладить.

su - <apache_user>

Как узнать имя апаче-юзера? В файле passwd посмотрел, вроде нет никаких похожих на апача.

eugene8086
() автор топика
Ответ на: комментарий от Eddy_Em

А какой путь подсовыать? До папки, где работает php-скрипт?
Как-то так?:

$env = array('PATH' => '/var/www/myusername/data/www/');
proc_open(... $env );

eugene8086
() автор топика
Ответ на: комментарий от eugene8086

Да черт его знает! Экспериментировать надо. У меня работало (CGI на баше). Ща попробую что-нибудь простое.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Итак, тестовый CGI:

#!/bin/sh
echo -e "Content-type: text/html\n"
echo "compiling"
pdflatex x.tex

сразу "прикол":

compiling This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex) restricted \write18 enabled. entering extended mode (./x.tex LaTeX2e <2014/05/01> Babel <3.9l> and hyphenation patterns for 11 languages loaded. (/usr/share/texmf-dist/tex/latex/base/article.cls Document Class: article 2007/10/19 v1.4h Standard LaTeX document class (/usr/share/texmf-dist/tex/latex/base/size12.clo)) ! LaTeX Error: File `/Data/documents/ed.sty' not found. Type X to quit or to proceed, or enter new name. (Default extension: sty) Enter file name: ! Emergency stop. l.3 \begin {document}^^M ! ==> Fatal error occurred, no output PDF file produced! Transcript written on x.log.

Понятное дело: доступ запрещен наружу из песочницы! Чтобы работало, нужно соответствующим образом настроить апач. Или (это более правильно) запихнуть все нужное куда-нибудь вовнутрь документрута.

И вуаля!

compiling This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex) restricted \write18 enabled. entering extended mode (./x.tex LaTeX2e <2014/05/01> Babel <3.9l> and hyphenation patterns for 11 languages loaded. (/usr/share/texmf-dist/tex/latex/base/article.cls Document Class: article 2007/10/19 v1.4h Standard LaTeX document class (/usr/share/texmf-dist/tex/latex/base/size12.clo)) (./ed.sty (/usr/share/texmf-dist/tex/latex/base/inputenc.sty (/usr/share/texmf-dist/tex/latex/cyrillic/koi8-r.def)) (/usr/share/texmf-dist/tex/generic/babel/babel.sty (/usr/share/texmf-dist/tex/generic/babel-english/english.ldf (/usr/share/texmf-dist/tex/generic/babel/babel.def)) (/usr/share/texmf-dist/tex/generic/babel-russian/russianb.ldf Package babel Warning: No Cyrillic font encoding has been loaded so far. (babel) A font encoding should be declared before babel. (babel) Default `T2A' encoding will be loaded on input line 111 . (/usr/share/texmf-dist/tex/latex/cyrillic/t2aenc.def))) (/usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty) (/usr/share/texmf-dist/tex/latex/tools/multicol.sty) (/usr/share/texmf-dist/tex/latex/cite/cite.sty) (/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty) (/usr/share/texmf-dist/tex/latex/graphics/graphics.sty (/usr/share/texmf-dist/tex/latex/graphics/trig.sty) (/usr/share/texmf-dist/tex/latex/latexconfig/graphics.cfg) (/usr/share/texmf-dist/tex/latex/graphics/dvips.def))) (/usr/share/texmf-site/tex/latex/xcolor/xcolor.sty (/usr/share/texmf-dist/tex/latex/latexconfig/color.cfg) (/usr/share/texmf-dist/tex/latex/pdftex-def/pdftex.def (/usr/share/texmf-dist/tex/generic/oberdiek/infwarerr.sty) (/usr/share/texmf-dist/tex/generic/oberdiek/ltxcmds.sty))) (/usr/share/texmf-dist/tex/latex/tools/longtable.sty) (/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty) (/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty) (/usr/share/texmf-dist/tex/latex/wasysym/wasysym.sty)) (./x.aux) (/usr/share/texmf-dist/tex/latex/cyrillic/t2acmr.fd) (/usr/share/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty (/usr/share/texmf-dist/tex/generic/oberdiek/ifluatex.sty) (/usr/share/texmf-dist/tex/generic/oberdiek/ifpdf.sty)) (/usr/share/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty (/usr/share/texmf-dist/tex/latex/oberdiek/grfext.sty (/usr/share/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty)) (/usr/share/texmf-dist/tex/latex/oberdiek/kvoptions.sty (/usr/share/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty (/usr/share/texmf-dist/tex/generic/oberdiek/etexcmds.sty))) (/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) (/usr/share/texmf-dist/tex/context/base/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] ) Overfull \vbox (2.89998pt too high) has occurred while \output is active (/usr/share/texmf-dist/tex/latex/base/omscmr.fd) Overfull \hbox (139.0923pt too wide) has occurred while \output is active [] [1{/usr/share/texmf-dist/fonts/map/pdftex/updmap/pdftex.map}] (./x.aux) ) (see the transcript file for additional information){/usr/share/texmf-dist/font s/enc/dvips/cm-super/cm-super-t2a.enc} Output written on x.pdf (1 page, 23662 bytes). Transcript written on x.log.

Вот файл латеховский:

\documentclass[a4paper,12pt,twoside]{article}
\usepackage{ed}
\begin{document}
hallo

Привет
\end{document}
И pdf-файл появился.

В общем, запускай этот скрипт и смотри на выхлоп. Но проще сделать su apache и глянуть в консольке.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Чтобы работало, нужно соответствующим образом настроить апач. Или (это более правильно) запихнуть все нужное куда-нибудь вовнутрь документрута.

И вуаля!

Что-то я туплю. Не понял, как у Вас получилось вуаля. Что сделали-то?

eugene8086
() автор топика
Ответ на: комментарий от eugene8086

Попробуй запустить мой CGI у себя. Посмотри, что за сообщения будут. Файлик свой какой-нибудь закинь, минимальный.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Сохранил в рабочей папке (т.е. там где работает мой php-скрипт) файл test.sh с содержимым

#!/bin/sh
echo -e "Content-type: text/html\n"
echo "compiling"
pdflatex 2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.tex
Выполнил:
root@mysitename:/var/www/myusername/data/www/tmp# sh test.sh
-e Content-type: text/html

compiling
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian)
 restricted \write18 enabled.
entering extended mode
(./2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.tex
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, 

.....

(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex)))
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex
`pst-fp' v0.05, 2010/01/17 (hv))
`PSTricks' v2.29  <2012/06/04> (tvz)
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.con))
(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex)
(/usr/share/texmf/tex/latex/xcolor/xcolor.sty
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg)))
(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/pst-xkey.sty)
(/usr/share/texlive/texmf-dist/tex/latex/multido/multido.sty
(/usr/share/texlive/texmf-dist/tex/generic/multido/multido.tex
 v1.42, 2010/05/14 <tvz>))
(/usr/share/texlive/texmf-dist/tex/generic/pst-plot/pst-plot.tex
 v1.42, 2012/05/03 (tvz,hv)))
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd)
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd)
(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd)
(/usr/share/texlive/texmf-dist/tex/latex/ucs/data/uni-4.def)
No file 2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.aux.
(/usr/share/texlive/texmf-dist/tex/latex/ucs/ucsencs.def)
Preview: Fontsize 10.95pt
Preview: PDFoutput 1
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty))
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty))
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty)))
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
Preview: Tightpage -32891 -32891 32891 32891
[1
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!
Non-PDF special ignored!{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
(./2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.aux) ){/usr/share/texmf/font
s/enc/dvips/cm-super/cm-super-t2a.enc}</usr/share/texlive/texmf-dist/fonts/type
1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/publ
ic/amsfonts/cm/cmr10.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1095
.pfb>
Output written on 2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.pdf (1 page,
17498 bytes).
Transcript written on 2d6cbf8c5c2dca4ce73ba6870295ee2_1429130005_2356.log.
(в листинге кое-что повырезал для сокращения) Вроде все нормально работает... Почему же из php не получается.

eugene8086
() автор топика
Ответ на: комментарий от Eddy_Em

Не получается запустить: Internal Server Error

Даже с таким содержимым не получается

#!/bin/sh
echo -e "Content-type: text/html\n"
echo "compiling"

В логах сайта такое.

[Thu Apr 16 00:01:56 2015] [error] [client ####] (13)Permission denied: exec of '/var/www/myusername/data/www/cgi-bin/test.cgi' failed
[Thu Apr 16 00:01:56 2015] [error] [client ####] Premature end of script headers: test.cgi

в логах Апача:

[Wed Apr 15 23:58:55 2015] [notice] caught SIGTERM, shutting down
[Wed Apr 15 23:59:16 2015] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Wed Apr 15 23:59:16 2015] [notice] Apache/2.2.22 (Debian) PHP/5.4.39-0+deb7u2 mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations

eugene8086
() автор топика
Ответ на: комментарий от Eddy_Em

Дык, небось, в апаче CGI не настроены?

Раньше вроде работал. Я через ISPmanager права на выполнение CGI настраиваю.

это тоже не работает

~# su -
~# su -l apache
No passwd entry for user 'apache'

eugene8086
() автор топика
Ответ на: комментарий от Eddy_Em

Только такие юзеры есть:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
bind:x:101:106::/var/cache/bind:/bin/false
fetchmail:x:102:65534::/var/lib/fetchmail:/bin/false
sshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin
Debian-exim:x:106:111::/var/spool/exim4:/bin/false
dovecot:x:107:112:Dovecot mail server,,,:/usr/lib/dovecot:/bin/false
dovenull:x:108:65534:Dovecot login user,,,:/nonexistent:/bin/false
postgrey:x:109:113::/var/lib/postgrey:/bin/false
proftpd:x:110:65534::/var/run/proftpd:/bin/false
ftp:x:111:65534::/srv/ftp:/bin/false
mysql:x:112:114:MySQL Server,,,:/nonexistent:/bin/false
postgres:x:113:115:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
shellinabox:x:104:109:Shell In A Box,,,:/var/lib/shellinabox:/bin/false
ntp:x:105:110::/home/ntp:/bin/false
myusername:x:500:501:myusername:/var/www/mysitename/data:/bin/bash

eugene8086
() автор топика
Ответ на: комментарий от eugene8086

Очевидно, www-data.

Я — не Ванга. Откуда мне знать, как у тебя апач настроен? Ты ж там писал, от какого юзверя запускать!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

И смотреть, на что будет латех матюкаться.

Так он когда из php вызывается, матюкается в лог. Разве через cgi новые матюки будут? Лог я привел в первом сообщении.

eugene8086
() автор топика
Ответ на: комментарий от at

Скорей всего на файле не установлены права для запуска

На cgi? Установлены 755.

eugene8086
() автор топика

Предположу, что апач сконфигурирован для запуска в песочнице и вообще ничего наружу видеть не может.

Но это легко проверить, спросив автора: eugene8086, ты как апач настроил? Он у тебя вообще в песочнице или таки наружу может смотреть?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Предположу, что апач сконфигурирован для запуска в песочнице и вообще ничего наружу видеть не может.

Так какие именно параметры за это отвечают? Что посмотреть, проверить?

Но это легко проверить, спросив автора, ты как апач настроил?

У меня VDS с ISPmanager, Там все уже было установлено.

eugene8086
() автор топика
Ответ на: комментарий от eugene8086

все уже было установлено

Ну, тады ой. Читай конфигурационные файлы, смотри, что там тебе накрутили за хрень.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.