我需要在某个地方临时安装 subversion 1.5.1(例如在虚拟机中),以便将旧的基于 BDB 的 SVN 存储库转换为 FSFS。
到目前为止我尝试过的事情:
在 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
在 Ubuntu 10.04 VM 上执行此操作
apt-get install subversion
,希望它能够安装 subversion 1.5.XX,但由于 apt 错误而失败。尝试查找
.deb
适用于版本 1.5.1 的 debian/ubuntu 特定软件包,但未找到任何软件包。尝试使用此方法(可能有点幼稚?)从源代码构建:
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
。
我们一起做吧。
- 使用 chroot 进入
schroot -c lenny -u root
svn --version
在 chroot 中运行命令并得到:# svn --version svn, version 1.5.1 (r32289) compiled May 31 2011, 16:16:34 ...
确保
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),我们可能会在这里进一步帮助您。祝你好运!