Bernese 是世界上三大著名高精度 GNSS 数据处理软件之一,当前 Bernese 软件可以购买的最新版本为 5.2,获得 Linux 版本源码后,可使用本文介绍的方法将其安装到运行 Ubuntu 16.04 操作系统的计算机上。

Bernese 是三大著名的高精度 GNSS 数据处理软件之一。由瑞士伯尔尼大学天文学院( Astronomical Institute of the University of Bern,AIUB)开发,能够处理包括 GPS、GLONASS 和卫星激光测距(SLR)等多种观测数据。该程序支持 Windows 和 UNIX/Linux 操作系统,具有图形界面(使用 Qt 实现),操作友好,模型准确,解算精度高,并且具有强大的数据批处理能力。

当前 Bernese 软件可以购买的最新版本为 5.2,获得 Linux 版本源码后,可使用本文介绍的方法将其安装到运行 Ubuntu 16.04 操作系统的计算机上。本文主要有三部分内容,前两部分都是关于 Linxu 系统的(由于很久不用 Linux 了,所以想趁此机会留下笔记,方便以后拾遗),熟悉 Linux 的童鞋可以忽略,直奔第三部分。

1. Ubuntu 16.04 安装与优化

Ubuntu16.04 是 Canonical 公司于 2016 年发布的长期支持版本(Long Time Support, LTS),目前版本号已升至 16.04.6,本文系统环境使用该版本,下载地址:http://releases.ubuntu.com/xenial/

根据需求选择 32 位 ubuntu-16.04.6-desktop-i386.iso 或 64 位 ubuntu-16.04.6-desktop-amd64.iso,安装步骤就不叙述了,网上很多教程,如果不想使用真机环境,可在虚拟机下安装。这里重点讲下安装后要做的一些优化,其中标题后面带有 (Optional) 的指可选优化项目。

1.1 更新软件源

安装好 Ubuntu 后,第一件事就是更新软件源,因为这会节约很多时间。阿里云源在国内应该最快(网易 163 源速度也还不错),此处使用阿里云源。Ctr+Alt+T 打开终端,执行命令:

1
2
3
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
sudo gedit /etc/apt/sources.list #修改软件源地址
sudo apt-get update #更新列表

第二行命令后需添加的阿里云源地址如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

当然,也可以使用 software & update软件和更新 更新,图形化的界面可能更加直观。

设置完软件源后,更新软件源并升级系统:

1
2
3
4
sudo apt-get update && sudo apt-get upgrade 
# 或分步执行
# sudo apt-get update
# sudo apt-get upgrade

1.2 Unity 桌面环境调整(Optional)

Unity 是 Ubuntu 自己打造的桌面环境,有人认为 Unity 桌面环境糟糕的设计使很多 Ubuntu 用户不满,使其转向 Linux Mint 等非 Unity 桌面系列系统。

Unity 优化工具 Unity Tweak Tool,可用来调整外观设置、鼠标、Unity 启动器、窗口行为等选项,可直接在 Ubuntu软件中心 搜索安装或使用命令:

1
sudo apt-get install unity-tweak-tool

1.3 安装Linux显卡驱动

Ubuntu 16.04 支持大多数 Nvidia 和 Intel 显示硬件,安装适配的显卡驱动之后 Ubuntu 可以获得非常流畅的统一桌面体验。 在 软件和更新 -> 附加驱动 选项卡中进行选择。对于使用 Nvidia 的用户,可以通过 PPA 为 Ubuntu 安装 Nvidia 驱动。

Ubuntu 驱动安装界面

注意:在虚拟中使用 Ubuntu,无需安装显卡驱动。

1.4 搜狗输入法Linux版本

UbuntuKylin 团队与搜狗输入法合作开发的搜狗输入法Linux版本已经推出多年,下载地址: http://pinyin.sogou.com/linux/,下载后直接点击安装即可。

1.5 安装 Ubuntu 受限的额外的解码器

Ubnutu 额外受限 指的是这些解码器的包没有默认安装在 Ubuntu 系统里面,这些解码器没有默认安装在系统里面的原因是受到很多国家的法律的约束。在这些解码器安装完以后可正常播放很多格式的音视频文件,如 MP3,MP4,AVI 和以及其他的一些格式。使用下面的命令进行安装:

1
sudo apt-get install ubuntu-restricted-extras

注意:对于初学者,如果屏幕上出现那些协议和条款,按 Tab 键在选项之间切换,使用 Enter 确认选择。

1.6 安装 adobe-flash 播放器(Optional)

通常在安装完 Ubuntu 的受限额外的解码器后,你应该想通过 flash 播放器 看视频。可能因为一个问题或者其他的原因在安装 flash播放器 上遇见的问题。使用下面的命令:

1
sudo apt-get install flashplugin-installer

