bkd*_*qra 4 package-management apt compiling ffmpeg checkinstall
我正在尝试ffmpeg从源代码编译并创建deb包,以便全局安装 ffmpeg 并可以使用dpkg -r命令将其删除。
这是我的命令。
# Installing FFmpeg
cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree
PATH="$HOME/bin:$PATH" make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default
hash -r
Run Code Online (Sandbox Code Playgroud)
一切都编译成功,deb 包被创建,但是当我尝试使用ffmpeg我得到
ffmpeg: command not found
Run Code Online (Sandbox Code Playgroud)
所以这意味着ffmpeg仍然没有安装在$PATH目录中。
我的命令有什么问题?
你提到的教程没有使用,checkinstall因为系统没有安装任何东西:它在~/bin执行编译的用户目录中“本地安装”编译的二进制文件。它这样做有多种原因:避免包管理系统的复杂性,避免弄乱系统目录,使更新编译ffmpeg更容易,对于共享服务器用户,它避免了 root/超级用户(假设依赖项可用),并避免与ffmpeg包在官方存储库中。
使您编译的ffmpeg全局可执行文件对所有用户的一些方法:
/usr/local/bin这很简单:
sudo mv ~/bin/{ffmpeg,ffprobe,ffplay} /usr/local/bin
Run Code Online (Sandbox Code Playgroud)
缺点是它不会被集成到包管理系统中,但这应该没什么大不了的,因为撤消这很简单。
要“卸载”:
sudo rm /usr/local/bin/{ffmpeg,ffprobe,ffplay}
Run Code Online (Sandbox Code Playgroud)
checkinstall如果要使用checkinstall安装编译好的ffmpeg二进制文件以集成到包管理系统中,并且任何用户都可以执行它:
cd ~/bin
sudo checkinstall --pkgname=ffmpeg --pkgversion="8:$(date +%Y%m%d%H%M)-git" --default install -Dm755 ffmpeg /usr/local/bin/ffmpeg
Run Code Online (Sandbox Code Playgroud)
如果您正确地遵循了教程,这假设ffmpeg二进制文件将在~/bin其中。
或者,如果您还想安装其他所有内容(库、文档、、),而不仅仅是二进制文件,则可以在配置时删除--prefix="$HOME/ffmpeg_build"和,然后运行,最后运行您的问题中的命令。--bindir="$HOME/bin"ffmpegPATH="$HOME/bin:$PATH" makecheckinstallffplayffprobeffmpeg