我是这个平台的新手,所以有人可以帮我解释一些命令吗?
我需要一些命令来为特定的软件包修补服务器。
升级软件包后,如何确定软件包是否更新到最新版本?
答案1
有很多不同的解决方案/解决方法,我将提到一些:
1. 查找已安装的版本
1.1. dpkg
用于dpkg -l pkg-name
获取软件包版本,例如:
$ dpkg -l firefox
它会给你一些信息:
||/ Name Version Architecture Description
+++-==========================================================================
ii firefox 53.0.3+build1-0ubuntu0. amd64 Safe and easy web brow
1.2. pkg --version
取决于您的软件包开关,例如-v
或--version
可能对您可用:
firefox -v
2. 最新可用版本
2.1. apt 显示
然后使用sudo apt update
以确保您的源是最新的,并使用apt show firefox | grep -i version
查看最新可用的版本。
2.2. Ubuntu 软件包数据库
您还可以查看https://packages.ubuntu.com搜索您的软件包版本。
2.3. apt 更新日志
另外,您可以使用apt changelog pkg-name
,例如,apt changelog firefox
这将连接到互联网以获取最后的“更改日志”数据,因此您不必更新使用此命令的源。
2.4. 麦迪逊
另一个选项是rmadison
,它远程查询有关包的存档数据库,因此您不必在此选项中更新源。
首先安装其包:sudo apt install devscripts
,然后像这样使用它:
rmadison -s zesty -a amd64 wget
wget
它为您提供了适用于“zesty”和“amd64”架构的最新版本。
答案2
检查特定软件包是否有可用升级
可以apt-cache
这样使用,
$ apt-cache policy <package-name> # generic
$ apt-cache policy firefox # example with output
firefox:
Installed: 53.0.3+build1-0ubuntu0.16.04.2
Candidate: 53.0.3+build1-0ubuntu0.16.04.2
Version table:
*** 53.0.3+build1-0ubuntu0.16.04.2 500
500 http://se.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages
500 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages
100 /var/lib/dpkg/status
45.0.2+build1-0ubuntu1 500
500 http://se.archive.ubuntu.com/ubuntu xenial/main i386 Packages
更新源列表
更新列出来源
sudo apt-get update
或(较新的语法)
sudo apt update
升级包
升级特定软件包(以及支持新版本所需的一切)
sudo apt-get install <package-name>
或(较新的语法)
sudp apt install <package-name>
升级所有已安装的软件包
升级已安装的软件包(有可用升级)
sudo apt-get dist-upgrade
或(较新的语法)
sudo apt upgrade
或者
sudo apt full-upgrade
手册页
参见手册页
man apt-get
和
man apt
更多细节。
答案3
如果您希望只为特定软件包修补服务器,您可以这样做sudo apt-get install --only-upgrade <packagename>
。这将升级仅此一个包,并且仅有的是否已安装。然后您可以使用<packagename> --version
来验证已安装包的当前版本。您也可以使用dpkg -l | awk '$2=="<packagename>" { print $3 }'
来验证版本。