OS: CentOS Linux 7 (Core) x86_64
Host: VirtualBox 1.2
Kernel: 3.10.0-1127.8.2.el7.x86_64
Packages: 638 (rpm)
Shell: bash 4.2.46
Terminal: /dev/pts/0
CPU: Intel i5-4200U (1) @ 2.294GHz
Memory: 217MiB / 1813MiB
我想安装一个需要的软件(星号)
configure: *** Asterisk requires libjansson >= 2.11 and no system copy was found.
configure: *** Please install the 'libjansson' development package
当我检查我的系统时,我发现我有一个旧版本
#rpm -qa | grep jansson
jansson-2.10-1.el7.x86_64
jansson-devel-2.10-1.el7.x86_64
我花了我们的房客试图让 Jansson 升级,但我不能,我尝试过。
从源代码编译
我按照这个步骤操作关联。即使它告诉我安装成功。我不知道如何检查它是否存在? (当我使用
#rpm -qa | grep jansson
它时并没有向我展示新的东西)此外,我想要开发包,我不知道上面的教程是否包含?如果不包含它,如何获取它?
1.我尝试从我在此看到的 epel 存储库安装它关联那个 epel 剂量有
-
sudo rpm -i jansson-devel-2.11-2.2.x86_64.rpm warning: jansson-devel-2.11-2.2.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID e55f048d: NOKEY error: Failed dependencies: jansson(x86-64) = 2.11-2.2 is needed by jansson-devel-2.11-2.2.x86_64
我不明白为什么我想安装与 pkg 相同的依赖项?
总结我的问题,
- 如何在centos7中安装jansson 2.11-devel或更高版本?
- 当你从源代码编译lib时,如何检查它是否编译成功?
- 我不明白为什么依赖项与我要安装的 pkg 同名
答案1
你尝试过的两种方法应该都是可行的。如果您使用包管理器 ( yum
) 或直接rpm
对包依赖性进行额外检查,这在系统上的其他内容依赖于您尝试更新的包的情况下非常有用。
从源安装
如果编译完成,命令的退出状态应该为 0,您可以通过执行以下操作来检查:
make
echo $?
它打印最后一个命令运行的退出状态(make
在本例中为 )。如果为0,则编译成功。如果选择使用该make
方法,make install
应同时安装库和开发头文件。
如果您从源代码编译和安装,则使用rpm
检查软件包是否已安装不会有帮助(除非您手动构建 RPM 并随后安装它),因为 RPM DB 仍然只知道通过rpm
(或者yum
)。
编辑1
源安装方法会将东西安装到/usr/local
,因此您必须告诉asterisk
配置脚本它应该寻找的位置jansson
。
要更改目标目录(
/usr/local
默认情况下),请使用--prefix=DIR
的参数./configure
。请参阅./configure --help
参考资料 获取所有可能的配置选项的列表。
安装本地RPM文件
请注意,包名称不是确切地相同。您尝试仅安装该devel
软件包,但它告诉您它取决于主软件包。手动安装 RPM (jansson-2.11-2.2.x86_64.rpm
和jansson-devel-2.11-2.2.x86_64.rpm
),应该解决您报告的错误,但是,以jansson-2.11-2.2.x86_64.rpm
这种方式安装也可能会导致依赖关系未满足/损坏。好处是,以这种方式安装还可以让您知道系统上的其他软件包是否有依赖关系,jansson-2.10
如果您要替换已安装的版本,该依赖关系将会被破坏。您甚至可以使用它yum
来安装 RPM,并让它为您查找依赖项(如果可以解决)
yum install jansson-2.11-2.2.x86_64.rpm jansson-devel-2.11-2.2.x86_64.rpm
编辑2
这假定您已成功找到这两个 RPM 文件并将它们保存在本地。如果您没有这些文件,并且没有配置提供它们的存储库,那么您将必须遵循从源安装的路径。
答案2
针对建筑的特定需要(例如编译) CentOS 7 中的 Asterisk 16,我们有以下不匹配情况:
- Asterisk 16 需要 libjansson 版本 >= 2.11。
- CentOS 7 存储库提供libjansson-devel 版本 2.10。
解决这个问题的一个直接方法是使用捆绑的Asterisk 源附带的 libjansson 库,带有如下命令:
./configure --with-jansson-bundled
这样,就不需要为 libjansson 安装 RPM 包了。
我强调但尚未核实以下内容:
- 这同样适用于较新的 Asterisk 版本,例如 18 或 20。
- 这同样适用于旧的 Ubuntu 版本,例如 16.04。
Jansson 库的捆绑版本似乎是在不同 Asterisk 版本的发布中定期更新。