首頁  >  文章  >  運維  >  像專業人士一樣在 Linux 上使用 ldd 命令管理軟體包依賴關係

像專業人士一樣在 Linux 上使用 ldd 命令管理軟體包依賴關係

王林
王林轉載
2023-06-09 15:42:521697瀏覽

管理依賴關係是維護 Linux 系統的一個重要組成部分。軟體是複雜的,依賴許多共享庫和文件。有時候,追蹤應用程式所需的文件變得困難。

這就是 Linux 中 ldd 指令發揮作用的地方。 Ldd是一款功能齊全的命令列工具,可用於追蹤應用程式對共享物件的依賴關係。

讓我們學習如何利用 ldd 指令,在 Linux 上成為一個管理依賴關係的專家!

像专业人士一样在 Linux 上使用 ldd 命令管理软件包依赖关系

什麼是軟體包依賴關係?

軟體不僅包含獨立的原始程式碼,還匯集了本地原始碼和外部程式庫中使用的程式碼。如果您的系統缺少這些程式庫和其他共享對象,則依賴它們的應用程式可能會出現故障,甚至可能拒絕啟動。

在Linux系統中,所有的共用檔案、軟體套件、函式庫等被統稱為依賴項。雖然這個簡短的定義給您一個大致的概念,但實際情況比這更複雜,這就是為什麼深入了解軟體包依賴關係的重要性。

ldd指令是什麼,它如何運作?

LDD 是 List Dynamic Dependencies 的縮寫。顧名思義,ldd 列出了應用程式所需的所有共用物件。

它透過設定特殊的環境變數來呼叫動態連結器。當您使用二進位檔案的位置執行 ldd 時,它會傳回一個輸出,其中包含依賴關係的清單、它們的位置以及表示它們載入到記憶體的十六進位值。

使用ldd 指令來尋找共享物件的依賴關係

現在您對ldd 的基本概念有了清晰的了解,讓我們動手實踐並學習如何使用它來尋找軟體的依賴關係。

在學習如何使用ldd 之前,請先確認您的系統是否已安裝了ldd,可以透過列印已安裝的ldd版本來確認:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]└─$ ldd --version

像专业人士一样在 Linux 上使用 ldd 命令管理软件包依赖关系

如果回傳「command not found」錯誤,則需要先安裝ldd。

在基於Ubuntu 和Debian 的系統上執行以下命令進行安裝:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]└─$ sudo apt install libc-bin

對於基於Arch 的發行版:

sudo pacman -S glibc

對於RHEL 和Fedora:

sudo dnf install glibc-common

安裝了ldd 後,現在您可以專注於學習如何使用它。以下是ldd 命令的基本語法:

ldd 二进制文件路径

像专业人士一样在 Linux 上使用 ldd 命令管理软件包依赖关系

如果您不知道二進位檔案的位置,您可以利用Linux 命令列操作符之一,將which 命令的輸出與ldd 命令結合起來,以查找軟體包的依賴關係:

ldd -flag $(which binary_name)

ldd命令提供了四個不同的選項來修改輸出。它們是:

  • -v:列印詳細輸出,包括每個依賴項的版本資訊
  • -u:列印所有未使用的依賴項,即已載入但未實現的依賴項
  • -d:列印缺少的物件並執行重定位
  • -r:列印缺少的物件和函數,並執行重定位

像专业人士一样在 Linux 上使用 ldd 命令管理软件包依赖关系

要確定給定的可執行守護程式是否支援TCP Wrapper,那就請執行以下命令:

┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]└─$ sudo ldd /usr/sbin/sshd | grep libwrap

像专业人士一样在 Linux 上使用 ldd 命令管理软件包依赖关系

在Linux 系統中管理軟體包依賴關係

有了ldd 作為您的軟體工具,您將能夠解決與應用程式相關的共享物件依賴問題。

除此之外,透過ldd輸出庫的載入位置,您能夠進行應用程式偵錯並更深入地了解特定程式庫的實作方式。 ldd也列印出應用程式中使用的共用程式庫的版本。

利用這個功能,您可以檢查應用程式是否存在與過時版本的共用程式庫相關的潛在漏洞。

管理依賴關係是一項至關重要的核心技能,對於您的 Linux 系統的順暢運作非常重要。即使所有依賴項都正常,軟體包有時仍可能出現問題。因此,了解如何找到和修復損壞的軟體包非常重要。

以上是像專業人士一樣在 Linux 上使用 ldd 命令管理軟體包依賴關係的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除