Случайно перезаписал файлы dylib в usr / local / lib, скопировав lib из пакета приложения

Я перезаписал некоторые из моих файлов dylib в / usr / local / bin /, и теперь у меня проблемы с запуском программы. Есть ли способ восстановить эти файлы обратно?

Программа ffmpeg у меня работала нормально. Затем я установил программу GPAC и сделал следующее:

$ sudo cp MP4Box /usr/local/bin/

$ sudo cp -R /Applications/GPAC.app/Contents/MacOS/lib/* /usr/local/lib/

Я сделал это, потому что это позволило мне запустить MP4Box из командной строки, поскольку / usr / local / lib / находится в $ PATH.

Но теперь, когда я пытаюсь бежать

$ ffmpeg

Я получаю такую ​​ошибку:

dyld: Библиотека не загружена: /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib Ссылка на: / usr / local / bin / ffmpeg Причина: несовместимая версия библиотеки: для ffmpeg требуется версия 10.0.0 или более поздняя, но libSDL2-2.0.0.dylib предоставляет версию 5.0.0 Прерывание прерывания: 6

Я думаю, что произошло следующее: я перезаписал некоторые файлы в / usr / local / lib /, чего мне не следовало делать. В этом случае я перезаписал версию 10.0.0 libSDL2-2.0.0.dylib версией 5.0.0 из пакета приложений GPAC.

Я попытался использовать homebrew для удаления и переустановки ffmpeg, надеясь, что он увидит, что мне нужно обновить мои библиотеки dylib.

$ brew uninstall ffmpeg

$ brew install ffmpeg

$ ffmpeg

Но это приводит к той же ошибке.

Вот список всех файлов, которые я скопировал из /Applications/GPAC.app/Contents/MacOS/lib/* в / usr / local / lib /

libSDL2-2.0.0.dylib libfreetype.6.dylib libplds4.dylib liba52.0.dylib libgpac.dylib libpng16.16.dylib libavcodec.58.dylib libjpeg.9.dylib libpostproc.55.dylib libavdevice.58.dylib liblzma. 5.dylib libssl.1.0.0.dylib libavfilter.7.dylib libmad.0.dylib libswresample.3.dylib libavformat.58.dylib libmozjs185.1.0.dylib libswscale.5.dylib libavresample.4.dylib libmp3lame.0.dylib libtheora.0.dylib libavutil.56.dylib libnspr4.dylib libvorbis.0.dylib libcrypto.1.0.0.dylib libogg.0.dylib libx264.152.dylib libfaad.2.dylib libplc4.dylib


person random    schedule 21.08.2019    source источник


Ответы (1)


Хотя запуск brew для переустановки ffmpeg напрямую не работал, я обнаружил, что запуск brew для переустановки зависимостей ffmpeg действительно работал.

Итак, в предыдущем примере libSDL2-2.0.0.dylib загружался некорректно. Я погуглил brew libSDL2-2.0.0.dylib и обнаружил, что имя пакета brew для этого было sdl2.

Я побежал

$ brew reinstall sdl2

$ ffmpeg

и я больше не получал ошибку libSDL2-2.0.0.dylib! Я повторил это для каждой низкоуровневой библиотеки, которая, по словам ffmpeg, нужна, и в конечном итоге это сработало.

person random    schedule 21.08.2019