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