ubuntu 离线安装 tmux
在使用linux服务器工程项目开发的时候,最为常用的是 tmux 工具。tmux 用于分屏可视化,还能保证断开连接后,程序在服务器后台继续运行。
具体 tmux 的使用方法可以参考我之前写的博客第二章 Linux 中常用的 tmux命令 和 vim编辑器
apt-get 简介
apt-get命令是非常常见的 linux 命令,适用于 deb 包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
这里仅介绍常见的用法
升级安装
apt-get update # 更新源文件,并不会做任何安装升级操作
apt-get upgrade # 升级所有已安装的包
apt-get install packagename # 安装指定的包
apt-get install packagename --only-upgrade # 仅升级指定的包
apt-get install packagename --reinstall # 重新安装包
apt-get -f install # 修复安装
apt-get dist-upgrade # 升级系统
删除
apt-get remove packagename # 删除包
apt-get remove packagename -- purge # 删除包,包括删除配置文件等
apt-get autoremove packagename --purge # 删除包及其依赖的软件包+配置文件等(只对6.10有效,推荐使用)
tmux apt-get 安装
sudo apt-get update
sudo apt-get install tmux
这是最简单的下载方法。
离线下载 tmux
假如说,你的 apt-get 没办法使用了,或者说是你认为 apt-get 获取的文件过于老旧,你想用最新的版本(apt-get的源都没办法做到实时更新)。基于以上这两个理由,你不得不下载一下离线文件。
进入 github 中,查看介绍
从其开源项目的 readme 文件中,可知 tmux 依赖于 libevent 2.x, ncurses。
因此,我这里先给出 tmux, libevent 2.x, ncurses。的版本链接。
https://github.com/tmux/tmux/releases
https://github.com/libevent/libevent/releases/
https://invisible-mirror.net/archives/ncurses/
可以根据自己需要自行选择版本链接,仅需要替换 wget 的内容。
bison 可以选择性安装
wget https://ftp.gnu.org/gnu/bison/bison-3.8.tar.gz
tar -xzf bison-*.tar.gz
cd bison-*
./configure --prefix=/usr
make && sudo make install
ncurses 的安装
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz
tar -xzf ncurses-*.tar.gz
cd ncurses-*
./configure --prefix=/usr CXXFLAGS="-fPIC" CFLAGS="-fPIC"
make && sudo make install
libevent 的安装
# export LC_ALL=C 为了去除全部本地化的设置,让命令能正确执行
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
export LC_ALL=C
tar -xzf libevent-*.tar.gz
cd libevent-*
./configure --prefix=/usr
make && sudo make install
tmux 安装
wget https://github.com/tmux/tmux/releases/download/3.2/tmux-3.2.tar.gz
export LC_ALL=C
tar -xzf tmux-*.tar.gz
cd tmux-*
./configure
make && sudo make install
安装完上述的内容之后,并且不出现 Error的字眼,就说明安装成功。
在命令行上输出 tmux 启动即可。
原文地址:https://www.cnblogs.com/lucky-light/p/16406449.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android快速索引条控件QuickIndexBar
- HTML5动态时钟
- 在AndroidStudio编译过程中遇到Error:duplicate files during packaging of APK问题的解决方法
- Android ListView头部视差控件
- 多个Listview瀑布流效果
- webview接入HttpDNS实践
- 《一个操作系统的实现》笔记(5)--内核雏形
- 《一个操作系统的实现》笔记(4)-- Boot&Loader
- 《一个操作系统的实现》笔记(3)--中断和I/O保护
- 《一个操作系统的实现》笔记(2)--保护模式
- 《一个操作系统的实现》笔记(1)--NASM汇编语法和环境搭建
- 理解对C++裸指针释放后重用的问题
- C++与汇编小结
- 全文搜索引擎 Elasticsearch 入门教程
- Stetho的通信原理