如何运行我已安装的 rpm 包?

如何运行我已安装的 rpm 包?

我有一个使用以下方法安装的包

sudo rpm -i getlisteners-debuginfo-1.0.0-113.el7.x86_64

那么我该如何运行我的包呢?

非调试版本可以在终端中使用“getlisteners”运行:

sudo rpm -i getlisteners-1.0.0-113.el7.x86_64
getlisteners

我想运行调试版本,但 getlisteners-debuginfo 不起作用。我如何知道运行刚刚安装的程序的关键字?

答案1

包可以安装在任何地方。尝试运行以下命令来查看文件安装到哪里:

sudo rpm -ql getlisteners-debuginfo

答案2

Debuginfo 包并不是你所想的那样。

你可以在这里读到它https://docs.fedoraproject.org/en-US/packaging-guidelines/Debuginfo/

debuginfo 包包含从 ELF 二进制文件(/usr/lib/debug 中的 *.debug)剥离的符号以及与它们相关的源代码(在 /usr/src/debug 中)。

该软件包getlisteners包含您需要的内容。可执行文件列表可从以下位置获取(我使用这个列表是bash因为我没有getlisteners安装):

$ rpm -ql bash |grep /bin/
/usr/bin/alias
/usr/bin/bash
/usr/bin/bashbug
/usr/bin/bashbug-64
/usr/bin/bg
/usr/bin/cd
/usr/bin/command
/usr/bin/fc
/usr/bin/fg
/usr/bin/getopts
/usr/bin/hash
/usr/bin/jobs
/usr/bin/read
/usr/bin/sh
/usr/bin/type
/usr/bin/ulimit
/usr/bin/umask
/usr/bin/unalias
/usr/bin/wait

如果您的程序崩溃(coredump)并且您想要调试它,您会得到类似这样的信息:

回溯是从 '/usr/bin/epiphany' 生成的

(no debugging symbols found)
Using host libthread_db library "/lib/libthread_db.so.1".
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1241265952 (LWP 12630)]
(no debugging symbols found)
0xb7f25410 in __kernel_vsyscall ()
#0  0xb7f25410 in __kernel_vsyscall ()
#1  0xb741b45b in ?? () from /lib/libpthread.so.0
[...]

这根本没用。对你和程序开发者来说都一样。要获得有用的回溯,你必须安装相应的调试信息。使用完全相同的版本和发行版。然后回溯将如下所示:

thread 1 (LWP 186031):
#0  0x00007f03095769fe in gtk_window_set_title (window=0xdeadbeaf, title=title@entry=0x5653af368bc0 "xsettingsd killed by SIGABRT - org.freedesktop.GnomeAbrt") at ../gtk/gtkwindow.c:2415
        __inst = 0xdeadbeaf
        __t = <optimized out>
        __r = <optimized out>
        _g_boolean_var_21 = <optimized out>
        __func__ = "gtk_window_set_title"
#1  0x00005653adcbe381 in update_window_title () at /usr/src/debug/libreport-2.17.9-1.fc38.x86_64/src/gui-wizard-gtk/wizard.c:333
        prgname = <optimized out>
        reason = <optimized out>
        title = 0x5653af368bc0 "xsettingsd killed by SIGABRT - org.freedesktop.GnomeAbrt"
#2  0x00005653adcc0dc7 in update_gui_state_from_problem_data (flags=0) at /usr/src/debug/libreport-2.17.9-1.fc38.x86_64/src/gui-wizard-gtk/wizard.c:1115
        reason = <optimized out>
        not_reportable = <optimized out>
        t = <optimized out>
        stats = {filesize = 94917423599536, filecount = 2943322400}
        msg = <optimized out>
        reproducible = <optimized out>
        count_str = <optimized out>
        __func__ = <optimized out>

这很有用。通过调用与之前相同的可执行文件,您可以获得此输出。只有在分析转储的核心并为人类生成回溯时才需要调试信息。

有关检索回溯的更多信息:https://wiki.archlinux.org/title/Debugging/Getting_traces

*-debuginfo包含任何可执行文件。从不。它们仅包含调试符号和引用的源代码。没有其他内容。

相关内容