我知道有三个命令可以更新和升级整个系统,它们是:
sudo apt update
:获取可用更新列表sudo apt upgrade
:严格升级当前软件包sudo apt full-upgrade
:安装更新(添加或删除软件包),相当于dist-upgrade
是否有一个超级升级命令,将所有这些命令合并为一个?
我知道有三个命令可以更新和升级整个系统,它们是:
sudo apt update
:获取可用更新列表sudo apt upgrade
:严格升级当前软件包sudo apt full-upgrade
:安装更新(添加或删除软件包),相当于dist-upgrade是否有一个超级升级命令,将所有这些命令合并为一个?
几个选择...
参考:
dist-upgrade
时,先进行upgrade
是没有意义的。 - heemayldist-upgrade
可能会失败,而先使用upgrade
再使用dist-upgrade
则不会出现这种问题。这主要是由于软件包依赖定义错误或混合使用来自不同版本/发行版/PPA的软件包所导致的。如果只使用来自Canonical官方软件仓库的软件包,并且只针对一个版本(默认版本),这种错误应该非常罕见,并且会很快得到修复。 - David Foersterfor x in update {,dist-}upgrade; do sudo apt $x; done
- Eli Barzilaysudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
update
- 更新软件包列表但不安装upgrade
- 如果有新版本可用,则安装软件包的新版本full-upgrade
- 执行升级功能,但如果需要升级整个系统(修复错误依赖关系),则会删除当前安装的软件包autoremove
、autoclean
和clean
- 清理不再需要的旧软件包-y
在每个步骤上不会请求权限&&
表示只有在前一个命令成功执行后才运行下一个命令您还可以创建别名。将以下行添加到您的~/.bashrc
或~/.bash_aliases
文件中(如果有)
alias upev='sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y'
source ~/.bashrc
或source ~/.bash_aliases
来获取您的新别名,然后只需运行即可。upev
apt upgrade
后加上--auto-remove
,就可以跳过apt autoremove
。 - Cameron Tacklind$HOME/.profile
文件的末尾添加一行代码来实现这个功能。alias sau='sudo aptitude update && sudo aptitude upgrade'
. $HOME/.profile
来“source” .profile)。现在你只需输入“sau”就能完成整个工作。对我来说,在多台机器上都非常好用。sudo aptitude update && sudo aptitude upgrade
。我问的原因是因为你可以用pacman来做(sudo pacman -Syu --noconfirm
)。 - polandeerapt-get update
有一个参数-u
。我没有尝试过是否会要求应用这些更新(现在身边没有Ubuntu/Debian来检查)。 - Izzysudo apt install unattended-upgrades
这是迄今为止最好的一行。所有其他解决方案都需要每天重复输入相同的一行。这真正是一个一键解决方案。请参阅来自Ubuntu的官方apt文档!
通过编辑位于/etc
目录下的此软件包的.conf
文件,您可以设置update、install、clean、autoremove
的频率...
或者只需发送电子邮件,其中包含可用更新的通知和软件包名称列表。
每次更改都会生成一个不错的小日志文件,我想还可以编写一个小脚本作为GUI扩展,在桌面通知中弹出(与主题无关)。
echo "sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean" > update && sudo mv update /usr/local/bin/update && sudo chmod +x /usr/local/bin/update
update
,输入密码,然后就完成了。
&&
连接在一起(包括apt autoremove
以删除不再使用的依赖项)。apt
命令,添加了-y
选项。echo
,并且该行用""
括起来,以避免字符转义。>
将echo
的输出(即我们的行)重定向/写入到一个名为“update”的文件中。/usr/local/bin/
,以便可以从任何位置执行它。写入此路径需要超级用户访问权限,这就是为什么在之前的步骤中无法完成的原因。chmod
将该文件设置为可执行文件。alias
命令并执行即可:alias fup='sudo apt-get -y update;sudo apt-get -y full-upgrade;sudo apt-get -y autoremove; sudo apt-get -y autoclean'
fup
将自动执行在alias
中定义的所有任务。在您的$HOME
目录下创建一个名为.bash_aliases
的文件。您可以使用以下命令在终端中执行此操作:
touch ./.bash_aliases
在.bash_aliases
文件中粘贴上述提到的alias
命令。
现在保存文件并退出。
编辑您的.bashrc
文件以导出您的.bash_aliases
文件。因此运行:
gedit .bashrc
并将以下代码粘贴到文件末尾:
if [ -f /home/abhyam/.bash_aliases ];then
source /home/abhyam/.bash_aliases
fi
保存文件并退出。
运行:
source .bashrc
现在您可以随时运行fup
命令来完全更新和升级您的系统。
.bash_aliases
文件的好处是,您还可以在该文件中为其他操作创建自定义别名,并且每次打开终端时它都会自动被加载。我在寻找同样的宝藏时找到了这个帖子。如果有人仍然感兴趣,我一直在进行一个git项目,其中运行相同的命令。
#!/usr/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
#Region --- Updates
echo -e "${PURPLE}RUNNING: sudo apt update --fix-missing${NC}"
for i in {1..100}
do
sudo apt clean
sudo apt update --fix-missing
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt update --fix-missing${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt update --fix-missing${NC}\n"
sleep 1m
fi
done
#Region --- Upgrades
for i in {1..100}
do
echo -e "${PURPLE}RUNNING: sudo apt upgrade -y${NC}"
sudo apt full-upgrade -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt upgrade -y${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt upgrade -y${NC}\n"
sleep 1m
fi
done
#Region
for i in {1..100}
do
echo -e "${PURPLE}RUNNING: sudo apt autoremove -y${NC}"
sudo apt autoremove -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt autoremove -y${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt autoremove -y${NC}\n"
sleep 1m
fi
done
#Region --- Exiting BasherUpdate
echo -e "${PURPLE}Exiting BasherUpdate...${NC}\n"
exit 0
apt update
命令上使用了一个循环,因为我遇到了mirror sync in progress
错误,并希望它继续尝试。希望这能有所帮助,如果你有建议,请告诉我! sudo -- sh -c "apt update && apt upgrade -y"
alias upgrade="sudo -- sh -c 'apt update && apt upgrade -y'"
sudo apt-get update && sudo apt-get dist-upgrade
。 - heemayl