我在安装和删除已编译的软件时一直遇到问题,所以我决定将软件从源代码构建到 .deb 包中,以便于安装/删除。
作为最终用户,我想知道一种将源代码构建到 .deb 包中的简单快捷的方法。
我试过了:
我有一个使用 checkinstall 安装的 autoconf/automake/autoeverything 项目。当我去安装它时,我会看到这个
This package will be built according to these values:
0 - Maintainer: [ brooks94@foo.com ]
1 - Summary: [ Package created with checkinstall 1.6.2 ]
2 - Name: [ mypkg ]
3 - Version: [ ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ amd64 ]
8 - Source location: [ mypkg ]
9 - Alternate source location: [ ]
10 …
Run Code Online (Sandbox Code Playgroud) 假设我有一个安装程序或我想要安装的某个程序的源 tarball。(没有可用的 Debian 软件包。)首先,我想.deb
从中创建一个软件包,以便将来能够干净地删除已安装的程序(请参阅卸载从源代码构建的应用程序,如果我从源代码构建一个软件包如何我可以完全卸载或删除吗?)。此外,使用包安装可以防止它破坏其他包中的文件,如果您运行安装程序或sudo make install
.
通过阅读那里和其他地方的答案,我收集到通常的解决方案是使用checkinstall
来构建包。不幸的是,它似乎并不能checkinstall
阻止其他软件包破坏系统文件。例如,根据Reverting issues Caused by checkinstall with gcc build:make install
我使用安装创建了一个 Debian 软件包
sudo checkinstall -D make install
。[...]我使用 Synaptic Package Manager 将其删除。事实证明,[删除]创建的包 checkinstall 试图
make install
删除安装过程触及的每个文件,包括共享 gcc 库,如 /lib64/libgcc_s.so。
然后我尝试告诉checkinstall
构建包而不安装它,希望绕过这个问题。我创建了一个虚拟 Makefile:
install:
echo "Bogus" > /bin/qwertyuiop
Run Code Online (Sandbox Code Playgroud)
然后跑了sudo checkinstall --install=no
。即使未安装该包,该文件也/bin/qwertyuiop
已创建。
就我而言,我不信任安装程序 /make install
不会覆盖系统文件checkinstall
,因此排除了这种使用。
package-management packaging install-from-source 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 …
Run Code Online (Sandbox Code Playgroud) 该命令checkinstall
已在本论坛多次推荐,作为make install
. 但是,当您访问官方网站时,“最近新闻”部分显示 2016 年 12 月是最近的日期。
编辑:我阅读了帖子是否有任何 checkinstall 替代方法?,然后我克隆了 .git 存储库checkinstall
。截至 2019 年 4 月,该git log
命令显示在过去 3 年中每年只有大约 1 次提交。
Q1:提交的数量是否足以维护包?
Q2:为什么Github上没有checkinstall?在这样的平台上,您无需将整个 repo 克隆到您的计算机上,就可以看到最后一次提交和最新版本。