<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>11667</bug_id>
          
          <creation_ts>2007-05-01 11:30:20 +0400</creation_ts>
          <short_desc>apt-* should test current working directory for existence and abort instantly when the check fails</short_desc>
          <delta_ts>2011-01-22 16:41:16 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>apt</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter V. Saveliev">peet</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>boyarsh</cc>
    
    <cc>cas</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49717</commentid>
    <comment_count>0</comment_count>
    <who name="Peter V. Saveliev">peet</who>
    <bug_when>2007-05-01 11:30:20 +0400</bug_when>
    <thetext>Когда запускаешь apt-cache, находясь в удалённой (стёртой, несуществующей) 
директории, то apt-cache обламывается с невразумительной ошибкой:

[root@radlinux mailfromd]# apt-cache search spam
rpmdb: no absolute path for the current directory: Нет такого файла или 
каталога
error: db4 error(2) from dbenv-&gt;open: Нет такого файла или каталога
error: cannot open Packages index using db3 - Нет такого файла или каталога (2)
E: невозможно открыть базу данных RPM


в приведённом примере директория mailfromd была убита предыдущим apt-get 
remove. Нужно, чтобы или apt-cache сообщал, что текущей директории не 
существует :) и предложил бы перезапустить себя по обретению пользователем 
существующего пути (это workaround) или бы нормально работал бы и в такой 
ситуации (имхо, в текущем пути нет ничего такого, чего нельзя было бы достать 
через абсолютные пути -- отталкиваться от pwd необязательно)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49758</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-05-02 04:35:55 +0400</bug_when>
    <thetext>Не надо запускать программы типа apt-cache из несуществующих каталогов,
тем более что диагностика apt-cache оказалась более-менее понятной.

Мне кажется неразумным добавлять chdir(&quot;/&quot;) во все программы.
Некоторые, в т.ч. и apt-cache, принимают в качестве параметров пути к файлам,
поэтому chdir(&quot;/&quot;) для них неприемлем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49764</commentid>
    <comment_count>2</comment_count>
    <who name="Peter V. Saveliev">peet</who>
    <bug_when>2007-05-02 10:05:58 +0400</bug_when>
    <thetext>Дим, а он может просто выйти после &quot;no absolute path for the current directory: 
Нет такого файла или каталога&quot;?

Даже не так. Можно ли в apt-get, apt-cache в _самое_ начало вкрутить проверку 
условий (несуществующая директория, неверная операция, и т.п.)? И в случае 
ошибки выходить? А не считать всю базу, а потом говорить &quot;неверная операция 
serach&quot; или, как тут, отдавать rpmdb на откуп проверку текущей директории?

Это раз, и два -- oldpwd=pwd(); chdir(&quot;/&quot;) -- и работай сколько хочешь с путями 
файлов в параметрах, но при этом находясь в гарантированном месте. Нету места 
более гарантированного.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49889</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-05-05 04:52:12 +0400</bug_when>
    <thetext>Я вот чего не понимаю: почему возникло желание добавлять проверку именно в
apt-get, а не в каждую программу, прямо или косвенно использующую текущий
каталог?  Почему, в конечном итоге, это лучше чем заблаговременно выполненный
&quot;cd /&quot;, или, как заведено у демонов, chdir(&quot;/&quot;)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49901</commentid>
    <comment_count>4</comment_count>
    <who name="Peter V. Saveliev">peet</who>
    <bug_when>2007-05-05 12:11:36 +0400</bug_when>
    <thetext>Потому что пользовательские программы пишут для пользователей, а не для 
андроидов. Вразумительный репорт не должен (пусть косвенно) 
дезынформировать -- первая мысль, которая приходит в голову, глядя на репорт о 
том, что apt не может найти/открыть rpmdb -- это то, что rpmdb грохнулась 
нафик.

Потому что apt -- одна из ключевых программ проектов ALT. И с её поведением 
встречается каждый, кто использует наши проекты.

Чорт возьми, потому что у нас каждая первая ключевая программа возвращает 
ошибки в таком виде, что их только андроиды понять способны (hsh тому 
пример -- на очереди...). И это не в последнюю очередь влияет на мнение 
пользователей. И если кто-то оценивает в первую очередь по функционалу, а не 
по дружелюбности интерфейса -- хорошо, но для кого-то вразумительная 
диагностика такой же функционал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55464</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-09-19 04:36:40 +0400</bug_when>
    <thetext>Пользователи, которые не в состоянии понять диагностику &quot;no absolute path for
the current directory: Нет такого файла или каталога&quot;, обычно не умеют запускать
программы из удалённых каталогов.

Ну и, наконец, рабочий каталог может быть удалён прямо во время работы процесса.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55470</commentid>
    <comment_count>6</comment_count>
    <who name="Denis Smirnov">mithraen</who>
    <bug_when>2007-09-19 06:22:37 +0400</bug_when>
    <thetext>Ошибка не в том что диагностика недостаточна.
Ошибка в том, что после этой ошибки он не вываливается немедленно, а продолжает
пытаться работать и выводит ещё 3 _неправильных_ сообщения об ошибке.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>55479</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2007-09-19 13:33:38 +0400</bug_when>
    <thetext>apt-* should test current working directory for existence and abort instantly
when the check fails, to avoid subsequent errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71990</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Gusarov">dottedmag</who>
    <bug_when>2008-06-13 13:00:39 +0400</bug_when>
    <thetext></thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117453</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2011-01-22 16:41:16 +0300</bug_when>
    <thetext>Ошибка не воспроизводится. 

[cas@cas rem]$ ll `pwd`
ls: невозможно получить доступ к /home/cas/tmp/rem: Нет такого файла или каталога
[cas@cas rem]$ apt-cache search dddd
[cas@cas rem]$</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>