题记
由于最近在做一些关于密码学的项目,而密码学大部分开源库都依赖于Linux环境,所以在Ubuntu下搭建密码学开发环境就变得很有必要了。本文介绍了在Ubuntu下搭建密码学开发环境的必要步骤,同时进行了一些细微的设置,以提高使用感受。
Ubuntu系统安装并设置root账户。
我安装的是Ubuntu 13.10 。由于开发的过程中需要频繁修改各种conf文件,或者修改/usr文件夹中的文件,所以管理员权限下的sudo显然无法满足我们的需求,我们需要建立root账户,以便我们开展以后的工作。
首先是开启root帐号,设置root密码
sudo passwd root
参考:Ubuntu安装完后设置root密码 http://www.linuxidc.com/Linux/2014-04/100489.htm
然后根据提示两次输入新的密码即可,这个时候就可以使用root权限登录了。但是如果我们注销登录,会发现系统根本不允许我们使用root账户登录,必须在进入账户之后再进行权限提升,这显然不能满足我们的需求。这是因为ubuntu默认隐藏root账户的原因。所以要修改配置。
修改lightdm配置
打开Terminal,修改 /etc/lightdm/lightdm.conf.d/10-ubuntu.conf 文件:
sudo gedit /etc/lightdm/lightdm.conf.d/10-ubuntu.conf 添加如下内容
greeter-show-manual-login=true #允许手工输入登陆系统的用户名和密码
allow-guest=true #允许guest登录
值得一提的是,在ubuntu有些低版本中,需要修改的 /etc/lightdm/lightdm.conf文件,修改方法同上。
这样,我们就可以选择以root账户登录了。
二. Ubuntu下Eclipse安装与配置
我的主要工作是进行Java/Android 开发,底层调用是使用C层的库,也就是使用jni/NDK调用。因此,Eclipse是一个合适的开发工具。
1. Eclipse安装
最新版本的Eclipse 下载地址是 https://www.eclipse.org/downloads/ 需要注意的是,32位系统和64位系统的Eclipse是有区别的,下载的时候要慎重。
ubuntu中,测试系统是32位还是64位有两个方法:
1,terminal里输入 uname -m 返回i686即为32位系统,返回x86_64即为64位系统;
2,terminal里输入 getconf LONG_BIT,这个命令是返回系统中long型数据的长度,若返回32即为32位系统,64即为64位系统。
下载后解压到/usr/local/java 文件夹中。
2.Eclipse Bug修复
需要说明的是,ubuntu12.10之后的unity界面有bug,而eclipse的界面使用unity的界面代理,导致有很大几率无法显示eclipse菜单,所以必须新建快捷方式,以此开启禁用菜单代理选项模式的Eclipse(如果安装完毕后打开Eclipse,发现自己的菜单栏可以使用,可以跳过这一步)。解决方法如下:
1.新建快捷方式。
在任意文件夹(建议在桌面)新建->空白文档,输入以下代码
[Desktop Entry] Categories=Development; Comment[zh_CN]= Comment= Exec=env UBUNTU_MENUPROXY= /usr/local/java/eclipse/eclipse GenericName[zh_CN]=IDE GenericName=IDE Icon=/usr/local/java/eclipse/icon.xpm MimeType= Name[zh_CN]=eclipse Name=eclipse Path= StartupNotify=true Terminal=false Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=owen Exec=env UBUNTU_MENUPROXY=0 /usr/local/java/eclipse/eclipse
重点语句为
Exec=env UBUNTU_MENUPROXY=0 /usr/local/java/eclipse/eclipse
其作用是禁用菜单代理。
之后保存并推出,将文件重命名为eclipse.desktop,右键该文件增加权限,并检查命令是否正确,如图所示:
之后双击桌面图标就可以打开了,菜单也可以实现下拉。如果有需求,也可以将其固定在启动栏上。
Eclipse本身有自带JDK的版本,但是我还是希望安装独立的jdk,这样在有些需要在命令行下编译的时候,可以方便地调用javac和javah命令,所以下载纯净的的Eclipse,并配合Oracle-jdk,JDK 8的下载地址为 http://www.oracle.com/technetwork/java/javase/downloads/index.html。如果使用openJDK,直接apt-get install安装即可。
下载完毕后解压,将解压好的jdk1.8.0_5文件夹移动到/usr/lib/jvm目录里,此时即使没有jvm目录也可以执行如下命令,jvm文件夹将得到创建。
mv jdk1.8.0_5 /usr/lib/jvm
下面修改环境变量,以便在任何目录下均可调用Java命令。修改/etc/profile
gedit /etc/profile
在末尾添加:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_5 export JRE_HOME=/usr/lib/jvm/jdk1.8.0_5/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH
需要注意的有两点,一是CLASSPATH第一个冒号前面的小点,指的是“当前目录”,必须要加上;二是将jdk1.8.0_5替换为自己的Java版本号。
保存后执行:
source /etc/profile
这样就完成了java环境变量的配置。测试环境变量配置正确的方法如下:
java -version
显示如下内容,代表Java配置正确:
java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
Eclipse中C/C++开发需要CDT插件,CDT插件安装方法如下:
启动Eclipse,选择Help > Install New Software;
在 Available Software 对话框中,单击 Add…;
在 Add Site 对话框的 Name 字段中,输入远程站点的名称(例如“C Plugin”)。在 Location 字段中,输入下面的 URL:http://download.eclipse.org/tools/cdt/releases/kepler. 点击确定,pending之后全选下面的选项,一路下一步即可完成安装。
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-04/100643p2.htm
3.andorid sdk环境搭建
Eclipse ADT(Android Developer Tools)安装
启动Eclipse,选择Help > Install New Software。
在 Available Software 对话框中,单击 Add…,如图所示。
在 Add Site 对话框的 Name 字段中,输入远程站点的名称(例如“Android Plugin”)。在 Location 字段中,输入下面的 URL:https://dl-ssl.google.com/android/eclipse/注意:如果访 问该插件时遇到问题,可以将 URL 中的 https 改成 http(使用https会更安全一些)。单击 OK。
回到 Available Software 界面,应该可以看到列表中的 Developer Tools 选项。选择 Developer Tools 旁边的复选框,会同时选中 Android DDMS 和 Android Development Tools。单击 Next。
在最后的 Install Details 对话框中,会列出 Android DDMS 和 Android Development Tools 等特性。单击 Next 阅读并接受许可协议,同时安装所有依赖组件,然后单击 Finish。
重新启动 Eclipse。
3.安装android sdk
重启Eclipse之后,会弹出提示,Android SDK位置并未给出,如图所示:
现在我们需要切出去,下载 Android SDK Tools,地址如下: http://developer.android.com/sdk/index.html
下载 SDK Tools Only即可。下载完毕后解压到任意文件夹。切回Eclipse,将SDK 路径设为刚才Android SDK Tools解压的位置,然后一路下一步安装sdk即可。以后如果需要其他版本的SDK,可打开Android SDK Manager下载。
为了让SDK在Terminal下也能使用,配置下sdk的环境变量,修改/etc/profile
sudo gedit /etc/profile
在末尾添加:
# Android SDK export ANDROID_SDK=~/developTools/android-sdk-linux export PATH=$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$PATH
添加完成不要忘了在Terminal中输入
source /etc/profile
进行测试:emulator -version 结果如图所示
4.安装Android NDK
NDK在某些需要调用C库文件的场景中需要。NDK下载地址为:
http://developer.android.com/tools/sdk/ndk/index.html
下载完毕后解压到任意文件夹中,并如sdk一样配置环境变量
sudo gedit /etc/profile
在末尾添加:
export NDK_HOME=/home/snowdream/android-ndk-r5 export PATH=$NDK_HOME:$PATH
记住将路径替换为自己NDK所解压的路径。
添加完成不要忘了
source /etc/profile
进行测试:Terminal下输入
ndk-build -version
结果会显示ndk-build的正确版本号。
环境安装完毕。
三、密码学库文件安装
首先安装pbc系列库。
1. pbc依赖的库安装
pbc 库依赖于
M4
GMP Library
flex
bison
其中 M4、flex、bison均可以通过apt-get install安装
apt-get install M4 apt-get install flex apt-get install bison
GMP下载地址如下:
https://gmplib.org/
下载并解压,在terminal里进入解压文件夹安装,方法如下:
./configure make make check make install
2. pbc 安装
pbc(The Pairing-Based Cryptography Library)下载地址如下:
http://crypto.stanford.edu/pbc/download.html
下载并解压,在terminal里进入解压文件夹安装,方法如下:
./configure make make install
至此,密码学开发环境搭建完成。如果需要开发Java/Android的项目,那么就需要一些JNI/NDK开发的知识了。值得庆幸的是,pbc库已经有了JPBC版本,下载地址与pbc下载地址相同,其本质是pbc库的一个java接口,所以它依然依赖于pbc库。下面给出一种直接生成libjpbc-pbc.so动态链接库的方法,使其不依赖于pbc库,但需要注意的是,如果pbc库本身有变动,那么需要重新生成库文件。另外,笔者也不保证这种生成方法足够稳定。
此方法依赖于cmake 和ccmake,二者为编程常用工具,安装方法如下
apt-get install cmake apt-get install cmake-curses-gui
安装完毕后,在teminal下进入jpbc解压目录(以<jpbc>代指),输入
cd <jpbc>/jpbc-pbc
ccmake .
像make的使用方法一样,输入c,再输入g,此时,在<jpbc>/jpbc-pbc文件夹中生成了必要的Makefile文件
然后输入
make
这个库文件即为java可以调用的so文件,在调用的时候注意设置java.library.path即可。
虽然我们的基本开发环境搭建完毕,但是根据每个人的需求不同,我们需要另行下载自己需要的库文件,例如经常用到的openSSL。这些文件限于篇幅,就不进行一一介绍了,如果有这些开源库使用方面的讨论,也请大家不要忘记带上笔者:)
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2