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

Все успешно компилируется, пакеты deb создаются, но когда я пытаюсь использовать ffmpeg я получил

ffmpeg: command not found

Так что это означает, что ffmpeg до сих пор не установлен в $PATH каталоги.

Что не так с моими командами?

2 ответа

Решение

Упомянутый вами учебник не используется checkinstall потому что ничего не установлено в систему: он "локально устанавливает" скомпилированные двоичные файлы в ~/bin каталог пользователя, выполняющего компиляцию. Он делает это по разным причинам: избегает сложностей системы управления пакетами, избегает путаницы с системными каталогами, делает обновление скомпилированным ffmpeg проще для пользователей совместно используемых серверов: он избегает root / superuser (при условии наличия зависимостей) и избегает конфликтов с пакетом 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 двоичный файл.

У меня это сработало, я создавал deb пакет для git 2.18

команды:

cd git_2.18.1 (папка, извлеченная из tar) ./configure --bindir=/usr/local/bin && make sudo checkinstall

Был создан пакет git_2.18.1-1_amd64.deb, путь установки которого / usr / local / bin

Другие вопросы по тегам