Category Archives: tools

遗憾!mytget 无法加入 homebrew

mytget 是什么?

Linux下的下载工具,大家使用比较多的是wget,curl,而他们不支持多线程下载,所以产生了mytget,开始是由南开大学的xiaosuo写的,放在sf上。第一次知道这工具,是2007年在厦门网宿科技工作时同事介绍,用得很爽的一点是在不同的机房拷贝文件很快。

我觉得一个软件要有生命力,就需要不断的更新。似乎过了几年,mytget一直没有更新过,在新版本的Linux gcc高版本编译不通过,Linux新手一般遇到也不知道从何下手,也就放弃了尝试使用这个软件的机会。所以11年我就接手过来维护,放在github上,原作者也过来参与,时不时贡献点代码。

最近几年都在mac下工作,下载软件都是brew install,那干脆把 mytget 放入 homebrew。

git clone https://github.com/iboxpay/homebrew.git
brew create https://github.com/lytsing/mytget/archive/v1.1.2.tar.gz
git checkout -b mytget
brew audit --strict mytget
brew edit mytget
cp /usr/local/Library/Formula/mytget.rb  Library/Formula/
git add Library/Formula/mytget.rb
git commit -m "add Library/Formula/mytget.rb"
git push origin mytget

文件的sha256 通过 shasum -a 256 v1.1.2.tar.gz 获得,然后迫不及待的 创建 pull request。dunn review 代码,说要先去掉注释,以及增加 test 功能。brew create 生产的 mytget.rb 头部有说明:

PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!

没注意看,就提交 pull request了。最后还是被拒绝,说是小众工具,fork、star的数量都不超过10人。详情:https://github.com/Homebrew/homebrew/pull/42785

由此可见,搞开源对代码质量要求非常高,多个空格,空行都不行,review的结果就是:

“Remove all the comments, please!”
“Please remove this empty line.”
“Please remove the trailing space.”

事前跑一下 brew audit –strict mytget 检查配置文件。

LDAP 使用备忘录

我们的运维工程师搭建了一个AD, windows下的,公司工作的wifi 帐号密码接入了 LDAP,很方便实用。最近一段时间,总结了上班工作时间消耗分布,发现很多人都是给我发消息,svn密码忘记了,新员工开个git/svn 帐号,烦得不得了。幸好代码及时从svn转为git,有了gitlab,管理确实方便。本周一口气把研发的几个内部系统接入LDAP:

  • gitlab
  • svn
  • redmine
  • jenkins
  • zentao

我们使用windows  AD, 登录名属性是 sAMAccountName,如果使用openLDAP,则是uid。

配置jenkins才发现,root DN不能带有空格,否则死活连不上。jenkins 使用ldap后,超级管理员的帐号老是登录不上,后面干脆在 config.xml 配置文件,将 admin改为我自己的帐号。

禅道开源版有个 LDAP插件,一年没更新也是使用不了,fork 他的代码修改,见https://github.com/iboxpay/ldap ,主要是修改 系统管理员帐号admin跳过LDAP 认证,不影响正常管理使用。

搞配置管理一定要细心、耐心,出现问题,优先从系统日志查找审断并适当Google。禅道是其他同事管理的,他自己折腾了很久搞不定,找了半天,原来是  sAMAccountName 单词写错成 sAMAcountName。手动敲字不要太自信,很容易笔误 ,要ctrl+c,ctrl+ v 才行。

编码生成新浪微博短链接

短链接是个好东西,用在短信里省了不少文字。新浪微博API提供短链接的接口,但要申请weibo appkey ,一下子搞清楚什么是oAuth2.0,估计折腾一段时间。有现成的网页转换地址 http://www.henshiyong.com/tools/sina-shorten-url.php ,在此基础上修改即可。

用浏览器查看 的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
<title>在线版新浪微博短链接生成器</title>
<meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
<meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
<style type="text/css">
textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
body{text-align:center;margin:150px auto;}
</style>
</head>
<body>
<h2>请输入你需要转换的网页地址</h2>
<form action="" method="post">
<input type="" name="url" style="width:400px"/><br/>
<input type="submit" value="转换" name="submit">
</form>
</body>
</html>

小部队先上,用Ruby写个简单脚本,发 POST 请求。

[deli@violet ~]$ ruby sina-shorten-url.rb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset="UTF-8" />
<title>在线版新浪微博短链接生成器</title>
<meta name="description" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成,方便快捷完成您的URL转换!" />
<meta name="keywords" content="短链接生成器,新浪微博短连接生成器,在线版新浪微短连接生成" />
<style type="text/css">
textarea{border:5px solid;border-radius:8px 8px 0 0;width:400px;padding:8px;}
body{text-align:center;margin:150px auto;}
</style>
</head>
<body>
<h2>新浪短连接已经生成:</h2><textarea>http://t.cn/h51yw</textarea><h2>继续转换</h2></body>
</html>

提取 textarea 标签数据即可,使用正则表达式最方便的了。

svnlook: Expected FS format ‘2’; found format ‘4’

原来在fc12安装的svn是:
[deli@athena ~]$ rpm -qa|grep subversion
subversion-javahl-1.6.13-1.fc12.1.i686
subversion-libs-1.6.13-1.fc12.1.i686
subversion-1.6.13-1.fc12.1.i686

将旧的代码仓库数据移到新的服务器,装的是 rhel 5.4, svn手动安装 subversion-1.6.9。
可以 update,但提交代码时发现:

svnlook: Expected FS format ‘2’; found format ‘4’

也是同样的 svn版本,可能新的服务器是64位。只好先把svn降级了。

mv resp resp_bak.20110121
svnadmin create --pre-1.5-compatible resp
svnadmin dump resp_bak.20110121 |svnadmin load resp
svnserve -d -r /var/svn/web/resp

重新 commit, ok.

Bluehost安装svn

环境:

Bluehost: 64位主机,可以通过 uname -a 命令查询,含有 x86_64 的就是64位系统了。
svn: 目前最新稳定版本1.6.15。

Bluehost用户目录下有个.local 目录,显然是为用户装自己的软件而提供的,那么以后我们要装的软件,都应该放在 $HOME/.local 目录下(来源:http://helpdesk.bluehost.com/index.php/kb/article/000530)。

整个过程如下:

mkdir ~/src
cd ~/src

wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz

tar xvf subversion-deps-1.6.15.tar.gz
cd subversion-1.6.15
cd apr
./configure -prefix=$HOME/.local
make; make install

cd ..
cd apr-util/
./configure -prefix=$HOME/.local --with-apr=$HOME./local
make; make install

cd ..
cd neon/
./configure -enable-shared -prefix=$HOME/.local
make; make install
cd ..
rm subversion-1.6.15 -rf


tar xvf subversion-1.6.15.tar.gz 
cd subversion-1.6.15
wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
tar xvf sqlite-amalgamation-3.6.13.tar.gz 
mkdir sqlite-amalgamation
cp sqlite-3.6.13/sqlite3.c sqlite-amalgamation

./configure --prefix=$HOME/.local --without-berkeley-db --with-zlib=/usr/ --with-ssl LDFLAGS="-L/lib64"
make; make install 

后面报错:

cp .libs/mod_dav_svn.soT /usr/lib64/httpd/modules/mod_dav_svn.so
cp: cannot create regular file `/usr/lib64/httpd/modules/mod_dav_svn.so’: Read-only file system

没关系,我只是用来做svn client就行了。

最后,
vi ~/.bashrc
export PATH=$HOME/.local/bin:$PATH

Pages: 1 2 Next