
在Linux上裝Chrome對(duì)老鳥來說不算事但對(duì)剛從Windows切過來的新手第一關(guān)就??ㄔ诎惭b包上官網(wǎng)頁面給你兩個(gè)選項(xiàng)一個(gè)后綴是rpm一個(gè)后綴是deb到底該下哪個(gè)下回來之后怎么裝雙擊會(huì)沒反應(yīng)命令行又報(bào)一堆依賴錯(cuò)誤這篇文章就把這兩條路線徹底講透從系統(tǒng)識(shí)別、源配置、命令行安裝到常見報(bào)錯(cuò)排查一次說完所有命令我都在Fedora、CentOS、Ubuntu和國產(chǎn)發(fā)行版上實(shí)測過你可以直接照著操作。這篇文章適合所有在Linux平臺(tái)折騰Chrome的人不管是剛轉(zhuǎn)過來還不會(huì)用包管理器的初學(xué)者還是要在多臺(tái)機(jī)器上批量部署的運(yùn)維都能在你對(duì)應(yīng)的發(fā)行版里找到現(xiàn)成的安裝方案。1. 選對(duì)包格式先判斷你的Linux系統(tǒng)該用rpm還是deb1.1 三步判斷發(fā)行版家族Linux發(fā)行版看似五花八門但包管理機(jī)制基本就兩大陣營Red Hat家族用rpm包Debian家族用deb包。判斷錯(cuò)了后面全是白忙活。最簡單的辦法先執(zhí)行下面這條命令cat /etc/os-release輸出里會(huì)直接寫明發(fā)行版名稱。如果你看到Red Hat Enterprise Linux、CentOS、Fedora、openEuler、Rocky Linux這類字樣用rpm包看到Ubuntu、Debian、Deepin、UOS、Linux Mint、Kali這類字樣用deb包。國產(chǎn)的銀河麒麟分成了兩個(gè)分支統(tǒng)信UOS和老版本的麒麟多數(shù)是deb體系而采用歐拉技術(shù)路線的版本則偏向rpm體系拿不準(zhǔn)的時(shí)候就看源碼里帶的包格式說明或者看軟件商店支持哪種格式。第二部分是看架構(gòu)。Chrome官方Linux版目前只提供64位x86架構(gòu)的安裝包你得到的是amd64或者x86_64標(biāo)記查看自己機(jī)器架構(gòu)執(zhí)行uname -m看到x86_64可以直接裝看到aarch64屬于ARM架構(gòu)官方?jīng)]有對(duì)應(yīng)的Linux版Chrome安裝包只能考慮系統(tǒng)源里其他方案這一點(diǎn)后面會(huì)細(xì)說。1.2 rpm與deb不只是后綴不同rpm和deb的本質(zhì)差別很容易被忽略它倆不只是壓縮格式不同連安裝腳本機(jī)制、依賴管理方式都是兩套。簡單類比一下rpm和deb都相當(dāng)于Windows里的MSI安裝包但deb的依賴描述更規(guī)范dpkg會(huì)把每個(gè)包自身的依賴關(guān)系記錄得清清楚楚rpm也有依賴信息但傳統(tǒng)用法里rpm命令本身不會(huì)去軟件倉庫里幫你自動(dòng)拉取依賴這就造成了很多新手執(zhí)行rpm -ivh之后看到一大堆缺庫報(bào)錯(cuò)的經(jīng)典場面。所以你最好從觀念上建立這個(gè)認(rèn)知拿到rpm包的第一反應(yīng)不應(yīng)該是rpm -ivh而是先想清楚當(dāng)前環(huán)境有沒有可以自動(dòng)解決依賴的手段。CentOS 7有yum localinstallRHEL 8及以上的新系統(tǒng)有dnf install加本地包路徑這些都會(huì)自動(dòng)去已配置的軟件源里把缺失的依賴?yán)貋?。deb那邊也一樣dpkg -i裝deb包雖然也能裝但遇到依賴報(bào)錯(cuò)時(shí)用apt install ./xxx.deb這種形式才是聰明人的做法。1.3 架構(gòu)與源為什么建議優(yōu)先用官方倉庫這里我還想強(qiáng)調(diào)一個(gè)原則能用官方倉庫就不要手動(dòng)下rpm或者deb。官方倉庫的好處是你安裝的是穩(wěn)定渠道版本更新跟隨系統(tǒng)包管理器走安全性也有GPG簽名校驗(yàn)加持。Chrome官網(wǎng)本身提供了兩個(gè)倉庫地址一個(gè)給rpm系一個(gè)給deb系配置好之后以后每次apt upgrade或dnf updateChrome也會(huì)跟著更新省去手動(dòng)下載的麻煩。但這不等于說離線安裝包就沒用。在內(nèi)網(wǎng)環(huán)境、無外網(wǎng)權(quán)限的機(jī)器上離線rpm/deb是唯一的活路。后面兩章我會(huì)把“有網(wǎng)”和“沒網(wǎng)”兩種情況都講清楚。2. rpm平臺(tái)實(shí)戰(zhàn)從官方倉庫到命令行安裝2.1 用倉庫方式裝rpmFedora、RHEL 8的推薦姿勢如果機(jī)器能訪問外網(wǎng)優(yōu)先用官方倉庫。先把倉庫文件寫到 /etc/yum.repos.d/google-chrome.reposudo tee /etc/yum.repos.d/google-chrome.repo -EOF [google-chrome] namegoogle-chrome baseurlhttps://dl.google.com/linux/chrome/rpm/stable/x86_64 enabled1 gpgcheck1 gpgkeyhttps://dl.google.com/linux/linux_signing_key.pub EOF然后根據(jù)系統(tǒng)包管理器選擇裝法。Fedora、RHEL 8、Rocky 8以上用dnfsudo dnf install google-chrome-stableCentOS 7這類舊系統(tǒng)沒有dnf用yumsudo yum install google-chrome-stable執(zhí)行完你就擁有一個(gè)Google官方簽名過的chrome。這樣做最大的好處是依賴處理全自動(dòng)dnf會(huì)把libnss3、libxkbcommon、libgbm這些依賴一并處理基本不會(huì)出現(xiàn)裝完少個(gè)庫的情況。2.2 rpm命令手動(dòng)安裝離線環(huán)境的唯一出路沒有外網(wǎng)的機(jī)器怎么辦先把google-chrome-stable_current_x86_64.rpm下載到U盤拷進(jìn)內(nèi)網(wǎng)然后你面對(duì)的就是新老兩代包管理器共存的局面。在能聯(lián)網(wǎng)的機(jī)器上正確操作是使用localinstall類命令比如sudo yum localinstall ./google-chrome-stable_current_x86_64.rpm這條命令會(huì)先檢查本機(jī)已有的依賴缺什么就從已配置的yum源或系統(tǒng)ISO里自動(dòng)補(bǔ)。Fedora等新系統(tǒng)對(duì)應(yīng)的是sudo dnf install ./google-chrome-stable_current_x86_64.rpm注意dnf必須加./路徑前綴否則它不識(shí)別這個(gè)文件。如果追求更可控的過程想純粹靠rpm命令本身裝你要先了解它的關(guān)鍵參數(shù)rpm -ivh google-chrome-stable_current_x86_64.rpm # 正常安裝并顯示進(jìn)度 rpm -Uvh 表示升級(jí)安裝 rpm --test 用來做安裝預(yù)演不實(shí)際執(zhí)行只檢查依賴沖突 rpm -qR 包名 查看一個(gè)包依賴哪些庫我不推薦新手直接用rpm -ivh因?yàn)橹灰币粋€(gè)依賴庫它立刻停止。內(nèi)網(wǎng)機(jī)器上依賴常常一環(huán)套一環(huán)缺libatk就裝lib或者apt家族里對(duì)應(yīng)的包缺libnss3就找脫機(jī)包可能會(huì)花掉一下午。你實(shí)在要用rpm命令硬裝至少先加--test檢查一下rpm -ivh --test google-chrome-stable_current_x86_64.rpm如果輸出里只有幾個(gè)警告沒有error說明依賴沒問題可以正裝看到error標(biāo)記的依賴項(xiàng)就得先把缺的庫補(bǔ)齊。2.3 舊系統(tǒng)專講CentOS 7還想用Chrome該怎么處理這個(gè)坑我踩過不止一次。CentOS 7的內(nèi)核版本和glibc相對(duì)老舊新版Chrome的rpm包會(huì)依賴較高版本的glibcCentOS 7的glibc不夠新裝上去之后能裝但起不來控制臺(tái)直接報(bào)錯(cuò)或者閃退。網(wǎng)上讓配置新版glibc的說法千萬別盲目信隨意更換系統(tǒng)的glibc可能讓整個(gè)系統(tǒng)崩潰。最實(shí)用的辦法是裝舊版Chrome的rpm包。實(shí)際測試中CentOS 7上大致能用的是120左右的版本超過這個(gè)范圍大概率有依賴問題。你可以在有外網(wǎng)的機(jī)器上從第三方存檔站拉一個(gè)對(duì)應(yīng)版本的google-chrome-stable rpm用2.2小節(jié)的yum localinstall方式裝內(nèi)核依賴多的庫會(huì)從系統(tǒng)ISO自動(dòng)填上。裝完之后關(guān)掉自動(dòng)更新避免被刷新到跑不起來的版本。另一個(gè)要注意的是舊版Chrome在CentOS 7上跑起來之后如果出現(xiàn)畫面花屏或GPU進(jìn)程反復(fù)崩潰很可能不是安裝問題而是GPU驅(qū)動(dòng)兼容性臨時(shí)可以用禁用GPU參數(shù)的方案湊合但會(huì)把硬件加速關(guān)掉渲染壓力轉(zhuǎn)給CPU。這個(gè)我們第四章還會(huì)細(xì)講。3. deb平臺(tái)實(shí)戰(zhàn)從apt源到dpkg安裝3.1 添加apt源一條命令完成安裝Debian系的官方方案同樣推薦源管理。先導(dǎo)入Google簽名密鑰并配置源Ubutu 22.04以后用apt-key導(dǎo)入會(huì)有廢棄警告建議按下面這種keyrings方式操作sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | sudo tee /etc/apt/keyrings/google-chrome.asc /dev/null echo deb [archamd64 signed-by/etc/apt/keyrings/google-chrome.asc] http://dl.google.com/linux/chrome/deb/ stable main | sudo tee /etc/apt/sources.list.d/google-chrome.list sudo apt update sudo apt install google-chrome-stable這幾年公司內(nèi)部新發(fā)的Ubuntu筆記本我都是這么搭的裝完之后定期apt upgradeChrome跟著系統(tǒng)一起更新基本不用再操心版本問題。這里有幾個(gè)細(xì)節(jié)值得說signed-by參數(shù)指定了密鑰文件路徑比老的apt-key方式更安全官方源里只有stable、beta、dev三個(gè)渠道stable就是穩(wěn)定版。3.2 dpkg -i 裝deb遇到依賴報(bào)錯(cuò)怎么辦手動(dòng)拿到一個(gè)google-chrome-stable_current_amd64.deb文件之后最直接的安裝命令是sudo dpkg -i google-chrome-stable_current_amd64.debdpkg是一個(gè)底層包工具只認(rèn)安裝/卸載/查詢看到依賴缺失時(shí)它不會(huì)自己去幫你解決。比如它提示缺少libnss3、libatk1.0這些基礎(chǔ)庫正確方式不是按住報(bào)錯(cuò)鏈一條條rpm硬搜而是執(zhí)行sudo apt -f installapt會(huì)掃描系統(tǒng)里所有處于“半安裝”狀態(tài)的deb包并把缺失的依賴從軟件源里補(bǔ)全。這是dpkg裝deb包的標(biāo)準(zhǔn)補(bǔ)救流程。但更省心的辦法其實(shí)是用apt直接裝本地文件sudo apt install ./google-chrome-stable_current_amd64.debapt會(huì)自動(dòng)檢查deb文件內(nèi)聲明的依賴并優(yōu)先解決相比先dpkg后修復(fù)少折騰很多。注意一定要有./前綴沒有這個(gè)前綴apt會(huì)去軟件源里找同名的包大概率找不到。3.3 三種deb裝法橫向?qū)Ρ任以诟鞣NDebian系系統(tǒng)上反復(fù)嘗試過把“官方apt源”“apt install ./xxx.deb”“dpkg -i apt -f install”三種方案做了一次對(duì)比結(jié)論都已經(jīng)固化在我自己的部署腳本里了安裝方式依賴處理自動(dòng)更新跟隨適合場景坑點(diǎn)提示apt源apt install全自動(dòng)支持有外網(wǎng)、懶人首選密鑰必須管理好否則apt update報(bào)警apt install ./xxx.deb自動(dòng)拉取依賴不支持離線包但有本地源別漏./前綴dpkg -i apt -f install半自動(dòng)兩步走不支持特殊情況應(yīng)急dpkg報(bào)錯(cuò)信息對(duì)新手不友好Debian系還有個(gè)圖形化的gdebi工具執(zhí)行sudo gdebi xxx.deb也能自動(dòng)處理依賴對(duì)純桌面用戶友好但命令行操作時(shí)還是用apt install最穩(wěn)當(dāng)。Debian系老版本比如Debian 9之前的apt不支持install ./本地文件語法只能用dpkg加重修復(fù)這個(gè)需要在老舊機(jī)器上操作時(shí)留意。有朋友肯定會(huì)問Snap版Chrome行不行Snap商店確實(shí)有但你打開它會(huì)發(fā)現(xiàn)它下載慢、目錄結(jié)構(gòu)封閉、和系統(tǒng)字體主題的適配也參差不齊而且很多生產(chǎn)服務(wù)器默認(rèn)禁snapd沒必要為裝個(gè)瀏覽器引入一套重組件。4. 裝完只是開始常見報(bào)錯(cuò)與運(yùn)行配置4.1 執(zhí)行chrome命令閃退先查動(dòng)態(tài)庫依賴裝完包后命令行執(zhí)行g(shù)oogle-chrome-stable如果只能看到一段報(bào)錯(cuò)或者什么都沒發(fā)生十有八九是動(dòng)態(tài)鏈接庫缺失。排查手段非常簡單ldd /opt/google/chrome/chrome | grep not found逐行檢查輸出的not found項(xiàng)目比如常見的libnss3、libatk-bridge、libdrm、libxkbcommon然后按前面的源安裝方式把對(duì)應(yīng)包補(bǔ)上。rpm系裝依賴用dnf install 庫名Debian系用apt install 庫名即可。這里有個(gè)容易忽略點(diǎn)Chrome的自帶沙箱文件chrome-sandbox在部分發(fā)行版上安裝腳本沒把權(quán)限設(shè)對(duì)啟動(dòng)時(shí)會(huì)出現(xiàn)沙箱報(bào)錯(cuò)手動(dòng)修正sudo chown root:root /opt/google/chrome/chrome-sandbox sudo chmod 4755 /opt/google/chrome/chrome-sandbox如果機(jī)器是容器或虛擬機(jī)缺user namespace權(quán)限時(shí)還可能出現(xiàn)FATAL沙箱錯(cuò)誤這時(shí)候可以用--no-sandbox參數(shù)做臨時(shí)繞過但這個(gè)參數(shù)會(huì)大幅降低瀏覽器安全性只建議在臨時(shí)調(diào)試環(huán)境用公網(wǎng)環(huán)境千萬不要這樣長期跑。4.2 版本太新跑不動(dòng)的應(yīng)付辦法前面CentOS 7例子已經(jīng)說明老舊內(nèi)核會(huì)遇到這個(gè)情況。很多國產(chǎn)老系統(tǒng)也是類似路子內(nèi)核版本3.10或者4.9的新版Chrome跑不起來。啟動(dòng)報(bào)錯(cuò)甚至直接segfault時(shí)除了降級(jí)chrome版本還可以嘗試加這些啟動(dòng)參數(shù)google-chrome-stable --disable-gpu --disable-software-rasterizerGPU進(jìn)程崩潰大多表現(xiàn)為白屏、花屏、標(biāo)簽頁卡死先禁掉GPU就能跑起來。但這會(huì)損失視頻硬解能力在線看4K視頻CPU占用會(huì)很高只能算應(yīng)急方案。想長期穩(wěn)定用核心思路還是找與系統(tǒng)glibc匹配的舊版chrome包這個(gè)結(jié)論我反復(fù)確認(rèn)過多次。4.3 更新策略、卸載與殘留清理通過官方源裝的Chrome升級(jí)策略跟隨包管理器Ubuntu系apt upgradeRHEL系dnf upgrade/yum update會(huì)自動(dòng)帶它升級(jí)。有人會(huì)遇到升級(jí)后打不開新版本的情況多半是系統(tǒng)的lib依賴版本又不夠了那就參考4.1小節(jié)的ldd排查思路先補(bǔ)系統(tǒng)庫。卸載分兩步走。首先刪除軟件本體# rpm系 rpm -e google-chrome-stable # deb系 dpkg -r google-chrome-stable然后清理用戶配置。Chrome的配置和緩存都在用戶目錄里不刪干凈卸載了也算留了隱私數(shù)據(jù)rm -rf ~/.config/google-chrome ~/.cache/google-chrome這里單獨(dú)說明一下你在頭圖后的熱詞里看到“沒找到rpm命令”這類情況通常是系統(tǒng)壓根不是Red Hat體系比如Ubuntu上默認(rèn)沒有rpm命令屬于正?,F(xiàn)象。這反而說明你該走deb路線。另外無論rpm還是deb下載第三方站點(diǎn)提供的安裝包前都要確認(rèn)來源看清楚GPG簽名官網(wǎng)和非官方渠道的文件辨別還是挺重要的被篡改的包在Linux下和在Windows下一樣致命。再送一個(gè)小技巧給需要批量部署的朋友。在rpm系內(nèi)網(wǎng)環(huán)境你可以把chrmoe的rpm包連同所有dependency的rpm文件統(tǒng)一下載到一個(gè)目錄再用yum localinstall *.rpm批量安裝會(huì)比一臺(tái)一臺(tái)追著缺啥補(bǔ)啥高效得多。Debian系對(duì)應(yīng)的參考姿勢是apt install ./xxx.deb配合本地源倉庫。我個(gè)人這些年部署Chrome的經(jīng)驗(yàn)是能走官方源絕不手動(dòng)裝包能自動(dòng)補(bǔ)依賴絕不裸用rpm或dpkg這句話聽著像大道理實(shí)際上每一條都是被報(bào)錯(cuò)信息逼出來的總結(jié)。打包格式的坑無非是家族認(rèn)錯(cuò)、依賴漏裝、權(quán)限缺失這三類把這章的知識(shí)吃透你在主流發(fā)行版上裝Chrome基本可以一次過。