1.7 安装 Typora 编辑器(Optional)

Typora 是优秀的 Markdown 编辑器,便于日常笔记写作。Typora 不在 Ubuntu 默认软件仓库中,需要先添加仓库,再行安装。

1
2
3
4
5
6
7
8
9
10
# 若报错,执行注释行
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -

# 添加 Typora 软件仓库
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update

# 安装 Typora
sudo apt-get install typora

注意:Typroa 在 Ubuntu 下可能一不小心就进入全局菜单下的全屏模式了,通过快捷键 F11 切换即可。

1.8 安装 Oracle Java(Optional)

由于系统自带的是 OpenJDK,卸载 OpenJDK 之后会带有残留,导致运行 $ java -version 时第一行不是 java 的版本号,会是 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 这个提示,导致很多检测 java 版本号的脚本会运行出错,因此需要手动清除残留。

1
sudo rm /usr/share/upstart/sessions/jayatana.conf

删除 /usr/share/upstart/sessions/jayatana.conf 文件,重启之后再运行 $ java -version 就不会再有 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 提示了。然后用如下命令安装 Oracle Java:

1
2
3
4
5
6
7
8
# 添加 Oracle Java 8 软件仓库
sudo add-apt-repository ppa:webupd8team/java

# 更新软件源
sudo apt-get update

# 安装 Oracle Java 8
sudo apt-get install oracle-java8-installer

1.9 其他微调整(Optional)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 删除卡顿的 Libreoffice
sudo apt-get remove libreoffice-common

# 删除 Amazon 链接
sudo apt-get remove unity-webapps-common

# 删掉基本不用的自带软件,用的时候再安装
sudo apt-get remove thunderbird totem rhythmbox empathy brasero simple-scan gnome-mahjongg aisleriot gnome-mines cheese transmission-common gnome-orca webbrowser-app gnome-sudoku landscape-client-ui-install onboard deja-dup

# 安装上古神器 Vim
sudo apt-get install vim

# 安装新立得软件包管理器,也可在软件中心搜索安装
sudo apt-get install synaptic

# 系统默认不带解压缩 .rar 文件的功能,手动安装 unrar 程序
sudo apt-get install unrar

# 装上之后就可以用命令解压缩 .rar 文件了,使用如下命令解压缩文件到当前目录
unrar x test.rar

2. Linux 基础命令与用户权限

Linux 系统的一大特色就是使用命令进行日常操作和系统管理,新手可能会感觉不太适应,但熟悉以后会发现命令其实是非常高效的执行方式。该部分内容介绍 Linxu 下的基础命令、用户权限以及用户和密码管理等基本概念。

2.1 卸载软件(以 Gnome 的卸载为例)

Ubuntu 18.04 之前的发型版本都对 Gnome 桌面环境不友好,若是体验后想卸载,可按照以下命令进行,卸载流程可借鉴至其他软件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 卸载掉 gnome-shell 主程序
sudo apt-get remove gnome-shell

# 卸载掉 gnome,并删除其配置文件
sudo apt-get --purge remove
# 或分步执行
# sudo apt-get remove gnome
# sudo apt-get purge gnome

# 1)卸载不需要的依赖关系
sudo apt-get autoremove

# 2)清理安装 gnome 时候留下的缓存程序软件包
sudo apt-get autoclean

# 3)清理系统所有的缓存程序软件包
sudo apt-get clean

注意:若是在图形界面卡死,可快捷键 Ctrl+Alt+F1~F6 调出终端,抑或进入恢复模式(黑屏情况下显卡出现问题只能在无图形化界面下进行操作)。

2.2 文件/文件夹的复制、移动和删除

Linux 下文件的复制、移动与删除命令为:cpmvrm,若遇权限问题需在前面加:sudo

2.2.1 文件复制命令:cp

  • 命令格式

    1
    cp [-adfilprsu] source destination
  • 参数说明

    • -a: 是指 archive 的意思,指复制所有的目录
    • -d: 若源文件为连接文件(link file),则复制连接文件属性而非文件本身
    • -f: 强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
    • -i: 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
    • -l: 建立硬连接(hard link)的连接文件,而非复制文件本身
    • -p: 与文件的属性一起复制,而非使用默认属性
    • -r: 递归复制,用于目录的复制操作
    • -s: 复制成符号连接文件(symbolic link),即“快捷方式”文件
    • -u: 若目标文件比源文件旧,更新目标文件
  • 操作示例

    如将 /test1 目录下的 file1 文件复制到 /test3 目录,并将文件名改为 file2,可输入以下命令:

    1
    cp /test1/file1 /test3/file2

