我正在尝试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
一切都成功编译,deb 包已创建,但当我尝试使用时,ffmpeg
我得到了
ffmpeg: command not found
所以这意味着ffmpeg
仍然没有安装在$PATH
目录中。
我的命令有什么问题?
答案1
您提到的教程没有用,checkinstall
因为系统没有安装任何东西:它会“本地安装”编译后的二进制文件到~/bin
执行编译的用户的目录中。这样做的原因有很多:避免了包管理系统的复杂性,避免了与系统目录的混乱,使更新编译ffmpeg
更容易,对于共享服务器用户,它避免了 root/超级用户(假设依赖项可用),并避免了与ffmpeg官方存储库中的软件包。
使编译结果ffmpeg
可供所有用户全局执行的一些方法:
移至/usr/local/bin
这很容易:
sudo mv ~/bin/{ffmpeg,ffprobe,ffplay} /usr/local/bin
缺点是它不会被集成到包管理系统中,但这不是什么大问题,因为撤消它很简单。
要“卸载”:
sudo rm /usr/local/bin/{ffmpeg,ffprobe,ffplay}
使用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
如果您正确地遵循了本教程,那么这假定ffmpeg
二进制文件位于其所在的位置。~/bin
或者,如果您还想安装其他所有内容(库、文档、、),而不仅仅是二进制文件,您可以在配置时删除--prefix="$HOME/ffmpeg_build"
和,然后运行,最后从您的问题中运行命令。--bindir="$HOME/bin"
ffmpeg
PATH="$HOME/bin:$PATH" make
checkinstall
ffplay
ffprobe
ffmpeg
答案2
它对我有用,我正在为 git 2.18 创建 deb 包
命令:
cd git_2.18.1 (tar 解压文件夹) ./configure --bindir=/usr/local/bin && make sudo checkinstall
软件包 git_2.18.1-1_amd64.deb 已创建,其安装路径为 /usr/local/bin