安装独立于包管理器的包
Installing a package independent of package manager
我正在尝试为在 Linux 系统上运行的程序创建安装脚本。我为安装脚本选择 Bash,我想知道是否有任何有效的方法来安装独立于系统包管理器的包。我知道 Debian 使用 aptitude,Redhat 使用 yellow dog updater 等。鉴于包管理器的多样性,似乎需要很多 if 语句,其中检查分发并将其与默认包管理器匹配。
除了检查发行版之外,我唯一能想到的就是让脚本手动下载包源并构建它们。我不确定这个项目有多受欢迎,但我很想知道。
你的问题似乎很反常。只需让你的脚本在 /usr/local/bin
中安装东西,并为那些想要为其发行版创建包装器的人提供一个选项,以便轻松覆盖目标(通常使用 /usr/bin
代替,理想情况下只需设置 DESTDIR). Linux Standard Base 应该会告诉您在哪里可以类似地安装辅助文件、库等。
顺便说一句,Debian 上的核心包管理器是 dpkg
,而在 Red Hat 上是 rpm
。
您不是第一个遇到此问题的人。基本上,有两种不同的解决方案。
使用包管理器
示例:
Docker 检测到您的 OS 并将其自己的存储库添加到本地包管理器。这可能是您的一个选项,具体取决于您的项目大小。
标准编译安装方式
您可能听说过以下 3 行:
./configure
make
make install
Make 不是唯一的选择,还有其他构建系统,其功能基本相同。
仍然有很多开源项目,在本地编译然后 moving/copying 文件到正确的位置是首选的安装方法(有时只有开发版本)
示例:
我正在尝试为在 Linux 系统上运行的程序创建安装脚本。我为安装脚本选择 Bash,我想知道是否有任何有效的方法来安装独立于系统包管理器的包。我知道 Debian 使用 aptitude,Redhat 使用 yellow dog updater 等。鉴于包管理器的多样性,似乎需要很多 if 语句,其中检查分发并将其与默认包管理器匹配。
除了检查发行版之外,我唯一能想到的就是让脚本手动下载包源并构建它们。我不确定这个项目有多受欢迎,但我很想知道。
你的问题似乎很反常。只需让你的脚本在 /usr/local/bin
中安装东西,并为那些想要为其发行版创建包装器的人提供一个选项,以便轻松覆盖目标(通常使用 /usr/bin
代替,理想情况下只需设置 DESTDIR). Linux Standard Base 应该会告诉您在哪里可以类似地安装辅助文件、库等。
顺便说一句,Debian 上的核心包管理器是 dpkg
,而在 Red Hat 上是 rpm
。
您不是第一个遇到此问题的人。基本上,有两种不同的解决方案。
使用包管理器
示例:
Docker 检测到您的 OS 并将其自己的存储库添加到本地包管理器。这可能是您的一个选项,具体取决于您的项目大小。
标准编译安装方式
您可能听说过以下 3 行:
./configure
make
make install
Make 不是唯一的选择,还有其他构建系统,其功能基本相同。
仍然有很多开源项目,在本地编译然后 moving/copying 文件到正确的位置是首选的安装方法(有时只有开发版本)
示例: