我正在尝试在 Ubuntu 16.04 上启动 blender。失败并出现以下错误。
$ blender
blender: error while loading shared libraries: libavcodec.so.54: cannot open shared object file: No such file or directory
我已经检查过答案这里。按照那里的答案,当我尝试安装包 libavcodec-extra-56 时
$ sudo apt-get install libavcodec-extra-56
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libavcodec-extra-56 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libavcodec-extra-56' has no installation candidate
关于第二个问题的一个相关问题是这里。但那个答案与搅拌机无关。
我怎样才能使我的搅拌机安装正常运转?
可能有用的其他信息
$ apt-cache policy blender
blender:
Installed: 2.76.b+dfsg0-3build1
Candidate: 2.76.b+dfsg0-3build1
Version table:
*** 2.76.b+dfsg0-3build1 500
500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
100 /var/lib/dpkg/status
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
感谢您的时间。
更新
我的系统很久以前就从 14.04 升级到了 16.04。我libavcodec-ffmpeg-extra56
按照以下答案进行了安装。我还通过 删除了 blender sudo apt-get purge --auto-remove blender
。现在我再次安装了 blender,希望依赖项能够正确映射。但是,启动 blender 时,它仍然在寻找libavcodec.so.54
。如何正确映射它?
更新2 根据注释输出以下命令。
:~$ which blender
/usr/bin/blender
:~$ ldd /usr/bin/blender |grep libavcodec
libavcodec-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56 (0x00007fc9c45e8000)
libavcodec.so.54 => not found
更新 3 在执行@karel 以下步骤后,由于其他一些库的原因,启动现在失败。
我执行了
sudo apt install libavcodec-ffmpeg-extra56
cd /usr/lib/x86_64-linux-gnu/
sudo cp libavcodec-ffmpeg.so.56 libavcodec-ffmpeg.so.56.bak
sudo mv libavcodec-ffmpeg.so.56.bak libavcodec.so.54
现在推出,
$ blender
blender: error while loading shared libraries: libavformat.so.54: cannot open shared object file: No such file or directory
更新 4
~$ ldd /usr/bin/blender | grep -E 'libav|libsw|libpo'
/usr/bin/blender: /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56: version `LIBAVCODEC_54' not found (required by /usr/local/lib/libopencv_highgui.so.2.4)
libavformat-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavformat-ffmpeg.so.56 (0x00007fb7e0107000)
libavcodec-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56 (0x00007fb7decd8000)
libavutil-ffmpeg.so.54 => /usr/lib/x86_64-linux-gnu/libavutil-ffmpeg.so.54 (0x00007fb7dea69000)
libavdevice-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavdevice-ffmpeg.so.56 (0x00007fb7de83b000)
libswscale-ffmpeg.so.3 => /usr/lib/x86_64-linux-gnu/libswscale-ffmpeg.so.3 (0x00007fb7de5ac000)
libswresample-ffmpeg.so.1 => /usr/lib/x86_64-linux-gnu/libswresample-ffmpeg.so.1 (0x00007fb7d8608000)
libavfilter-ffmpeg.so.5 => /usr/lib/x86_64-linux-gnu/libavfilter-ffmpeg.so.5 (0x00007fb7d4191000)
libavc1394.so.0 => /usr/lib/x86_64-linux-gnu/libavc1394.so.0 (0x00007fb7d1ffc000)
libavformat.so.54 => not found
libavutil.so.52 => not found
libswscale.so.2 => not found
libpostproc-ffmpeg.so.53 => /usr/lib/x86_64-linux-gnu/libpostproc-ffmpeg.so.53 (0x00007fb7c9ce4000)
libavresample-ffmpeg.so.2 => /usr/lib/x86_64-linux-gnu/libavresample-ffmpeg.so.2 (0x00007fb7c9ac2000)
因此列出了 13 个库,其中 3 个缺失。现在的问题是如何在 16.04 上安装这些库或它们的替代品并让 blender 找到它们?
答案1
在 Ubuntu 16.04 中,libavcodec-extra-56 可以替换为 libavcodec-ffmpeg-extra56 或 libavcodec-ffmpeg56。我在 Ubuntu 16.04 中安装了 Blender,它将 libavcodec-ffmpeg-extra56 安装为依赖项,而不是 libavcodec-ffmpeg56。打开终端并输入:
sudo apt install libavcodec-ffmpeg-extra56 libavdevice-ffmpeg56 libavformat-ffmpeg56
cd /usr/lib/x86_64-linux-gnu/
sudo cp libavcodec-ffmpeg.so.56 libavcodec-ffmpeg.so.56.bak
sudo mv libavcodec-ffmpeg.so.56.bak libavcodec.so.54
sudo cp libavformat-ffmpeg.so.56 libavformat-ffmpeg.so.56.bak
sudo mv libavformat-ffmpeg.so.56.bak libavformat.so.54
sudo cp libavdevice-ffmpeg56 libavdevice-ffmpeg56.bak
sudo mv libavdevice-ffmpeg56 libavdevice.so.54
根据您问题中的更新 4,您的系统处于混乱状态。您应该放弃手动将 Blender 粘贴回去的无望任务,并使用以下命令安装 Blender snap 包而不是 apt 包:
sudo snap install blender --classic
答案2
在干净的 Ubuntu 16.04 LTS 上,以下软件包与 blender 一起安装:
sudo apt-get install --reinstall blender blender-data \
fonts-dejavu libavdevice-ffmpeg56 libboost-locale1.58.0 \
libboost-regex1.58.0 libboost-thread1.58.0 libjemalloc1 libopenal-data \
libopenal1 libopencolorio1v5 libopenimageio1.6 libspnav0 libtinyxml2.6.2v5 \
libyaml-cpp0.3v5
该搅拌机启动并正常工作后。
如果您的系统从以前的版本升级,则可能会失败(14.04 长期支持或 12.04 LTS)。
它可能包含旧的过时软件包。
您可以从 Aptitude 中列出并删除它们(过时的和本地创建的软件包类别)或 Synaptic(地位->已安装(本地或过时))。