久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Debian軟件包恢復(fù)

2024-01-11 214

Debian系統(tǒng)中,由于各種原因可能會導(dǎo)致軟件包損壞或安裝失敗。本教程將詳細(xì)介紹如何從這些損壞的系統(tǒng)中恢復(fù)軟件包,并提供相應(yīng)的解決方案和技巧。通過掌握這些知識將能夠更有效地管理和使用Debian系統(tǒng),確保軟件包的穩(wěn)定運行和安全使用。

一、缺少依賴

如果通過”sudo dpkg -i …”強制安裝一個軟件包到系統(tǒng),而不安裝它所依賴的所有軟件包,這個軟件包將作為“部分安裝”而失敗。

應(yīng)當(dāng)安裝所有依賴的軟件包,使用 APT 系統(tǒng)或者 “sudo dpkg -i …”。然后,使用下列命令來配置所有部分安裝的軟件包。

# dpkg --configure -a

二、軟件包數(shù)據(jù)緩存錯誤

軟件包數(shù)據(jù)緩存錯誤,能夠造成奇怪的錯誤,比如 APT 的 “GPG error: … invalid: BADSIG …”。

應(yīng)該通過 “sudo rm -rf /var/lib/apt/* ” 刪除所有緩存的數(shù)據(jù),然后重新嘗試。(如果使用了 apt-cacher-ng,還應(yīng)運行”sudo rm -rf /var/cache/apt-cacher-ng/* “。 )

三、不兼容舊用戶配置

如果一個桌面 GUI 程序在重要的上游版本升級后變得不穩(wěn)定,應(yīng)該懷疑這是舊的本地配置文件(由它創(chuàng)建的)所導(dǎo)致的。如果它在新建的用戶賬號下運行穩(wěn)定,那么這個假設(shè)就得到了證實。(這是一個打包的 bug 并且打包者通常會避免它。)

為了恢復(fù)穩(wěn)定,應(yīng)該移除相應(yīng)的本地配置文件并重新啟動 GUI 程序??赡苄枰喿x舊的配置文件內(nèi)容以便之后恢復(fù)配置信息。

四、不同軟件包

文檔級的軟件包管理系統(tǒng),比如說 aptitude(8) 或 apt-get(1), 使用軟件包依賴,當(dāng)出現(xiàn)相同文件時,不會嘗試去安裝軟件包。

軟件包維護者的錯誤,或者系統(tǒng)管理員配置了不一致的檔案庫混合源,都會出現(xiàn)不正確的軟件包依賴情況。如果在出現(xiàn)相同文件的情況下,通過 aptitude(8) 或 apt-get(1) 安裝軟件包,dpkg(1) 在對軟件包解包時,確定會給調(diào)用程序返回錯誤,并不會覆蓋已經(jīng)存在的文件。

使用第三方軟件包會導(dǎo)致重大的系統(tǒng)風(fēng)險,因為其通過使用 root 權(quán)限運行維護者腳本能夠?qū)ο到y(tǒng)做任何事。dpkg(1) 命令只防止解包時的覆蓋行為。可以先通過刪除舊的令人討厭的軟件包,old-package,來解決這類錯誤的安裝問題。

$ sudo dpkg -P old-package

五、修復(fù)軟件包腳本

當(dāng)軟件包腳本中的一個命令由于某些原因返回錯誤,腳本也將由于錯誤而退出,軟件包管理系統(tǒng)忽略它們的行為,并導(dǎo)致部分安裝的軟件包。當(dāng)一個軟件包在它的刪除腳本中有錯誤時,該軟件包將會成為不可能刪除的軟件包,處理這些問題,都會變得相當(dāng)棘手。

對于 “package_name” 的軟件包腳本問題,應(yīng)該查看下列的軟件包腳本。

  • “/var/lib/dpkg/info/package_name.preinst”
  • “/var/lib/dpkg/info/package_name.postinst”
  • “/var/lib/dpkg/info/package_name.prerm”
  • “/var/lib/dpkg/info/package_name.postrm”

使用下列的方法,以 root 編輯損壞的軟件包腳本。

  • 在行首添加 “#” 可以禁用出錯的行;
  • 在出錯行的行尾添加 “|| true” 可以強制返回成功。

六、使用dpkg命令

因為 dpkg 是非常底層的軟件包工具,它可以在很糟糕的情況下進(jìn)行工作,例如無法啟動系統(tǒng)且沒有網(wǎng)絡(luò)連接。讓我們假定 foo 軟件包損壞了,并且需要更換。

可以在軟件包緩存目錄:“/var/cache/apt/archives/” 中找到舊的 foo 軟件包的無 bug 版本。(如果找不到,可以從檔案庫 https://snapshot.debian.org/ 中下載它,或從具有軟件包緩存功能的機器中拷貝它。)

如果能夠啟動系統(tǒng),可以通過下列命令來安裝它。

# dpkg -i /path/to/foo_old_version_arch.deb

如果系統(tǒng)無法從硬盤啟動,應(yīng)該尋找其它方式來啟動它。

  • 使用 Debian 安裝光盤以救援模式啟動系統(tǒng);
  • 將硬盤上無法啟動的系統(tǒng)掛載到 “/target”;
  • 通過下列命令安裝舊版本的 foo 軟件包。
# dpkg --root /target -i /path/to/foo_old_version_arch.deb

即使位于硬盤上的 dpkg 命令已損壞,該命令依舊可以執(zhí)行。

任何由硬盤、live GNU/Linux CD、可啟動的 USB 驅(qū)動或網(wǎng)絡(luò)啟動上的另一系統(tǒng)啟動的 GNU/Linux 系統(tǒng)到可以類似地用來救援損壞的系統(tǒng)。如果由于依賴問題,無法用這種方式安裝軟件包,并且真的必須真么做,可以使用 dpkg 的 “–ignore-depends”、“–force-depends” 和其它選項來無視依賴。如果這么做了,之后必須認(rèn)真努力地修復(fù)依賴關(guān)系。

如果系統(tǒng)嚴(yán)重?fù)p壞了,應(yīng)該將系統(tǒng)完整備份到一個安全的地方(參見 第 10.2 節(jié) “備份和恢復(fù)”)并進(jìn)行一次全新的安裝。這是耗時較少且效果較好的辦法。

七、恢復(fù)軟件包選擇數(shù)據(jù)

如果 “/var/lib/dpkg/status” 因為某種原因出現(xiàn)錯誤,Debian 系統(tǒng)會丟失軟件包選擇數(shù)據(jù)并受到嚴(yán)重影響。尋找位于 “/var/lib/dpkg/status-old” 或 “/var/backups/dpkg.status.*” 中舊的 “/var/lib/dpkg/status” 文件。

給 “/var/backups/” 分配一個單獨的分區(qū)是一個好習(xí)慣,因為這個目錄包含了許多重要的系統(tǒng)數(shù)據(jù)。對于嚴(yán)重的損壞,我建議備份系統(tǒng)后重新安裝。即使失去 “/var/” 中的所有數(shù)據(jù),依舊可以從 “/usr/share/doc/” 目錄恢復(fù)一些信息來引導(dǎo)進(jìn)行新的安裝。

重新安裝最?。ㄗ烂妫┫到y(tǒng):

# mkdir -p /path/to/old/system
將舊系統(tǒng)掛載到 “/path/to/old/system/”。
# cd /path/to/old/system/usr/share/doc
# ls -1 >~/ls1.txt
# cd /usr/share/doc
# ls -1 >>~/ls1.txt
# cd
# sort ls1.txt | uniq | less

然后就可以根據(jù)軟件包名稱來進(jìn)行安裝了。(可能會有一些非軟件包名稱,例如 “texmf”。)

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。