作者:Spacefan
博客:spacefan.github.io & spacefan.coding.me
更新:最后一次更新日期 20200321
版权:BY-NC-ND 协议,转载请注明出处。
2019年6月,写了Bernese安装教程,很多人叫我出个入门视频教程,由于个人时间原因,无法兑现,现开知识星球,帮助需要的人从萌新到入门,内容会涉及软件安装、更新、编译、基本界面操作、示例运行、处理自己的数据、精密定轨以及SLR数据处理等内容,欢迎大家加入!
正文开始。。。
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 的童鞋可以忽略,直奔第三部分。
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) 的指可选优化项目。
安装好 Ubuntu 后,第一件事就是更新软件源,因为这会节约很多时间。阿里云源在国内应该最快(网易 163 源速度也还不错),此处使用阿里云源。Ctr+Alt+T
打开终端,执行命令:
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
$ sudo gedit /etc/apt/sources.list #修改软件源地址
$ sudo apt-get update #更新列表
第二行命令后需添加的阿里云源地址如下:
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
即 软件和更新
更新,图形化的界面可能更加直观。
设置完软件源后,更新软件源并升级系统:
sudo apt-get update && sudo apt-get upgrade
# 或分步执行
# sudo apt-get update
# sudo apt-get upgrade
Unity 是 Ubuntu 自己打造的桌面环境,有人认为 Unity 桌面环境糟糕的设计使很多 Ubuntu 用户不满,使其转向 Linux Mint 等非 Unity 桌面系列系统。
Unity 优化工具 Unity Tweak Tool
,可用来调整外观设置、鼠标、Unity 启动器、窗口行为等选项,可直接在 Ubuntu软件中心
搜索安装或使用命令:
$ sudo apt-get install unity-tweak-tool
Ubuntu 16.04 支持大多数 Nvidia 和 Intel 显示硬件,安装适配的显卡驱动之后 Ubuntu 可以获得非常流畅的统一桌面体验。 在 软件和更新
-> 附加驱动
选项卡中进行选择。对于使用 Nvidia 的用户,可以通过 PPA 为 Ubuntu 安装 Nvidia 驱动。
注意:在虚拟中使用 Ubuntu,无需安装显卡驱动。
UbuntuKylin 团队与搜狗输入法合作开发的搜狗输入法Linux版本已经推出多年,下载地址: http://pinyin.sogou.com/linux/,下载后直接点击安装即可。
Ubnutu 额外受限
指的是这些解码器的包没有默认安装在 Ubuntu 系统里面,这些解码器没有默认安装在系统里面的原因是受到很多国家的法律的约束。在这些解码器安装完以后可正常播放很多格式的音视频文件,如 MP3,MP4,AVI 和以及其他的一些格式。使用下面的命令进行安装:
$ sudo apt-get install ubuntu-restricted-extras
注意:对于初学者,如果屏幕上出现那些协议和条款,按
Tab
键在选项之间切换,使用Enter
确认选择。
通常在安装完 Ubuntu 的受限额外的解码器后,你应该想通过 flash 播放器
看视频。可能因为一个问题或者其他的原因在安装 flash播放器
上遇见的问题。使用下面的命令:
$ sudo apt-get install flashplugin-installer
Typora 是优秀的 Markdown 编辑器,便于日常笔记写作。Typora 不在 Ubuntu 默认软件仓库中,需要先添加仓库,再行安装。
# 若报错,执行注释行
# 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
切换即可。
由于系统自带的是 OpenJDK,卸载 OpenJDK 之后会带有残留,导致运行 $ java -version
时第一行不是 java 的版本号,会是 Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
这个提示,导致很多检测 java 版本号的脚本会运行出错,因此需要手动清除残留。
$ 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:
# 添加 Oracle Java 8 软件仓库
sudo add-apt-repository ppa:webupd8team/java
# 更新软件源
sudo apt-get update
# 安装 Oracle Java 8
sudo apt-get install oracle-java8-installer
# 删除卡顿的 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
Linux 系统的一大特色就是使用命令进行日常操作和系统管理,新手可能会感觉不太适应,但熟悉以后会发现命令其实是非常高效的执行方式。该部分内容介绍 Linxu 下的基础命令、用户权限以及用户和密码管理等基本概念。
Ubuntu 18.04 之前的发型版本都对 Gnome 桌面环境不友好,若是体验后想卸载,可按照以下命令进行,卸载流程可借鉴至其他软件。
# 卸载掉 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
调出终端,抑或进入恢复模式(黑屏情况下显卡出现问题只能在无图形化界面下进行操作)。
Linux 下文件的复制、移动与删除命令为:cp
,mv
,rm
,若遇权限问题需在前面加:sudo
。
cp
命令格式
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
,可输入以下命令:
$ cp /test1/file1 /test3/file2
mv
命令格式
mv [-fiv] source destination
参数说明
-f
: force,强制直接移动而不询问-i
: 若目标文件(destination)已经存在,就会询问是否覆盖-u
: 若目标文件已经存在,且源文件比较新,才会更新操作示例
如将 /test1
目录下的 file1
移动到 /test3
目录,并将文件名改为 file2
,可输入以下命令:
$ mv /test1/file1 /test3/file2
移动当前目录所有文件到上一级目录
$ mv * ../ # .. 表示回到上一级目录
rm
命令格式
rm [-fir] 文件或目录
参数说明:
-f
: 强制删除-i
: 交互模式,在删除前询问用户是否操作-r
: 递归删除,常用在目录的删除操作示例
如删除 /test
目录下的 file1
文件,可以输入以下命令:
$ rm -i /test/file1
Linux 内的一切皆文件,所以对于 Linux 下文件的管理就十分的重要了。Linux 下的文件权限分为三种:r
(读),w
(写),x
(执行)。Ubuntu 下查看权限的命令为:
$ ls -l filename # 文件权限查询,filename 用于指定具体文件
$ ls -ld folder # 文件夹权限查询,folder 用于指定具体文件夹
$ ll # 查看目录下所有内容权限情况,也可在后面指定目录
如列出用户根目录下文件的权限情况,结果如下:
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
表示文件可以被执行(如果它是可执行程序的话),-
表示未被授予权限。
Linux 用 chmod
命令修改用户权限,其用法大致分为两种,1)指定某类用户的权限;2)同时指定三类用户的权限,语法为:
chmod [-可选参数][<权限范围>+/-/=<权限设置>] 文件/目录
可选参数列表
-c
:当发生改变时报告处理信息-f
:错误信息不输出-R
:处理指定目录及子目录下的所有文件-v
:运行时显示详细处理信息指定某类用户的权限
chmod [u/g/o/a] [+/-/=] [r/w/x] file
u
:User,即文件或目录的拥有者
g
:Group,即文件或目录的所属群组
o
:Other,除了文件或目录拥有者和所属群组外,其他用户都属于这个范围
a
:All,即全部用户
+
:表示增加权限-
:表示取消权限=
:表示取消之前的权限,并给予唯一的权限r
:读取权限,数字代号为 “4”w
:写入权限,数字代号为 “2”x
:执行权限,数字代号为 “1”-
:不具备任何权限,数字代号为 “0”例如给 User 用户增加了对 code
目录下 /readme.txt
文件 w
和 x
的权限:
$ sudo chmod u+rw code/readme.txt
同时指定三类用户的权限
chmod [xyz] file
其中 x
,y
,z
分别指定 User
、Group
、Other
的权限;用三位二进制数表示 r
, w
, x
三种权限(注意顺序),其中 0
代表没有该权限,1
代表有该权限,如 100
则表示,有 r
权限,无 wx
权限;再将这个三位的二进制数转为十进制,则是 x
(或yz
)的值。
User
: 7 = 111,表示具有 rwx
权限Group
: 7 = 111,表示具有 rwx
权限Other
: 4 = 100,表示只具有 r
权限,而没有 wx
权限例如给 User
和 Group
”读+写+执行“ 的权限(即 rwx
),并给 Other
只 ”读“(即 r
)的权限:
$ sudo chmod 774 code/readme.txt
对当前所在目录下的所有非隐藏内容(Linux 下以 .
开头的为隐藏内容)做权限修改操作:
$ sudo chmod 774 * # “*” 为通配符,代表当前目录下所有非隐藏内容
对当前所在目录下的所有内容(包括以 .
开头的隐藏内容)做权限修改操作:
$ sudo chmod 774 . # “.” 代表当前所在目录
修改指定目录下所有内容(包括以 .
开头的隐藏内容)的权限:
$ sudo chmod -R 774 code/
Ubuntu 普通用户第一次使用 root
需要设置 root
密码:
$ sudo passwd root
两次输入相同密码后设置成功,然后执行:
$ su root
输入密码后即切换到了 root
用户。
Ubuntu 默认的登陆界面不能采用 root
账号登陆,但可使用 guest
访客登陆。将其改为可输入用户名的形式登陆,并删除访客登陆。
第一步:给 root
用户设置密码
见 2.4.1
小节。
第二步:修改登陆界面的配置文件
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
# 若不具有修改权限,修改之
sudo chmod 777 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在末尾增加两行后保存退出,如下所示:
[Seat:*]
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false
如果现在用 root
用户在图形界面登录会有错误:读取 /root/.profile 时发生错误:mesg:tty n 还需要做修改
。继续下一步。
第三步:编辑 root
配置文件
编辑 /root/.profile
文件:
sudo gedit /root/.profile
在末尾增加:tty -s && mesg n || true
,保存后退出:
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
tty -s && mesg n || true
第四步:重启系统
重启系统后,上述修改生效,选择 登陆
按钮,输入 root
为登录用户,再输入密码。
普通用户密码修改只能由 root
完成,操作过程及结果如下:
spacefan@U1604:~$ su root
密码:
root@U1604:/home/spacefan# passwd spacefan
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
经过前面的大量铺垫,终于进入安装 Bernese 软件编译安装环节。首先检查安装文件是否齐全,一份完整的软件包至少包含以下文件:
Bernese 软件代码量庞大,计算部分主要采用 Fortran 语言编写,界面部分使用基于 Qt 的 C++ GUI 库实现,但也有一些 Perl 或 Shell 语言实现的脚本。在编译安装 Bernese 之前,你需要安装以下程序:
目前,绝大部分的 Linux 发行版都已经自带了 Perl 5 解释器和 GNU C++(g++)编译器,当然也包括 Ubuntu。因此实际上只安装所需依赖库、Fortran 编译器和 Qt 4 即可。
Bernese 软件依赖于 X11 和 zlib,编译软件之前需要首先安装这些依赖。使用如下命令安装 X11 和 zlib:
$ sudo apt-get install libx11-dev
$ sudo apt-get install libxext-dev
$ sudo apt-get install libxtst-dev
$ sudo apt-get install zlib1g-dev
Fortran 编译器用于编译 Bernese 软件中使用 Fortran 语言编写的计算程序,在终端中使用如下命令安装 GNU Fortran(gfortran)编译器:
$ sudo apt-get install gfortran
Bernese 的图形操作界面部分基于 Qt 开发,编译程序菜单时需要引用 Qt 4。从 Qt 4 的下载页面,下载 Qt 4.8.7 的 Linux 源代码 进行编译。首先解压源代码文件:
$ tar -zxvf qt-everywhere-opensource-src-4.8.7.tar.gz
使用 cd
命令进入解压得到的文件夹,执行如下命令将 Qt 4 安装到 /usr/local/qt4 目录内:
$ sudo ./configure -release -opensource -static -prefix /usr/local/qt4
$ sudo make
$ sudo make install
Qt 4 的编译安装过程需要耗费较长的时间,具体时长取决于你的计算机硬件配置,耐心等待其编译完成。然后设置环境变量 QTDIR
,将其指向 Qt 4 的安装目录。切换至 root
,打开 bash 环境配置文件:
$ su root
$ gedit ~/.bashrc
在文件末尾添加一下内容:
# 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
也可以直接在终端设置环境变量:
$ export QTDIR="/usr/local/qt4"
至此,依赖环境已经配置完毕,可以开始安装 Bernese 了。
Bernese 程序为用户提供了安装引导脚本 setup.sh
,执行该脚本并根据提示操作即可完成安装过程。Bernese 默认安装到当前用户的 Home 文件夹,但也可以安装到其他文件夹,完整安装需要约 500 MB 的磁盘空间。为了供多个用户使用,需要共享 BERN52 和 MENU.INP 的执行和修改权限。本示例将 Bernese 安装至 /opt 目录下。
进入安装文件目录,此处为 ~/Bernesev5.2/Bernese_v5.2_linux
,命令操作如下所示:
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 格式,再运行。终端输入:
$ sudo apt-get install dos2unix
$ dos2unix setup.sh
通过 root
用户执行 Bernese 的安装引导脚本:
$ su root
$ sh setup.sh
之后程序提示输入 Bernese 软件的安装目录,这里的 /root
表示默认安装路径。我们将其安装到 /opt/BERN52
文件夹,因此输入:/opt
。
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 语言解释器位置:
Perl program to be used [ /usr/bin/perl ]:
一般使用系统自带的 Perl 语言解释器就可以了,此处直接按 Enter
键回车。之后,配置文件 configure.pm
被启动,并在屏幕打印以下提示:
==========================================
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 的路径,表明安装程序找到的了该编译器:
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)。然后安装程序继续打印出当前应用的环境变量:
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
解释一下此处的默认环境变量:
若接受其默认的变量设置,输入 y
。要修改其中的配置,输入 n
,然后根据其提示,输入变量编号来配置变量。这里使用默认设置,输入 y
。随后安装程序将检测是否存在所需的文件夹,当提示某个文件夹不存在时,程序提示是否创建,键入 y
创建即可。
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
。
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
进行权限设置:
$ cd /opt/BERN
$ sudo chmod -R 777 . # or $ sudo chmod -R 777 *
然后,查询 ld
的版本:
$ ld -v
GNU ld (GNU Binutils for Ubuntu) 2.26.1
版本大于 2.22
,需要修改 BERN52/MENU/memu.pro
中的内容。打开该文件:
$ gedit /opt/BERN52/MENU/menu.pro
找到:
##QMAKE_LIBS += -lz
去除前面的注释 #
,保存后退出。然后,回到原终端,按 3
添加新用户环境。
==========================================
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
编译图形界面菜单。
==========================================
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 软件已经编译安装成功了!
*******************************************
* Fortran programs compiled successfully.
*******************************************
注意:若提示 Fortran 程序编译至 100/100 时出错,返回安装程序引导,按
0
重新执行 1~5 步,根据经验,应该会成功编译了。
Bernese 编译安装成功后,需要跑一下示例文件 PPP_DEMO.PCF
来验证软件是否可以正常工作,在跑 PPP_DEMO.PCF
之前,最好先完成这几件事情:
更新 CAMPAIGN52.tgz
、DATAPOOL.tgz
、SAVEDISK.tgz
最新的 CAMPAIGN52.tgz
、DATAPOOL.tgz
、SAVEDISK.tgz
文件需要在 Bernese FTP 下载:ftp.aiub.unibe.ch/BERN52/,下载后替换掉自带的文件,否则跑 PPP_DEMO.PCF
时会报错。
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
目录下。
$ cp DE405.EPH /opt/BERN52/GPS/GEN/
添加 RINEX 转换程序
将 Linux 版本的 RINEX 转换程序放入 usr/bin
目录下,否则第安装示例文件时会出现 识别不了 RRX2RNX 文件
的提示。下载地址:Download page for the RNXCMP software,32位为 RNXCMP_4.0.7_Linux_x86_32bit.tar.gz,64位为:RNXCMP_4.0.7_Linux_x86_64bit.tar.gz。下载后解压,进入目录。
$ cd RNXCMP_4.0.7_Linux_x86_64bit/bin/
$ sudo cp * /usr/bin
注意:这几件事除了星历文件,其余三件都可以在安装开始之前进行,其中第一件和第二件可以直接在安装包文件中进行替换。但为了保险起见,最好先按照本文步骤操作。
然后,继续在上小节的安装提示中,按 6
安装示例,如果看到下面的提示,说明示例安装成功。
Installation of the example campaign has been finished
使用 root
用户进行数据解算操作既不方便也不安全。为了让非 root
用户也能使用 Bernese,需要使用新用户加载环境变量设置文件,并启动配置程序。按 3
继续,若不慎将终端关闭,新开终端中执行如下命令:
$ source /opt/BERN52/GPS/EXE/LOADGPS.setvar
$ perl /opt/BERN52/GPS/EXE/configure.pm
程序再次打印出安装提示,此时键入 3
,根据程序提示添加新用户的环境变量即可。
==========================================
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
用户。
为了在每次开机后都能直接使用 Bernese 软件,需要配置在系统启动时自动加载环境变量。编辑用户主文件夹内的配置文件(root
下的配置文件也可以一并添加了):
$ gedit ~/.bashrc
在文件末尾为 Bernese 加载环境变量:
# Load environment variables for Bernese GNSS Software
source /opt/BERN52/GPS/EXE/LOADGPS.setvar
之后在终端中键入 G
就可以启动 Bernese 了,如下图所示。
如果 3.3.3
小节在添加普通用户时 GPSDATA
移动不成功,可能会在启动时报错:
Cannot open INP file /home/spacefan/GPSDATA/CAMPAIGN52/EXAMPLE/STA/SESSIONS.SES
Using standard session definition
从 /root
目录将 GPSDATA
拷贝到普通用户目录 /home/spacefan
,再为其添加普通用户权限即可。
至此,Bernese 5.2 软件在 Ubuntu 16.04.6 下编译安装成功。简单总结一下:
BERN52
目录下。setup.sh
前,为防止乱码,先在终端运行:$ dos2unix setuo.sh
。ld
版本号,并做相应填坑工作。DE405.PHE
星历和 RENX 转换工具的添加。configure.pm
,配置好普通用户的环境变量。后续,将写一些在 Bernese 5.2 下的 GNSS 数据处理和精密定轨教程,敬请期待!
【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的注意事项