升级Linux下的软件

升级Linux下的软件

我有一个名为 zlib 的程序需要升级。因为我之前从未下载过它,所以我怀疑它是 Ubuntu 附带的。

通常我只是下载并编译它,但是一个不同的工具(vcftools)将使用它,所以我不能只在本地安装它。我怀疑我要么需要

  1. 在某处安装新版本的 zlib 并告诉系统在我安装它的文件夹中查找 zlib。如果 zlib 向后兼容,我希望这应该没问题。

  2. 升级当前版本(但 sudo apt-get install 告诉我我有最新版本)

我该怎么做呢?谢谢。

答案1

我认为你有点把事情搞混了。zlib只是您的 Ubuntu 机器上另一个本地安装的软件包。我首先会查看 Ubuntu/Debian 存储库之一中是否有更新版本,zlib其中包含您可以为 Ubuntu/Debian 以及源自这两个发行版的其他操作系统安装(预构建)的所有软件。

$ apt-get install zlib

但在执行该命令之前,让我们仔细检查一下该包是否确实被调用zlib

$ dpkg -l |grep zlib
ii  zlib1g:amd64                              1:1.2.7.dfsg-13                           amd64        compression library - runtime

所以看起来这个包实际上被称为zlib1g.更新它:

$ apt-get install zlib1g
Reading package lists... Done
Building dependency tree       
Reading state information... Done
zlib1g is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 15 not upgraded.

所以我被困在那个特定版本上,或者没有更新的版本可用。

另一种方法

您可以相当轻松地下载最新版本的zlib1.2.8 并编译它,然后LD_LIBRARY_PATH临时将您的 指向这些库的编译版本。这将使您能够尝试它,而无需将其安装在您的系统上。

设置后LD_LIBRARY_PATH,您可以调用VCFtools来尝试它们。

下一步

您的下一个选择是找到包含较新版本 zlib1g 的第三方存储库,或者下载源包并使用它构建您自己的 .deb 文件。有许多关于如何设置您自己的包构建环境和构建您的第一个 .deb 文件的教程。这听起来比实际上更复杂。

答案2

发行版的给定版本附带了每个程序的给定版本。这就是发布的意义所在。 (有“滚动发布”发行版,您将所有时间都花在升级到每个软件的下一个版本上。如果您有更好的事情要做,请坚持使用已发布的发行版。)

zlib1g 软件包的版本Ubuntu 12.04(精确)中的版本是1.2.3.4,Ubuntu 12.10(量子)中的版本是1.2.7。您可以从 Ubuntu 网站下载源包(所有三个文件:.dsc.diff.gz.orig.tar.gz.debian.tar.gz),然后将该版本编译为包。

sudo apt-get install build-essential fakeroot
sudo apt-get build-dep zlib
dpkg-source zlib_1.2.7.dfsg-13.dsc
cd zlib-1.2.7.dfsg
dpkg-buildpackage -rfakeroot -us -uc -b -nc
sudo apt-get install ../zlib1g-1.2.7.*.deb

请注意,安装较新版本的库可能会导致不兼容。对于 zlib,我怀疑你会遇到问题,但这不是你应该轻易做的事情。

或者,在主目录中的某个位置安装该库的较新版本,并仅将其用于需要它的特定程序。如果您在 中编译并安装 zlib ~/lib/zlib1.2.8/lib,这里有一个合适的包装脚本:

#!/bin/sh
export LD_LIBRARY_PATH=~/lib/zlib1.2.8/lib
exec vcftools "$@"

相关内容