Как обычные пользователи могут читать документацию в / usr / share / doc?

43

Недавно я узнал, что есть огромная куча документации /usr/share/doc.

Похоже, что большая часть этого gzip-файла, так что он не доступен напрямую без прав администратора:

$ gunzip examples/letter.tex.gz 
gzip: examples/letter.tex: Permission denied

В то время как одно решение для этого было бы для каждого пользователя дублировать каждый элемент в их домашнем каталоге только для того, чтобы прочитать его, эта договоренность вряд ли способствует регулярному просмотру.

Как нормальные люди читают эту документацию?

Я не склонен полагать, что обычный пользователь должен устанавливать и поддерживать веб-сервер только для чтения локальной текстовой документации.

ændrük
источник
Просто чтобы прояснить, вы заинтересованы в работе с какими-либо документами в каталогах / usr / share / doc или только с TeX / LaTeX?
Белаква
Хорошо, еще один вопрос - вам нужно обработать файлы .tex в dvi или что-то еще, или просто посмотреть на исходный код?
belacqua
1
Я спрашиваю о документации в /usr/share/docцелом и с особым вниманием к наблюдению, что большая часть ее хранится в сжатом формате. Если есть какая-либо документация, хранящаяся как не набранный LaTeX, мне еще предстоит с этим столкнуться. Конкретный пример, на который я ссылался выше, это шаблон LaTeX из пакета texlive-latex-extra-doc.
11ndrük
1
askubuntu.com/questions/24072/… . Я думаю, что это лучшее решение из всех одной установки, и оно работает там после.
nelaaro

Ответы:

6

Большинство из них было сказано и очень хорошо объяснено jgbelacqua для использования в терминале. Просто добавьте это для людей, которые находятся на рабочем столе менеджера:

С графического рабочего стола (здесь GNOME) самый простой способ читать документы /usr/share/doc- это (дважды) щелкнуть по заархивированным файлам с помощью стандартного менеджера архивов (здесь File Roller), откуда вы можете (дважды) щелкнуть по кнопке open и прочитать их в ваш стандартный редактор (здесь Gedit). Разрешения на запись не требуются, если вы не разархивируете файлы.

Takkat
источник
Прекрасное решение. Именно поэтому люди используют такие вещи, как Ubuntu, Gnome и т. Д. Такая задача упрощается.
Белаква
20

Здесь есть как минимум две проблемы:

  1. чтение файлов .gz безболезненно
  2. разрешения на каталоги
  3. (необязательно для текстовых файлов)

Для # 1 есть ряд приложений, которые легко справятся с файлами gzip. Пара, которую вы могли бы использовать, lessи vim.

 less README.gz 
 vim -R README.Debian.gz
 view Important.bits.gz

viewэто псевдоним для vim -R, который просто говорит, чтобы открыть файл только для чтения.

В старые времена, до того, как на моей системе было установлено less, я использовал gzcatи направлял вывод в другую утилиту. По-видимому, zcatтеперь он вызывается только в Ubuntu, но вы бы использовали его так, например:

 /usr/share/doc/xpdf$ zcat changelog.Debian.gz  | more

zcat по-прежнему доступен, и его использование для передачи сжатого содержимого куда-то может быть полезно в некоторых случаях. (Для ситуаций с файлами .bz2, bzcatдоступно.)

Для # 2 все файлы, которые я видел в / usr / share / doc, находятся в каталогах с другими разрешениями + rx, что означает, что все пользователи могут искать каталоги (например, содержимое списка) и читать файлы внутри. Что вы не можете сделать (так как только root имеет разрешение на запись по умолчанию), это создавать файлы. Поскольку вы пытаетесь разархивировать в этот каталог, я полагаю, что он дает вам отказано в разрешении, потому что у вас есть права на чтение, но не на запись по умолчанию.

