Browse Source

完善安装脚本

docker-svn
witersen 3 years ago
parent
commit
48fcc3ea4c
  1. 120
      01.web/src/views/advance/index.vue
  2. 17
      01.web/src/views/repositoryInfo/index.vue
  3. 28
      02.php/api.php
  4. 11
      02.php/app/controller/Update.php
  5. 4
      02.php/app/service/Common.php
  6. 65
      02.php/app/service/Svn.php
  7. 2
      02.php/app/service/Svnrep.php
  8. 19
      02.php/app/service/Update.php
  9. 23
      02.php/config/daemon.php
  10. 18
      02.php/config/svn.php
  11. 6
      02.php/config/update.php
  12. 2
      02.php/config/version.php
  13. 341
      02.php/server/install.php
  14. 15
      02.php/server/old.json
  15. 58
      02.php/server/svnadmind.php
  16. 81
      02.php/server/update.json
  17. 492
      02.php/templete/install/WANdisco/subversion_installer_1.10.0.sh
  18. 492
      02.php/templete/install/WANdisco/subversion_installer_1.10.2.sh
  19. 495
      02.php/templete/install/WANdisco/subversion_installer_1.10.sh
  20. 492
      02.php/templete/install/WANdisco/subversion_installer_1.11.sh
  21. 492
      02.php/templete/install/WANdisco/subversion_installer_1.14.1.sh
  22. 484
      02.php/templete/install/WANdisco/subversion_installer_1.8.sh
  23. 484
      02.php/templete/install/WANdisco/subversion_installer_1.9.7.sh
  24. 484
      02.php/templete/install/WANdisco/subversion_installer_1.9.9.sh
  25. 489
      02.php/templete/install/WANdisco/subversion_installer_1.9.sh
  26. 1
      02.php/templete/svnserve/svnserve
  27. 11
      02.php/templete/svnserve/svnserve.service

120
01.web/src/views/advance/index.vue

