![如何在 Ubuntu Server 18.04 上将 sed 升级到 4.5?](https://linux22.com/image/1162217/%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%20Server%2018.04%20%E4%B8%8A%E5%B0%86%20sed%20%E5%8D%87%E7%BA%A7%E5%88%B0%204.5%EF%BC%9F.png)
我想sed
在 Ubuntu Server 18.04 上试用最新的实用程序。我尝试了以下命令,但仍然无法升级它。我该怎么做?
root@u1804:~# apt update
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:3 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB]
Get:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Fetched 311 kB in 7s (47.3 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
97 packages can be upgraded. Run 'apt list --upgradable' to see them.
root@u1804:~#
root@u1804:~# apt show sed
Package: sed
Version: 4.4-2
Priority: required
Essential: yes
Section: utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Clint Adams <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 328 kB
Pre-Depends: libc6 (>= 2.14), libselinux1 (>= 1.32)
Homepage: https://www.gnu.org/software/sed/
Task: minimal
Supported: 5y
Download-Size: 182 kB
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
Description: GNU stream editor for filtering/transforming text
sed reads the specified files or the standard input if no
files are specified, makes editing changes according to a
list of commands, and writes the results to the standard
output.
root@u1804:~#
root@u1804:~# apt install --only-upgrade sed
Reading package lists... Done
Building dependency tree
Reading state information... Done
sed is already the newest version (4.4-2).
0 upgraded, 0 newly installed, 0 to remove and 97 not upgraded.
root@u1804:~#
答案1
注意:撰写本文时,GNU sed 的最新版本是 4.7,而不是 4.5。
这里有一个替代选项:直接从源 tarball 进行编译,使用 GNU 源包的两个非常有用的功能。
- 您可以用您
sed
想要的任何其他名称安装新版本,这样它就不会干扰您当前的sed
;在这个答案中我将使用sed47
。 - 该
make uninstall
命令受支持,如果您不再需要它,可以干净地卸载它。
首先安装所有构建依赖项
sudo apt-get build-dep sed
获取源代码并提取
cd
wget ftp://ftp.gnu.org/gnu/sed/sed-4.7.tar.xz
tar xf sed-4.7.tar.xz
rm sed-4.7.tar.xz # optional
cd sed-4.7
配置、构建和安装。请注意--program-suffix
参数 to configure
,它告诉构建系统将其附加47
到所有可执行文件的名称中。
./configure --program-suffix=47
make
sudo make install
现在,您可以使用命令来使用新的 sed sed47
,使用 查阅其手册页man sed47
等。当/如果您想卸载它,请执行
cd ~/sed-4.7
sudo make uninstall
如果您删除了该sed-4.7
目录,您可以通过重复上述安装说明来重新创建它(至少最多make
)。
如果您想将其用作 sed 的“主要”版本,您可以创建一个别名:
alias sed=sed47
在这种情况下,我建议订阅info-gnu 邮件列表获取有关新版本的公告,其中可能包含重要的错误修复。
答案2
该sed
应用程序并不全面,因此您可以
从 Ubuntu 18.10 获取版本 4.5 (宇宙的)存储库。
通常不推荐这种方法,但如果您确定的话可以继续(您将无法通过这种方式安装此软件包的安全更新):
wget http://mirrors.kernel.org/ubuntu/pool/main/s/sed/sed_4.5-1_amd64.deb
sudo apt-get install ./sed_4.5-1_amd64.deb
因此,这些包将被列为本地安装。