Как узнать, установлено ли у меня более одной версии библиотеки?

Есть много способов сделать это. Например, если вы уверены, что ваши имена файлов не содержат символов новой строки, вы можете сделать:

$ ls | cat -n
     1  a.sh
     2  b.sh
     3  c.sh
     4  d.sh

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

$ c=0; for file in *; do ((c++)); printf '%s : %s\n' "$c" "$file"; done
1 : a.sh
2 : b.sh
3 : c.sh
4 : d.sh

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

$ touch 'a long file name'
$ touch 'another long filename, this one has'$'\n''a newline character!'

Теперь сравним результат двух подходов:

$ ls | cat -n
     1  a long file name
     2  another long filename, this one has
     3  a newline character!
     4  a.sh
     5  b.sh
     6  c.sh
     7  d.sh

Как вы можете видеть выше, синтаксический анализ ls (что обычно является плохой идеей) приводит к имя файла с новой строкой рассматривается как два отдельных файла. Правильный вывод:

$ c=0; for file in *; do ((c++)); printf '%s : %s\n' "$c" "$file"; done
1 : a long file name
2 : another long filename, this one has
a newline character!
3 : a.sh
4 : b.sh
5 : c.sh
6 : d.sh

Как указывает @Vikyboss в комментариях, вышеприведенное решение оболочки установит переменную $ c , которая будет сохраняться после выхода из цикла. Чтобы этого избежать, вы можете добавить в конце unset c или использовать еще один подход. Например:

$ perl -le 'for(0..$#ARGV){print $_+1 ." : $ARGV[$_]"}' *
1 : a long file name
2 : another long filename, this one has
a newline character!
3 : a.sh
4 : b.sh
5 : c.sh
6 : d.sh
1
14.02.2019, 21:23
1 ответ

Вы можете использовать ldconfigдля поиска библиотек и их соответствующих номеров версий. Что-то вроде этого должно работать:

ldconfig -v | grep [Library Name]

При необходимости запустите его как root (sudo ). Замените [Имя библиотеки] любой библиотекой, которую вы хотите найти, например :libgeos/geos/gdal/etc. В качестве альтернативы ldconfig -v | moreи поиск по ним дадут вам информацию обо всех библиотеках.

Это должно дать вам список всех версий этой конкретной библиотеки. Пожалуйста, прочтите справочную страницу ldconfig , чтобы получить дополнительную информацию.

Вы также можете использовать инструменты, встроенные в R, чтобы понять это. На этой странице руководства по R содержится много подробностей о том, как составить список установленных пакетов, связанных с R. По моему ограниченному пониманию, вы должны иметь возможность в консоли Rзапустить следующее, чтобы выяснить установленные библиотеки:

installed.packages(lib.loc = NULL, priority = NULL,
                   noCache = FALSE, fields = NULL,
                   subarch =.Platform$r_arch,...)
3
27.01.2020, 23:30

Теги

Похожие вопросы