@ -245,9 +245,6 @@ @@ -245,9 +245,6 @@
<Icon type="md-close" slot="close"></Icon>
</Switch>
</Col>
<!-- <Alert
>默认情况下如果服务器支持TLS加密则会自动使用TLS加密推荐在某些情况下由于服务器配置错误可能会导致问题则需要将其禁用</Alert
> -->
</Row>
</FormItem>
<FormItem label="SMTP用户名" v-if="formMailSmtp.auth">
@ -345,7 +342,12 @@ @@ -345,7 +342,12 @@
</Row>
</FormItem>
<FormItem>
<Button type="primary" :loading="loadingEditPush" @click="EditPush">保存</Button>
<Button
type="primary"
:loading="loadingEditPush"
@click="EditPush"
>保存</Button
>
</FormItem>
</Form>
</Card>
@ -354,44 +356,42 @@ @@ -354,44 +356,42 @@
<Card :bordered="false" :dis-hover="true" style="width: 600px">
<Form :label-width="140">
<FormItem label="当前版本">
<Badge> v2.3 </Badge>
</FormItem>
<FormItem label="支持PHP-FPM版本">
<Row>
<Col span="12">
<span>5.4+</span>
</Col>
</Row>
<Badge> {{ version.current_verson }} </Badge>
</FormItem>
<FormItem label="支持PHP-CLI版本">
<FormItem label="支持PHP版本">
<Row>
<Col span="12">
<span>5.4+</span>
<span>{{ version.php_version }}</span>
</Col>
</Row>
</FormItem>
<FormItem label="支持数据库">
<Row>
<Col span="12">
<span>MySQLsqlite</span>
<span>{{ version.database }}</span>
</Col>
</Row>
</FormItem>
<FormItem label="开源地址">
<Row>
<Badge>
<a href="" target="_blank">GitHub</a>
<a :href="version.github" target="_blank">GitHub</a>
</Badge>
</Row>
<Row>
<Badge>
<a href="" target="_blank">Gitee</a>
<a :href="version.gitee" target="_blank">Gitee</a>
</Badge>
</Row>
</FormItem>
<FormItem>
<Tooltip max-width="300" content="111" placement="top" transfer>
<Button type="primary" @click="CheckUpdate()"
<Tooltip
max-width="300"
content="此操作是通过读取位于GitHub和Gitee公开仓库(witersen/update)的配置文件进行软件更新检测 所以需要软件所在主机能够访问外网"
placement="top"
transfer
>
<Button type="primary" :loading="loadingCheckUpdate" @click="CheckUpdate()"
>检测更新</Button
>
</Tooltip>
@ -401,6 +401,34 @@ @@ -401,6 +401,34 @@
</TabPane>
</Tabs>
</Card>
<Modal v-model="modalSofawareUpdateGet" title="最新版本信息">
<Form ref="formSoftwareNew" :model="formSoftwareNew" :label-width="90">
<FormItem label="最新版本">
<Badge dot>
{{ formSoftwareNew.latestVersion }}
</Badge>
</FormItem>
<FormItem label="升级类型">
<Badge>
{{ formSoftwareNew.updateStep }}
</Badge>
</FormItem>
<FormItem label="修复bug">
<i-input
v-html="formSoftwareNew.fixedContent"
type="textarea"
autosize
></i-input>
</FormItem>
<FormItem label="新增功能">
<i-input
v-html="formSoftwareNew.newContent"
type="textarea"
autosize
></i-input>
</FormItem>
</Form>
</Modal>
</div>
</template>
@ -433,9 +461,15 @@ export default { @@ -433,9 +461,15 @@ export default {
currentAdvanceTab: "1",
/**
*
* 版本信息
*/
listPush: [],
version: {
current_verson: "2.3",
php_version: "5.5 <= PHP < 8.0",
database: "MYSQL、SQLite",
github: "https://github.com/witersen/svnAdminV2.0",
gitee: "https://gitee.com/witersen/SvnAdminV2.0",
},
/**
* 加载
@ -455,7 +489,9 @@ export default { @@ -455,7 +489,9 @@ export default {
//
loadingEditEmail: false,
//
loadingEditPush:false,
loadingEditPush: false,
//
loadingCheckUpdate:false,
/**
* subversion信息
@ -471,13 +507,17 @@ export default { @@ -471,13 +507,17 @@ export default {
},
/**
*
* list
*/
//
configList: [],
//
listPush: [],
/**
* 对话框
*/
modalSofawareUpdateGet: false,
/**
* 表单
@ -504,6 +544,14 @@ export default { @@ -504,6 +544,14 @@ export default {
// from: "",
status: false,
},
//
formSoftwareNew: {
newContent: "",
latestVersion: "",
fixedContent: "",
updateType: "",
updateStep: "",
},
};
},
computed: {},
@ -958,6 +1006,32 @@ export default { @@ -958,6 +1006,32 @@ export default {
that.$Message.error("出错了 请联系管理员!");
});
},
//
CheckUpdate() {
var that = this;
that.loadingCheckUpdate = true;
var data = {};
that.$axios
.post("/api.php?c=Update&a=CheckUpdate&t=web", data)
.then(function (response) {
that.loadingCheckUpdate = false;
var result = response.data;
if (result.status == 1) {
if (result.data != "") {
that.formSoftwareNew = result.data;
that.modalSofawareUpdateGet = true;
} else {
that.$Message.success(result.message);
}
} else {
that.$Message.error(result.message);
}
})
.catch(function (error) {
that.loadingCheckUpdate = false;
console.log(error);
});
},
},
};
</script>

17
01.web/src/views/repositoryInfo/index.vue

@ -264,10 +264,7 @@ @@ -264,10 +264,7 @@
@click="DownloadRepBackup(row.fileName)"
>下载</Button
>
<Button
type="error"
size="small"
@click="DelRepBackup(row.fileName)"
<Button type="error" size="small" @click="DelRepBackup(row.fileName)"
>删除</Button
>
</template>
@ -1077,6 +1074,18 @@ export default { @@ -1077,6 +1074,18 @@ export default {
computed: {},
created() {},
mounted() {
// abort so it dose not look stuck
// window.onunload = () => {
// console.log('test-start');
// console.log(window.WritableStream);
// console.log(writer);
// console.log('test-end');
// writableStream.abort();
// // also possible to call abosrt on the writer you got from `getWriter()`
// writer.abort();
// };
this.GetStatus();
if (this.user_role_id == 1) {
this.GetRepList();

28
02.php/api.php

@ -3,10 +3,14 @@ @@ -3,10 +3,14 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 11:17:34
* @LastEditTime: 2022-05-08 21:43:14
* @Description: QQ:1801168257
*/
/**
* 需要PHP版本大于等于5.5同时小于8.0
*/
/**
* 开启错误信息 如需要调试 可取消注释
*/
@ -69,6 +73,28 @@ $payload = !empty($payload) ? json_decode($payload, true) : []; @@ -69,6 +73,28 @@ $payload = !empty($payload) ? json_decode($payload, true) : [];
* }
*/
//检测PHP版本
if (PHP_VERSION < '5.5') {
json1(200, 0, '支持的最低PHP版本为 5.5 而不是 ' . PHP_VERSION);
} else if (PHP_VERSION >= '8.0') {
json1(200, 0, '支持的最高PHP版本低于 8.0 而不是 ' . PHP_VERSION);
}
//检测open_basedir
if (ini_get('open_basedir') != '') {
json1(200, 0, '需要关闭open_basedir');
}
//检测禁用函数
$require_functions = ['shell_exec', 'passthru'];
$disable_functions = explode(',', ini_get('disable_functions'));
foreach ($disable_functions as $disable) {
if (in_array(trim($disable), $require_functions)) {
json1(200, 0, "需要的 $disable 函数被禁用");
}
}
//检测守护进程状态
$state = FunDetectState();
if ($state == 0) {

11
02.php/app/controller/Update.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 14:08:55
* @LastEditTime: 2022-05-07 19:42:42
* @Description: QQ:1801168257
*/
@ -27,15 +27,6 @@ class Update extends Base @@ -27,15 +27,6 @@ class Update extends Base
$this->ServiceUpdate = new ServiceUpdate();
}
/**
* 获取当前版本信息
*/
public function GetVersion()
{
$result = $this->ServiceUpdate->GetVersion();
json2($result);
}
/**
* 检测新版本
*/

4
02.php/app/service/Common.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 15:15:50
* @LastEditTime: 2022-05-08 13:50:51
* @Description: QQ:1801168257
*/
@ -126,7 +126,7 @@ class Common extends Base @@ -126,7 +126,7 @@ class Common extends Base
$this->Logs->InsertLog(
'用户注销',
'账号:' . $this->userName . 'IP地址:' . $_SERVER["REMOTE_ADDR"],
'账号:' . $this->userName . ' IP地址:' . $_SERVER["REMOTE_ADDR"],
$this->userName
);

65
02.php/app/service/Svn.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-05-06 21:38:12
* @LastEditTime: 2022-05-08 20:30:34
* @Description: QQ:1801168257
*/
@ -50,6 +50,45 @@ class Svn extends Base @@ -50,6 +50,45 @@ class Svn extends Base
]);
}
/**
* 获取Subversion的安装情况
*
* 0 未安装
* 1 已安装未运行
* 2 已安装运行中
* -1 未知
*/
public function GetSubversion()
{
//检测是否有正在运行的进程
$isRun = FunShellExec('ps auxf|grep -v "grep"|grep svnserve');
$isRun = $isRun['result'] == '' ? false : true;
//检测安装程序是否存在于环境变量
$isInstall = FunShellExec('whereis svnserve');
$isInstall = $isInstall['result'] == 'svnserve:' ? false : true;
//运行中+未加入环境变量
if ($isRun && !$isInstall) {
return 2;
}
//运行中+已加入环境变量
if ($isRun && $isInstall) {
return 1;
}
//未运行+未加入环境变量
if (!$isRun && !$isInstall) {
return 0;
}
//未运行+已加入环境变量
if (!$isRun && $isInstall) {
return 2;
}
}
/**
* 获取Subversion的详细信息
*/
@ -58,28 +97,10 @@ class Svn extends Base @@ -58,28 +97,10 @@ class Svn extends Base
//获取绑定主机、端口等信息
$bindInfo = $this->GetSvnserveListen();
//检测运行信息
$runInfo = FunShellExec('ps auxf|grep -v "grep"|grep svnserve');
$runInfo = $runInfo['result'];
//检测安装信息
$installInfo = file_exists('/usr/bin/svnserve');
//检测安装状态
//未知状态
$installInfo = -1;
if ($runInfo == '' && !$installInfo) {
//未安装
$installed = 0;
} else if ($runInfo == '' && $installInfo) {
//安装未启动
$installed = 1;
} else if ($runInfo != '' && $installInfo) {
//运行中
$installed = 2;
}
//获取安装和运行状态
$installed = $this->GetSubversion();
//检测subversion版本
//获取Subversion版本
$version = '-';
if ($installed != 0) {
$versionInfo = FunShellExec('svnserve --version');

2
02.php/app/service/Svnrep.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 17:03:32
* @LastEditTime: 2022-05-08 20:59:18
* @Description: QQ:1801168257
*/

19
02.php/app/service/Update.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:05
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 14:25:15
* @LastEditTime: 2022-05-07 20:01:24
* @Description: QQ:1801168257
*/
@ -16,23 +16,10 @@ class Update extends Base @@ -16,23 +16,10 @@ class Update extends Base
parent::__construct();
}
/**
* 获取当前版本信息
*/
public function GetVersion()
{
return message(200, 1, '成功', [
'current_verson' => $this->config_version['version'],
'github' => 'https://github.com/witersen/svnAdminV2.0',
'gitee' => 'https://gitee.com/witersen/SvnAdminV2.0',
'author' => 'https://www.witersen.com'
]);
}
/**
* 检测新版本
*/
public function CheckUpdate($payload)
public function CheckUpdate()
{
foreach ($this->config_update['update_server'] as $key => $value) {
$versionInfo = FunCurlRequest($value);
@ -60,7 +47,7 @@ class Update extends Base @@ -60,7 +47,7 @@ class Update extends Base
/**
* 确认更新
*/
public function StartUpdate($payload)
public function StartUpdate()
{
}
}

23
02.php/config/daemon.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 00:44:27
* @LastEditTime: 2022-05-08 21:44:53
* @Description: QQ:1801168257
*/
@ -36,25 +36,4 @@ return [ @@ -36,25 +36,4 @@ return [
* socket 处理并发的最大队列长度
*/
'SOCKET_LISTEN_BACKLOG' => 2000,
/**
* 当前程序支持的最低PHP版本
*/
'Required_PHP_VERSION' => '5.5',
/**
* CLI程序需要解除禁止的函数
*/
'CLI_NEEDED_FUNCTION' => [
'pcntl_fork',
'pcntl_signal',
'pcntl_wait',
'shell_exec'
],
/**
* FPM模式需要解除禁止的函数
*/
'FPM_NEEDED_FUNCTION' => [],
];

18
02.php/config/svn.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 01:25:25
* @LastEditTime: 2022-05-08 23:33:10
* @Description: QQ:1801168257
*/
@ -55,17 +55,27 @@ return [ @@ -55,17 +55,27 @@ return [
'svn_passwd_file' => $home_path . 'passwd',
/**
* 备份文件夹
* svnserve pid文件
*/
'svnserve_pid_file' => $home_path . 'svnserve.pid',
/**
* svnserve 自启动文件
*/
'svnserve_service_file' => '/usr/lib/systemd/system/svnserve.service',
/**
* 备份目录
*/
'backup_base_path' => $backup_base_path,
/**
* 日志文件夹
* 日志目录
*/
'log_base_path' => $log_base_path,
/**
* svnserve运行日志
* svnserve 运行日志文件
*/
'svnserve_log_file' => $log_base_path . 'svnserve.log',

6
02.php/config/update.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 01:13:58
* @LastEditTime: 2022-05-08 15:18:04
* @Description: QQ:1801168257
*/
@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
*/
return [
'update_server' => [
'https://gitee.com/witersen/update/raw/master/SvnAdmin/update.json',
'https://raw.githubusercontent.com/witersen/update/master/SvnAdmin/update.json'
'https://gitee.com/witersen/update/raw/master/SvnAdmin/update2.json',
'https://raw.githubusercontent.com/witersen/update/master/SvnAdmin/update2.json'
]
];

2
02.php/config/version.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-03 16:16:55
* @LastEditTime: 2022-05-07 20:04:23
* @Description: QQ:1801168257
*/

341
02.php/server/install.php

@ -0,0 +1,341 @@ @@ -0,0 +1,341 @@
<?php
/*
* @Author: witersen
* @Date: 2022-05-08 13:31:07
* @LastEditors: witersen
* @LastEditTime: 2022-05-08 23:48:45
* @Description: QQ:1801168257
*/
/**
* 安装和升级程序
*/
/**
* 将工作模式限制在cli模式
*/
if (!preg_match('/cli/i', php_sapi_name())) {
exit('require php-cli mode');
}
define('BASE_PATH', __DIR__);
require_once BASE_PATH . '/../app/util/Config.php';
require_once BASE_PATH . '/../config/database.php';
require_once BASE_PATH . '/../config/reg.php';
require_once BASE_PATH . '/../config/svn.php';
require_once BASE_PATH . '/../config/update.php';
require_once BASE_PATH . '/../config/version.php';
require_once BASE_PATH . '/../app/function/curl.php';
class Install
{
private $config_database;
private $config_reg;
private $config_svn;
private $config_update;
private $config_version;
private $scripts = [
[
'index' => 1,
'note' => '帮我安装并配置Subversion'
],
[
'index' => 2,
'note' => '按照本系统的要求初始化Subversion(针对以其它方式安装的Subversion)'
],
[
'index' => 3,
'note' => '检测SVNAdmin的新版本'
],
];
function __construct()
{
Config::load(BASE_PATH . '/../config/');
$this->config_database = Config::get('database');
$this->config_reg = Config::get('reg');
$this->config_svn = Config::get('svn');
$this->config_update = Config::get('update');
$this->config_version = Config::get('version');
}
/**
* 检测SVNAdmin的新版本并选择更新
*/
function DetectUpdate()
{
//拿到升级服务器配置信息
//对升级服务器地址进行轮询
//获取当前版本可升级的版本信息
foreach ($this->config_update['update_server'] as $value) {
//检测
$versionInfo = FunCurlRequest($value);
//未超时
if ($versionInfo != null) {
//json转换
$versionInfo = json_decode($versionInfo, true);
$latestVersion = $versionInfo['latestVersion'];
if ($latestVersion == $this->config_version['version']) {
return message(200, 1, '当前版本为最新版');
} else if ($latestVersion > $this->config_version['version']) {
return message(200, 1, '有更新', [
'latestVersion' => $versionInfo['latestVersion'],
'fixedContent' => implode('<br>', $versionInfo['fixedContent']) == '' ? '暂无内容' : implode('<br>', $versionInfo['fixedContent']),
'newContent' => implode('<br>', $versionInfo['newContent']) == '' ? '暂无内容' : implode('<br>', $versionInfo['newContent']),
'updateType' => $versionInfo['updateType'],
'updateStep' => $versionInfo['updateStep']
]);
} else if ($latestVersion < $this->config_version['version']) {
return message(200, 0, '系统版本错误');
}
}
}
return message(200, 0, '检测更新超时');
}
/**
* 升级到指定版本的SVNAdmin
*/
function UpdateSVNAdmin()
{
}
/**
* 将SVNAdmin加入到开机自启动
*/
function InitlSVNAdmin()
{
}
/**
* 将SVNAdmin取消开机自启动
*/
function UninitSVNAdmin()
{
}
/**
* 将SVNAdmin加入监控 如果检测到异常退出则自动重启
*/
function Monitor()
{
}
/**
* 卸载Subversion
*/
function UninstallSubversion()
{
}
/**
* 获取当前安装的Subversion信息
*/
function DetectSubversion()
{
}
/**
* 修改已经安装的Subversion配置以适合SVNAdmin的管理
*/
function ConfigSubversion()
{
/**
* 1、检测Subversion的安装情况
*/
//检测是否有正在运行的进程
$isRun = shell_exec('ps auxf|grep -v "grep"|grep svnserve') == '' ? false : true;
//检测安装程序是否存在于环境变量
$installPath = shell_exec('which svnserve');
$isInstall = shell_exec('whereis svnserve') == 'svnserve:' ? false : true;
//正在运行中但是没有安装或者subversion的相关程序没有被加入环境变量
if ($isRun && !$isInstall) {
exit('需要将Subversion相关程序加入到环境变量后重试!' . PHP_EOL);
}
//正在运行中并且subversion的相关程序已经被加入环境变量
if ($isRun && $isInstall) {
//停止svnserve
exit('请先手动停止正在运行的svnserve程序后重试' . PHP_EOL);
}
//不在运行中并且没有安装或者subversion的相关程序没有被加入环境变量
if (!$isRun && !$isInstall) {
exit('需要安装Subversion或者需要将已安装的Subversion相关程序加入到环境变量后重试!' . PHP_EOL);
}
//不在运行中并且subversion的相关程序已经被加入环境变量
if (!$isRun && $isInstall) {
//相关文件配置
}
/**
* 相关文件配置
*/
$templete_path = BASE_PATH . '../templete/';
//创建SVNAdmin软件配置信息的主目录
mkdir($this->config_svn['home_path'], 0700, true);
//创建SVN仓库父目录
mkdir($this->config_svn['rep_base_path'], 0700, true);
//创建备份目录
mkdir($this->config_svn['home_path'], 0700, true);
//创建日志目录
mkdir($this->config_svn['home_path'], 0700, true);
//创建临时数据目录
mkdir($this->config_svn['home_path'], 0700, true);
//写入svnserve环境变量文件
$con_svnserve_env_file = file_get_contents($templete_path . 'svnserve/svnserve');
$con_svnserve_env_file = sprintf($con_svnserve_env_file, $this->config_svn['rep_base_path'], $this->config_svn['svn_conf_file'], $this->config_svn['svnserve_log_file']);
file_put_contents($this->config_svn['svnserve_env_file'], $con_svnserve_env_file);
//写入SVN仓库权限配置文件
$con_svn_conf_file = file_get_contents($templete_path . 'svnserve/svnserve.confg');
file_put_contents($this->config_svn['svn_conf_file'], $con_svn_conf_file);
//写入authz文件
$con_svn_authz_file = file_get_contents($templete_path . 'svnserve/authz');
file_put_contents($this->config_svn['svn_authz_file'], $con_svn_authz_file);
//写入passwd文件
$con_svn_passwd_file = file_get_contents($templete_path . 'svnserve/passwd');
file_put_contents($this->config_svn['svn_passwd_file'], $con_svn_passwd_file);
//创建svnserve运行日志文件
file_put_contents($this->config_svn['svnserve_log_file'], '');
//创建pid文件
file_put_contents($this->config_svn['svnserve_pid_file'], '');
/**
* 将svnserve注册为系统服务
*/
echo '===============================================' . PHP_EOL;
echo '清理之前注册的svnserve服务' . PHP_EOL;
shell_exec('systemctl stop svnserve.service');
shell_exec('systemctl disable svnserve.service');
echo '===============================================' . PHP_EOL;
$con_svnserve_service_file = file_get_contents($templete_path . 'svnserve/svnserve.service');
$con_svnserve_service_file = sprintf($con_svnserve_service_file, $this->config_svn['svnserve_env_file'], trim($installPath), $this->config_svn['svnserve_pid_file']);
file_put_contents($this->config_svn['svnserve_service_file'], $con_svnserve_service_file);
//启动
echo '===============================================' . PHP_EOL;
echo '开始启动svnserve服务' . PHP_EOL;
passthru('systemctl start svnserve');
echo '===============================================' . PHP_EOL;
//开机自启动
echo '===============================================' . PHP_EOL;
echo '将svnserve服务加入到开机自启动' . PHP_EOL;
passthru('systemctl enable svnserve');
echo '===============================================' . PHP_EOL;
//查看状态
echo '===============================================' . PHP_EOL;
echo 'svnserve安装成功,打印运行状态:' . PHP_EOL;
passthru('systemctl status svnserve');
echo '===============================================' . PHP_EOL;
}
/**
* 程序入口
*/
function Run()
{
echo '===============SVNAdmin==================' . PHP_EOL;
foreach ($this->scripts as $value) {
echo '(' . $value['index'] . ')' . $value['note'] . PHP_EOL;
}
echo '===============================================' . PHP_EOL;
echo '请输入命令编号:';
$answer = trim(fgets(STDIN));
echo '===============================================' . PHP_EOL;
if (!in_array($answer, array_column($this->scripts, 'index'))) {
exit('错误的命令编号:' . PHP_EOL);
}
if ($answer == 1) {
//帮我安装并配置Subversion
$shellPath = BASE_PATH . '/../templete/install/WANdisco/';
if (!is_dir($shellPath)) {
exit('安装脚本目录不存在!' . PHP_EOL);
}
$shell = scandir($shellPath);
echo '可选择的Subversion版本如下:' . PHP_EOL;
$noShell = true;
foreach ($shell as $value) {
if ($value == '.' || $value == '..') {
continue;
}
$noShell = false;
echo $value . PHP_EOL;
}
if ($noShell) {
exit('没有可选的安装脚本!' . PHP_EOL);
}
echo '===============================================' . PHP_EOL;
echo '请注意SVNAdmin支持管理的Subversion版本为1.8+!' . PHP_EOL;
echo '请输入要安装的Subversion版本(推荐Subversion-1.10):';
$answer = trim(fgets(STDIN));
echo '===============================================' . PHP_EOL;
if (!file_exists($shellPath . 'subversion_installer_' . $answer . '.sh')) {
exit('请选择正确的版本!' . PHP_EOL);
}
echo '现在开始执行脚本:' . 'subversion_installer_' . $answer . '.sh' . PHP_EOL;
echo '===============================================' . PHP_EOL;
passthru('sh ' . $shellPath . 'subversion_installer_' . $answer . '.sh');
$this->ConfigSubversion();
} else if ($answer == 2) {
//按照本系统的要求初始化Subversion(针对以其它方式安装的Subversion)
$this->ConfigSubversion();
} else if ($answer == 3) {
//检测SVNAdmin的新版本
}
}
}
(new Install())->Run();

15
02.php/server/old.json

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
{
"latestVersion": "2.3",
"fixedContent": [
""
],
"newContent": [
""
],
"updateType": "1",
"updateStep": "需要管理员手动更新 1、基于现有版本手动升级的用户 (1)停止守护进程 php svnadmind.php stop (2)删除当前版本的程序代码 (3)按照GitHub文档进行全新安装 2、全新安装的用户 (1)按照GitHub文档进行全新安装",
"releaseNode": {
"gitee": "",
"github": ""
}
}

58
02.php/server/svnadmind.php

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
* @Author: witersen
* @Date: 2022-04-24 23:37:06
* @LastEditors: witersen
* @LastEditTime: 2022-05-07 19:33:17
* @LastEditTime: 2022-05-08 21:45:35
* @Description: QQ:1801168257
*/
@ -199,26 +199,25 @@ class Daemon @@ -199,26 +199,25 @@ class Daemon
*/
private function CheckPhpVersion()
{
if (PHP_VERSION < $this->config_daemon['Required_PHP_VERSION']) {
exit('启动失败:当前的PHP版本为:' . PHP_VERSION . ',要求的最低PHP版本为:' . $this->config_daemon['Required_PHP_VERSION'] . PHP_EOL);
if (PHP_VERSION < '5.5') {
exit('支持的最低PHP版本为 5.5 而不是 ' . PHP_VERSION . PHP_EOL);
} else if (PHP_VERSION >= '8.0') {
exit('支持的最高PHP版本低于 8.0 而不是 ' . PHP_VERSION . PHP_EOL);
}
}
/**
* 检查需要的函数是否被禁用
* 检查cli模式需要的函数是否被禁用
*/
private function CheckDisabledFun()
{
$disabled_function = explode(',', ini_get('disable_functions'));
$cli_needed_function = $this->config_daemon['CLI_NEEDED_FUNCTION'];
foreach ($cli_needed_function as $key => $value) {
if (!in_array($value, $disabled_function)) {
unset($cli_needed_function[$key]);
$require_functions = ['shell_exec', 'passthru', 'pcntl_signal', 'pcntl_fork', 'pcntl_wait'];
$disable_functions = explode(',', ini_get('disable_functions'));
foreach ($disable_functions as $disable) {
if (in_array(trim($disable), $require_functions)) {
exit("启动失败:需要的 $disable 函数被禁用");
}
}
if (!empty($cli_needed_function)) {
exit('启动失败:需要的以下函数被禁用:' . PHP_EOL . implode(' ', $cli_needed_function) . PHP_EOL);
}
}
/**
@ -230,6 +229,41 @@ class Daemon @@ -230,6 +229,41 @@ class Daemon
file_put_contents(BASE_PATH . '/../config/sign.php', $signCon);
}
/**
* 检测升级
*/
private function SelectUpdate()
{
}
/**
* 升级到指定版本
*/
private function Update()
{
}
/**
* 安装SVNAdmin
*/
private function InstallSVNAdmin()
{
}
/**
* 安装Subversion
*/
private function InstallSubversion()
{
}
/**
* 初始化Subversion
*/
private function InitSubversion()
{
}
/**
* 以守护进程模式工作
*/

81
02.php/server/update.json

@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
{
"version": "2.3",
"number": 8,
"fixd": {
"con": [
{
"title": "1",
"content": "修复SVN仓库权限配置的bug"
},
{
"title": "2",
"content": "完善用户权限控制逻辑"
}
]
},
"add": {
"con": [
{
"title": "1",
"content": "支持文件级授权"
},
{
"title": "2",
"content": "支持目录浏览"
},
{
"title": "3",
"content": "支持仓库备份与恢复"
},
{
"title": "4",
"content": "支持SVN用户禁用与启动"
},
{
"title": "5",
"content": "支持用户级日志记录"
},
{
"title": "6",
"content": "兼容PHP5.5+"
}
]
},
"remove": {
"con": [
{
"title": "1",
"content": "暂时移除仓库钩子的配置功能"
}
]
},
"update": {
"rely": {
"version": {
"SVNAdmin": []
}
},
"step": [
{
"title": "1",
"content": "php ${your_path}/server/install.php"
}
],
"release": {
"download": [
{
"nodeName": "gitee.com",
"releaseUrl": ""
},
{
"nodeName": "github.com",
"releaseUrl": ""
},
{
"nodeName": "witersen.com",
"releaseUrl": "https://download.witersen.com/SVNAdmin/SVNAdmin-2.3.zip"
}
]
}
}
}

492
02.php/templete/install/WANdisco/subversion_installer_1.10.0.sh

@ -0,0 +1,492 @@ @@ -0,0 +1,492 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.10.0-2
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
if [ OSNAME="stretch" ] || [ OSNAME="bionic" ]
then
wget -q -O - http://$REPO_SERVER/wandisco-debian-new.gpg | \
apt-key add - >/dev/null 2>&1
else
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
fi
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

492
02.php/templete/install/WANdisco/subversion_installer_1.10.2.sh

@ -0,0 +1,492 @@ @@ -0,0 +1,492 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.10.2-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
if [ OSNAME="stretch" ] || [ OSNAME="bionic" ]
then
wget -q -O - http://$REPO_SERVER/wandisco-debian-new.gpg | \
apt-key add - >/dev/null 2>&1
else
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
fi
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

495
02.php/templete/install/WANdisco/subversion_installer_1.10.sh

@ -0,0 +1,495 @@ @@ -0,0 +1,495 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.10.7-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7|8) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
if [ $OSNAME = "stretch" ] || [ $OSNAME = "bionic" ]
then
wget -q -O - http://$REPO_SERVER/wandisco-debian-new.gpg | \
apt-key add - >/dev/null 2>&1
else
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
fi
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
if [ $OSVER = "8" ]
then yum module disable subversion -y
fi
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

492
02.php/templete/install/WANdisco/subversion_installer_1.11.sh

@ -0,0 +1,492 @@ @@ -0,0 +1,492 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.11.1-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
if [ $OSNAME = "stretch" ] || [ $OSNAME = "bionic" ]
then
wget -q -O - http://$REPO_SERVER/wandisco-debian-new.gpg | \
apt-key add - >/dev/null 2>&1
else
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
fi
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

492
02.php/templete/install/WANdisco/subversion_installer_1.14.1.sh

@ -0,0 +1,492 @@ @@ -0,0 +1,492 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.14.1-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
if [ $OSNAME = "stretch" ] || [ $OSNAME = "bionic" ]
then
wget -q -O - http://$REPO_SERVER/wandisco-debian-new.gpg | \
apt-key add - >/dev/null 2>&1
else
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
fi
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

484
02.php/templete/install/WANdisco/subversion_installer_1.8.sh

@ -0,0 +1,484 @@ @@ -0,0 +1,484 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.8.19-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

484
02.php/templete/install/WANdisco/subversion_installer_1.9.7.sh

@ -0,0 +1,484 @@ @@ -0,0 +1,484 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.9.7-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

484
02.php/templete/install/WANdisco/subversion_installer_1.9.9.sh

@ -0,0 +1,484 @@ @@ -0,0 +1,484 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.9.9-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

489
02.php/templete/install/WANdisco/subversion_installer_1.9.sh

@ -0,0 +1,489 @@ @@ -0,0 +1,489 @@
#!/bin/bash
#
# WANdisco Subversion install script.
# Copyright (C) 2013 WANdisco plc
#
# Please contact opensource@wandisco.com if you have any problems with this
# script.
set -e
SVN_VERSION=1.9.12-1
REPO_SERVER=${REPO_SERVER:-opensource.wandisco.com}
ARCH=$(uname -m)
# Functions
function handle_error()
{
echo
echo "There has been an error, exiting"
exit 2
}
function check_connection()
{
if which curl > /dev/null 2>&1; then
GET='curl -s -f'
elif which wget > /dev/null 2>&1; then
GET='wget -O - -q'
else
echo -n "You do not have curl or wget installed. At least one of these is "
echo "required to install WANdisco Subversion"
exit 1
fi
}
function check_root()
{
test $EUID -eq 0 ||
{
echo "You need to be root to install WANdisco subversion."
echo
echo "Please re-run this script as the root user."
exit 1
}
}
function unsupported()
{
echo "Your operating system is not currently supported."
echo
echo -n "Please visit http://www.wandisco.com/subversion/download for a list"
echo " of supported systems."
exit 1
}
function confirm()
{
local confirm=
local message=$1
local default=${2:-y}
local prompt=
test -n "$NON_INTERACTIVE" && return 0
prompt="$message ("
if test "$default" = "y"; then
prompt="${prompt}Y/n"
else
prompt="${prompt}y/N"
fi
prompt="$prompt) "
while test "$confirm" != "$default"; do
read -n 1 -p "$prompt" confirm
echo
confirm=${confirm:-$default}
confirm=${confirm/Y/y}
confirm=${confirm/N/n}
if test "$default" = "y"; then
test "$confirm" = "n" && return 1
test "$confirm" = "y" && return 0
else
test "$confirm" = "y" && return 1
test "$confirm" = "n" && return 0
fi
echo "Invalid input, please enter 'y' or 'n'"
done
return 0
}
function remove_other()
{
local other=$1
echo -n "You currently have subversion installed for another architecture "
echo -n "($other). This should be removed before installing "
echo "WANdisco Subversion."
echo
if ! confirm "Remove Subversion $other?"; then
echo "Exiting at user request"
exit 1
fi
case $OS in
rhel|centos) yum erase -y subversion.$other ;;
debian|ubuntu) apt-get -y --purge remove libsvn1:$other ;;
suse) zypper rm -y subversion.$other ;;
esac
return 0
}
function check_alternative_arch()
{
local other=
local confirm=
case $OS in
centos|rhel|suse)
for foreign in $(rpm --showrc | awk -F: '/compatible archs/{print $2}')
do
test "$foreign" = "$ARCH" && continue
if other=$(rpm -q --queryformat='%{arch}' \
subversion.$foreign 2>/dev/null); then
test -z "$other" && continue
remove_other $other
unset other
fi
done
;;
debian|ubuntu)
dpkg --print-foreign-architectures >/dev/null 2>&1 || return 0
ARCH=$(dpkg --print-architecture)
for foreign in $(dpkg --print-foreign-architectures); do
if other=$(dpkg-query -f '${Architecture}' -W libsvn1:$foreign \
2>/dev/null); then
remove_other $other
unset other
fi
done
;;
esac
test -z "$other" && return 0
return 0
}
function is_lsb()
{
which lsb_release >/dev/null 2>&1 || return 1
OS=$(lsb_release -si | tr A-Z a-z)
OS=${OS%% *}
OSVER=$(lsb_release -sr)
OSVER=${OSVER%%.*}
OSNAME=$(lsb_release -sc | tr A-Z a-z)
case $OS in
redhat*)
OS=rhel
;;
oracle*)
OS=rhel
;;
esac
return 0
}
function is_debian()
{
test -r /etc/debian_version || return 1
OS="debian"
OSVER=$(cat /etc/debian_version)
OSVER=${OSVER%%.*}
case "$OSVER" in
6) OSNAME="squeeze" ;;
7) OSNAME="wheezy" ;;
8) OSNAME="jessie" ;;
9) OSNAME="stretch" ;;
squeeze) OSNAME=$OSVER; OSVER=6 ;;
wheezy) OSNAME=$OSVER; OSVER=7 ;;
jessie) OSNAME=$OSVER; OSVER=8 ;;
stretch) OSNAME=$OSVER; OSVER=9 ;;
*) return 1 ;;
esac
return 0
}
function is_redhat()
{
local release=
test -r /etc/redhat-release || return 1
release=$(cat /etc/redhat-release | tr A-Z a-z)
OS=${release%% release *}
OSVER=${release##* release }
OSVER=${OSVER%%.*}
case $OS in
red*) OS="rhel" ;;
centos*) OS="centos" ;;
*) return 1 ;;
esac
return 0
}
function is_suse()
{
test -r /etc/SuSE-release || return 1
OS="suse"
OSVER=$(awk '$1 == "VERSION" {print $NF}' /etc/SuSE-release)
OSVER=${OSVER%%.*}
return 0
}
function is_oracle()
{
test -r /etc/oracle-release || return 1
OS="rhel"
OSVER=$(sed -e 's/.*release \([0-9]+\).*/\1/' /etc/oracle-release)
return 0
}
function find_os()
{
is_lsb && return 0
is_redhat && return 0
is_debian && return 0
is_suse && return 0
is_oracle && return 0
return 1
}
function check_os()
{
case $OS in
rhel|centos)
case $OSVER in
5|6|7|8) return 0 ;;
esac
;;
suse)
case $OSVER in
11|12) return 0 ;;
esac
;;
debian)
case $OSVER in
6|7|8|9) return 0 ;;
esac
;;
ubuntu)
case $OSVER in
10|12|14|16|18) return 0 ;;
esac
;;
esac
return 1
}
function find_pkg_version
{
case $OS in
rhel|centos|suse)
if ! PKG_VERSION=$(rpm -q --queryformat='%{version}-%{release}' \
subversion.$ARCH 2>/dev/null); then
return 1
fi
;;
debian|ubuntu)
PKG_VERSION=$(dpkg-query -f='${Version}' -W subversion 2>/dev/null)
PKG_VERSION=${PKG_VERSION%%+*}
;;
esac
return 0
}
function check_install()
{
if ! SVN=$(svn --version --quiet 2>/dev/null); then
echo "This script will install Subversion $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
fi
find_pkg_version ||
{
echo -n "You currently have Subversion $SVN installed, however it's not "
echo -n "been installed with your systems package manager. Please remove "
echo "this version of Subversion and re-run this script."
echo
exit 2
}
if test "$PKG_VERSION" = "$SVN_VERSION"; then
echo "You currently have the latest version of Subversion installed."
exit 0
fi
echo -n "You currently have Subversion $PKG_VERSION installed. If you "
echo "continue with the installation it will be upgraded to $SVN_VERSION."
echo
if ! confirm "Do you want to continue?"; then
echo
echo "Exiting at user request"
exit 1
fi
return 0
}
function configure_apt_repo()
{
PKG_INSTALLER="apt-get -y install"
PKG_LIST="subversion libsvn-perl python-subversion subversion-tools"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
rm -f /etc/apt/sources.list.d/WANdisco.list
cat <<EOF > /etc/apt/sources.list.d/WANdisco-$SVN_RELEASE.list
# WANdisco Open Source Repo
deb http://$REPO_SERVER/$OS $OSNAME $SVN_RELEASE
EOF
wget -q -O - http://$REPO_SERVER/wandisco-debian.gpg | \
apt-key add - >/dev/null 2>&1
apt-get update
}
function configure_yum_repo()
{
PKG_INSTALLER="yum install -y"
PKG_LIST="subversion.$ARCH subversion-perl subversion-python subversion-tools"
SVN_RELEASE="${SVN_VERSION%.*}"
rm -f /etc/yum.repos.d/WANdisco.repo /etc/yum.repos.d/WANdisco-rhel?.repo
cat <<EOF > /etc/yum.repos.d/WANdisco-svn$SVN_RELEASE.repo
[WANdisco-svn${SVN_RELEASE//\./}]
name=WANdisco SVN Repo $SVN_RELEASE
enabled=1
baseurl=http://$REPO_SERVER/$OS/$OSVER/svn-$SVN_RELEASE/RPMS/\$basearch/
gpgcheck=1
gpgkey=http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
EOF
if [ $OSVER = "8" ]
then yum module disable subversion -y
fi
yum makecache
}
function configure_zypp_repo()
{
PKG_LIST="subversion subversion-perl subversion-python subversion-tools"
PKG_LIST="$PKG_LIST subversion-ruby"
SVN_RELEASE=${SVN_VERSION%.*}
SVN_RELEASE="svn${SVN_RELEASE//\./}"
PKG_INSTALLER="zypper install -y -f --from WANdisco-$SVN_RELEASE"
rm -f /etc/zypp/repos.d/WANdisco-suse11.repo \
/etc/zypp/repos.d/WANdisco-svn.repo
zypper rr WANdisco-$SVN_RELEASE > /dev/null 2>&1
rpm -q gpg-pubkey-3bbf077a-51260c0f >/dev/null 2>&1 || \
rpm --import http://$REPO_SERVER/RPM-GPG-KEY-WANdisco
zypper addservice --type=YUM http://$REPO_SERVER/suse/$OSVER/$SVN_RELEASE/ \
WANdisco-$SVN_RELEASE
zypper refresh
}
function configure_repo()
{
case $OS in
debian|ubuntu) configure_apt_repo ;;
rhel|centos) configure_yum_repo ;;
suse) configure_zypp_repo ;;
esac
}
function check_mod_dav()
{
HAS_MOD_DAV=
case $OS in
rhel|centos|suse)
rpm -q mod_dav_svn > /dev/null 2>&1 && HAS_MOD_DAV=1
rpm -q subversion-server > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
debian|ubuntu)
dpkg-query -W libapache2-svn > /dev/null 2>&1 && HAS_MOD_DAV=1
return 0
;;
esac
}
function add_packages()
{
case $OS in
rhel|centos|suse) return 0 ;;
esac
PKG_LIST=$(dpkg-query -f '${Package} ${Source}\n' -W '*' | \
awk '$2 == "subversion" {print $1}')
return 0
}
function install_svn()
{
test -n "$SVN" && add_packages
$PKG_INSTALLER $PKG_LIST
}
function install_mod_dav()
{
test -n "$NO_MOD_DAV" && return 0
case $OS in
rhel|centos|suse) PKG_LIST="mod_dav_svn" ;;
debian|ubuntu) PKG_LIST="libapache2-svn" ;;
esac
$PKG_INSTALLER $PKG_LIST
}
# Main Script
trap handle_error ERR
cat <<EOF
:: :: :: # # ## #### ###### # ##### ##### #####
:::: :::: ::: # # # # ## ## # # # # # # # # #
::::::::::: ::: # # # # # # # # # # # # # #
::::::::::::: ::: # # # # # # # # # # # ##### # # #
::::::::::: ::: # # # # # # # # # # # # # # #
:::: :::: ::: ## ## # ## # # # # # # # # # # #
:: :: :: # # ## # # # ###### # ##### ##### #####
EOF
check_connection
find_os || unsupported
check_os || unsupported
check_root
check_alternative_arch
check_install
configure_repo
check_mod_dav
install_svn
echo "Subversion has been installed or upgraded successfully"
test -n "$HAS_MOD_DAV" && exit 0
echo
echo "Do you want to install the subversion server modules for apache?"
echo
if confirm "Install mod_dav_svn?"; then
install_mod_dav
fi
echo
echo "Installation complete"

1
02.php/templete/svnserve/svnserve

@ -1,2 +1 @@ @@ -1,2 +1 @@
//OPTIONS="-r /home/svnadmin/rep --config-file /home/svnadmin/svnserve.conf --log-file /home/svnadmin/logs/svnserve/svnserve.log"
OPTIONS="-r '%s' --config-file '%s' --log-file '%s' --listen-port 3690 --listen-host 0.0.0.0"

11
02.php/templete/svnserve/svnserve.service

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
[Unit]
Description=Subversion protocol daemon
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=%s
ExecStart=%s --daemon --pid-file=%s $OPTIONS
[Install]
WantedBy=multi-user.target
Loading…
Cancel
Save