在 Ubuntu 8.04 服务器上安装 Python 2.6 的最快方法是什么?

在 Ubuntu 8.04 服务器上安装 Python 2.6 的最快方法是什么?

我刚刚设置了一个 Ubuntu 服务器,它似乎带有 Python 2.5。我一直在用 Python 2.6 开发我的应用程序,但apt-cache search ^python似乎不包含 2.6。更新存储库apt-get以包含包含 Python 2.6 的存储库的最快方法是什么?

(答案混合在回复/回复评论中:最快的方法是升级到 Ubuntu 9.04 或更高版本)

答案1

apt-get update; apt-get install python2.6

对我来说是可行的 [ jaunty ],但你可能有旧版本的 ubuntu。按照说明对 /etc/apt/sources.list 和 apt-get distr-upgrade 进行一些调整 这里

答案2

Ubuntu 有一个 Python 2.6 包,http://packages.ubuntu.com/search?keywords=python2.6,但仅适用于jauntykarmic版本。您可以获取该.deb文件并将其安装在以前的版本上,但可能会出现问题。

如果apt-get失败了,从源代码进行编译很简单:

# change this to latest on http://python.org/download/
PY_TWOSIX="http://python.org/ftp/python/2.6.2/Python-2.6.2.tgz"

# Required to compile anything - this is the only Ubuntu specific line
sudo apt-get install build-essential

# Download/extract the Python source file set in PY_TWOSIX
cd /tmp/
wget $PY_TWOSIX -O py.tgz
gunzip py.tgz
tar -xf py.tar
cd Python-*

# Configure, build and install it into /usr/local/python/2.6.2/
./configure --prefix=/usr/local/python/2.6.2
make
sudo make install

# Link python binary into /usr/local/bin/ as python2.6
sudo ln -s /usr/local/python/2.6.2/bin/python /usr/local/bin/python2.6
# you can also at add the directory to your $PATH rather than using sym-links

当然,您应该尝试通过包管理器安装所有内容(这样您就可以获得自动更新等),但我倾向于保留旧版本的 Python,将它们放入其中/usr/local/python/根本不会造成干扰apt-get

答案3

如果您的 Ubuntu 版本中没有某个软件包,那么从较新版本反向移植该软件包相当容易。例如:

让我们首先安装构建任何包所需的一些包:

apt-get 安装 build-essential devscripts

接下来我们获取源包装。在本例中,我们转到http://packages.ubuntu.com/jaunty/python2.6然后在右侧看到“下载源包”下有三个链接。您最终会得到一个 .tar.gz、一个 .diff.gz 和一个 .dsc 文件。

接下来我们解压源代码:

dpkg-source -x python2.6_2.6.2-0ubuntu1.dsc

这会将所有内容提取到一个目录中。如果您切换到该目录并查看我们是否可以使用当前安装的软件包来构建它。

卸载-us-uc-b

这要么需要一些时间,要么在源目录上方的目录中为您构建一些包。或者它会抱怨缺少构建依赖项。如果您很幸运,您可以安装它们并尝试再次构建包。如果您不走运,则包需要更新的包。您可以尝试按照相同的过程来构建构建依赖项,或者您可以尝试更改 debian/control 中的依赖项版本。如果您发现最终构建了太多包,因为包装尚未针对这些更改进行测试,我只会做后者。

获得软件包后,你可以运行

dpkg -i foo.deb bar.deb

如果它抱怨依赖性,您可以运行:

apt-get 安装 -f

这应该可以解决您的依赖问题。如果没有,您可能需要向后移植更多软件包。

答案4

这是哪个版本的 Ubuntu? StackOverflow 上有一篇(确实很老的)帖子,建议你必须从源代码执行此操作,但这取决于你的版本:这里

相关内容