我如何安装 subversion 1.5.1(非常旧的版本)

我如何安装 subversion 1.5.1(非常旧的版本)

我需要在某个地方临时安装 subversion 1.5.1(例如在虚拟机中),以便将旧的基于 BDB 的 SVN 存储库转换为 FSFS。

到目前为止我尝试过的事情:

  1. 在 Ubuntu 12.04 VM 上安装apt-get install subversion了 subversion 1.6.XX,但对我的旧 repo 来说并不好,因为:

    $ svnadmin verify .
    svnadmin: Berkeley DB error for filesystem 'db' while opening environment:
    
    svnadmin: DB_VERSION_MISMATCH: Database environment version mismatch
    svnadmin: bdb: Program version 4.8 doesn't match environment version 4.6
    
  2. 在 Ubuntu 10.04 VM 上执行此操作apt-get install subversion,希望它能够安装 subversion 1.5.XX,但由于 apt 错误而失败。

  3. 尝试查找.deb适用于版本 1.5.1 的 debian/ubuntu 特定软件包,但未找到任何软件包。

  4. 尝试使用此方法(可能有点幼稚?)从源代码构建:

    sudo apt-get install gcc
    sudo apt-get install zip
    
    cd /tmp
    wget http://download.oracle.com/berkeley-db/db-4.6.21.zip
    unzip db-4.6.21.zip
    cd /tmp/db-4.6.21/build_unix
    ../dist/configure
    make
    
    cd /tmp
    wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8j.tar.gz
    tar -xvf openssl-0.9.8j.tar.gz
    cd /tmp/openssl-0.9.8j
    ./config no-asm
    make
    
    sudo apt-get install zlib1g-dev
    
    cd /tmp
    wget https://archive.apache.org/dist/subversion/subversion-1.5.1.tar.gz
    tar -xvf subversion-1.5.1.tar.gz
    wget https://archive.apache.org/dist/subversion/subversion-deps-1.5.1.tar.gz
    tar -xvf subversion-deps-1.5.1.tar.gz
    cd /tmp/subversion-1.5.1
    ./configure --without-apache --without-neon --without-swig --with-berkeley-db=/tmp/db-4.6.21/build_unix --with-ssl=/tmp/openssl-0.9.8j
    make
    

但经过多次反复尝试后,我仍然无法颠覆,./configure原因是:

configure: error: Berkeley DB not found.

我还应该尝试其他什么来完成此任务吗?

答案1

在 Ubuntu 上我们可以获得 Subversion 1.5.4,您已经知道这一点。

但根据内容http://archive.debian.org/debian/pool/main/s/subversion/我们有带 subversion 的 Debian 版本1.5.1dfsg1-7。这些文件的日期为2011-12-26 01:55。因此根据日期(检查日期为发行版观察) — 您需要 Debian 5.0 (lenny)。

您可以创建施鲁特在任何受支持的 Ubuntu 版本中:

sudo apt-get install schroot debootstrap -y

cat <<EOF | sudo tee /etc/schroot/chroot.d/lenny.conf
[lenny]
description=Debian 5 lenny
directory=/srv/chroot/lenny
root-users=$USER
type=directory
users=$USER
EOF

sudo mkdir -p /srv/chroot/lenny

sudo debootstrap lenny /srv/chroot/lenny http://archive.debian.org/debian

在 schroot 环境中更新软件包列表(按 忽略 KEYEXPIRED 消息y):

schroot -c lenny -u root apt-get update

然后检查subversion相关的包:

schroot -c lenny apt-cache policy subversion
subversion:
  Installed: (none)
  Candidate: 1.5.1dfsg1-7
  Version table:
     1.5.1dfsg1-7 0
        500 http://archive.debian.org lenny/main Packages

最后安装它们

schroot -c lenny -u root apt-get install subversion

如果您需要 chroot 到 Debian 5.0 (lenny) 环境,只需运行schroot -c lenny -u root

我们一起做吧。

  1. 使用 chroot 进入schroot -c lenny -u root
  2. svn --version在 chroot 中运行命令并得到:

    # svn --version            
    svn, version 1.5.1 (r32289)
    compiled May 31 2011, 16:16:34
    ...
    
  3. 确保dpkg -l | egrep -i "svn|subversion"在 chroot 中运行命令并获得:

    # dpkg -l | egrep -i "svn|subversion"
    ii  libsvn1                         1.5.1dfsg1-7             Shared libraries used by Subversion
    ii  subversion                      1.5.1dfsg1-7             Advanced version control system
    

我记录了海胆属来展示它是如何工作的。

似乎是个可行的解决方案。Debian 万岁!

答案2

确实,我认为你无法轻易找到一个现在仍然可以运行并且附带旧版本的发行版...所以我认为从源代码构建可能是可行的方法。

我认为您在从源代码构建时遇到的问题是您尝试使用其构建目录而不是安装目录中的依赖项。因此,虽然链接器可能能够从那里找到已编译的库,但编译器可能无法找到所需的包含文件...

我的建议是,您将依赖项安装到系统中(在下/usr/local,这应该是默认值),然后尝试构建指向它们的 subversion。

简而言之,对于 db 和 openssl:

sudo make install

对于 Subversion:

./configure --without-apache --without-neon --without-swig \
    --with-berkeley-db=/usr/本地--带有 SSL=/usr/本地

/usr/local如果您的依赖项未默认安装,请尝试传递--prefix=/usr/local或类似于它们的配置脚本。

我自己没有尝试过,所以细节可能有点不对……但希望这足以解除你的困扰。(请发表评论表明这是否有效!)

如果您仍然遇到错误,例如configure: error: Berkeley DB not found.,请查看内部,config.log它应该会向您展示./configure失败时尝试执行的操作。滚动到末尾,然后向上滚动包括输出在内的行,您可能能够看到它尝试查找哪些文件或尝试构建哪个 C 程序。在此处发布更多详细信息(或将您的全部内容发布config.log到 pastebin),我们可能会在这里进一步帮助您。祝你好运!

相关内容