apt-get install [pkg1 pkg2 pkg3 ... pkgn] 未安装所有项目

apt-get install [pkg1 pkg2 pkg3 ... pkgn] 未安装所有项目

我有一个 bash 文件,其中包含要使用 apt install 为新 Ubuntu 安装安装的软件包列表,但是,列表中并非所有软件包都会安装。脚本中会根据需要包含存储库。

我尝试过以下两种方法:

方法 1:

apt install [pkg1] [pkg2] [pkg3] ... [pkgn]

方法2-(伪代码):

String pkgs_list[] = {"pkg1" "pkg2" "pkg3" "pkgn"}
for each pkg in pkg_list {
  if pkg exists then {
    "do nothing"
  else
    apt install pkg
  }
}

以下是完整的 bash 代码:

#***********************#
#***      Keys       ***#
#***********************#
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
wget -O - https://dl.sinew.in/keys/enpass-linux.key | apt-key add -
wget -nc https://dl.winehq.org/wine-builds/Release.key | apt-key add -


#***********************#
#***   Repositories  ***#
#***********************#
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list
echo "deb http://repo.sinew.in/ stable main" > \
  /etc/apt/sources.list.d/enpass.list
add-apt-repository -y ppa:webupd8team/gnome3  #This is for gnome tweak tool extensions (source: https://www.wikihow.com/Change-Themes-on-Ubuntu-with-Gnome-Tweak-Tool)
add-apt-repository -y ppa:notepadqq-team/notepadqq
add-apt-repository https://dl.winehq.org/wine-builds/ubuntu/

apt -y update

#WinHQ enables 32bit architecture
dpkg --add-architecture i386 

#***********************#
#***   apt install   ***#
#***********************#

#apt -y install \
#  nemo \
#  google-chrome-stable \
#  notepadqq dconf-editor \
#  nfs-common \
#  enpass \
#  virtualbox \
#  virtualbox-guest-additions-iso \
#  gnome-tweak-tool \
  #gnome-shell-extensions-user-themes \
#  vlc \
#  gimp \
#  winehq-stable \
#  synaptic

declare -a alist=("nemo"
  "google-chrome-stable"
  "notepadqq"
  "dconf-editor"
  "nfs-common"
  "enpass"
  "virtualbox"
  "virtualbox-guest-additions-iso"
  "gnome-tweak-tool"
  "vlc"
  "gimp"
  "winehq-stable"
  "synaptic"
  "usb-creator-gtk"
  "libreoffice"
  "chromium-browser"
  "thunderbird"
  "shotwell"
  "gnome-calendar")

for application in "${alist[@]}"
do
  dpkg -l $application
  if [ $? = '0' ]; then
    echo "***************************************************************************"
    echo "*****Application "$application" package is installed, no action taken.*****"
    echo "***************************************************************************"
  elif [ $? = '1' ]; then
    echo "******************************************"
    echo "*****Installing package $application.*****"
    echo "******************************************"
    #Add an if to match dock favorites and add to the dock .desktop file
    apt install $application -y
  fi
done

以下是脚本运行后的应用程序列表及其状态:

  1. 尼莫 -好的
  2. google-chrome-稳定版 -好的
  3. notepadqq -没有安装
  4. dconf-编辑器-好的
  5. nfs-通用-没有安装
  6. 通過 -好的
  7. 虚拟盒 -好的
  8. virtualbox-guest-additions-iso -不知道
  9. gnome-tweak-tool -没有安装
  10. 可变电流表好的
  11. 瘸子 -没有安装
  12. winehq-稳定版 -没有安装
  13. 突触 -没有安装
  14. usb-creator-gtk -没有安装
  15. libreoffice -好的
  16. chromium 浏览器 -没有安装
  17. 雷鸟 -没有安装
  18. 肖特韦尔 -没有安装
  19. gnome 日历 -没有安装

我可以为每个需要的包裹提供更多信息。

感谢您的帮助。

编辑

使用该命令生成的日志文件$ sudo ./my_script.sh >> my_script.log太大,因此我将发布我认为的问题,然后我们可以从那里开始。

下面是未安装 gimp 的输出。当我的代码使用命令检查软件包是否已安装时,dpkg -l [package_name]它在检查 gimp 和其他软件包时返回以下内容。

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
un  gimp           <none>       <none>       (no description available)

所有未安装的软件包都返回了版本和体系结构,这<none>告诉我没有安装软件包,对吗?但是当 bash 脚本运行时,命令返回“0”,使我的语句相信软件包已安装,但根据 dpkg 的说法,情况似乎并非如此。相反,dpkg 应该返回类似以下内容:...

$ dpkg -l package

dpkg-query: no packages found matching package

...当未安装包时。

我不明白这里dpkg返回发布的信息是怎么回事。这是什么意思?发生了什么?

谢谢,

编辑

此外,如果我尝试删除包,apt我会得到:

$ sudo apt autoremove gimp
[sudo] password for alex2wr: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'gimp' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

相关内容