我在哪里可以找到Subversion 1.7的二进制文件?

有人知道我可以获取Subversion 1.7 deb的ppa或源吗?

它昨天刚发布,所以我相信最终会出现一些东西。但是我觉得在这里发布时机成熟。

6个回答

从Ubuntu 12.10开始,子版本1.7作为发行版的一部分可用。可以使用apt-get安装Subversion。
sudo apt-get install subversion

对于早期版本的Ubuntu,可以在subversion-1.7找到一个ppa。可以按照以下步骤添加存储库:
sudo apt-add-repository ppa:dominik-stadler/subversion-1.7

获取最新版本的Subversion,更新并升级存储库。
sudo apt-get update
sudo apt-get upgrade

我还需要进行一次dist-upgrade。
sudo apt-get dist-upgrade

我假设你已经安装了Subversion,如果没有的话:
sudo apt-get install subversion

5嗯...根据仓库的说法,这些不是官方版本,所以不要指望这些二进制文件能有任何实用价值,它们只是为了测试Subversion 1.7的打包。听起来似乎还远未达到正式发布的时候。 - Twisted Pear
2@TwistedPear:也许吧,但是自从我在十一月发布这个帖子以来,这个ppa和它的二进制文件一直对我有效。 - Richard Povinelli
3他们很可能没问题,这是一种典型的警告,来自那些并不真正参与项目但为大家提供构建版本的聪明人。如果你不相信他的版本已经准备好了,似乎Subversion团队也有一个ppa,可以看看Waylon Flinn的回应。 - Nicholi
确认它仍然可用(并已更新至1.7.8版本)。在从1.6升级之前,请不要忘记执行svn cleanup [repo]命令,因为svn 1.7客户端无法清理旧的存储库。升级svn客户端后,运行svn upgrade [repo]命令来升级每个存储库的元数据。更多详细信息请参考http://stackoverflow.com/a/7754776/114900 - msanford
2使用“Subversion团队” PPA可以正确清理文件夹结构。它还已经包含了1.7.9版本的构建。 - Nikola Petkanski

还有一个由Subversion团队直接支持的ppa:"Subversion" team
您应该能够使用以下命令添加ppa:
sudo apt-add-repository ppa:svn/ppa

apt-add-repository命令是由python-software-properties软件包提供的,所以请确保首先安装它。
注意:RabbitVCS似乎在subversion 1.7上有问题:Rabbitvcs does not mark as versioned subfodlers/files in svn 1.7。这个问题已经在主干中修复,但尚未(目前)推送到构建版本中。

1不是说我不相信Dominik Stadler的库(虽然他似乎构建得更频繁),但我通常更喜欢开发者的构建版本。此外,RabbitVCS的注释对许多使用者来说可能很重要。 - Nicholi
这个存储库多年来没有更新。 - Brunis

Wandisco脚本实际上安装了一个包含用于安装SVN 1.7的.deb文件的新存储库。
通过执行以下命令几乎可以达到相同的效果:
sudo add-apt-repository 'deb http://opensource.wandisco.com/ubuntu lucid svn17'
sudo wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -    
sudo apt-get update    
sudo apt-get install subversion

3如果你遇到了sudo: add-apt-repository: command not found的错误提示信息,那么你需要安装python-software-properties:sudo apt-get install python-software-properties - svandragt
上述的软件仓库似乎已经失效了。我在11.10版本中添加了它,但在执行apt-get update时,出现了一系列无法访问的错误。最好还是从他们的网站上直接下载安装包。 - Twisted Pear
它还活着,精力充沛;关键是使用“lucid”而不是你实际的发布名称。他们只提供“lucid”的发布版本。并确保在/etc/apt/sources.list中删除/注释掉相应的deb-src行(如果有的话)。 - Afriza N. Arief
@afriza:使用一个为旧版Ubuntu构建的存储库真的是个好主意吗?Richard Povinelli的解决方案立即生效了。 - krlmlr

我已经按照Fernando所描述的使用了Wandisco二进制文件和apt源,但是现在下一个Ubuntu版本有官方更新到1.7的二进制文件,我想在继续使用12.04 LTS的同时使用这些。

将以下源添加到新文件/etc/apt/sources.list.d/svn17.list中:

deb http://archive.ubuntu.com/ubuntu/ quantal main universe
deb-src http://archive.ubuntu.com/ubuntu/ quantal main universe

然后根据https://help.ubuntu.com/community/PinningHowto上的建议,创建一个/etc/apt/apt.conf.d/90svn17文件:
APT::Default-Release "precise";

然后使用安装
sudo apt-get install -V subversion -t quantal

不确定这些新文件名是否遵循适当的惯例,但它可以工作。尝试首先固定配置文件,但没有成功。使用“-t quantal”时不需要固定。

关于固定细节有点离题,但是subversion 1.7从quantal版本开始在主要仓库中可用这一事实是很有价值的信息。谢谢! - clacke

