osx下vagrant box add因curl失败的问题

前几天vagrant做box add的时候发现加不进去,报以下信息:

给vagrant加上debug看看调试信息,这样就知道是什么原因导致的了:

下面是一部分调试信息:

里面说

问题应该就在这里了,curl用不了。这个curl用的是vagrant自带的,需要比较高的lib版本(9。0.0),但是osx里的lib老了点(7.0.0)。

解决方法很简单:只需要把vagrant自带的curl删掉或者移走就可以了。

然后再执行一下box add就解决了。

参考:mac OSX Sierra, can't add vagrant box laravel/homestead, due to needing cURL v 9.0.0 or later, and libcurl.4.dylib providing v7.0.0

mail core2编译脚本执行失败的问题

今天编译mail core2的时候发现curl一直下不回文件,导致编译失败,错误如下:

应该是curl下载失败了。

自己手动执行了一下curl命令,或许是我的curl版本有问题,下回来的文件大小为0。

用curl -I 拿回来的头Content-Length并没有什么问题,状态码也是200。

或许是网络问题,或许是curl的bug,curl版本 7.43.0。

既然没查出原因,就先绕条路,把curl下载改为wget(mac需要额外安装,使用brew就可以),把mailcore2项目scripts/include.sh目录下的build-dep.sh(约325行):

替换为

再编译,就通过了。

至于curl无法通过的原因,待查。

linux内核同步方法-原子操作

转自:edsionte's TechBlog

原子操作

原子操作用于执行轻量级、仅执行一次的操作,比如修改计数器,某些条件下的增加值或设置位等。原子操作指的是指令以原子的方式执行。之所以用原子来修饰这种操作方式是因为它们均不可再分。也就是说,原子操作要么一次性执行完毕,要么就不执行,这些操作的执行过程是不可被打断的。原子操作的具体实现取决于体系架构,以下代码如无特别声明,均来自linux/arch/x86/include/asm/atomic.h中

内核中提供了两组原子操作的接口:原子整形操作和原子位操作。前者是一组对整形数据的操作,后者则是针对单独的位操作。通过上面的叙述我们可以知道,这写操作接口完成的动作都是原子的。

继续阅读

Shell编程中的几个命令

介绍几个命令:echo, eval, exec, export, readonly, read, shift, wait和点(.)。

1.echo

格式:echo args

功能:在屏幕上显示出由args指定的字串。

2.eval

格式:eval args

功能:命令eval的功能是將参数(args)读入 C shell 中,然后在加以执行。例如:

vcom 是 'ls -l ; date'。当我们來执行“$vocm”,会出现错误信息ls: invalid option -- ;”及“try 'ls --help' for more infomation”。原因是 C shell 在语法解析中无法理解特殊符号所造成的。符号“;”和命令 date 被理解成是命令 ls -l 后的“文件名称”。所以才会有“ls: invalid option -- ;”。命令eval 便是用來解决这种情況:

其实在作法上使用命令 eval 便相当于以下的用法:

如果你是在 C shell 下,你也可使用以下的方式:

另外在使用命令 eval 上也有技巧,看一互換的技巧:

3.exec

格式:exec命令参数

功能:当Shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的Shell)就终止了,所以Shell程序中exec后面的语句将不再被执行。

继续阅读

安装command line tools for xcode

升级了XCode5之后发现command line tools的安装选项消失了,出现在了

Xcode -> Preferences... ->  Locations

选项中。最后一项的 command line tools显示了在本地的安装情况,貌似还可以自行切换版本。所以如果你的恰好是xcode5+,那么恭喜你,你应该不需要安装这玩意儿了。打开终端看看gcc是不是最新版吧。

如果还是没有gcc之类的工具的话,那么可以看看下面删除线划掉的旧部分。如果你的版本是xcode4.6左右,那么可以看末尾的部分。

也许是安装xcode会自动给安装command line tools了,我查看了一下自己的gcc版本,发现是5.0,如果真是这样,请读者自己考虑是否继续安装),可以打开终端后输入如下命令:

sudo xcode-select --install

输入密码后会弹出提示(xcode-select: note: install requested for command line developer tools),然后安装命令行工具(install command line developer tools)。

如果您的版本是XCode 4.6,方法如下:

其实这个很好找,但是网上很多误导人的文章,很让人不爽。

打开xcode以后,点击菜单栏的:

Xcode -> Preferences... ->  Downloads

这时候你应该就可以看到Command Line tools了,在Components选项卡里。其实ios模拟器也是这里安装的,大家应该可以看到。

补充:xcode第一次安装完需要启动一次,同意xcode的协议,不然command line tools是无法使用的,如果你自己跑一下cc或者gcc会发现报下面的提示:

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

打开xcode同意协议就可以啦。

osx编译ruby-1.9.3-p374

osx下编译编译ruby-1.9.3 p374出了一些问题,本来以为只要加上 --with-gcc=clang就看可以,结果一直报错,错误类似于:

然后找到这个:http://www.ruby-forum.com/topic/2370265

这貌似是个bug,不会用clang编译的人表示不淡定,只能照葫芦画瓢往下弄了:

好了,成功解决,设置PATH,开始使用。

ps.所有工作之前,你可能需要先安装libyaml,可以直接 brew install libyaml,不然gem可能不好用。

Mac OSX Lion上编译ruby

注意:Ruby 1.9.3p-125 之后的版本Clang已经可以支持了,所以只需要以下命令就可以安装(如果你使用了以下的方法,那么还是可以正常安装的,但是不要加--with-gcc=clang,不然会报make错误):

这中间可能会出现一些问题,这里有一篇不使用rvm,clang编译ruby的文章提供参考,应该和使用rvm差不多。

在lion上用rvm安装ROR的时候,碰到这样的情况:

继续阅读

OSX lion下编译安装php5.3.8的一些问题

换了个mbp,毕竟还是属于*unix阵营,使用起来还是比较习惯的。只是没有了apt或者是yum有些不习惯。有些朋友可能希望一键安装,可以试试brew或者fink之类的软件。但是不知道为什么我不是很喜欢在mac下这么干,所以编译安装。

我使用的是lion,其实里面是自带php的,只是我需要的是php-fpm,所以如果用apache的朋友可以不用再编译的。

首先遇到的问题是Undefined symbols问题,就好像下面的这些错误:

继续阅读

Linux chmod命令

之前用chmod命令一直也没注意chmod go-w xxx, chmod ugo+x xxx这类命令的意义,只是简单的766、+x、+w之类,所以特意把这篇文章转过来给备忘。

转自http://blog.csdn.net/linuxgroup

chmod 命令

用途
更改文件方式。

语法

要用符号更改文件方式
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }

要用数字更改文件方式
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }

继续阅读