gug-bg-herd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacs-snapshot-bin-common: /etc/alternatives н е важи при emacs(1)


From: Kaloian Doganov
Subject: Re: emacs-snapshot-bin-common: /etc/alternatives н е важи при emacs(1)
Date: Fri, 29 Jun 2007 19:12:35 +0300
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gNewSense gnu/linux)

Yavor Doganov <address@hidden> writes:

    при инсталирани на системата emacs21, emacs22 и emacs-snapshot
    (или първото в комбинация от някои от следващите), `man emacs'
    винаги покава страницата на emacs-snapshot.  Това е на gNewSense
    GNU/Linux, но го възпроизвеждам и под Debian/sid.

Този проблем се възпроизвежда и на моята система (gNewSense + jungle).
    
    По някаква мистериозна за мен причина си решава, че именно
    emacs.1emacs-snapshot.gz е това, което потребителя търси :-{
    
    Някой да има идея защо се получава така и как може да се избегне?

Изглежда това се случва заради особения начин, по който man открива
страниците.  При инсталирани пакети emacs21, emacs22 и emacs-snapshot,
в /usr/share/man/man1 имаме:

   emacs.1emacs21.gz
   emacs.1emacs22.gz
   emacs.1emacs-snapshot.gz
   emacs.1.gz

Където emacs.1.gz е алтернатива.  Сам по себе си man не разбира от
алтернативи, той вижда файлове и затова засега ще разглеждаме
emacs.1.gz на общо основание, наравно с останалите.

От гледна точка на man, имаме общо 4 страници с име „emacs“, които се
намират в следните раздели:

| страница | раздел          | файлово име                                  |
|----------+-----------------+----------------------------------------------|
| emacs    | 1emacs21        | /usr/share/man/man1/emacs.1emacs21.gz        |
| emacs    | 1emacs22        | /usr/share/man/man1/emacs.1emacs22.gz        |
| emacs    | 1emacs-snapshot | /usr/share/man/man1/emacs.1emacs-snapshot.gz |
| emacs    | 1               | /usr/share/man/man1/emacs.1.gz               |

Де факто и четирите страници отговарят на критерия „emacs“.  При
изпълнение на командата „man emacs“ всъщност се откриват всичките
четири страници, но по подразбиране се показва само една от тях —
първата, на която попадне man.  (Обаче „man -all emacs“ ще покаже и
четирите.)

Не мога да кажа защо при показване на една страница се избира точно
варианта от раздела „1emacs-snapshot“, а не някой друг.  По принцип
редът за търсене в разделите зависи от директивата SECTIONS в
/etc/manpath.config, но по подразбиране в тази директива не е посочен
ред на разделите, които ни интересуват тук.  Казано е, че „1“
предхожда „2“ и „2“ предхожда „3“, но не е отбелязано дали „1“
предхожда „1emacs-snapshot“, например.

Струва ми се, че редът за избор в този случай е недефиниран и зависи
от конкретната реализация на man.  За съжаление, в момента не
разполагам с изходния код, за да направя справка.

Можем изрично да посочим ред на търсене като укажем променливата
MANSECT:

   $ MANSECT=1emacs22:1:1emacs21:1emacs-snapshot man emacs

Горната команда винаги ще показва страницата „emacs“ от раздела
„1emacs22“.  Докато:

   $ MANSECT=1:1emacs21:1emacs22:1emacs-snapshot man emacs

винаги ще показва страницата „emacs“ от раздел „1“, т.е. от това,
което е посочено в алтернативата.

Разбира се, ръчното установяване на SECTIONS или MANSECT не е читаво
решение на проблема.  Разследването би трябвало да продължи като се
погледне в кода на man.


-- 
Protect your digital freedom and privacy, eliminate DRM, learn more at
http://www.defectivebydesign.org/what_is_drm

reply via email to

[Prev in Thread] Current Thread [Next in Thread]