最近新接到这样一个需求,将生物原始数据上传到某中心,其中用到ascp命令,阴差阳错的装了ruby、ascli,这里就都一并介绍下安装方式,由于服务器老旧默认安装时ruby2.0,又
升级到2.7等引发的一系列问题,算是学习科普文了。
Ruby 是一种灵活、动态的编程语言,广泛用于 Web 开发、自动化等领域。
ascli 是 IBM Aspera 的命令行接口工具,用于管理和传输大规模数据。
ascp 是 Aspera 的核心传输工具,专注于高速、安全的文件传输,特别适用于在不良网络条件下传输大文件。
- ruby 地址:https://github.com/ruby/ruby/releases
- aspera-cli 地址:https://github.com/IBM/aspera-cli
- ascp地址:https://www.ibm.com/aspera/connect/
1、Ruby 是一种高层次的、解释性的编程语言,因其优雅和简洁而备受欢迎。由 Yukihiro “Matz” Matsumoto 在 1995 年发布,Ruby 的设计理念是要使编程变得更加愉快和高效,注重开发者的幸福感。
- 动态类型: Ruby 是动态类型语言,变量类型不需要在编译时定义,可以在运行时动态确定。
- 面向对象: 在 Ruby 中,所有的东西都是对象,包括数字、字符串,甚至类本身。Ruby 提供了完整的面向对象编程特性,例如继承、多态和封装。
- 丰富的标准库: Ruby 拥有丰富的标准库和第三方库(通过 RubyGems 管理),允许开发者在无需从零开始编写代码的情况下实现复杂功能。
- Ruby on Rails: Ruby 最出名的框架可能是 Ruby on Rails,一个用于构建 web 应用程序的框架。它采用了“约定优于配置”的理念,使得 web 开发更加快速和简便。
常见用途:
- Web 开发(通过 Ruby on Rails)
- 自动化脚本编写
- 数据分析和处理
- DevOps 工具开发
2、Ascli (Aspera Command Line Interface)
Ascli 是 IBM Aspera 提供的一个命令行工具,用于通过 CLI 界面与 Aspera 服务进行交互。它提供了一系列命令和选项,允许用户高效管理和传输文件,主要用于大规模数据的传输和管理。
- 基于 FASP 协议: Aspera 使用 FASP(Fast, Adaptive, Secure Protocol)协议,这是一种比传统 TCP 更加高效、快速的传输协议,特别适合大文件传输。
- 多种操作: 通过
ascli
,用户可以执行多种操作,如文件上传/下载、列表目录、管理文件夹、配置传输设置等。 - 高度可配置:
ascli
提供了丰富的命令行选项,用户可以根据需要调整传输速率、并发数、加密设置等。
常见用途:
-
大规模数据传输(如多媒体文件、数据备份等)
-
集成到自动化脚本或 CI/CD 管道中
-
远程文件管理
示例命令:
# 使用 ascli 上传文件到远程服务器 ascli fasp upload --host=example.com --username=user --private-key=~/.ssh/id_rsa /local/path/to/file /remote/path/to/destination # 列出远程服务器上的目录 ascli server browse --host=example.com --username=user --private-key=~/.ssh/id_rsa /remote/path
3、Ascp (Aspera Secure Copy)
Ascp 是 IBM Aspera 提供的一个命令行工具,是 Aspera 软件套件中的核心部分,专门用于高性能的数据传输。它使用 Aspera 的 FASP 协议,以比传统文件传输协议(如 FTP 或 SCP)更快的速度传输文件,尤其适合在高延迟或低带宽网络条件下进行大文件传输。
- 高性能:
ascp
能在长距离、跨国网络传输中保持高效,不受网络延迟和丢包率的影响。 - 强安全性: 支持数据传输加密和 SSH 认证,确保传输过程中的数据安全。
- 丰富的命令行选项: 用户可以通过命令行选项自定义传输速率、并发数、带宽使用、加密等参数。
- 跨平台:
ascp
可在多种操作系统上运行,包括 Windows、Linux 和 macOS。
常见用途:
-
企业级大数据传输
-
多媒体文件的快速分发
-
数据备份和恢复
-
广播和媒体行业的实时传输需求
示例命令:
# 使用 ascp 从本地上传文件到远程服务器 ascp -P 33001 -i /path/to/aspera_private_key /local/file/path user@remote.server.com:/remote/file/path # 从远程服务器下载文件到本地 ascp -P 33001 -i /path/to/aspera_private_key user@remote.server.com:/remote/file/path /local/file/path
1、ruby安装
通过源码安装 Ruby 是一种灵活的安装方式,尤其是在你需要特定版本的 Ruby 或者想要在系统中自定义安装路径时。以下是在 CentOS 上通过源码安装 Ruby 的步骤。
步骤 1: 安装依赖
在安装 Ruby 之前,确保安装了必要的依赖库:
sudo yum update
sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel zlib-devel readline-devel libffi-devel
这些库是 Ruby 依赖的必要组件。
步骤 2: 下载 Ruby 源码
从 Ruby 官方网站 下载你想要安装的 Ruby 版本的源码包,或者直接通过命令下载:
# 下载 Ruby 2.7.0 版本(你可以更换为你需要的版本)
wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0.tar.gz
# 解压缩
tar -xzvf ruby-2.7.0.tar.gz
cd ruby-2.7.0
步骤 3: 编译和安装
-
配置编译环境:
配置 Ruby 的安装路径和选项(默认安装到
/usr/local
目录):./configure
如果你想安装到自定义目录,例如
/opt/ruby
,可以这样做:./configure --prefix=/opt/ruby
-
编译源码:
编译过程可能需要一些时间,具体取决于你的机器性能:
make
-
安装 Ruby:
使用
make install
命令安装 Ruby:sudo make install
步骤 4: 配置环境变量
如果你将 Ruby 安装到自定义目录(例如 /opt/ruby
),需要将 Ruby 的 bin
目录添加到你的 PATH
环境变量中:
export PATH=/opt/ruby/bin:$PATH
为了使这个配置永久生效,可以将上面的命令添加到 ~/.bashrc
或 ~/.bash_profile
文件中:
echo 'export PATH=/opt/ruby/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
步骤 5: 验证安装
验证安装是否成功:
ruby -v
你应该会看到刚刚安装的 Ruby 版本信息。
额外步骤:安装 RubyGems 和 Bundler
通常 RubyGems 已经包含在 Ruby 的源码包中,但如果你需要手动安装:
gem update --system
之后,可以安装 bundler
:
gem install bundler
通过以上步骤,你已经成功通过源码在 CentOS 上安装了 Ruby。
2、安装aspera-cli
前提条件是安装ruby>2.7.0,直接下载源码到bin文件内就能用,无非就是创建一个超链接;
地址:https://github.com/IBM/aspera-cli/releases
详细版本:https://github.com/IBM/aspera-cli/archive/refs/tags/v4.12.0.tar.gz
安装完,直接用 软连接,创建快捷方式
ln -s ./home/humx/aspera-cli-4.12.0/bin/ascli /usr/bin/ascli
ascli --version
4.12.0
3、安装ascp
https://gist.github.com/mfansler/71f09c8b6c9a95ec4e759a8ffc488be3
#!/bin/bash
## How to install ascp, in a gist.
## The URI below is not persistent!
## Check for latest link: https://www.ibm.com/aspera/connect/
wget -qO- https://ak-delivery04-mul.dhe.ibm.com/sar/CMA/OSA/0a07f/0/ibm-aspera-connect_4.1.0.46-linux_x86_64.tar.gz | tar xvz
## run it
chmod +x ibm-aspera-connect_4.1.0.46-linux_x86_64.sh
./ibm-aspera-connect_4.1.0.46-linux_x86_64.sh
## add it to the path now and in the future
export PATH=$PATH:~/.aspera/connect/bin/
echo 'export PATH=$PATH:~/.aspera/connect/bin/' >> ~/.bash_profile
结果:
ascp --version
Aspera Connect version 4.1.0.46
ascp version 4.2.0.183928
Operating System: Linux
FIPS 140-2-validated crypto ready to configure
AES-NI Supported
Connect Server License max rate=(unlimited), account no.=1, license no.=53
Enabled settings: connect, cargo, drive and sync2
错误记录
1、cc1: warning: unrecognized command line option “-Wno-tautological-compare” [enabled by default]
编译器版本问题:该警告通常是因为你正在使用的编译器(可能是 GCC 或 Clang)版本较旧,而不支持该选项。
选项拼写错误:也有可能是选项拼写错误或误用了其他选项。
2、ruby 2.7.4源码中没有configure
生成 configure
文件的步骤
你需要使用 autoconf
工具生成 configure
脚本。以下是具体步骤:
-
安装必要的工具: 确保系统上安装了
autoconf
和其他必要的开发工具:sudo yum install autoconf bison bzip2 gcc-c++ libffi-devel libtool make readline-devel zlib-devel
-
生成
configure
文件: 如果你是通过 Git 克隆的 Ruby 源码,首先需要进入源码目录并生成configure
文件:cd ruby # 进入 Ruby 源码目录 autoconf
运行
autoconf
命令将生成configure
文件。 -
运行
configure
并编译安装: 生成configure
文件后,你可以继续进行标准的编译安装流程:./configure make sudo make install
3、downloading config.guess … tool/downloader.rb:243:in `rescue in download’: failed to download config.guess (RuntimeError)
config.guess
是一个脚本,用于确定系统的硬件架构和操作系统类型。在 Ruby 源码编译过程中,config.guess
和 config.sub
是自动化构建过程中的重要工具,通常由 autoconf
或类似工具下载和使用。
出现 failed to download config.guess
错误通常表示在下载 config.guess
文件时发生了问题。这里有一些解决方案:
解决方案 1: 手动下载 config.guess
和 config.sub
-
手动下载
config.guess
和config.sub
文件: 从 GNU 的config
仓库下载最新的config.guess
和config.sub
文件:bash复制代码wget https://git.savannah.gnu.org/cgit/config.git/plain/config.guess wget https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
-
将下载的文件放入源码目录: 将下载的文件复制到 Ruby 源码的根目录下:
bash复制代码cp config.guess /path/to/ruby/source/ cp config.sub /path/to/ruby/source/
-
重新运行
autoconf
:cd /path/to/ruby/source autoconf
解决方案 2: 确保网络连接正常
有时,下载失败可能是因为网络问题。请确保你的网络连接正常并且可以访问外部服务器。
解决方案 3: 使用备用下载源
如果官方源不可用,尝试使用备用源下载 config.guess
和 config.sub
:
-
下载备用源:
bash复制代码wget http://ftp.gnu.org/gnu/config/config.guess wget http://ftp.gnu.org/gnu/config/config.sub
将它们放在 Ruby 源码目录下。
解决方案 4: 使用预构建的 Ruby 版本
如果你仍然无法解决问题,考虑使用预构建的 Ruby 包,而不是从源码编译:
-
使用
rbenv
或RVM
安装 Ruby:bash复制代码# 安装 rbenv curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-installer | bash # 安装 Ruby rbenv install 2.7.4
或
# 安装 RVM curl -sSL https://get.rvm.io | bash -s stable # 安装 Ruby rvm install 2.7.4
通过上述方法,你应该能够解决 config.guess
下载问题并顺利完成 Ruby 的编译和安装。如果遇到其他问题,确保查看编译日志和错误信息以获取更多线索。
4、装ruby-progressabar,/root/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in require': cannot load such file -- ruby-progressbar (LoadError)
gem install ruby-progressbar --verbose
5、/root/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require’: cannot load such file – terminal-table (LoadError)
出现 cannot load such file -- terminal-table (LoadError)
错误表明 Ruby 程序在尝试加载 terminal-table
gem 时找不到它
gem install terminal-table --verbose
gem 'terminal-table'
bundle install
对于 rbenv
rbenv global 2.7.4
rbenv rehash
对于 RVM
rvm use 2.7.4
6、/root/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in require': cannot load such file -- xmlsimple (LoadError)
gem install xml-simple --verbose
7、cannot load such file – symmetric_encryption/core (LoadError)
gem install symmetric-encryption --verbose
8、/root/.rbenv/versions/2.7.4/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require’: cannot load such file – net/ssh (LoadError)
gem install net-ssh --verbose