ошибка, в то время как загрузка совместно использовала библиотеки: libreadline.so.7: не может открыть файл общего объекта: Никакой такой файл или каталог

Я пытаюсь настроить среду deepmind/dqn. Я работаю ./install_dependencies.sh устанавливать

LuaJIT and Torch 7.0
nngraph
Xitari
AleWrap

Но я добрался:

/home/dqn/torch/bin/luajit: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory

=> Torch7 has been installed successfully

Installing nngraph ...
/home/dqn/torch/bin/luajit: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory
Error. Exiting.

install_dependencies.sh :

# Install dependencies for Torch:
sudo apt-get update
sudo apt-get install -qqy build-essential
sudo apt-get install -qqy gcc g++
sudo apt-get install -qqy cmake
sudo apt-get install -qqy curl
sudo apt-get install -qqy libreadline-dev
sudo apt-get install -qqy git-core
sudo apt-get install -qqy libjpeg-dev
sudo apt-get install -qqy libpng-dev
sudo apt-get install -qqy ncurses-dev
sudo apt-get install -qqy imagemagick
sudo apt-get install -qqy unzip
sudo apt-get update

echo "==> Torch7's dependencies have been installed"

# Build and install Torch7
cd /tmp
rm -rf luajit-rocks
git clone https://github.com/torch/luajit-rocks.git
cd luajit-rocks
mkdir -p build
cd build
git checkout master; git pull
rm -f CMakeCache.txt
cmake .. -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_BUILD_TYPE=Release
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi
make
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi
make install
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi


path_to_nvcc=$(which nvcc)
if [ -x "$path_to_nvcc" ]
then
cutorch=ok
cunn=ok
fi

# Install base packages:
$PREFIX/bin/luarocks install cwrap
$PREFIX/bin/luarocks install paths
$PREFIX/bin/luarocks install torch
$PREFIX/bin/luarocks install nn

[ -n "$cutorch" ] && \
($PREFIX/bin/luarocks install cutorch)
[ -n "$cunn" ] && \
($PREFIX/bin/luarocks install cunn)

$PREFIX/bin/luarocks install luafilesystem
$PREFIX/bin/luarocks install penlight
$PREFIX/bin/luarocks install sys
$PREFIX/bin/luarocks install xlua
$PREFIX/bin/luarocks install image
$PREFIX/bin/luarocks install env

echo ""
echo "=> Torch7 has been installed successfully"
echo ""


echo "Installing nngraph ... "
$PREFIX/bin/luarocks install nngraph
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi
echo "nngraph installation completed"

echo "Installing Xitari ... "
cd /tmp
rm -rf xitari
git clone https://github.com/deepmind/xitari.git
cd xitari
$PREFIX/bin/luarocks make
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi
echo "Xitari installation completed"

echo "Installing Alewrap ... "
cd /tmp
rm -rf alewrap
git clone https://github.com/deepmind/alewrap.git
cd alewrap
$PREFIX/bin/luarocks make
RET=$?; if [ $RET -ne 0 ]; then echo "Error. Exiting."; exit $RET; fi
echo "Alewrap installation completed"

echo
echo "You can run experiments by executing: "
echo
echo " ./run_cpu game_name"
echo
echo " or "
echo
echo " ./run_gpu game_name"
echo
echo "For this you need to provide the rom files of the respective games (game_name.bin) in the roms/ directory"
echo

Когда я тестирую код ./run_gpu {game_name}, Я добрался:

../torch/bin/luajit: error while loading shared libraries: libreadline.so.7: cannot open shared object file: No such file or directory

Когда я работаю:

ldconfig -p | grep readline

Моя версия равняется 6

libreadline.so.6 (libc6,x86-64) => /lib/x86_64-linux-gnu/libreadline.so.6
libreadline.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libreadline.so
libguilereadline-v-18.so.18 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libguilereadline-v-18.so.18
libguilereadline-v-18.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libguilereadline-v-18.so

Но я не могу установить libreadline7:

sudo apt-get install libreadline7-dev

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libreadline7-dev

Как я мог установить libreadline7??

1
задан 18 September 2018 в 14:34

2 ответа

Файл Вам нужно, /lib/x86_64-linux-gnu/libreadline.so.7 обеспечивается пакетом libreadline7, не любой версией libreadline-dev. Нет такого пакета как libreadline7-dev в любом распределении Ubuntu.

Так как Вы имеете libreadline.so.6 и его друзья, Вы, вероятно, используете Ubuntu 16.04 или 14.04. libreadline7 пакет доступен в Ubuntu 18.04. Так, простой ответ здесь - то, что можно получить его путем обновления до или установки 18.04. Для проверки Вы затем работали

apt policy libreadline7

и если это не установлено, работать

sudo apt update
sudo apt install libreadline7

Существует действительно грязный взлом (не рекомендуемый, но не очень опасный), Вы могли попробовать, если Вы просто хотите закончить этот шаг, чтобы видеть, собираетесь ли Вы поразить другую проблему, прежде чем Вы примете на себя обязательство обновлять, или Вы действительно не можете обновить прямо сейчас. Это должно сделать символьную ссылку, указывающую на более старую версию библиотеки, так, чтобы программа думала, что использует libreadline.so.7 и на самом деле использует libreadline.so.6:

sudo ln -s /lib/x86_64-linux-gnu/libreadline.so.6 /lib/x86_64-linux-gnu/libreadline.so.7

Это могло бы возможно сделать прогон программы. Но это могло бы также отказать загадочно без любых значимых сообщений об ошибках. При отъезде символьной ссылки как это другие программы, которые Вы устанавливаете из независимых источников, также могли бы не сообщить о недостающей зависимости и катастрофическом отказе загадочно. Вы могли бы забыть то, что Вы сделали и задаетесь вопросом что не так с Вашей глупой системой, таким образом, лучше только попробовать вещи как это для тестирования. Можно всегда просто удалять символьную ссылку libreadline.so.7 возвращаться, где Вы запустили.

0
ответ дан 7 December 2019 в 23:17

Для устранения этой зависимости необходимо вручную установить указанный пакет. Перейдите в магазин Ubuntu и найдите пакет.

https://packages.ubuntu.com/search?suite=default§ion=all&arch=any&keywords=libreadline7&searchon=names

Здесь будет указана информация о пакете. Нажмите на гиперссылку в описании пакета. В этом случае:

https://packages.ubuntu.com/bionic/libreadline7

Нажмите на любую ссылку для вашего региона. Это запустит загрузку файла Debian для пакета.

После того как вы получили файл Debian, вам просто нужно установить его с помощью команды dpkg. Например:

sudo dpkg -i Desktop/libreadline7_7.0-3_amd64.deb
1
ответ дан 4 November 2020 в 00:37

Другие вопросы по тегам:

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