2.2.2 文件移动命令:mv

  • 命令格式

    1
    mv [-fiv] source destination
  • 参数说明

    • -f: force,强制直接移动而不询问
    • -i: 若目标文件(destination)已经存在,就会询问是否覆盖
    • -u: 若目标文件已经存在,且源文件比较新,才会更新
  • 操作示例

    如将 /test1 目录下的 file1 移动到 /test3 目录,并将文件名改为 file2,可输入以下命令:

    1
    mv /test1/file1 /test3/file2

    移动当前目录所有文件到上一级目录

    1
    mv * ../ # .. 表示回到上一级目录

2.2.3 文件删除命令: rm

  • 命令格式

    1
    rm [-fir] 文件或目录
  • 参数说明:

    • -f: 强制删除
    • -i: 交互模式,在删除前询问用户是否操作
    • -r: 递归删除,常用在目录的删除
  • 操作示例

    如删除 /test 目录下的 file1 文件,可以输入以下命令:

    1
    rm -i /test/file1

2.3 文件/文件夹权限管理

2.3.1 Linux 用户权限简介

Linux 内的一切皆文件,所以对于 Linux 下文件的管理就十分的重要了。Linux 下的文件权限分为三种:r(读),w(写),x(执行)。Ubuntu 下查看权限的命令为:

1
2
3
ls -l filename # 文件权限查询,filename 用于指定具体文件
ls -ld folder # 文件夹权限查询,folder 用于指定具体文件夹
ll # 查看目录下所有内容权限情况,也可在后面指定目录

如列出用户根目录下文件的权限情况,结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
spacefan@U1604:~$ ll
总用量 152
drwxr-xr-x 18 spacefan spacefan 4096 6月 23 18:58 ./
drwxr-xr-x 3 root root 4096 6月 12 05:51 ../
-rw------- 1 spacefan spacefan 1490 6月 23 18:57 .bash_history
-rw-r--r-- 1 spacefan spacefan 220 6月 12 05:51 .bash_logout
-rw-r--r-- 1 spacefan spacefan 3771 6月 12 05:51 .bashrc
drwxrwxrwx 4 spacefan spacefan 4096 6月 10 23:05 Bernesev5.2/
drwx------ 14 spacefan spacefan 4096 6月 23 18:54 .cache/
drwx------ 3 spacefan spacefan 4096 6月 23 11:22 .compiz/
drwx------ 19 spacefan spacefan 4096 6月 23 14:32 .config/
drwx------ 3 spacefan spacefan 4096 6月 12 05:56 .dbus/
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Desktop/
-rw-r--r-- 1 spacefan spacefan 25 6月 23 12:09 .dmrc
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Doc/
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Download/
drwx------ 2 spacefan spacefan 4096 6月 23 16:22 .gconf/
drwx------ 3 spacefan spacefan 4096 6月 23 16:21 .gnupg/
-rw------- 1 spacefan spacefan 3140 6月 23 16:22 .ICEauthority
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Image/
drwx------ 3 spacefan spacefan 4096 6月 12 05:56 .local/
drwx------ 5 spacefan spacefan 4096 6月 12 06:01 .mozilla/
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Music/
drwx------ 2 spacefan spacefan 4096 6月 12 05:56 .presage/
-rw-r--r-- 1 spacefan spacefan 655 6月 12 05:51 .profile
-rw-r--r-- 1 spacefan spacefan 0 6月 12 06:00 .sudo_as_admin_successful
drwxr-xr-x 2 spacefan spacefan 4096 6月 12 05:56 Video/
-rw------- 1 spacefan spacefan 1503 6月 23 18:24 .viminfo
-rw------- 1 spacefan spacefan 150 6月 23 16:21 .Xauthority
-rw------- 1 spacefan spacefan 84 6月 23 16:21 .xsession-errors
-rw------- 1 spacefan spacefan 1172 6月 23 14:34 .xsession-errors.old
-rw-rw-r-- 1 spacefan spacefan 39425 6月 22 23:35 .zcompdump

可见权限表示一共有 10 位字符,其中:

  • 第 1 位字符代表档案类型

    • - 代表文件
    • d 代表是目录
    • l 代表链接
  • 第 2~4 位字符表示拥有者(user)权限

    • 第 2 位字符代表拥有者是否有 权限
    • 第 3 位字符代表拥有者是否有 权限
    • 第 4 位字符代表拥有者是否有 执行 权限
  • 第 5~7 位字符表示同组者(group)权限

    • 第 5 位字符代表同组者(group)是否有 权限
    • 第 6 位字符代表同组者(group)是否有 权限
    • 第 7 位字符代表同组者(group)是否有 执行 权限
  • 第 8~10 位字符表示其他用户(other)权限

    • 第 8 位字符代表其他用户(other)是否有 权限
    • 第 9 位字符代表其他用户(other)是否有 权限
    • 第 10 位字符代表其他用户(other)是否有 执行 权限

