Linux 缺失文件找到相關(guān)的軟件包(rpm, deb)

[TOC]

背景

在編譯安裝軟件時(shí)候, 經(jīng)常會(huì)遇到某個(gè) .h 文件找不到的報(bào)錯(cuò), 例如:

致命錯(cuò)誤:mysql.h:沒(méi)有那個(gè)文件或目錄

這種原因, 一般是 系統(tǒng)的$LD_LIBRARY_PATH目錄下找不到對(duì)應(yīng)的文件, 這里就是找不到 mysql.h, 這時(shí)候一般可以通過(guò)安裝軟件包(rpm或deb)解決. 但是我們?nèi)绾沃滥膫€(gè)軟件包, 包含這個(gè)文件呢? 這里有一些命令可以幫的上忙.

處理方案

RedHat/CentOS

可以通過(guò)yum provides命令查找

yum provides "*/文件名"

注意: 根據(jù)yum provides 文檔, 我們必須使用在文件前面使用通配符*/代表文件前面的路徑.

例如:

yum provides "*/mysql.h"

結(jié)果:

1:mariadb-devel-5.5.68-1.el7.i686 : Files for development of MariaDB/MySQL applications
Repo        : base
Matched from:
Filename    : /usr/include/mysql/mysql.h

1:mariadb-devel-5.5.68-1.el7.x86_64 : Files for development of MariaDB/MySQL applications
Repo        : base
Matched from:
Filename    : /usr/include/mysql/mysql.h

Ubuntu/Debian

# 更新本地庫(kù)
apt-file update
# 搜索文件所屬 dep 文件
apt-file search "文件名"

PS: 如果遇到 Command 'apt-file' not found, 先安裝apt-file

apt install -y apt-file

例如:

apt-file update
apt-file search "mysql.h"

得到:

pike7.8-reference: /usr/share/doc/pike7.8-doc/html/reference/ex/predef_3A_3A/Sql/mysql.html
pike8.0-doc: /usr/share/doc/pike8.0-doc/html/reference/ex/predef_3A_3A/Mysql/mysql.html
pike8.0-doc: /usr/share/doc/pike8.0-doc/html/reference/ex/predef_3A_3A/Sql/mysql.html
python-azure-doc: /usr/share/doc/python-azure/html/ref/azure.mgmt.rdbms.mysql.html
python-sqlalchemy-doc: /usr/share/doc/python-sqlalchemy-doc/html/dialects/mysql.html
libgearman-doc: /usr/share/doc/libgearman-doc/html/gearmand/queues/mysql.html
libmariadb-dev: /usr/include/mariadb/mysql.h
libmariadbclient-dev: /usr/include/mysql/mysql.h
libmariadbclient-dev: /usr/include/mysql/private/probes_mysql.h
libmysqlclient-dev: /usr/include/mysql/mysql.h
libodb-mysql-dev: /usr/include/odb/mysql/mysql.hxx

有時(shí)候覺(jué)得結(jié)果有些文件名根本不對(duì), 可以增加grep命令篩選結(jié)果:

apt-file search "mysql.h" | grep -E '/mysql.h$'

得到:

libmariadb-dev: /usr/include/mariadb/mysql.h
libmariadbclient-dev: /usr/include/mysql/mysql.h
libmariadbclient-dev: /usr/include/mysql/private/probes_mysql.h
libmysqlclient-dev: /usr/include/mysql/mysql.h
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容