[devel] abstract TeX dependencies

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Мар 19 01:32:38 MSK 2009


On Wed, Mar 18, 2009 at 09:44:04PM +0300, Kirill Maslinsky wrote:
> > > Поясню: сложность там в том, что разным сторонним пакетам,
> > > предоставляющим стилевые файлы, шрифты и пр., нужно класть файлы 
> > > в целый ряд подкаталогов /usr/share/texmf, согласно TDS. 
> > > Все эти подкаталоги запакованы сейчас в tetex-core и в кучу 
> > > texlive-пакетов. Чтобы выкинуть их из tetex, нужно его пересобрать.
> > > Чтобы выкинуть их из texlive-*, нужно его тоже пересобрать, 
> > > но там списки файлов пакетов генерятся автоматически, списки надо
> > > аккуратно перегенерить, и там могут быть нюансы (тут bga@ лучше знает).
> > > 
> > > В целом, я пока не уверен, что это вообще правильный путь -- переносить, 
> > > по существу, все стандартные подкаталоги /usr/share/texmf в tex-common. 
> > > Но других вариантов пока тоже не вижу.
> > 
> > Я что-то потерял нить.
> > Зачем выносить все директории в общий пакет? Недавно же писали,
> > что одинаковые директории можно включать в несколько пакетов,
> > последний удаляемый заберёт их с собой.
> 
> В том-то и дело, что если каталоги будут принадлежать сразу нескольким 
> несвязанным пакетам (tetex, texlive, стили из сторонних пакетов), то 
> каталоги там будут с одним и тем же именем, но не будут уже совпадать
> с точностью до mtime (так как эти каталоги взяты не из одного исходника). 
> Правильно я понимаю, что эту ситуацию rpm уже будет рассматривать как
> конфликт?

Нет, конфликта не будет.
Код файлового конфликта в rpm менялся, актуальным следует считать вот этот код.

lib/transaction.c:
   884  static int filecmp(const TFI_t fi1, const int ix1, const TFI_t fi2, const int ix2)
   885          /*@*/
   886  {
   887      uint_16 m1 = fi1->fmodes[ix1], m2 = fi2->fmodes[ix2];
   888      uint_32 f1 = fi1->fflags[ix1], f2 = fi2->fflags[ix2];
   889      const char *u1 = fi1->fuser[ix1], *u2 = fi2->fuser[ix2];
   890      const char *g1 = fi1->fgroup[ix1], *g2 = fi2->fgroup[ix2];
   891  
   892      /* both file type and permissions must match */
   893      if (m1 != m2)
   894          return 1;
   895  
   896      /* ownership must also match */
   897      if (strcmp(u1, u2) || strcmp(g1, g2))
   898          return 1;
   899  
   900      if ((f1 | f2) & RPMFILE_GHOST)
   901          /* one or both %ghost files, no extra check */
   902          ;
   903      else if (S_ISLNK(m1)) {
   904          /* symlinks must have the same target */
   905          const char *l1 = fi1->flinks[ix1], *l2 = fi2->flinks[ix2];
   906          if (strcmp(l1, l2))
   907              return 1;
   908      }
   909      else if (S_ISREG(m1)) {
   910          /* regular files must have the same md5 sum */
   911          const char *md51 = fi1->fmd5s[ix1], *md52 = fi2->fmd5s[ix2];
   912          if (strcmp(md51, md52))
   913              return 1;
   914      }
   915  
   916      /* e.g. mtime difference is immaterial */
   917      return 0;
   918  }

Но кроме файлового конфликта есть ещё rpmverify.
Уточнить поведение 'rpm -Vv' с ходу не берусь.

То есть получается что один каталог расшарен с разным mtime.  Что не
фатально, но как бы немножко остается вопрос, какой mtime считать
правильным.

Впрочем, mtime каталога -- очень хрупкая вещь; mtime каталога
автоматически меняется, когда в каталоге создаются или удаляются файлы.
Проверять mtime каталога смысла очень мало.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090319/6cc0093c/attachment.bin>


Подробная информация о списке рассылки Devel