題 如何使用apt-get重新安裝軟件包?


看來我的 aptitude 在某種程度上打破了

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

所以我想重新安裝 aptitude 通過使用 apt-get

不幸的是,似乎 apt-get 沒有重新安裝選項。

任何想法我怎麼能獲得再次工作的能力?

編輯 :我可能找到了aptitude的segfault的根本原因。這是我如何重現它:

  1. ssh通過cygwin的rxvt終端(來自Windows-7 64位德語版)遠程登錄到debian機器。
  2. 放大rxvt窗口,使其跨越兩個監視器(是的,我有兩個監視器)
  3. aptitude update。注意:當我將rxvt終端的大小調整為正常時,我沒有這些段錯誤!

168
2018-01-30 00:20


起源




答案:


$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

所以,用它來重新安裝 aptitude 使用:

sudo apt-get install --reinstall aptitude

290
2018-01-30 01:29



那是什麼 -A5 你在貪圖? - Vokuhila-Oliba
男人grep | grep - “-A” - grawity
那是什麼 -- 你在貪圖? - Desty
man getopt,看下 PARSING - Tino
-A5 顯示匹配的行加上以下5行。 -- 停止解析選項,從而解釋作為位置參數之後的任何內容,避免必須轉義表達式中的破折號 -A 否則將被解釋為grep本身的選項。 - jjmontes


您可以重新安裝包 sudo apt-get install --reinstall packagename。 這完全刪除了包(但不包括依賴它的包),然後重新安裝包。

當包具有許多反向依賴性時,這可能很方便。


100
2017-07-18 19:45



感謝您成為唯一正確,完整,非諷刺的答案。 - Cerin
@Cerin:我不會過於苛刻地稱其他答案:即使是“閱讀手冊頁”,其實也給出了答案以及如何找到答案。 - David Spillett
@DavidSpillett,我強烈反對。手冊頁通常編寫得非常糟糕,對新手非常不友好。例如,“--reinstall”選項上的段落未提及您必須將其與“install”參數一起使用。一個新手可能會理所當然地問“我為什麼要告訴它安裝並重新安裝?”回答告訴某人RTFM的答案是最糟糕的答案,我很難以最多的票數看到它,特別是當一個完整且實際有用的答案接近底部時。 - Cerin


您應該安全地刪除aptitude並重新安裝,因為這不會影響其他apt實用程序。所以: apt-get remove aptitude 其次是 apt-get install aptitude,或者如果仍然失敗嘗試 apt-get purge aptitude 其次是 apt-get install aptitude

在執行上述任一操作之前,我建議使用完整的文件系統和壞塊檢查,以防出現問題導致問題(取決於問題,如果有問題,進一步的活動可能會使事情變得更糟)。此外,請確保在繼續執行之前查看將在刪除/清除步驟中刪除的內容(如果由於刪除了一個包而更改了任何額外內容,它應該暫停以請求權限),仔細檢查我的想法是安全的。


12
2018-01-30 00:26



非常感謝! apt-get remove 其次是 apt-get install 做了伎倆! - Vokuhila-Oliba
很久以前,我做過類似的事情 a full filesystem check 或類似的。你能不能給我一個簡短的提示怎麼做? - Vokuhila-Oliba
fsck -f <block_device> 如 fsck /dev/sda1。文件系統需要在當時以只讀方式卸載或掛載,因此這可能是您的根文件系統,您應該重新啟動到單用戶模式或從其他東西(如live cd)啟動。 - David Spillett
您可以使用 tune2fs 將文件系統標記為已安裝的次數超過其設置限制,應強制檢查下次啟動。假設文件系統是ext2 / 3/4: tune2fs -C 99 <device>,或者如果您關閉了基於掛載計數的檢查,請使用類似的方式同時打開它 tune2fs -c 17 -C 99 <device>。 - David Spillett
touch / forcefsck;重啟 - user23307


有時你也需要恢復配置文件!不只是重新安裝。

sudo apt-get install --reinstall xxxx

重新安裝應用程序,保留配置文件。

這可能會有所幫助,但有時您需要重新開始,所以我使用的是:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

然後

sudo apt-get install xxxx

12
2017-08-20 05:39



如果您只需要恢復配置文件,在某些情況下(如果它們由ucf管理)您應該使用 UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]。 - Skippy le Grand Gourou