軟體中心無法安裝程式 [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2)


回覆: 軟體中心無法安裝程式
會員二級
註冊日期:
2010/5/2 20:05
所屬群組:
已註冊使用者
等級: 4
HP : 0 / 85
MP : 10 / 3259
EXP: 40
離線
利用
apt-get install 套件一 套件二 套件三 
的原理

把你剛剛建立的package.list 文字檔中,將跳行取代成空白
再package=$(cat ./package.list) ; sudo apt-get install $package --reinstall
這樣就可以了

2015/4/15 16:01
應用擴展 工具箱
回覆: 軟體中心無法安裝程式 (如何重建「/var/lib/dpkg/info」)
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 901
MP : 671 / 29281
EXP: 6
離線
一樣用「/var/lib/dpkg/info」,查到「這篇」。

裡面用到的原理,應該跟我剛剛說的另一種方法一樣,下載套件,解開,把相關的info,放回到「/var/lib/dpkg/info」。

還沒測試,詳細實作請參考上面那篇文章吧。



後記(2017-03-08) :
請參考「這篇回覆」提到的方法,參考「Debian 參考手冊 / 6.3.4 回復套件的選取狀態的資料」看到的一段指令,
在這篇討論的「回覆#4」,提到的「參考連結」,也有提到同樣的指令。



samwhelp 寫到:
Linyl 寫到:
samwhelp 寫到:
V字龍 寫到:
Linyl 寫到:
解法一就是備份原本的info資料夾,在另外建立一個新的
結果我無此目錄,查到你說自己建立一個...解決了

原理是怎樣,我不太了解,希望有懂的人可以出來解釋一下


/var/lib/dpkg/info 保存了所有安裝在系統中的軟體包的
├── zsh.list -> 安裝到系統中的檔案清單
├── zsh.md5sums -> 安裝到系統中的檔案校驗碼
├── zsh.postinst-> 安裝程式
├── zsh.postrm -> 移除程式1
├── zsh.prerm -> 移除程式2
等資料

基本上沒了這目錄 APT 軟體包管理系統就不知道這些軟體包安裝了哪些檔案跟怎麼正確安裝與移除軟體了,炸掉不意外

正確的解決方式應該是還要想辦法把這些檔案安裝回來,軟體包安裝的狀態位於 /var/lib/dpkg/status ,用程式分析出所有「系統有安裝的軟體包」然後想辦法讓 APT 全部重新安裝一遍應該就可以了

## 參考資料
http://www.debianhelp.co.uk/debianproblem.htm


有興趣探究的話,可以執行下面的指令,以「zsh」這個套件為例。



$ apt-get download zsh
$ dpkg -e zsh_5.0.2-3ubuntu6_amd64.deb
$ tree DEBIAN



會顯示


DEBIAN
├── control
├── md5sums
├── postinst
├── postrm
└── prerm



跟上面的列表對照


$ tree /var/lib/dpkg/info -P "zsh.*"



顯示


/var/lib/dpkg/info
├── zsh.list
├── zsh.md5sums
├── zsh.postinst
├── zsh.postrm
└── zsh.prerm

0 directories, 5 files



或是執行


$ ls /var/lib/dpkg/info/zsh.* -1



顯示


/var/lib/dpkg/info/zsh.list
/var/lib/dpkg/info/zsh.md5sums
/var/lib/dpkg/info/zsh.postinst
/var/lib/dpkg/info/zsh.postrm
/var/lib/dpkg/info/zsh.prerm



套件的操作實務,可以參考這個「索引」或是「這裡」。

目前我還沒摸透,還有些概念還要學習,建議大家可以多多討論和研究這一塊,我覺得這部份是探索Ubuntu(Debian)系統的起點。



另外你可以執行


$ dpkg -S /var/lib/dpkg/info



會顯示下面的訊息


dpkg: /var/lib/dpkg/info



就可以知道「/var/lib/dpkg/info」這個資料夾,是屬於「dpkg」這個套件的,一些初步的探索,「紀錄在這」。


To samwhelp
從你的說明大概知道這裡都是放各個安裝套件的相關資訊
因為我現在info資料夾中空無一物(只有 format檔案),當現在我要安裝新的套件時,apt-get會告訴我:
「dpkg: 警告:找不到套件 'libva-tpi1:amd64' 的檔案清單,假設該套件目前安裝任何檔案」之類的一大串訊息...
雖然是無所謂啦,只是可能以後都要看到這一串..



To V 字龍
如你所言,從status檔案中已經擷取了,所有安裝檔案的清單
sudo grep "Package: " /var/lib/dpkg/status | cut -d " " -f2

現在要重新建立info內各套件的資料,簡單的方法可以用:移除再安裝
sudo apt-get remove gnome-system-monitor ; sudo apt-get install gnome-system-monitor

這時,info內該套件資料就會建立出來:
-rw-r--r-- 1 root root 22916 4月 15 14:10 gnome-system-monitor.list
-rw-r--r-- 1 root root 3494 10月 3 2014 gnome-system-monitor.md5sums
-rwxr-xr-x 1 root root 185 10月 3 2014 gnome-system-monitor.postinst
-rwxr-xr-x 1 root root 160 10月 3 2014 gnome-system-monitor.postrm

但對於重要的、很多相依性的系統檔案...風險感覺超高阿
還有什麼方法可以安全的把所有套件一次重新取得info呢?


一般的狀況,這個資料夾的檔案應該是不會不見才對,
其實我蠻好奇你做了什麼動作,導致這個資料夾的檔案都沒了,不過你應該也不會曉得怎麼會如此。

我還在研究怎麼重建這個資料夾裡面資料的方法,以前沒想過這個問題。

另外再次說明一下「zsh.postinst」和下載deb檔解開的「DEBIAN/postinst」的內容是一樣的喔,
其他的檔也是如此,除了「zsh.list」。
所以這應該是其中一種解法,不過還沒實作過,還不曉得會出現哪種狀況。

我個人覺得重灌系統,是最快的解決方式,這只是一種解決方式,僅供參考。


2015/4/15 16:10
應用擴展 工具箱
回覆: 軟體中心無法安裝程式 (如何重新安裝軟體)
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 901
MP : 671 / 29281
EXP: 6
離線
Linyl 寫到:
利用
apt-get install 套件一 套件二 套件三 
的原理

把你剛剛建立的package.list 文字檔中,將跳行取代成空白
再package=$(cat ./package.list) ; sudo apt-get install $package --reinstall
這樣就可以了


喔喔,了解,又學到一招,感恩



所以剛剛的版本改成


grep "Package: " /var/lib/dpkg/status | cut -d " " -f2 > package.list
packages=$(cat ./package.list)
sudo apt-get install $packages --reinstall



或是


sudo apt-get install $(grep "Package: " /var/lib/dpkg/status | cut -d " " -f2) --reinstall




或是


packages=$(dpkg -l|awk '/^ii/ {print $2}')
sudo apt-get install $packages --reinstall



或是


sudo apt-get install $(dpkg -l|awk '/^ii/ {print $2}') --reinstall




或是參考 「這篇」。


sudo apt-get install $(dpkg --get-selections | grep '[[:space:]]install' | cut -f1) --reinstall




附註: 上面的方式,若系統有自己下載的deb安裝(例如skype),應該就無法執行安裝。

2015/4/15 16:15
應用擴展 工具箱

« 1 (2)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.