Для # 3, я предполагаю, что вы используете файлы .tex больше, чем я. Но вот один из способов справиться с ними без копирования в домашний или временный файл. Для этого вы собираетесь создать именованный канал, но вы можете использовать его для других своих нужд, связанных с передачей и обработкой текстовых сообщений. Это должно идти так:

  • zcat или gzcat текст
  • ... и передать это на ваш процессор TeX
  • ... и отправь это на твой Named Pipe (здесь я позвоню ему pipey)
  • ... а затем на отдельном экране захватить ваш вывод из pipey
  • ... и отправить это в процесс отображения DVI.

Очевидно, вы можете изменить эти шаги, если вы используете другие или лучшие утилиты, чем те, что здесь.

Мой пример будет использовать mkfifoутилиту для создания именованного канала pipey. Целевой файл для обработки /usr/share/doc/gdb/refcard.tex.gz. Вам понадобятся две доступные командные строки оболочки (через терминал, Alt + F2 или другие).

Вы напечатаете в терминале один:

mkfifo pipey

Теперь у вас есть постоянный именованный канал. Вы можете использовать, ls -lчтобы посмотреть на это.

zcat /usr/share/doc/gdb/refcard.tex.gz | tex > pipey

Обратите внимание, что эта команда не вернется, пока вы не сделаете что-то с выводом, который ушел в именованный канал.

Теперь во втором терминале вы наберете: tex pipey | xdvi

И это работает (ну, в любом случае, здесь). Процесс может быть улучшен для более приятного вывода, но если вы ищете быстрый и относительно беспроблемный, это один из способов сделать это.

belacqua
источник
1
Проверьте мое решение, я думаю, вы будете впечатлены. askubuntu.com/questions/24072/…
nelaaro
1
+1 за детали. Что касается меня, как также упомянул @nelaar, я просто добавляю несколько директив в <Directory "/usr/share/doc/">объявление каталога Apache (обычно в /etc/apache2/sites-enabled/000-default), и я считаю, что декомпрессия обрабатывается самими браузерами. ( AddEncoding x-gzip gz tgzи AddType text/plain .gz).
Удалить
Хотя это был удивительный и подробный урок по многим полезным командам, это вряд ли является хорошим решением для того, как обычный пользователь должен читать системную документацию. Для Ubuntu, Gnome в визг или в Debian dwww является наиболее безболезненным, простой метод. Мой ответ описывает последнее: askubuntu.com/a/52419/11015
MestreLion
1
@MestreLion «Типичный пользователь» в самом реалистическом смысле не знает, что файлы даже там. Я думаю, что самое простое решение - это то, которое я упомянул первым - использование less. Это имеет дополнительное преимущество, поскольку по умолчанию устанавливается в каждой современной системе * nix. Для пользователя, который знает, что файлы есть, и хочет ссылаться на них чаще, чем пару раз в год, установка чего-то вроде dwww звучит как отличное решение. Сам, в крайнем случае, я не могу вспомнить dwww, но я буду помнить основные команды, такие как «поменьше». Или, как сказал Таккат, Nautilus / fileroller / etc ..
belacqua
13

Возможно, уже слишком поздно, чтобы ответить, но я нашел лучшее решение (простота использования и полнота)

  • Установить dwww установить Dwww

Типичная система Linux имеет документацию во многих форматах (страницы руководства, файлы Info, файлы README и т. Д.). dwww позволяет получить доступ ко всем этим через тот же интерфейс, WWW-браузер. Это облегчает использование документации.

dwww - это веб-интерфейс для всей онлайновой документации по системе Debian. Он создает некоторые веб-страницы со списком всех установленных документов и преобразует все документы в HTML. Преобразование выполняется, когда пользователь запрашивает документ.

  • Включите модуль CGI, который больше не включен по умолчанию в последних Ubuntu / Apache:

    sudo a2enmod cgi
    sudo service apache2 restart
    
  • Откройте браузер и укажите: http: // localhost / dwww /

  • Выполнено!

Все ваши infoстраницы, manстраницы, /usr/share/docфайлы и описание пакета в одном месте! Ваш личный сайт документации!

