上次在《MobaXterm: SSH/X远程客户端, Xmanager的最佳免费替代品》里面介绍了MobaXterm这个Windows上的便携 多合一unix工具箱,它基于Cygwin,集成了ftp/telnet/ssh/rdp/vnc等多种远程连接能力,还有X server以支持连 接X桌面或者运行X程序。

虽然MobaXterm自身集成了很多工具,并且还提供了20多个大大小小的插件,但眼看了Cygwin官方仓库里面那么多软 件 而不能用,还是会很心痒,尤其是一些必备工具。

MobaXterm在8月上旬发布的7.2版本提供了从Cygwin官方仓库直接加装软件包的能力:

  • New feature: Added "MobApt", a new package manager based on the great "apt-cyg" tool, for automatic installation of Cygwin utilities through internet.
  • New feature: You can now specify a persistent root folder ("/"). This is especially useful if you want to install packages using "MobApt" and you want to keep them across MobaXterm restarts.

在选项设置里面指定了 persistent root folder 之后,MobaXterm就会将自己集成的cygwin环境解压到该目录,重启 后就从该目录加载cygwin环境了,这样就能非常快速地获得一个基本的cygwin环境(比用cygwin setup.exe安装 base包省事多了)——不过还不清楚以后MobaXterm有了新版本,如何更新这里面的内容。

然后就可以用它提供的MobApt(或者apt-cyg,因为MobApt是对apt-cyg做了些封装并提供了界面)从Cygwin官方仓 库来加装软件包了,比如首先解决我一直觉得不爽的man问题(我上次博文中也说到过):

apt-cyg install less
apt-cyg install man

这里有几个小地方需要注意:

  • 安装 man 的时候,会被认为已经安装方法而跳过。解决方法是从 /etc/setup/mobainstalled.db 里面删除 manless 的记录,同时还得删除(建议做好备份) /bin/man/bin/less (man依赖于less,但内置 的less不兼容)。Cygwin的安装工具是用 /etc/setup/installed.db 这个文件来记录已经安装的包,但 MobaXterm里面的 apt-cyg 做了一点修改,会将 /etc/setup/mobainstalled.db 里面的记录也作为已经安装 的包来考虑,而这里其实记录的包都不是Cygwin原生包,而是MobaXterm通过各种方式提供的简化版本;
  • 基于上面的原因,不建议使用Cygwin原来的setup.exe来安装和升级软件包;

MobaXterm http://mobaxterm.mobatek.net/

MobaXterm 加装cygwin软件包的更多相关文章

  1. Acer Aspire E1 471G 加装SSD+机械盘后无法启动的问题

    老笔记本 Acer Aspire E1 471G 加装了一块 SSD 作为系统盘(win10),原机械盘格式化后,装在光驱托架上作为数据盘. 可能会出现: 系统无法启动,显示找不到启动设备,并且在F2 ...

  2. 笔记 : WampServe加装PHP版本(7.2.3)为例

    1.由于正在学习Laravel框架,服务器wamp,Composer已搭建完成,但在安装laravel installer之后使用laravel new blog,报错为"This pack ...

  3. 给msde加装企业管理器

    -=给msde加装企业管理器=- 首先,反对所谓的绿色版,运行那是 相~~~当 不稳定,自动关闭,要你有什么用?还广告飞扬!为了调试,花了我整整一天的时间.给大家节省的时间,也为了让大家少走点弯路. ...

  4. 老毛桃PE修改方法(屏蔽更改主页,屏蔽加装的绿色浏览器)

    虽然老毛桃早就退隐了,虽然这个老毛桃不是曾经那个老毛桃~但是不得不说这个老毛桃PE还是有很多人在用~而且这个老毛桃的PE兼容性,个人认为还是很不错的.就是有暗扣,每次加装一个“绿色浏览器”和锁定主页, ...

  5. 戴尔笔记本Inspiron 7560(灵越) 加装固态硬盘从选购固态硬盘到系统迁移到设置SSD为第一启动(受不了了,网上的教程就没有完整的)

    菜鸡我的笔记本为戴尔灵越Inpsiron 7560,其实Inspiron 15 7560 和Inspiron 7560是同一个型号. 电脑拆了安过内存条,换过电池,现在又加了一块固态硬盘. 因为不想安 ...

  6. 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘

    笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘 系列文章: 笔记本电脑提速之加装内存条.SSD固态硬盘.光驱位换SSD固态硬盘 笔记本ThinkPad E430c加装内存和SSD固态 ...

  7. 笔记本加装SSD并装系统

    1,首先了解笔记本配置信息 一般加装SSD都是120~256左右,并使用原有的机械硬盘:首先确定加装位置:1,是否支持M.2接口:假如支持,可以直接购买,拆机装上:我的笔记本不支持:所以考虑2,光驱的 ...

  8. Pavilion M4-1016TX 加装固态硬盘(SSD)+UEFI+GPT安装WIN8.1

    折腾了一天,终于将电脑加上SSD和装上系统,记录下,方便后面忘记使用. 步骤: 1.Pavilion M4-1016TX内置了mSata的接口,大小是全高的.ssd支持大小官方说法是测试过32g的,目 ...

  9. VS2015安装之后加装SQL SERVER2014的步骤

    网上一直说的是先安装SQL Server 2014,再安装VS2015,软件就不会出现问题.我这次在什么都没准备的情况下安装了VS2015,安装之后发觉VS2015自带的SQL2014只有连接服务器和 ...

随机推荐

  1. P1510 精卫填海

    P1510 精卫填海二分答案二分背包容量,判断能否满足v.判断的话就跑01背包就好了. #include<iostream> #include<cstdio> #include ...

  2. 图片裁切展示css

    .wen_photo{ overflow:hidden;}.wen_photo img{ margin:0; padding:0; width:100%; height: 100%; object-f ...

  3. C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

    笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的互斥量Mutex,于是花了一些时间进行了调研.(结果对C++标准库很是绝望....)最终还是通过利用了Boost库的share ...

  4. OutputStreramWriter和InputStreamReader类

    整个IO类中除了字节流和字符流还包括字节和字符转换流. OutputStreramWriter将输出的字符流转化为字节流 InputStreamReader将输入的字节流转换为字符流 但是不管如何操作 ...

  5. 洛谷.1251.餐巾计划问题(费用流SPFA)

    题目链接 /* 每一天的餐巾需求相当于必须遍历某些点若干次 设q[i]为Dayi需求量 (x,y)表示边x容y费 将每个点i拆成i,i',由i'->T连(q[i],0)的边,表示求最大流的话一定 ...

  6. python生成指定文件夹目录树

    # -*- coding: utf-8 -*- import sys from pathlib import Path class DirectionTree(object): "" ...

  7. 工具使用-----Jmeter教程 简单的压力测试

    摘抄于http://www.cnblogs.com/TankXiao/p/4059378.html 以下是英文版的,中文版的也差不多的 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做 ...

  8. Redis管道理解

    Redis管道理解 简介 管道并不是Redis本身提供的功能,通常是客户端提供的功能: 管道就是打包多条无关命令批量执行,以减少多个命令分别执行消耗的网络交互时间(TCP网络交互),可以显著提升Red ...

  9. Docker machine(Docker 虚拟机)

    安装docker [root@lianxi ~]# yum -y install docker 启动docker [root@lianxi ~]# systemctl start docker 下载D ...

  10. android:ViewHolder模式

    ViewHolder holder = null; if(convertView == null){ convertView = mInflater.inflate(R.layout.xxx null ...