我正在尝试制作一个脚本来设置一个新的虚拟机以供使用,这涉及一些安装,但是当我将安装命令 ( apt-get --yes install <package>
) 放入脚本中时,它们总是失败:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
sudo ./setup.sh
该脚本以 root ( )身份运行
当我检查apt
进程时,我得到:
4 S root 2227 1 0 80 0 - 1126 - 07:33 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
0 S root 2231 2227 0 80 0 - 1126 - 07:33 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
问题是,这只发生在从脚本执行 apts 时,如果我手动执行完全相同的命令,他们永远不会遇到这个问题。 shell 脚本运行 apt install 的方式是否有所不同?
无论如何,从 shell 脚本运行apt
(或yum
就此而言)安装程序的最佳方式是什么,并且不会导致安装程序锁定?
答案1
你必须写sudo apt-get install <package> -y
在剧本里。执行脚本./setup.sh
但当然你的用户必须是 sudoer(sudo 访问权限)。
答案2
它告诉您(apt 无法获得锁定)您需要进一步运行该 bash 脚本以进行安装后或等待这些进程名称不存在。您可能会对此很刻薄,杀死进程并删除锁定文件,然后 apt-get update 或只是等待它们完成。
可能导致失败的事情 - 如果您在安装另一个软件包的过程中运行 apt-get install 某些东西(不要这样做,只需使用依赖项)。