※ 引述《s9209122222 (海海海)》之銘言:
: 一開始是會卡在幾個 ppa,移除掉之後還是無法順利 update
: 於是我換了個伺服器,但卻會卡在這個地方:
: http://i.imgur.com/jFnBHl4.png?1
: 要是我 Ctrl+C 後重新跑就會卡在這邊:
: http://i.imgur.com/rskVNja.png?1
: 請問該怎麼辦?
: 有人回報了這個 BUG,有空拜託各位去投個票囉
: https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/1583854
最早的(?)軟體缺陷報告:
Bug #1579712 “Refresh hangs indefinitely, appstreamcli using 100...” : Bugs
: appstream package : Ubuntu
https://bugs.launchpad.net/ubuntu/+source/appstream/+bug/1579712
據說軟體缺陷已經存在快 3 年了,最近才(好像是因為有特殊的 metadata)觸發造成無限迴圈(?)
由於軟體來源快取更新都因為這個軟體缺陷跑不完了,當然就不可能直接用軟體更新的方式來修正問題。
這邊來分享我的解法,這個解法不用去手動抓新版本的 Debian 軟體包來安裝。
1. 首先先用「(GNOME)系統監控」(或任何您慣用的方式)幹(kill)掉壞的 appstreamcli 進程(process)(注意要在選單中勾選「所有程序(L)」appstreamcli 才會列在進程列表中)
2. 這個進程是在 APT 軟體包管理系統更新本地端軟體來源快取資料時被執行的,所以就修改 APT 軟體包管理系統的設定將這個程序先停用。以 root 身份編輯 /etc/apt/apt.conf.d/50appstream 檔案將最後幾列的 APT::Update::Post-Invoke-Success 設定註解掉:
`````````````
# Refresh AppStream cache when APT's cache is updated (i.e. apt update)
#APT::Update::Post-Invoke-Success {
# "if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli;
#then appstreamcli refresh > /dev/null; fi";
#};
`````````````
3. 執行「軟體更新(更新管理員)」重新更新 APT 軟體來源快取資料,這個時候就不會卡住了。
4. 升級 appstream 軟體包
5. 於終端機中以 root 身份執行 appstreamcli refresh 命令更新 appstream 資料
6. 把 2. 所做的設定變更還原
嗯?您問 AppStream 是什麼?AppStream 是新的軟體元件詮釋資料(metadata)規範,用在許多「軟體中心」應用軟體上,例如 Ubuntu Software。
https://www.freedesktop.org/wiki/Distributions/AppStream/