其中,r 表示文件可以被读(read),w 表示文件可以被写(write),x 表示文件可以被执行(如果它是可执行程序的话),- 表示未被授予权限。

2.3.2 权限修改方法

Linux 用 chmod 命令修改用户权限,其用法大致分为两种,1)指定某类用户的权限;2)同时指定三类用户的权限,语法为:

1
chmod [-可选参数][<权限范围>+/-/=<权限设置>] 文件/目录
  • 可选参数列表

    • -c:当发生改变时报告处理信息
    • -f:错误信息不输出
    • -R:处理指定目录及子目录下的所有文件
    • -v:运行时显示详细处理信息
  • 指定某类用户的权限

    1
    chmod [u/g/o/a] [+/-/=] [r/w/x] file
    • [u / g / o / a] 为权限范围,其中:

      • u:User,即文件或目录的拥有者
      • g:Group,即文件或目录的所属群组
      • o:Other,除了文件或目录拥有者和所属群组外,其他用户都属于这个范围
      • a:All,即全部用户
    • 权限操作

      • +:表示增加权限
      • -:表示取消权限
      • =:表示取消之前的权限,并给予唯一的权限
    • 权限代号

      • r:读取权限,数字代号为 “4”
      • w:写入权限,数字代号为 “2”
      • x:执行权限,数字代号为 “1”
      • -:不具备任何权限,数字代号为 “0”
    • file:文件名(路径)

    例如给 User 用户增加了对 code 目录下 /readme.txt 文件 wx 的权限:

    1
    sudo chmod u+rw code/readme.txt
  • 同时指定三类用户的权限

    1
    chmod [xyz] file

其中 xyz 分别指定 UserGroupOther 的权限;用三位二进制数表示 r , w , x 三种权限(注意顺序),其中 0 代表没有该权限,1 代表有该权限,如 100 则表示,有 r 权限,无 wx 权限;再将这个三位的二进制数转为十进制,则是 x(或yz)的值。

  • User: 7 = 111,表示具有 rwx 权限
  • Group: 7 = 111,表示具有 rwx 权限
  • Other: 4 = 100,表示只具有 r 权限,而没有 wx 权限

    例如给 UserGroup ”读+写+执行“ 的权限(即 rwx ),并给 Other 只 ”读“(即 r)的权限:

    1
    sudo chmod 774 code/readme.txt

    对当前所在目录下的所有非隐藏内容(Linux 下以 . 开头的为隐藏内容)做权限修改操作:

    1
    sudo chmod 774 * # “*” 为通配符,代表当前目录下所有非隐藏内容

    对当前所在目录下的所有内容(包括以 . 开头的隐藏内容)做权限修改操作:

    1
    sudo chmod 774 . # “.” 代表当前所在目录

    修改指定目录下所有内容(包括以 . 开头的隐藏内容)的权限:

    1
    sudo chmod -R 774 code/

2.4 用户和密码管理

2.4.1 root 密码设置

Ubuntu 普通用户第一次使用 root 需要设置 root 密码:

1
sudo passwd root

两次输入相同密码后设置成功,然后执行:

1
su root

输入密码后即切换到了 root 用户。

2.4.2 root & guest 登陆设置

Ubuntu 默认的登陆界面不能采用 root 账号登陆,但可使用 guest 访客登陆。将其改为可输入用户名的形式登陆,并删除访客登陆。

  • 第一步:给 root 用户设置密码

    2.4.1 小节。

  • 第二步:修改登陆界面的配置文件

    1
    2
    3
    4
    sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

    # 若不具有修改权限,修改之
    sudo chmod 777 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

    在末尾增加两行后保存退出,如下所示:

    1
    2
    3
    4
    [Seat:*]
    user-session=ubuntu
    greeter-show-manual-login=true
    allow-guest=false

    如果现在用 root 用户在图形界面登录会有错误:读取 /root/.profile 时发生错误:mesg:tty n 还需要做修改。继续下一步。

  • 第三步:编辑 root 配置文件

    编辑 /root/.profile 文件:

    1
    sudo gedit /root/.profile

    在末尾增加:tty -s && mesg n || true,保存后退出:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # ~/.profile: executed by Bourne-compatible login shells.

    if [ "$BASH" ]; then
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    fi

    tty -s && mesg n || true
  • 第四步:重启系统

    重启系统后,上述修改生效,选择 登陆 按钮,输入 root 为登录用户,再输入密码。

2.4.3 用户密码修改

普通用户密码修改只能由 root 完成,操作过程及结果如下:

1
2
3
4
5
6
spacefan@U1604:~$ su root
密码:
root@U1604:/home/spacefan# passwd spacefan
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码

3. Bernese 5.2 编译安装

3.1 确认软件包内容

