Назад | Перейти на главную страницу

Выполнение команды rpm в определенном каталоге разрывает

У меня проблема, не связанная с этой проблемой RPM. Я не уверен, связаны ли они между собой, но я просто расскажу о том, что связано с запуском rpm команда, так как это легче объяснить. Другая проблема, с которой мы сталкиваемся, связана с нашим приложением, о которой никто не знает. В любом случае, один из наших специалистов по контролю качества пытается выяснить, почему файлы не могут быть записаны в этот конкретный каталог. По какой-то причине она решила бежать rpm -qa | grep -i lp. Скажем, каталог /home/tom/mydir. Если она запустит команду rpm вне /home/tom/mydir как ее пользователь, она получает желаемый результат. Если она находится внутри этого каталога, она обнаруживает следующее.

error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm

Как root я могу запустить команду rpm в указанном каталоге или где-либо еще. она думает проблема связана, я просто пытаюсь понять, почему этот каталог создает проблемы для нас как ее пользователя.

Да, я тоже пробовал перестроить базу данных RPM.

Есть несколько сообщений на форумах, где пользователи сообщают о подобных проблемах, и популярный ответ, кажется, такой:

1) найти и уничтожить любой процесс, удерживающий rpm db открытым;

lsof | grep /var/lib/rpm

2), а затем восстановите базу данных и перезагрузите машину ...

rm -fv /var/lib/rpm/__*
rpm --rebuilddb -v -v
sudo reboot

Однако, если вы уже сделали это и не получили никакой радости, я бы проверил следующее и вставил результат в ваш вопрос или в pastebin и т. Д.

показать любые действующие псевдонимы, которые могут мешать вашим параметрам вызова;

$ alias                                               
alias cp='cp -i'                                                             
alias egrep='egrep --color=auto'                                             
alias fgrep='fgrep --color=auto'                                             
alias grep='grep --color=auto'                                               
alias l.='ls -d .* --color=auto'                                             
...

показать используемый путь (если вы видите .там, тогда это объяснило бы, как вы могли получить CWD выполнение результатов команды);

$ echo $PATH
/usr/local/rvm/ge:/usr/:<snip>:/usr/local/sbin:/usr/sbin:/sbin:/opt/depot_too

Затем перечислите все исполняемые файлы, которые могут маскировать команды в этом каталоге;

 ls -lh /home/tom/mydir
total 400K
drwxrwxr-x    7 tomh tomh 4.0K May 18 16:28 android
...some other stuff...

и

find /home/tom/mydir -executable

etc
fileXXX

показать, какой исполняемый файл и к какому типу разрешаются команды в обоих /home/tom/mydir и снаружи;

cd /home/tom/mydir
$ which rpm
/bin/rpm
$ type -a rpm
rpm is /bin/rpm


$ which grep
alias grep='grep --color=auto'
/bin/grep
$ type -a grep
grep is aliased to `grep --color=auto'
grep is /bin/grep

Бегать strace по команде в подозрительном каталоге и снова за его пределами. Он должен прояснить, в чем проблема.

Как использовать strace?

Всякий раз, когда у меня была странная команда в определенном каталоге, обычно это было одно из двух: либо переменные среды PATH, либо LD_LIBRARY_PATH содержат относительные пути, которые в конечном итоге выбирают двоичный файл / библиотеку из этого конкретного каталога. Итак, изучите эти два и найдите что-либо, не начинающееся с «/», а также «::» в середине (это укажет на поиск в текущем каталоге) или завершающий символ «:».