我需要在某个地方临时安装 subversion 1.5.1(例如在虚拟机中),以便将旧的基于 BDB 的 SVN 存储库转换为 FSFS。
到目前为止我尝试过的事情:
在 Ubuntu 12.04 VM 上安装 subversion 1.6.XX
apt-get install subversion
这对我的旧仓库不利,因为:$ 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.
还有什么我应该尝试完成的吗?
在 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
. 所以根据日期(在distrowatch上检查) - 你需要 Debian 5.0 (lenny)。您可以在任何受支持的 Ubuntu 版本中为其创建schroot :
在 schroot 环境中更新软件包列表(按 忽略 KEYEXPIRED 消息y):
然后检查
subversion
-related 包:最后安装它们
如果您需要 chroot 到 Debian 5.0 (lenny) 环境,只需运行
schroot -c lenny -u root
.我们一起做吧。
schroot -c lenny -u root
svn --version
在 chroot 中运行命令并获取:确保
dpkg -l | egrep -i "svn|subversion"
在 chroot 中运行命令并获取:我录制了Asciinema cast来展示它是如何工作的。
似乎是有效的解决方案。Debian 万岁!
确实,我认为您不会轻易找到一个现在仍然有效的发行版,并且附带旧的颠覆......所以我认为从源代码构建可能是要走的路。
我认为您在从源代码构建时遇到的问题是您试图使用其构建目录中的依赖项而不是安装目录。因此,虽然链接器可能能够从那里找到已编译的库,但编译器可能无法找到它需要的包含文件......
我的建议是您将依赖项安装到系统(在 下
/usr/local
,这应该是默认值),然后尝试构建指向它们的 subversion。简而言之,对于 db 和 openssl:
对于颠覆:
如果您的依赖项
/usr/local
默认未安装到,请尝试传递--prefix=/usr/local
或类似于其配置脚本。我自己没有尝试过,所以细节可能有点偏离......但希望这足以解除对您的阻止。(请发表评论说明这是否有效!)
如果您仍然有诸如 之类的错误
configure: error: Berkeley DB not found.
,请查看config.log
其中应该向您显示./configure
失败时尝试执行的操作。滚动到最后,然后向上滚动包括输出在内的行,您可能会看到它正在尝试查找哪些文件或它正在尝试构建哪个 C 程序。在此处发布更多详细信息(或将您的全部内容发布config.log
到粘贴箱),我们可能会在此处为您提供进一步的帮助。祝你好运!