经过前面的大量铺垫,终于进入安装 Bernese 软件编译安装环节。首先检查安装文件是否齐全,一份完整的软件包至少包含以下文件:

  • BERN52.tgz:主程序包;
  • CAMPAIGN52.tgz:示例工程;
  • DATAPOOL.tgz:输入数据;
  • ICONS.tgz:程序图标;
  • README:程序说明文档;
  • SAVEDISK.tgz:输出数据;
  • setup.sh:程序安装脚本。

3.2 安装依赖程序

Bernese 软件代码量庞大,计算部分主要采用 Fortran 语言编写,界面部分使用基于 Qt 的 C++ GUI 库实现,但也有一些 Perl 或 Shell 语言实现的脚本。在编译安装 Bernese 之前,你需要安装以下程序:

  • 依赖库文件;
  • C++ 编译器;
  • Fortran 编译器;
  • Perl 5;
  • Qt 4。

目前,绝大部分的 Linux 发行版都已经自带了 Perl 5 解释器和 GNU C++(g++)编译器,当然也包括 Ubuntu。因此实际上只安装所需依赖库、Fortran 编译器和 Qt 4 即可。

3.2.1 安装依赖库

Bernese 软件依赖于 X11 和 zlib,编译软件之前需要首先安装这些依赖。使用如下命令安装 X11 和 zlib:

1
2
3
4
sudo apt-get install libx11-dev
sudo apt-get install libxext-dev
sudo apt-get install libxtst-dev
sudo apt-get install zlib1g-dev

3.2.2 安装 GNU Fortran

Fortran 编译器用于编译 Bernese 软件中使用 Fortran 语言编写的计算程序,在终端中使用如下命令安装 GNU Fortran(gfortran)编译器:

1
sudo apt-get install gfortran

3.2.3 安装 Qt 4

Bernese 的图形操作界面部分基于 Qt 开发,编译程序菜单时需要引用 Qt 4。从 Qt 4 的下载页面,下载 Qt 4.8.7 的 Linux 源代码 进行编译。首先解压源代码文件:

1
tar -zxvf qt-everywhere-opensource-src-4.8.7.tar.gz

使用 cd 命令进入解压得到的文件夹,执行如下命令将 Qt 4 安装到 /usr/local/qt4 目录内:

1
2
3
sudo ./configure -release -opensource -static -prefix /usr/local/qt4
sudo make
sudo make install

Qt 4 的编译安装过程需要耗费较长的时间,具体时长取决于你的计算机硬件配置,耐心等待其编译完成。然后设置环境变量 QTDIR,将其指向 Qt 4 的安装目录。切换至 root ,打开 bash 环境配置文件:

1
2
su root
gedit ~/.bashrc

在文件末尾添加一下内容:

1
2
3
4
5
# PATH for QT4.8
export QTDIR=/usr/local/qt4
export PARH=PATH:QTDIR/bin
export MANPATH=$QTDIR/doc/man
export LD_LIBRARY_PATH=$QTDIR/lib

也可以直接在终端设置环境变量:

1
export QTDIR="/usr/local/qt4"

至此,依赖环境已经配置完毕,可以开始安装 Bernese 了。

3.3 安装 Bernese

Bernese 程序为用户提供了安装引导脚本 setup.sh,执行该脚本并根据提示操作即可完成安装过程。Bernese 默认安装到当前用户的 Home 文件夹,但也可以安装到其他文件夹,完整安装需要约 500 MB 的磁盘空间。为了供多个用户使用,需要共享 BERN52 和 MENU.INP 的执行和修改权限。本示例将 Bernese 安装至 /opt 目录下。

3.3.1 格式转换

进入安装文件目录,此处为 ~/Bernesev5.2/Bernese_v5.2_linux,命令操作如下所示:

1
2
3
spacefan@U1604:~$ cd Bernesev5.2/Bernese_v5.2_linux/
spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ pwd
/home/spacefan/Bernesev5.2/Bernese_v5.2_linux

为了防止出现乱码,将 sh 转为 unix 格式,再运行。终端输入:

1
2
sudo apt-get install dos2unix
dos2unix setup.sh

3.3.2 安装 Bernese

通过 root 用户执行 Bernese 的安装引导脚本:

1
2
su root
sh setup.sh

之后程序提示输入 Bernese 软件的安装目录,这里的 /root 表示默认安装路径。我们将其安装到 /opt/BERN52 文件夹,因此输入:/opt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ su root
密码:
root@U1604:/home/spacefan/Bernesev5.2/Bernese_v5.2_linux# sh setup.sh

***************************************
* Bernese GNSS Software *
* Installation *
* (UNIX/Linux or Mac OS X platform) *
***************************************


Full path where the BERN52 software tree will be installed
[ /root ]:
/opt

The software will be installed in /opt/BERN52

程序提示找到的 Perl 语言解释器位置:

