ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] abstract TeX dependencies
Date: Thu, 19 Mar 2009 01:18:13 +0300
Message-ID: <20090318221813.GA26967@altlinux.org> (raw)
In-Reply-To: <m3ab7ic2jk.fsf@blard.localdomain>

[-- Attachment #1: Type: text/plain, Size: 5059 bytes --]

On Wed, Mar 18, 2009 at 08:45:51PM +0600, Michael Pozhidaev wrote:
> >> 1. /usr/bin/latex, /usr/bin/dvips etc.
> >
> > Для зависимостей Requires это предпочтительный вариант.
> > Такие зависимости сейчас генерируются автоматически.
> 
> Есть некоторые случаи, когда требуется только наличие некоторых
> директорий, чтобы туда положить расширения tex, соблюдая возможность
> пользователя самому выбрать tetex/texlive.

При установке rpm автоматически создает недостающие промежуточные
каталоги.  С другой стороны, это создает проблему "ничейных каталогов".
Эту проблему сложно решить хорошо без преумножения сущностей.
Иерархия вложенности каталогов фс не всегда хорошо согласуется
с упорядоченностью зависимостей.  Иначе можно договориться
до того, что все пакеты, которые что-то требуют, должны лежать
в подкаталогах относительно тех пакетов, которые они требуют.
Но этот расклад по смыслу не всегда выполняется.

Короче, не следует преувеличивать эту проблему, и не следует делать её
главным аргументом как распилить пакеты и какие должны быть зависимости.
Конечно, если есть очевидное и инуитивное решение для конкретного
случая, то это решение надо реализовать.  Создание пакета-пустышки,
который владеет каталогом -- это преумножение сущеностей; такое решение
не относится к очевидному и интуитивному, но, в принципе, это возможное
решение.

> Какой из путей более правильный/возможный:
> 1.  включить все подобные директории в отдельный общий пакет, который
> может жить вместе с любым дистрибутивом tex. Сейчас есть tex-common, но
> kirill@ говорит, что включить туда *все* директории, которые могут
> понадобится не так просто. Если я не правильно усёк проблему, пусть
> kirill@ скажет это точнее;

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

> 2. иметь какую-нибудь виртуальную зависимость (которая не ставится в
> rpmdb и разрешается через provides), удовлетворяя которую появляются все
> нужные директории, но удовлетворить её могут как tetex, так и texlive.

Это искусственное решение искусственной проблемы.
Реальной проблемы нет (реальная проблема -- это работоспособность
пакетов, и зависимости пакетов, которые должны обеспечивать
работоспособность).

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

> 3. указать в requires прямо имя директории.

Для конечных пакетов это самое простое и правильное решение.

> Сейчас попробовал попросить
> apt разрешить такую зависимость при установленном texlive. так он
> собрался texlive вообще удалить, что не подходило бы по замыслу.

Увы, апт штука глюковатая.  Но это отчасти решаемо.
Думаю, что в ближайшее время я что-нибудь решу.

> [msp@blard ~]$ sudo apt-get install /usr/share/texmf/fonts
> Reading Package Lists... Done
> Building Dependency Tree... Done
> Selecting tetex-core for '/usr/share/texmf/fonts'

Зависимости /usr/share/texmf/fonts в базе апта нету.

$ $TMPDIR/build/aptbox/apt-cache showpkg /usr/share/texmf/fonts
W: Unable to locate package /usr/share/texmf/fonts
$

apt-get выбрал эту зависимость через pkgRecords, то есть через просмотр
списков %{FILENAMES} в pkglist.classic.bz2.  Выбор через pkgRecords
работает только через командную строку.

$ bzcat /ALT/Sisyphus/{i586,noarch}/base/pkglist.classic.bz2 |./pkglist-query '[%{=NAME}\t%{=ARCH}\t%{FILENAMES}\n]' - |awk '$3=="/usr/share/texmf/fonts"'
tetex-core      i586    /usr/share/texmf/fonts
texlive-base-bin        i586    /usr/share/texmf/fonts
texlive-font-utils      i586    /usr/share/texmf/fonts
$ 

Короче, смысл в этом такой:
1) когда на командной строке говорят 'install foo'; и
2) когда апт рекурсивно разрешает зависимости пакетов; то
работают два совершенно разных алгоритма.
Первый алгоритм называется TryToInstall, а второй -- MarkInstall.

То есть когда Вы сказали 'install /usr/share/texmf/fonts', то по
результату нельзя судить, что будет, если пакет будет содержать
зависимость на /usr/share/texmf/fonts.

> The following extra packages will be installed:
>   tetex-core
> The following packages will be REMOVED:
>   ghostscript-utils kde kdegraphics kdegraphics-kdvi texlive-base
>   texlive-base-bin texlive-extra-utils texlive-font-utils
>   texlive-fonts-recommended texlive-lang-cyrillic texlive-latex-base
>   texlive-latex-recommended texlive-math-extra texlive-metapost texlive-omega
>   texlive-publishers texlive-science
> The following NEW packages will be installed:
>   tetex-core
> 0 upgraded, 1 newly installed, 17 removed and 509 not upgraded.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

  parent reply	other threads:[~2009-03-18 22:18 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-17  9:57 Kirill Maslinsky
2009-03-17 12:29 ` Alexey Tourbin
2009-03-18 14:45   ` Michael Pozhidaev
2009-03-18 16:06     ` Kirill Maslinsky
2009-03-18 16:07       ` Mikhail Gusarov
2009-03-18 16:13         ` Kirill Maslinsky
2009-03-18 16:16           ` Mikhail Gusarov
2009-03-18 18:01       ` Grigory Batalov
2009-03-18 18:44         ` Kirill Maslinsky
2009-03-18 18:52           ` Igor Vlasenko
2009-03-18 21:15             ` Michael Pozhidaev
2009-03-18 22:50               ` Grigory Batalov
2009-03-24 18:07             ` [devel] rpm file conflicts Kirill Maslinsky
2009-03-24 19:27               ` Igor Vlasenko
2009-03-24 19:38                 ` Kirill Maslinsky
2009-03-24 19:41                   ` Artem Zolochevskiy
2009-03-24 19:53                     ` Igor Vlasenko
2009-03-18 22:32           ` [devel] abstract TeX dependencies Alexey Tourbin
2009-03-19  0:16             ` Денис Смирнов
2009-03-18 22:18     ` Alexey Tourbin [this message]
2009-03-18 23:12       ` Michael Pozhidaev
2009-03-18 16:43   ` Kirill Maslinsky
2009-03-18 16:46     ` Mikhail Gusarov
2009-03-18 22:51     ` Alexey Tourbin
2009-03-24 16:37     ` [devel] grab all specfiles Alexey Tourbin
2009-03-24 19:23       ` Igor Vlasenko
2009-03-24 19:42         ` Kirill Maslinsky
2009-03-26 13:18           ` Michael Shigorin
2009-03-18 13:57 ` [devel] abstract TeX dependencies Alexander Borovsky
2009-03-18 15:15   ` Grigory Batalov
2009-03-18 15:59   ` Kirill Maslinsky
2009-03-18 16:00     ` Kirill Maslinsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090318221813.GA26967@altlinux.org \
    --to=at@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git