当使用Trac时,您可能会在使用WANdisco仓库更新Subversion后遇到问题。其症状是Trac站点上显示以下消息:
警告:无法与仓库"(default)"同步(不支持的版本控制系统"svn":找不到模块名为svn)。请查看Trac日志以获取更多信息。
此软件包将svn绑定到python2.6,而Ubuntu 12.04则使用python2.7。以下是我解决该问题的脚本:
mkdir /usr/lib/python2.7/dist-packages/libsvn
for f in /usr/lib/pyshared/python2.6/libsvn/*; do ln -s $f /usr/lib/python2.7/dist-packages/libsvn/; done
for f in /usr/share/pyshared/libsvn/*; do ln -s $f /usr/lib/python2.7/dist-packages/libsvn/; done

mkdir /usr/lib/python2.7/dist-packages/svn
for f in /usr/share/pyshared/svn/*; do ln -s $f /usr/lib/python2.7/dist-packages/svn/; done

mkdir /usr/lib/pyshared/python2.7/libsvn
for f in /usr/lib/pyshared/python2.6/libsvn/*; do ln -s $f /usr/lib/pyshared/python2.7/libsvn/; done

目前还没有任何公共.deb可用。您可以尝试使用这个脚本从WANdisco安装1.7版本。

svn1.7_ubuntu_wandisco.sh

#!/bin/bash +x
# WANdisco Subversion Installer V0.1
# opensource@wandisco.com

echo WANdisco Subversion Installer v0.1 for Ubuntu 9.10, 10.04, 10.10
echo Please report problems and bugs to opensource@wandisco.com
echo 
echo Gathering some information about your system...

MINVERSION='1'
SVNVER='1.7.0'
ARCH=`uname -m`
SVNSTATUS=`dpkg -l|grep " libsvn1 " | awk '{print $1}'`

#functions
check_is_root ()
{
    if [[ $EUID -ne 0 ]]; then
        echo "This script must be run as root" 1>&2
        exit 1
    fi  
}
svn_remove_old ()
{
    echo Removing old packages...
    apt-get -y remove libsvn1 subversion libapache2-svn libsvn-dev libsvn-doc libsvn-perl subversion-tools 
}
add_repo_config ()
{
        echo Adding repository configuration to /etc/apt/sources.list.d/
    if [ -f /etc/apt/sources.list.d/WANdisco.list ]; then
        rm /etc/apt/sources.list.d/WANdisco.list
    fi
    echo "Installing Apt repo...."
    echo "# WANdisco Open Source Repo" > /etc/apt/sources.list.d/WANdisco.list
    echo "deb http://opensource.wandisco.com/ubuntu lucid svn17" >> /etc/apt/sources.list.d/WANdisco.list
        echo "Importing GPG key"
        wget http://opensource.wandisco.com/wandisco-debian.gpg -O /tmp/wandisco-debian.gpg &>/dev/null
        apt-key add /tmp/wandisco-debian.gpg
        rm -rf /tmp/wandisco-debian.gpg
        apt-get update
}
install_svn ()
{
        echo Checking to see if you already have Subversion installed via dpkg...
        if [ "$SVNSTATUS" == "ii" ]; then
        echo
            echo Subversion is already installed on the system.
            echo Do you wish to replace the version of subversion currently installed with the WANdisco version? 
        echo This action will remove the previous version from your system.
        echo -n "[y/N]: "
        read svn_install_confirm
        if [ "$svn_install_confirm" == "y" -o "$svn_install_confirm" == "Y" ]; then
            svn_remove_old
            add_repo_config
            echo        
            echo Installing Subversion $SVNVER-$MINVERSION
            echo
            apt-get -y --force-yes install subversion libsvn-perl subversion-tools
            echo -n "Would you like to install apache and the apache SVN modules? [y/N] "
            read dav_svn_confirm
            if [ "$dav_svn_confirm" == "y" -o "$dav_svn_confirm" == "Y" ]; then
                echo Installing apache and subversion modules
                apt-get -y --force-yes install apache2 libapache2-svn
                echo -n "Installation complete. Restart apache? [y/N] "
                read apache_restart_confirm
                if [ $apache_restart_confirm == "y" -o $apache_restart_confirm == "Y" ]; then
                    /etc/init.d/apache2 restart 
                fi
            fi

            else
            echo "Install Cancelled"
            exit 1
            fi

    else
        # Install SVN
        echo "Subversion is not currently installed"
        echo -n "Starting installation, are you sure you wish to continue? [y/N] "
        read svn_install_confirm
                if [ "$svn_install_confirm" == "y" -o "$svn_install_confirm" == "Y" ]; then
            add_repo_config
                        echo
                        echo Installing Subversion $SVNVER-$MINVERSION
                        echo
                        apt-get -y --force-yes install subversion libsvn-perl subversion-tools
                        echo -n "Would you like to install apache and the apache SVN modules? [y/N] "
                        read dav_svn_confirm
                        if [ "$dav_svn_confirm" == "y" -o "$dav_svn_confirm" == "Y" ]; then
                                echo Installing apache and subversion modules
                                apt-get -y --force-yes install apache2 libapache2-svn libsvn-dev
                                echo -n "Installation complete. Restart apache? [y/N] "
                                read apache_restart_confirm
                                if [ $apache_restart_confirm == "y" -o $apache_restart_confirm == "Y" ]; then
                                        /etc/init.d/apache2 restart
                                fi
                        fi

                else
                        echo "Install Cancelled"
                        exit 1
                fi

        fi

}

install_32 ()
{
        echo Installing for $ARCH
    install_svn
}
install_64 ()
{
        echo Installing for $ARCH
    install_svn
}

#Main
check_is_root

echo Checking your system architecture.
if [ "$ARCH" == "i686" -o "$ARCH" == "i386" ]; then
    install_32
elif [ "$ARCH" == "x86_64" ];
then
    install_64
else 
    echo Unsupported platform: $ARCH
    exit 1
fi

FYI. 上述脚本只是在Ubuntu 11.10上重新安装了旧的svn 1.6.12版本。 - Twisted Pear