Ubuntu中如何升级指定的包?

如题,我想升级Redis,从7.2升级到7.4。我查了下,apt-get upgrade是升级所有的包,但是我不需要升级所有的包,请问如何只升级Redis的包呢?

阅读 1.7k
avatarAI BotBETA

在Ubuntu中,如果你想要升级指定的包(比如Redis),你可以使用apt-get命令结合install参数,并通过指定包的版本来尝试安装新版本。然而,需要注意的是,Ubuntu的官方仓库中可能并不总是包含最新版本的软件。如果Redis 7.4不在你的Ubuntu版本的官方仓库中,你可能需要添加额外的PPA(个人软件包存档)或使用其他方式来安装新版本。

不过,这里有一个基本的命令来尝试升级Redis包(如果新版本已经在你的仓库中):

sudo apt-get update
sudo apt-get install redis-server=版本号

但是,这里有一个问题:通常你不会直接指定版本号后面的修订号(比如,你可能只会看到7.2而不是7.2.3这样的具体版本),并且apt-get install命令后直接跟版本号可能不总是按预期工作,特别是当仓库中没有那个确切版本时。

更常见的做法是先更新你的包索引(apt-get update),然后简单地使用apt-get install(不带版本号)来尝试升级所有可升级的包,或者对于特定的包,你可以使用apt-cache madison命令来查看可用版本,然后决定如何操作。

例如,查看Redis的可用版本:

apt-cache madison redis-server

如果7.4版本出现在列表中,你可以尝试直接安装它,但通常你会看到类似7.2这样的主要版本号。

如果Ubuntu的官方仓库中没有Redis的最新版本,你可能需要考虑以下选项之一:

  1. 使用PPA:查找是否有提供Redis新版本的PPA。
  2. 从源代码编译:从Redis的官方网站下载源代码,并按照其文档中的说明进行编译和安装。
  3. 使用Docker:在Docker容器中运行Redis的最新版本,这可以避免直接在你的系统上升级软件包的复杂性。

请注意,升级系统组件(如Redis)时,请确保你了解新版本可能带来的任何兼容性问题或配置更改。

3 个回答

Linux这种滚动发行的就是这样,要升级单独一个包,如果使用包管理器的更新命令,会将整个操作系统更新,这就是推荐的方式。

而且也是建议这么干的,如果你把新的Redis弄下来,Redis依赖的其他库与系统依赖的库冲突就比较麻烦。

我看你是从7.2->7.4,影响具体不清楚,但我不知道你的7.2怎么安装的。

1.如果你是源码编译安装
那你去拉7.4的源码,再次编译一下(make && make install),看能不能用

2.如果你是apt安装的
这次就不要apt了,你会破坏系统的依赖,你可以去下载tar包,解压出来后,给redis起个别名redis74这么使用,与原来的不冲突

3.如果你是dpkg安装的
你先看看你当前安装的7.2是不是跟你的系统匹配,有可能上一个人手动解决依赖了,你当前系统版本实际上应该是且他版本,如果正好是7.4,直接升级就行了

4.如果你是tar安装的
下载7.4tar放在另外的目录下,起个别名用就行了

最后上面都不是,或者你只是体验下新功能,直接docker跑一个就行了,影响最小,还没烦恼。

ubuntu 升级指定包的命令就是apt install <package_name>,和安装包是一个命令。

你可以使用 apt policy <package_name>命令列出所有可用的包版本,使用 apt install <package_name>=<version>升级或降级到具体某个版本,不写版本就是最新版本(最新版本通常是由policy的权重值算出来了,这个权重是可以修改的,这里不展开)

如果你想固定你的包版本为某个值,不希望被apt upgradeapt full-upgrade整体更新,可以使用 apt-mark hold <package_name> 标记该软件包版本由人工控制,不受到系统整体更新影响

sudo apt update
sudo apt-get install redis-server=7:4*

检查版本:

redis-server --version
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