題排查)
打開(kāi)Google Chrome的Linux下載頁(yè)很多人會(huì)愣一下明明只是裝個(gè)瀏覽器頁(yè)面卻同時(shí)給了rpm和deb兩個(gè)安裝包旁邊還附著一堆命令行說(shuō)明。更常見(jiàn)的是下面這種場(chǎng)景系統(tǒng)是CentOS 7下載了最新版rpm包裝完雙擊圖標(biāo)沒(méi)反應(yīng)命令行一執(zhí)行才發(fā)現(xiàn)GLIBC版本不夠或者用Ubuntu的朋友拿著deb包雙擊卻被軟件中心彈窗勸退最后被迫在終端里敲dpkg才裝上。這篇內(nèi)容就是把這些破事一次性理清楚rpm和deb到底有什么區(qū)別、怎么判斷自己的發(fā)行版該下哪個(gè)、安裝命令怎么寫、依賴報(bào)錯(cuò)怎么處理、以及老設(shè)備裝最新版翻車后的收尾方案。適合三類人看第一次在Linux上裝Chrome的新手、負(fù)責(zé)多臺(tái)Linux機(jī)器部署的運(yùn)維、還有折騰舊發(fā)行版想找個(gè)能跑版本的朋友。我在實(shí)際處理Linux環(huán)境時(shí)也翻過(guò)不少次車所以這篇文章里提到的絕大多數(shù)報(bào)錯(cuò)都是自己一條一條跑出來(lái)的。與其在網(wǎng)上零散搜索“deb怎么用命令行安裝”“沒(méi)找到rpm命令”不如把這一整套流程沉淀成一份可直接照抄的操作手冊(cè)遇到問(wèn)題按著步驟找原因基本五分鐘內(nèi)能定位。1. 為什么Chrome要分成rpm和deb兩種安裝包很多人一上來(lái)就問(wèn)“到底該下載哪個(gè)”其實(shí)答案沒(méi)那么玄乎關(guān)鍵在于搞清楚自己系統(tǒng)屬于哪個(gè)包管理流派。Linux發(fā)行版五花八門但底層軟件打包格式基本上就兩大陣營(yíng)紅帽系使用rpmDebian系使用deb。Chrome官網(wǎng)把兩個(gè)包都放在下載頁(yè)就是希望不管用戶用哪個(gè)發(fā)行版都能直接拿走對(duì)應(yīng)的安裝包。不是故意刁難用戶而是Linux生態(tài)本來(lái)就是這個(gè)格局。1.1 兩大包管理陣營(yíng)rpm系和deb系rpm全稱Red Hat Package Manager最初由紅帽公司開(kāi)發(fā)現(xiàn)在被Fedora、CentOS、RHEL、Rocky Linux、openEuler、銀河麒麟服務(wù)器版、開(kāi)放麒麟等一大批發(fā)行版采用。用rpm包的系統(tǒng)包管理器常見(jiàn)的有dnf、yum以及一些國(guó)產(chǎn)發(fā)行版自帶的遷移工具。deb則是Debian體系的創(chuàng)建者維護(hù)的格式Ubuntu、Debian、Kali Linux、Deepin、UOS、Linux Mint這些系統(tǒng)都用它對(duì)應(yīng)的包管理器是dpkg、apt。這兩類包格式不通用就好比Windows下的MSI安裝包和綠色免安裝軟件之間沒(méi)有統(tǒng)一的安裝標(biāo)準(zhǔn)你非要在一個(gè)體系上硬裝另一個(gè)體系的東西成功率很低。更關(guān)鍵的是每個(gè)包內(nèi)部還會(huì)聲明自己依賴哪些第三方庫(kù)、哪些版本區(qū)間包管理器根據(jù)這些信息去解析依賴。rpm和deb的依賴描述格式完全不同混用格式輕則提示“無(wú)法識(shí)別文件類型”重則把系統(tǒng)包數(shù)據(jù)庫(kù)搞亂。作為參考只要打開(kāi)系統(tǒng)里的終端執(zhí)行cat /etc/os-release就能看到發(fā)行版名稱和版本號(hào)。如果是Ubuntu、Debian、Deepin這類多半是deb系如果是CentOS、Fedora、openEuler那就是rpm系。這個(gè)判斷步驟花不了十秒鐘但能幫你省掉后面一整晚的折騰時(shí)間。1.2 用錯(cuò)安裝包格式的典型癥狀在錯(cuò)誤格式的包上強(qiáng)行安裝最常見(jiàn)的報(bào)錯(cuò)有這么幾種。Ubuntu用戶拿到rpm包后執(zhí)行dpkg -i系統(tǒng)會(huì)直接提示“package google-chrome-stable_current_x86_64.rpm is not a debian format archive”反過(guò)來(lái)CentOS用戶拿到deb包執(zhí)行rpm -ivh也會(huì)出現(xiàn)“not an rpm package”或者“invalid package magic”之類的錯(cuò)誤。也有朋友覺(jué)得可以轉(zhuǎn)換格式比如用alien工具把deb轉(zhuǎn)成rpm或者把rpm轉(zhuǎn)成deb。我不建議在不了解依賴關(guān)系的情況下這么做。因?yàn)镃hrome這類大型軟件依賴的底層庫(kù)非常多alien轉(zhuǎn)換時(shí)只是簡(jiǎn)單把文件結(jié)構(gòu)和控制信息做映射不保證依賴名、版本號(hào)能對(duì)上。轉(zhuǎn)換出來(lái)的包常常裝上去之后運(yùn)行時(shí)缺這缺那排查起來(lái)比直接找對(duì)格式安裝包要痛苦得多。我見(jiàn)過(guò)有人為了圖省事轉(zhuǎn)換安裝后系統(tǒng)里冒出幾十個(gè)孤兒依賴最后不得不重裝系統(tǒng)的案例。2. 安裝之前的系統(tǒng)辨識(shí)與準(zhǔn)備工作先花幾分鐘把環(huán)境摸清楚比下載完再折騰強(qiáng)很多。這一節(jié)要解決三件事判斷當(dāng)前系統(tǒng)是rpm系還是deb系、確認(rèn)包管理器和依賴狀態(tài)、以及想清楚自己從哪個(gè)渠道下載安裝包。2.1 一條命令確認(rèn)系統(tǒng)屬于哪一派打開(kāi)終端執(zhí)行cat /etc/os-release輸出內(nèi)容里會(huì)明確標(biāo)注發(fā)行版名稱。比如Ubuntu的NAME字段是“Ubuntu”Debian是“Debian GNU/Linux”CentOS是“CentOS Linux”Fedora是“Fedora Linux”openEuler是“openEuler Linux”。如果系統(tǒng)里同時(shí)有/etc/redhat-release那基本能確定是紅帽系。另外uname -m可以看架構(gòu)絕大多數(shù)PC機(jī)輸出x86_64也就是64位x86架構(gòu)Chrome官方Linux包目前主要提供x86_64架構(gòu)的rpm和deb包。在國(guó)產(chǎn)系統(tǒng)上這個(gè)判斷尤其重要。很多朋友在用銀河麒麟、UOS、Deepin的時(shí)候搞不清自己該下哪個(gè)包。核心原則是看底座如果系統(tǒng)基于Debian比如銀河麒麟桌面版常見(jiàn)版本、UOS家庭版、Deepin就下載deb如果基于openEuler或CentOS比如銀河麒麟服務(wù)器版、開(kāi)放麒麟就下載rpm。裝之前還可以在系統(tǒng)設(shè)置里的“關(guān)于本機(jī)”查看很多國(guó)產(chǎn)發(fā)行版會(huì)直接寫明“基于Debian”或“基于openEuler”。這個(gè)底座信息直接決定了你選哪個(gè)安裝包。2.2 包管理器的狀態(tài)檢查與常見(jiàn)缺失rpm系系統(tǒng)里包管理器通常是dnf或yum但有些精簡(jiǎn)安裝尤其是容器鏡像、最小化服務(wù)器可能連rpm命令都沒(méi)放進(jìn)去這種現(xiàn)象在熱搜里很常見(jiàn)沒(méi)找到rpm命令。遇到這種情況不用慌先看有沒(méi)有dnf或yum。如果連dnf都沒(méi)有說(shuō)明這是一個(gè)非常精簡(jiǎn)的環(huán)境可以先執(zhí)行yum install rpm或dnf install rpm把rpm工具裝上再繼續(xù)后面的操作。如果你連yum都沒(méi)有那需要先檢查系統(tǒng)是否處于可用狀態(tài)用哪個(gè)包管理器就裝哪個(gè)不必先糾結(jié)rpm。deb系系統(tǒng)里apt基本都會(huì)存在dpkg也跟著apt走如果提示command not found多半是環(huán)境變量有問(wèn)題或者系統(tǒng)安裝不完整需要重新檢查系統(tǒng)。極少出現(xiàn)Ubuntu沒(méi)有dpkg的情況。檢查包管理器狀態(tài)之外順手確認(rèn)一下網(wǎng)絡(luò)連通性也很重要。Chrome安裝包通常從官方下載地址獲取如果網(wǎng)絡(luò)環(huán)境受限后面第4節(jié)、第5節(jié)會(huì)專門講離線部署方案。2.3 下載渠道官方源、鏡像站與舊版本歸檔正常情況下直接從Google的Linux安裝包直鏈下載就行rpm包地址dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmdeb包地址dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb這兩個(gè)鏈接始終指向當(dāng)前最新穩(wěn)定版文件名里的“current”很形象。如果你想要beta版、dev版也有對(duì)應(yīng)的google-chrome-beta_current_x86_64.rpm和google-chrome-dev_current_x86_64.rpm命名規(guī)律相同。但如果是在國(guó)內(nèi)服務(wù)器、單位內(nèi)網(wǎng)或者一些網(wǎng)絡(luò)受控環(huán)境里直鏈訪問(wèn)漫度可能很慢甚至直接超時(shí)。這時(shí)候常見(jiàn)的做法是找可信的第三方鏡像站把rpm或deb安裝包下載下來(lái)再本地安裝。鏡像站收錄的版本通常不是最新但勝在穩(wěn)定內(nèi)網(wǎng)維護(hù)機(jī)器時(shí)反而更合適。另外一類特殊需求CentOS 7老機(jī)器跑不了新版Chrome。新版Chrome依賴的glibc和libstdc版本比較高CentOS 7自帶的GLIBC停留在2.17強(qiáng)行運(yùn)行會(huì)報(bào)出類似“version GLIBC_2.18 not found”的錯(cuò)誤。社區(qū)里經(jīng)過(guò)大量實(shí)測(cè)CentOS 7能穩(wěn)定運(yùn)行的Chrome版本大致停留在120左右所以很多人會(huì)專門搜“舊版chrome rpm 120”。這類舊版安裝包官方直鏈早就不提供需要去第三方歸檔站找。下載舊版包之后簽名校驗(yàn)可能做不到需要自己核對(duì)文件大小、校驗(yàn)值并盡量從信譽(yù)好的站獲取。3. rpm系Linux安裝Chrome的完整實(shí)操rpm系安裝本身并不復(fù)雜但不同的包管理器和不同的版本組合會(huì)讓過(guò)程有些差異。這一節(jié)從最常見(jiàn)的Fedora/RHEL系開(kāi)始再單獨(dú)講CentOS 7用戶的舊版本方案最后補(bǔ)充內(nèi)網(wǎng)離線安裝。3.1 下載官方rpm包并執(zhí)行安裝在Fedora、RHEL 8/9、Rocky Linux、AlmaLinux這些發(fā)行版上推薦用dnf安裝本地rpm包。先下載再安裝wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm sudo dnf install ./google-chrome-stable_current_x86_64.rpm這里的./前綴容易被忽略但非常關(guān)鍵。如果你直接寫sudo dnf install google-chrome-stable_current_x86_64.rpmdnf會(huì)認(rèn)為這是個(gè)包名然后去倉(cāng)庫(kù)里搜索搜索不到就會(huì)提示“沒(méi)有匹配的軟件包”讓你誤以為包有問(wèn)題。加上./之后dnf明確知道你要安裝的是當(dāng)前目錄下的一個(gè)文件這是絕大部分新手踩過(guò)的第一個(gè)坑。dnf在安裝本地rpm包時(shí)會(huì)自動(dòng)解析依賴并從已配置的倉(cāng)庫(kù)里補(bǔ)齊缺失的庫(kù)。Chrome在rpm系環(huán)境里的典型依賴包括libXss、libappindicator-gtk3、libnotify、libvulkan等。如果你的發(fā)行版官方倉(cāng)庫(kù)里沒(méi)有l(wèi)ibappindicator-gtk3CentOS 7就會(huì)遇到安裝會(huì)直接卡在依賴檢測(cè)上??梢韵仁謩?dòng)裝依賴再裝chromesudo yum install libappindicator-gtk3 sudo yum localinstall ./google-chrome-stable_current_x86_64.rpmyum localinstall和yum install的區(qū)別在于前者明確要安裝本地文件后者會(huì)先去倉(cāng)庫(kù)匹配包名。在CentOS 7上如果libappindicator-gtk3不存在可以去EPEL倉(cāng)庫(kù)或者可信的rpm歸檔站找到對(duì)應(yīng)版本手動(dòng)下載后先用rpm -ivh安裝依賴再裝Chrome。安裝完成后驗(yàn)證一下google-chrome --version rpm -qa | grep google-chrome which google-chrome第一條輸出Chrome版本號(hào)第二條確認(rèn)rpm數(shù)據(jù)庫(kù)里已有chrome記錄第三條確認(rèn)可執(zhí)行文件路徑已經(jīng)寫進(jìn)系統(tǒng)里。都正常說(shuō)明裝好了。3.2 CentOS 7用戶的老版本方案CentOS 7是個(gè)特殊的存在很多公司生產(chǎn)環(huán)境到現(xiàn)在還是它。CentOS 7的glibc版本停留在2.17而新版Chrome要求更高的glibc和GCC工具鏈支持所以裝完新包之后用戶往往會(huì)在啟動(dòng)時(shí)遇到/opt/google/chrome/chrome: /lib64/libm.so.6: version GLIBC_2.27 not found /opt/google/chrome/chrome: /lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found這類報(bào)錯(cuò)屬于“版本過(guò)低”升級(jí)系統(tǒng)庫(kù)幾乎不可能會(huì)傷筋動(dòng)骨所以主流方案是尋找能兼容glibc 2.17的Chrome舊版本。根據(jù)社區(qū)和實(shí)際測(cè)試Chrome 120系列的內(nèi)核要求還比較寬容是CentOS 7用戶的比較穩(wěn)妥的選擇。去第三方歸檔站找到120左右的rpm包之后下載下來(lái)執(zhí)行sudo yum localinstall ./google-chrome-stable-120.0.6099.224-1.x86_64.rpm如果缺少依賴排查方法很直接用ldd檢查主程序到底缺哪些庫(kù)ldd /opt/google/chrome/chrome | grep not found輸出里會(huì)列出所有缺失的共享庫(kù)名然后逐個(gè)用yum解決。比如缺libnss3.so.3就檢查系統(tǒng)nss版本是否太舊必要時(shí)通過(guò)更新nss軟件包解決。這個(gè)ldd排查方法對(duì)rpm版和deb版通用老系統(tǒng)上非常實(shí)用。CentOS 7裝好舊版Chrome后建議關(guān)閉自動(dòng)更新策略不然下一次yum update一不小心把chrome升到新版本直接又啟動(dòng)黑屏。后面第5節(jié)會(huì)講到具體做法。3.3 離線內(nèi)網(wǎng)環(huán)境打包安裝很多單位的內(nèi)網(wǎng)服務(wù)器不允許訪問(wèn)外網(wǎng)但機(jī)器上又想用Chrome渲染網(wǎng)頁(yè)、跑自動(dòng)化。這時(shí)需要在有網(wǎng)的臨時(shí)機(jī)器上先把rpm包和全部依賴下載到一個(gè)目錄再拷貝進(jìn)去離線安裝。Fedora/RHEL系可以用dnf的download插件sudo dnf install dnf-plugins-core mkdir /tmp/chrome-offline cd /tmp/chrome-offline sudo dnf download --resolve --alldeps google-chrome-stable執(zhí)行完后當(dāng)前目錄會(huì)出現(xiàn)google-chrome-stable的rpm包以及它依賴的各個(gè)rpm包。把這些文件全部拷到離線機(jī)器上執(zhí)行sudo rpm -ivh *.rpm如果離線機(jī)器上已經(jīng)有部分依賴存在rpm -ivh *.rpm也能正常運(yùn)行遇到已安裝的包會(huì)提示“already installed”不影響后續(xù)。用rpm批量安裝比手動(dòng)逐個(gè)敲要省事得多但要注意所有依賴包必須一起拷全否則仍然會(huì)報(bào)缺依賴。CentOS 7的離線方案略微不同yum自帶yumdownloader工具sudo yum install yum-utils yumdownloader --resolve google-chrome-stable然后同樣把當(dāng)前目錄下的rpm帶到內(nèi)網(wǎng)執(zhí)行rpm -ivh。我在實(shí)際維護(hù)中還會(huì)順便記錄一次rpm -qa的輸出存成一份依賴清單文件下次遇到相同環(huán)境可以直接對(duì)照少走彎路。4. deb系Linux安裝Chrome的完整實(shí)操deb系的安裝方式整體上比rpm系溫和一些因?yàn)閁buntu、Debian系的apt依賴解析非常成熟絕大多數(shù)情況下一條命令就能裝好但也有一些隱藏坑值得單獨(dú)拿出來(lái)說(shuō)。4.1 官方deb包的安裝命令最推薦的安裝方式是用apt直接安裝本地deb文件wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.debapt install ./xxx.deb這個(gè)寫法和dnf install ./xxx.rpm是同一個(gè)邏輯先明確告訴apt這是一個(gè)本地文件而不是從軟件源搜索包名。你會(huì)發(fā)現(xiàn)有些人裝deb時(shí)會(huì)用dpkg -isudo dpkg -i google-chrome-stable_current_amd64.deb這條命令本身沒(méi)錯(cuò)但dpkg不會(huì)自動(dòng)處理依賴。一旦系統(tǒng)里缺了libnss3、libxss1、libasound2這些庫(kù)dpkg -i會(huì)直接報(bào)“dependency problems”讓人一頭霧水。這種情況的修復(fù)方式sudo apt -f install它會(huì)自動(dòng)把剛才dpkg裝到一半的包所缺失的依賴補(bǔ)上。所以穩(wěn)妥的順序是先用apt install ./xxx.deb如果環(huán)境里apt不可用了再退回到dpkg -i加apt -f install的方式。實(shí)際體驗(yàn)中Ubuntu 20.04/22.04/24.04上都能靠apt install ./xxx.deb一把過(guò)連手動(dòng)配源都不用。安裝完同樣驗(yàn)證一下google-chrome --version dpkg -l | grep google-chrome能輸出版本號(hào)就說(shuō)明安裝成功。由于這個(gè)deb安裝過(guò)程會(huì)自動(dòng)把Google的軟件源寫入/etc/apt/sources.list.d/google-chrome.list之后的sudo apt update會(huì)時(shí)不時(shí)提示Chrome有更新這是正常的不是中病毒。4.2 Ubuntu軟件中心之外的另一種裝法雙擊deb包系統(tǒng)自帶的軟件中心或者GNOME Software經(jīng)常會(huì)給出一道彈窗提示“無(wú)法安裝因?yàn)檐浖|(zhì)量不過(guò)關(guān)”或者“需要未安裝的依賴”。這不是你的包壞了而是圖形化安裝器對(duì)本地deb包的支持有限很多裝了依賴策略約束的桌面環(huán)境會(huì)直接拒絕安裝。一個(gè)更平滑的方案是使用gdebisudo apt install gdebi-core sudo gdebi google-chrome-stable_current_amd64.debgdebi專門處理本地deb包的依賴解析輸入后它會(huì)顯示包信息、依賴列表以及是否滿足要求然后一次性裝完。如果你在文字終端或者SSH環(huán)境里直接回到4.1節(jié)的apt命令反而更簡(jiǎn)單。另外如果你在Ubuntu上跑了Chromium然后想換成Chrome兩者在功能上很接近但Chrome是閉源的。直接裝Chrome不會(huì)和Chromium沖突它們可以共存只是桌面圖標(biāo)和啟動(dòng)器里會(huì)有兩個(gè)瀏覽器入口別搞混就行。4.3 Kali、Deepin、UOS等衍生系統(tǒng)的注意事項(xiàng)Kali Linux本質(zhì)上是Debian的下游發(fā)行版官方倉(cāng)庫(kù)幾乎完全兼容Debian的apt體系所以Chrome deb包直接裝即可。Kali默認(rèn)的桌面環(huán)境是Xfce裝完Chrome后圖標(biāo)會(huì)自動(dòng)出現(xiàn)在應(yīng)用菜單里不需要額外配置。唯一要注意的是Kali的很多鏡像默認(rèn)創(chuàng)建的是普通用戶如果習(xí)慣用root登錄瀏覽器會(huì)彈沙箱警告這個(gè)放到第5節(jié)解決。Deepin和UOS同樣基于Debian但系統(tǒng)庫(kù)可能停留在某個(gè)較老的Debian版本。如果你的Deepin版本偏舊安裝最新版Chrome deb包時(shí)可能會(huì)碰到libnss3版本過(guò)低、libasound2t64找不到這類問(wèn)題。換句話說(shuō)系統(tǒng)底座越老越得留意版本匹配。遇到依賴沖突時(shí)可以用apt install ./xxx.deb看看apt有沒(méi)有自動(dòng)降級(jí)方案如果提示依賴關(guān)系不可滿足最好換成舊版Chrome或者先升級(jí)系統(tǒng)源別強(qiáng)行dpkg硬上容易把系統(tǒng)搞亂。銀河麒麟桌面版、UOS桌面版這類國(guó)產(chǎn)系統(tǒng)里deb安裝包一般都能直接用apt或dpkg安裝。但要注意部分二進(jìn)制版本基于老glibc編譯如果你下載的是為Ubuntu 22.04以上準(zhǔn)備的包在老底座上可能也會(huì)出現(xiàn)GLIBC版本不兼容。這時(shí)候和CentOS 7的處理思路一樣去找適合該系統(tǒng)的舊版deb即可。5. 裝完之后馬上要處理的四個(gè)細(xì)節(jié)Chrome裝完不等于萬(wàn)事大吉尤其是服務(wù)器、虛擬機(jī)和老機(jī)器上還有幾個(gè)細(xì)節(jié)不處理容易鬧幺蛾子。5.1 root用戶啟動(dòng)的沙箱報(bào)錯(cuò)很多服務(wù)器上默認(rèn)用root操作裝好Chrome后執(zhí)行g(shù)oogle-chrome會(huì)看到一句扎眼的提示Running as root without --no-sandbox is not supported. See https://crbug.com/638180.Chrome的沙箱機(jī)制要求普通用戶權(quán)限運(yùn)行root下直接拒絕啟動(dòng)。臨時(shí)解決方法是帶上參數(shù)啟動(dòng)google-chrome --no-sandbox如果想讓它持久生效可以修改/usr/share/applications/google-chrome.desktop里的Exec行把--no-sandbox加進(jìn)去。但這里必須說(shuō)明關(guān)閉沙箱會(huì)降低瀏覽器隔離能力如果機(jī)器暴露在公網(wǎng)上風(fēng)險(xiǎn)不小。建議只在內(nèi)網(wǎng)測(cè)試機(jī)、數(shù)據(jù)抓取場(chǎng)景下用生產(chǎn)環(huán)境盡量用普通用戶執(zhí)行。5.2 中文字體渲染問(wèn)題在精簡(jiǎn)版Linux或最小化安裝的服務(wù)器上Chrome打開(kāi)中文頁(yè)面常常是滿屏方塊或者火星文亂碼。原因很簡(jiǎn)單系統(tǒng)里沒(méi)有中文字體。Debian系一行命令裝齊常用中文字體sudo apt install fonts-noto-cjk fonts-wqy-zenhei fonts-wqy-microheirpm系sudo yum install wqy-zenhei-fonts wqy-microhei-fonts裝完執(zhí)行fc-cache -f -v刷新字體緩存再重啟Chrome中文就正常了。這個(gè)問(wèn)題在虛擬機(jī)上尤其常見(jiàn)我遇到過(guò)好幾次用戶反饋“Chrome裝好了但全是豆腐塊”基本都是字體缺失。5.3 屏蔽自動(dòng)更新保持版本可控Chrome Linux包的安裝過(guò)程會(huì)自動(dòng)注冊(cè)軟件源之后系統(tǒng)每次update都會(huì)檢查Chrome新版本。大多數(shù)桌面用戶喜歡這個(gè)特性但服務(wù)器環(huán)境里無(wú)預(yù)警的大版本更新可能造成自動(dòng)化腳本崩潰必須把版本穩(wěn)住。deb系屏蔽更新sudo apt-mark hold google-chrome-stablerpm系用dnf的排除策略編輯/etc/dnf/dnf.conf在[main]下加一行excludegoogle-chrome*保存后sudo dnf check-update就不會(huì)再提示Chrome升級(jí)。如果是yum也可以用yum versionlocksudo yum install yum-plugin-versionlock sudo yum versionlock add google-chrome-stable當(dāng)我維護(hù)多臺(tái)機(jī)器時(shí)還會(huì)額外寫一個(gè)readme文件記錄當(dāng)前Chrome版本號(hào)和屏蔽原因免得半年后同事接手時(shí)一頭霧水。5.4 把Chrome設(shè)為默認(rèn)瀏覽器最后一步是把Chrome設(shè)置成系統(tǒng)默認(rèn)瀏覽器。在GNOME桌面的“設(shè)置-默認(rèn)應(yīng)用程序”里選一下就行但命令行方式更通用xdg-settings set default-web-browser google-chrome.desktop執(zhí)行后可以用xdg-settings get default-web-browser驗(yàn)證輸出是否變成了google-chrome.desktop。在Deepin、UOS這類桌面上也可以在控制中心手動(dòng)指定默認(rèn)瀏覽器效果一樣。這個(gè)步驟雖然沒(méi)有技術(shù)含量但能讓系統(tǒng)里其他軟件打開(kāi)鏈接時(shí)自動(dòng)跳轉(zhuǎn)到Chrome比手動(dòng)復(fù)制鏈接再粘貼體驗(yàn)好得多。6. 安裝失敗與運(yùn)行異常排查速查最后把這些年遇到的安裝失敗與異常運(yùn)行場(chǎng)景整理成一張速查表建議直接保存。按表對(duì)號(hào)入座大部分問(wèn)題都能快速定位。癥狀常見(jiàn)原因解決方案提示沒(méi)找到rpm命令精簡(jiǎn)系統(tǒng)未安裝rpm工具有dnf/yum時(shí)先執(zhí)行dnf install rpm或yum install rpm再繼續(xù)rpm包安裝提示“does not appear to be an RPM package”拿錯(cuò)文件格式下載到deb包檢查文件后綴重新下載rpm包deb包安裝提示“not a debian format archive”拿錯(cuò)文件格式下載到rpm包重新下載amd64.deb包dnf/yum安裝本地包提示“沒(méi)有匹配的軟件包”命令行里漏了./前綴寫成sudo dnf install ./google-chrome-stable_current_x86_64.rpmCentOS 7啟動(dòng)Chrome報(bào)GLIBC_2.18/GLIBCXX_3.4.21 not found新版Chrome需要高版本glibc老系統(tǒng)無(wú)法滿足換用120左右的舊版rpm不要嘗試升級(jí)系統(tǒng)glibc啟動(dòng)提示Running as root without --no-sandboxChrome沙箱拒絕root運(yùn)行臨時(shí)加--no-sandbox或改用普通用戶執(zhí)行打開(kāi)中文網(wǎng)頁(yè)全是方塊系統(tǒng)缺少中文字體安裝fonts-noto-cjk/wqy字體刷新字體緩存安裝時(shí)報(bào)dependency problemsdpkg -i不會(huì)自動(dòng)解析依賴sudo apt -f install補(bǔ)齊依賴虛擬機(jī)里Chrome界面黑屏或閃爍顯卡驅(qū)動(dòng)或GPU加速問(wèn)題google-chrome --disable-gpu啟動(dòng)或在虛擬機(jī)設(shè)置里開(kāi)啟3D加速桌面沒(méi)有Chrome圖標(biāo)desktop文件數(shù)據(jù)庫(kù)未刷新執(zhí)行update-desktop-database后注銷重新登錄升級(jí)系統(tǒng)后Chrome打不開(kāi)自動(dòng)更新到了不兼容版本卸掉重裝舊版本并參考5.3節(jié)屏蔽更新deb裝完提示無(wú)法定位軟件包軟件源未更新或倉(cāng)庫(kù)無(wú)此包執(zhí)行sudo apt update后重裝排查時(shí)還有一個(gè)通用三板斧適用于其他疑難雜癥。第一步用命令行啟動(dòng)chrome直接看終端輸出很多致命錯(cuò)誤會(huì)直接打在stdout或stderr里比猜有用得多google-chrome --enable-loggingstderr --v1第二步翻Chrome自己的日志文件通常在~/.config/google-chrome/chrome_debug.log里面有崩潰信息、GPU初始化記錄、插件報(bào)錯(cuò)等。第三步確認(rèn)包本身沒(méi)問(wèn)題rpm包用rpm -K驗(yàn)證簽名deb包用dpkg -c查看包內(nèi)文件列表是否完整。這三板斧走完90%的問(wèn)題來(lái)源都能定位。另外補(bǔ)充一句Chrome的配置目錄在Linux下是~/.config/google-chrome想要徹底重置瀏覽器可以把這個(gè)目錄改名或備份后刪除但要提醒一句書簽、密碼、擴(kuò)展全在里面刪之前記得導(dǎo)出。別看這個(gè)細(xì)節(jié)簡(jiǎn)單處理“裝好后一打開(kāi)就崩潰”的問(wèn)題時(shí)清空配置目錄往往比重裝還管用。我個(gè)人現(xiàn)在維護(hù)Linux機(jī)器時(shí)會(huì)在下載目錄里專門建一個(gè)chrome-pkg文件夾把rpm或deb包連同依賴一起歸檔命名格式是“chrome-版本號(hào)-系統(tǒng)名稱-日期”時(shí)間久了你就知道這個(gè)習(xí)慣有多香。遇到同事或者朋友機(jī)器上裝不上Chrome先看系統(tǒng)底座、再查glibc、最后ldd定位缺失庫(kù)這套流程走下來(lái)基本沒(méi)有解決不了的情況。如果你也經(jīng)常幫人處理Linux環(huán)境建議把這套檢查步驟存成一個(gè)小腳本每次自動(dòng)跑一遍系統(tǒng)版本、架構(gòu)、包管理器狀態(tài)能少打半天字。