1. 程式人生 > 實用技巧 >apt一鍵下載deb包及其依賴

apt一鍵下載deb包及其依賴

apt一鍵下載所有依賴的包
無外網的區域網安裝軟體一個煩人的事件就是明明安裝包下好了,但有時候就是安裝不上,因為缺少相應依賴的包。

那麼如何將一個軟體依賴的包、庫之類的下載下來呢。
這裡就用到apt的相關功能。

方法
首先,找包。找到依賴的包用apt-cache depends packname來獲取。
其次,下載。用apt-get install dependpackname –reinstall -d來下載所依賴的包。 -d是表示只下載。
再次,批量安裝。用shell命令組合來一鍵下載所有所依賴的包。

#有些包名中有<>符號,用tr將其刪除
sudo apt-get install --reinstall -d `apt-cache depends packname | grep
depends | cut -d: f2 |tr -d "<>"`

注意上面命令中反引號。 即 ` 。

示例

比如要找到fcitx所依賴的包。

apt-cache depends 會列出3類包。如果只想安裝Depends的,用grep過濾下。如果想提取出包的名字,用cut做一個分割。

剩下的就是呼叫下載相應包的指令了。
是不是感覺很簡單。
:)

進階,下載所依賴的包所依賴的包。。。

比如A依賴B,B又依賴C,那如何遞迴呢。此時就需要一個指令碼檔案,用函式來實現了。(gnome-shell替換成需要下載的包名)
遞迴3次下載所依賴包的指令碼如下:

#!/bin/bash

logfile
=/home/perrin/Desktop/log ret="" function getDepends() { echo "fileName is" $1>>$logfile # use tr to del < > ret=`apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d "<>"` echo $ret|tee -a $logfile } # 需要獲取其所依賴包的包 libs="gnome-shell" # 或者用$1,從命令列輸入庫名字 # download libs dependen. deep
in 3 i=0 while [ $i -lt 3 ] ; do let i++ echo $i # download libs newlist=" " for j in $libs do added="$(getDepends $j)" newlist="$newlist $added" apt install $added --reinstall -d -y done libs=$newlist done

摘自:https://blog.csdn.net/junbujianwpl/article/details/52811153