MestreLion
источник
Используйте этот метод. Это меньше боли полной. И вы можете искать вещи очень быстро, так как у вас будет окно поиска, похожее на Google.
Любопытный ученик
1
Для будущих посетителей обратите внимание, что для этого необходимо включить CGI и перезапустить службу Apache: askubuntu.com/questions/581118/…
Сергей Колодяжный,
7

gunzip file.gzпопытки распаковывать file.gzTo file, удаление file.gz. Вот почему вы получаете сообщение об ошибке «Отказано в доступе», вам не разрешено писать /usr/share/doc. Чтобы получить содержимое файла, используйте gunzip -c file.gzили zcat file.gz.

Чтение сжатых GZIP текстовых файлов может быть сделано с zless. Как следует из названия, это просто less, но для файлов, сжатых gzip.

Пример использования:

zless /usr/share/doc/bash/NEWS.gz

.gzСуффикс можно опустить , а также:

zless /usr/share/doc/bash/NEWS
Lekensteyn
источник
На последних системах мне не пришлось указывать zless, так как lessсправлюсь автоматически.
belacqua
1
@belacqua Правда, я делаю то же самое в настоящее время. Я думаю, это как-то связано с переменными окружения LESSOPENи LESSCLOSE.
Лекенштейн
5

Сначала установите apache2

sudo apt-get install apache2 apache2-doc  

apache2-docэто особый случай здесь. Это позволяет вам просматривать вашу документацию /usr/share/doc/через веб-браузер. сюда http://localhost/doc/.

Это не работает правильно, хотя. Вам нужно изменить конфигурацию Apache, чтобы распаковать его и показать файлы * .gz в виде простого текста.

Я написал в Stack Overflow, чтобы получить возможность использовать Apache для отображения содержимого документов * .gz в /usr/share/doc/каталоге. Это то, что было опубликовано как возможное решение.

Вот эти инструкции вкратце. Он сообщает Apache, как обращаться с файлами .gz, чтобы обрабатывать их как обычный текст и отправлять их в браузер как обычный текст.

sudo a2enmod headers   
sudo a2enmod deflate  
gksu gedit /etc/apache2/sites-enabled/000-default 

Перейдите в конец файла, найдите раздел Alias /doc/ "/usr/share/doc/" и измените его, чтобы он выглядел следующим образом.

Alias /doc/ "/usr/share/doc/"
<Directory /usr/share/doc>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

    AddEncoding gzip gz
    <FilesMatch "\.gz$">
      ForceType text/plain
      Header set Content-Encoding: gzip
    </FilesMatch>
</Directory>   

Затем перезапустите Apache:

sudo apache2ctl restart   
nelaaro
источник
1
Я не слишком уверен, если это другое решение. Я только что добавил AddEncoding x-gzip gz tgz AddType text/plain .gzк своей <Directory "/usr/share/doc/">записи, и я считаю, что декомпрессия на самом деле обрабатывается на стороне клиента.
Удалить
@ Ален, нет, это не другое решение, это по сути то, что я делаю.
nelaaro
Хотя я считаю, что это лучшее решение (ничто не сравнится с использованием браузера для просмотра документов), для этого стоит излишне излишне устанавливать целый веб-сервер. Я действительно хотел бы, чтобы у Linux ( yelpвозможно?) Был какой - либо из готовых способов прочитать документы.
MestreLion
Обновление: решение работало отлично !!! Мод "deflate" уже был включен из коробки, и я изменил последнюю строку sudo service apache2 restartна ради стандартизации. И последнее, но не менее важное: читатели должны знать о конце "/": это должно быть localhost / doc / , localhost / doc не будет работать.
МестреЛион
-3

Вы не должны читать файлы .tex! Это в удобочитаемом формате, но он предназначен для обработки перед повторным использованием. Вы можете использовать инструмент tex2pdf, чтобы преобразовать его в .pdf.

przemo_li
источник
1
1) Я хочу прочитать источник LaTeX. 2) Команда есть pdflatex. 3) Это касается вопроса о необходимости распаковать файл перед его чтением.
ændrük