1
Perl program to be used [ /usr/bin/perl ]:

一般使用系统自带的 Perl 语言解释器就可以了,此处直接按 Enter 键回车。之后,配置文件 configure.pm 被启动,并在屏幕打印以下提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
==========================================
CONFIGURATION OF THE BERNESE GNSS SOFTWARE
==========================================
0 ... Complete installation (Steps 1 to 5)
1 ... Update LOADGPS.setvar
2 ... Install online updates (only after Step 1)
3 ... Add a new user environment (only after Step 1)
4 ... Compile the menu (only after Step 1)
5 ... Compile the programs (only after Step 1)
6 ... Install the example campaign (only after Step 1)
7 ... ---

x ... Exit

Enter option:

解释一下此处的各个选项:

  • 键入 0:执行从第 1 项至第 5 项的全部过程
  • 键入 1:更新环境变量设置
  • 键入 2:安装在线更新包
  • 键入 3:添加新用户环境
  • 键入 4:编译图形界面菜单
  • 键入 5:编辑程序
  • 键入 6:安装解算工程示例
  • 键入 x: 退出安装程序

由于存在一些坑,我们老老实实一步一步进行。键入 1,安装程序打印出支持的编译器,其中 GNU 指示到 gfortran 的路径,表明安装程序找到的了该编译器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Enter option: 1

Information about compiler tests for OS LINUX:
1: g95 tested at AIUB
2: gfortran tested at AIUB
3: ifort tested at AIUB (version 10 and 12)
4: pgf90 tested at AIUB
5: f90 tested at AIUB
6: Use "OTHER" compiler from /opt/BERN52/GPS/EXE/Makefile.template

Select Compiler for OS LINUX:
1: G95
2: GNU -> /usr/bin/gfortran
3: IFC
4: PG_F90
5: SUNF90
6: OTHER

Select [2]:

这里系统已经检测到了 gfortran,键入 2 选择 gfortran 编译器(也可以直接按 Enter 键回车,因为默认就是 2)。然后安装程序继续打印出当前应用的环境变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Current Values:
--------------
VARIABLE DESCRIPTION VARIABLE NAME VARIABLE VALUE
1: Path to software C => /opt/BERN52
2: Path to Qt libraries QTBERN => /usr/local/qt4
3: Operating system group OS => UNIX
4: Operating system name OS_NAME => LINUX
5: Fortran compiler name F_VERS => GNU
6: List of additional compilers F_VERS_LIST =>
7: Host of the BPE server BPE_SERVER_HOST => U1604
8: Path to user environment U => ${HOME}/GPSUSER52
9: Path to temp. user environment T => ${HOME}/GPSTEMP
10: Path to campaign area P => ${HOME}/GPSDATA/CAMPAIGN52
11: Path to datapool area D => ${HOME}/GPSDATA/DATAPOOL
12: Path to savedisk area S => ${HOME}/GPSDATA/SAVEDISK

解释一下此处的默认环境变量:

  • 第 1 项:Bernese 软件的安装目录
  • 第 2 项:所使用的 Qt 4 所在目录
  • 第 3 项:操作系统类型
  • 第 4 项:操作系统名称
  • 第 5 项:使用的 Fortran 编译器
  • 第 6 项:其他可用的编译器
  • 第 7 项: BPE 服务器
  • 第 8 项:用户环境目录
  • 第 9 项:用户临时文件缓存目录
  • 第 10 项:用户解算工程文件夹
  • 第 11 项:用户数据文件夹目录
  • 第 12 项:解算成果目录

