4

I am trying to compile ffmpeg from sources and create deb package in order to install ffmpeg globally and make it possible to remove it with dpkg -r command.

Here are my commands.

# 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

Everything compiles successfully, deb packages are created but when I try to use ffmpeg I get

ffmpeg: command not found

So that means that ffmpeg still not installed in $PATH directories.

What is wrong with my commands?

4

2 Answers 2

5

The tutorial you mentioned does not use checkinstall because nothing is installed to the system: it "locally installs" the compiled binaries in the ~/bin directory of the user performing the compiling. It does this for a variety of reasons: avoids the complexities of the package management system, avoids messing with system directories, makes updating compiled ffmpeg easier, for shared server users it avoids root/superuser (assuming dependencies are available), and avoids conflicts with the ffmpeg package in the official repository.

Some methods to make your compiled ffmpeg globally executable for all users:

Move it to /usr/local/bin

This is easy:

sudo mv ~/bin/{ffmpeg,ffprobe,ffplay} /usr/local/bin

Downside is that it won't be integrated into the package management system, but that shouldn't be a big deal since undoing this is simple.

To "uninstall":

sudo rm /usr/local/bin/{ffmpeg,ffprobe,ffplay}

Use checkinstall

If you want to use checkinstall to install the compiled ffmpeg binary for integration into the package management system, and so any user can execute it:

cd ~/bin
sudo checkinstall --pkgname=ffmpeg --pkgversion="8:$(date +%Y%m%d%H%M)-git" --default install -Dm755 ffmpeg /usr/local/bin/ffmpeg

This assumes the ffmpeg binary is in ~/bin which it will be if you properly followed the tutorial.

Alternatively, you could remove --prefix="$HOME/ffmpeg_build" and --bindir="$HOME/bin" when configuring ffmpeg, then run PATH="$HOME/bin:$PATH" make, and finally run your checkinstall command from your question if you want to install everything else (libraries, documentation, ffplay, ffprobe) too instead of just the ffmpeg binary.

7
  • I followed these instructions (help.ubuntu.com/community/CheckInstall) and I am still not 100% clear on how to tell checkinstall which folder to add to the PATH (I compiled BRLCAD 7.28 with ./configure && make && sudo checkinstall and the final bin dir ended up /usr/brlcad/dev-7.28.0/bin/)
    – nmz787
    Nov 9, 2018 at 3:32
  • @nmz787 I recommend asking that as a new question.
    – llogan
    Nov 9, 2018 at 5:53
  • it seems no different than the OP's "So that means that ffmpeg still not installed in $PATH directories." which is true
    – nmz787
    Nov 9, 2018 at 21:02
  • @nmz787 The OP followed a guide that "installs" the FFmpeg executable files to ~/bin on purpose for reasons already mentioned above. All that the checkinstall command does in the answer is install it to /usr/local/bin for the sole purposes to 1) integrate it into the package management system, and 2) to make ffmpeg accessible to all users as requested by the OP. This is a roundabout way of doing things because they could have just compiled without the custom --prefix and --extra-* options then run checkinstall normally.
    – llogan
    Nov 9, 2018 at 21:33
  • @nmz787 Trying to use checkinstall to fix BRLCAD's oddball prefix seems like an XY Problem. I know nothing of BRLCAD or why it is installing to /usr/brlcad/dev-7.28.0/bin/, but using checkinstall to change this is not the right tool for the job, as it should be done via the configure/cmake step. That's why I suggested you ask a new question.
    – llogan
    Nov 9, 2018 at 21:36
0

It worked for me, i was creating deb package for git 2.18

commands:

cd git_2.18.1 (tar extracted folder) ./configure --bindir=/usr/local/bin && make sudo checkinstall

The package git_2.18.1-1_amd64.deb was created whos install path is /usr/local/bin

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.