若接受其默认的变量设置,输入 y。要修改其中的配置,输入 n,然后根据其提示,输入变量编号来配置变量。这里使用默认设置,输入 y。随后安装程序将检测是否存在所需的文件夹,当提示某个文件夹不存在时,程序提示是否创建,键入 y 创建即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Accept the values (y/n): y
Use of uninitialized value $hlp in substitution (s///) at /opt/BERN52/GPS/EXE/configure.pm line 927, <STDIN> line 3.

**********************************************************************
* /opt/BERN52/GPS/EXE/LOADGPS.setvar
* has been updated.
**********************************************************************


Your campaign area ${P} does not exist:
/root/GPSDATA/CAMPAIGN52
Create it now (y/n):

Your campaign area ${P} does not exist:
/root/GPSDATA/CAMPAIGN52
Create it now (y/n):

Your campaign area ${P} does not exist:
/root/GPSDATA/CAMPAIGN52
Create it now (y/n): y

Your datapool area ${D} does not exist:
/root/GPSDATA/DATAPOOL
Create it now (y/n): y

Your savedisk area ${S} does not exist:
/root/GPSDATA/SAVEDISK
Create it now (y/n): y

Press Enter to continue

之后按 Enter 键继续,再按 2 下载更新文件。由于下载更新文件的过程可能会很慢,若已经有更新文件(本文为 update_2013-07-18.tar.gz),Ctrl+C 取消更新文件下载,另开终端并将更新文件复制到 /opt/BERN52 目录下,然后回到原终端中输入 y

1
2
3
4
5
6
7
8
9
10
11
12
spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ sudo mv update_2013-07-18.tar.gz /opt/BERN52/
[sudo] spacefan 的密码:
spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_linux$ cd /opt/BERN52/
spacefan@U1604:/opt/BERN52$ ls -l
总用量 3740
drwxrwsr-x 2 978 1070 4096 6月 23 22:34 BPE
drwxrwsr-x 12 978 1070 4096 7月 18 2013 GPS
drwxrwsr-x 3 978 1070 4096 7月 18 2013 INC
drwxrwsr-x 3 978 1070 4096 7月 18 2013 LIB
drwxrwsr-x 2 978 1070 4096 7月 18 2013 MENU
drwxrwsr-x 3 978 1070 4096 7月 18 2013 PGM
-rwxrw-rw- 1 spacefan spacefan 3803626 6月 23 23:04 update_2013-07-18.tar.gz

好,重点来了:继续之前,先来填坑。首先对 BERN52 目录赋予执行权限,另开终端进入 /opt 进行权限设置:

1
2
cd /opt/BERN
sudo chmod -R 777 . # or $ sudo chmod -R 777 *

然后,查询 ld 的版本:

1
2
$ ld -v
GNU ld (GNU Binutils for Ubuntu) 2.26.1

版本大于 2.22,需要修改 BERN52/MENU/memu.pro 中的内容。打开该文件:

1
gedit /opt/BERN52/MENU/menu.pro

找到:

1
##QMAKE_LIBS += -lz

去除前面的注释 #,保存后退出。然后,回到原终端,按 3 添加新用户环境。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
==========================================
CONFIGURATION OF THE BERNESE GNSS SOFTWARE
==========================================
1 ... Update LOADGPS.setvar
2 ... Install online updates
3 ... Add a new user environment
4 ... Compile the menu
5 ... Compile the programs
6 ... Install the example campaign
7 ... ---

x ... Exit

Enter option: 3

User environment /root/GPSUSER52 already exists.
Update files (y/n): y

Copying menu and program input files...
Copying BPE user scripts...
Copying examples for process control files...
Copying BPE options for processing examples...
Copying ICONS ...
Extracting ICONS ...


**********************************************************************
* User area /root/GPSUSER52
* has been added/updated.
**********************************************************************

完成后,继续按 4 编译图形界面菜单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
==========================================
CONFIGURATION OF THE BERNESE GNSS SOFTWARE
==========================================
0 ... Complete installation (Steps 1 to 5)
1 ... Update LOADGPS.setvar
2 ... Install online updates
3 ... Add a new user environment
4 ... Compile the menu
5 ... Compile the programs
6 ... Install the example campaign
7 ... ---

x ... Exit

Enter option: 4

Running the compilation of the menu.
This can take a while...
It depends on the computer performance.

All compilation output is redirected into file
/opt/BERN52/MENU/MENUCOMP.log


*******************************************
* Bernese menu compiled successfully.
*******************************************

菜单编译成功后按 5 继续编译程序,如果看到下面的提示,那么恭喜你,Bernese 软件已经编译安装成功了!

1
2
3
*******************************************
* Fortran programs compiled successfully.
*******************************************

注意:若提示 Fortran 程序编译至 100/100 时出错,返回安装程序引导,按 0 重新执行 1~5 步,根据经验,应该会成功编译了。

3.3.3 安装示例

Bernese 编译安装成功后,需要跑一下示例文件 PPP_DEMO.PCF 来验证软件是否可以正常工作,在跑 PPP_DEMO.PCF 之前,最好先完成这几件事情:

  • 更新 CAMPAIGN52.tgzDATAPOOL.tgzSAVEDISK.tgz

    最新的 CAMPAIGN52.tgzDATAPOOL.tgzSAVEDISK.tgz 文件需要在 Bernese FTP 下载:ftp.aiub.unibe.ch/BERN52/,下载后替换掉自带的文件,否则跑 PPP_DEMO.PCF 时会报错。

    1
    2
    3
    4
    spacefan@U1604:~$ cd Bernesev5.2/Bernese_v5.2_FTP_20170915/
    spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_FTP_20170915$ cp * /opt/BERN52/GPS/DOC/
    spacefan@U1604:~/Bernesev5.2/Bernese_v5.2_FTP_20170915$ ls
    CAMPAIGN52.tgz DATAPOOL.tgz SAVEDISK.tgz
  • 更新 /BERN/GPS/GEN 目录

    最好也更新 /BERN/GPS/GEN,否则可能会提示:缺少 SINEX. SINEX.PPP IONEX. IONEX.PPP 等文件,下载地址:ftp.aiub.unibe.ch/BSWUSER52/。由于文件较多,建议用 FTP 软件下载。下载后,不要删除自带的 /BERN/GPS/GEN 目录,做好备份。

  • 添加星历文件

    Bernese 5.2 使用 JPL/NAIF 发布的 DE405.EPH 星历,下载地址:https://github.com/SGL-UT/GPSTk/blob/master/examples/DE405.EPH,下载后放入 /BERN52/GPS/GEN目录下。

    1
    cp DE405.EPH /opt/BERN52/GPS/GEN/

注意:这几件事除了星历文件,其余三件都可以在安装开始之前进行,其中第一件和第二件可以直接在安装包文件中进行替换。但为了保险起见,最好先按照本文步骤操作。

然后,继续在上小节的安装提示中,按 6 安装示例,如果看到下面的提示,说明示例安装成功。

1
Installation of the example campaign has been finished

3.3.3 添加普通用户

使用 root 用户进行数据解算操作既不方便也不安全。为了让非 root 用户也能使用 Bernese,需要使用新用户加载环境变量设置文件,并启动配置程序。按 3 继续,若不慎将终端关闭,新开终端中执行如下命令:

1
2
source /opt/BERN52/GPS/EXE/LOADGPS.setvar
perl /opt/BERN52/GPS/EXE/configure.pm

程序再次打印出安装提示,此时键入 3,根据程序提示添加新用户的环境变量即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
==========================================
CONFIGURATION OF THE BERNESE GNSS SOFTWARE
==========================================
1 ... Update LOADGPS.setvar
2 ... Install online updates
3 ... Add a new user environment
4 ... Compile the menu
5 ... Compile the programs
6 ... Install the example campaign
7 ... ---

x ... Exit

Enter option: 3

Create user environment /home/spacefan/GPSUSER52 (y/n): y

Copying menu and program input files...
Copying BPE user scripts...
Copying examples for process control files...
Copying BPE options for processing examples...
Copying ICONS ...
Extracting ICONS ...


**********************************************************************
* User area /home/spacefan/GPSUSER52
* has been added/updated.
**********************************************************************

注意:此步是在普通用户模式下进行的操作,而非 root 用户。

3.3.4 配置环境变量

为了在每次开机后都能直接使用 Bernese 软件,需要配置在系统启动时自动加载环境变量。编辑用户主文件夹内的配置文件(root 下的配置文件也可以一并添加了):

1
gedit ~/.bashrc

在文件末尾为 Bernese 加载环境变量:

1
2
# Load environment variables for Bernese GNSS Software
source /opt/BERN52/GPS/EXE/LOADGPS.setvar

之后在终端中键入 G 就可以启动 Bernese 了,如下图所示。

如果 3.3.3 小节在添加普通用户时 GPSDATA 移动不成功,可能会在启动时报错:

1
2
Cannot open INP file /home/spacefan/GPSDATA/CAMPAIGN52/EXAMPLE/STA/SESSIONS.SES
Using standard session definition

/root 目录将 GPSDATA 拷贝到普通用户目录 /home/spacefan,再为其添加普通用户权限即可。

4 结束语

至此,Bernese 5.2 软件在 Ubuntu 16.04.6 下编译安装成功。简单总结一下:

  • 安装依赖:libx11-dev、libxext-dev、libxtst-dev、zlib1g-dev、gfortran & Qt-4.8.7(网上有些教程说要装 ncompress,本文没装并未出错,若出错无法解决可以安装)。
  • 手动下载更新文件,复制到 BERN52 目录下。
  • 运行 setup.sh 前,为防止乱码,先在终端运行:$ dos2unix setuo.sh
  • 第二步过后要修改权限并检查 ld 版本号,并做相应填坑工作。
  • 安装示例之前,处理好示例文件更新、DE405.PHE 星历和 RENX 转换工具的添加。
  • 最后重新运行安装配置文件 configure.pm,配置好普通用户的环境变量。

后续,将写一些在 Bernese 5.2 下的 GNSS 数据处理和精密定轨教程,敬请期待!

5 参考资料

【1】Bernese GNSS Software Version 5.2,DOCU52.pdf

【2】安装Ubuntu 16.04后要做的事

【3】Linux(Ubuntu)系统下安装Qt library和Qt Creator全过程记录

【4】Ubuntu 操作系统安装 Bernese

【5】Windows安装虚拟机-Centos7;fortran及Qt4.8.4, BERNESE5.2 linux下安装步骤

【6】BERNESE5.2 linux 安装

【7】Bernese安装后要做的几件小事

【8】Linux Mint 18.2安装Bernese 5.2的注意事项

留言