Ubuntu 安装 scrapy 及 pip upgrade 时的各种依赖问题

安装 Scrapy 时遇到了依赖问题,使用 pip 时又发现自带的基础 py 包同样依赖不全,后一并 Google 解决,记一笔备忘。

首先安装 PIP,即 python 的包管理器。

由于 ubuntu 官方库提供的 pip 不是最新的,因此需要先 upgrade 自己:

此时如果你直接试图安装 scrapy 是会出错的:

原因是 scrapy 需要抓取网页因而要处理 https,而处理 https 又依赖加解密算法(即 cryptography 包),而 cryptography 又依赖傅立叶变换的算法以及相应的编译环境。Ubuntu 16.04 默认没有安装 libffi-dev 和 libssl-dev,gcc 也不一定安装,而 scrapy 包又没有将相关软件包记到依赖列表里,因此需要先手动安装:

然后再安装 scrapy 即可顺利完成。

 


顺便,由于更新强迫症,一并把 pip 自带的包均更新了一遍。pip 没有 apt 那么好用的 dist-upgrade 命令,需要先手动列出旧包然后逐项更新:

这些 Py 包可以直接升级:

这些 Py 包需要先安装 libssl-dev、libffi-dev、python-dev 以及 build-essential 以后才能升级(其实都是因为要依赖 cryptography):

这些 Py 包需要先安装 python-dev 以及 libjpeg8-dev 以后才能升级:

解决。

 

话说 numpy 的编译时间真是长啊……

VMWare 安装 Ubuntu 的一些豆知识

1. Ubuntu Family Mini ISO

如果网络条件不错的话,安装虚拟机可以使用适用于 Ubuntu 全家族(Kubuntu、Lubuntu、Xubuntu、Edubuntu、Mythubuntu 等)的通用迷你 ISO。32 位或 64 位都有。

https://help.ubuntu.com/community/Installation/MinimalCD (32 位或 64 位)

这个 ISO 只有不到 40MB,在安装过程中会自动从网上下载需要的文件,并在某个步骤让用户选择桌面环境。本来 desktop 版 ISO 在安装时也会上网更新,所以这个 Mini ISO 能节约的时间还是不少的,体积小还易于本地保存。我的网络带宽上限速度大约是 2MB/s,apt 源实际速度大约是 1MB/s 安装完成费时和先用迅雷下完整 ISO 再安装再 update 差不多。顺便还能满足软件洁癖们。

其实就是 Tasksel 整合安装器

其实就是 Tasksel 整合安装器

缺点也是有的,界面和 Server 版映像文件一样是纯英文,且有些步骤的默认选择是<No>,不能一路回车到底。所以得能看懂提示。安装步骤倒是和 desktop 版没区别,无非是语言地区、分区、用户名密码这几个选项。

2. 命令行安装 VMWare Tools

使用虚拟机下拉菜单的『安装 VMWare Tools』只会自动载入 VMTools 的 ISO 文件,需要自行解压 VMTools 安装包。

Ubuntu 64-2016-04-18-15-58-27

可以看到 vmware tools 安装包目录下有 vmware-install.pl,有时还有 vmware-install.real.pl。但由于 vmware tools 需要 gcc 来重新编译,所以在安装 vmware tools 前需要先确保 gcc 已经安装:

然后再安装vmware tools

第一个问题问,现在有 open-vm-tools 了,是否还要用这个老的,默认是 no,选 yes。我试用了一下 open-vm-tools,缺陷依然太多,没法用。

然后一路回车到结束。安装完成时提示你,如果是图形界面的话,需要手动启动 /usr/bin/vmware-user,然后注销重登录。其实这步作用不大,系统关机下次再开效果是一样的。

Ubuntu 64-2016-04-18-16-37-35

如果之前没有安装 gcc,有时就会出现以下情况:

Ubuntu 64-2016-04-18-15-59-02

gcc 路径为空,无限循环无法往下

这时需要用 Ctrl+C 中断,安装 gcc 后重新安装 vmware tools

3. 安装 Google Chrome 不用翻墙

因为下载浏览器的实际域是 dl.google.com,没有被墙。(北京联通)当然这个域名用浏览器是打不开的,因为它只提供下载,但知道路径的话就可以用 wget 直接下载了。

4. 压缩虚拟磁盘,减少宿主机磁盘占用。

虚拟机用得时间长了,虚拟硬盘文件会变大。VMware 提供了清理磁盘功能释放空间,在 Windows 下很正常,但在 linux 下提供的 vmware-toolbox-cmd 有 bug,并不能起到压缩作用,需要先用零数据覆盖磁盘,再使用 vmware tool 的磁盘清理功能。

HeidiSQL 的 SSH Tunnel 连接方式

heidisql_logo

HeidiSQL 是个挺好用的 Windows 下轻量级 MySQL / Ms SQL / PostgreSQL 客户端。官网地址:http://www.heidisql.com/ 。功能不写了,反正都差不多。 它提供的 SSH Tunnel 连接方式这里记一笔备忘 。

HeidiSQL 的 SSH Tunnel 连接方式其实就是先 SSH 连接到目标主机,再以目标主机的身份,连接到 MySQL 服务器。这有两种情况,一种是出于安全因素,数据库只允许本机或者有限几个 IP 访问,另一种是 MySQL 服务器和 SSH 目标主机在同一局域网内,而该局域网的多台机器只有 SSH 主机可以被外界直接连接。总之就是 MySQL 机无法被直接连接到,要通过 SSH 主机中转。

未命名

在中小网站中,数据库只允许 localhost / 127.0.0.1 连接是很常规的安全配置。但往往又存在需要后台操作数据的时候,于是有时会搭配 phpMyAdmin 这样的网页端方案,或者就是用 SSH Tunnel 这样的变通远程连接。

所以 HeidiSQL 的连接设置在选择网络类型为『MySQL (SSH Tunnel)』时也有所不同,除多出一个 『SSH隧道』选项页外,填写的参数也有变化。在 SSH Tunnel 模式下,设置页填写的是 SSH主机如何连接到 MySQL 服务器.

无标题

SSH 主机(不是本机)如何连接到数据库,很多中小网站的数据库只允许本地访问,则这里应当填写 127.0.0.1

而 SSH 隧道页填写的则是 本机如何连接到 SSH 主机,由于 SSH Tunnel 依赖 Putty 软件包中的 Plink.exe 程序,所以需要指定 plink.exe 的位置,或者索性复制一个到 HeidiSQL 同目录下。同时,SSH 除用户名密码连接方式外,还有公私钥系统的连接方式,需要通过 Putty 软件包的 puttygen.exe 将私钥文件转成 Putty 专用的 .ppk 格式。

无标题

本机如何连接到 SSH 主机

填写连接到 SSH 主机的用户名、密码,如果使用私钥文件的话,密码可以为空。

保存以后配置就完成了。并不需要去配置 Putty.exe 的任何内容。不知道为什么百度搜出来的好多博客都花了不少篇幅去写怎么配置 Putty,略扯淡。配置 Putty 与使用 HeidiSQL 并无直接关系。

 

一句话总结:

在普通模式下设置页填写的是运行 Heidi 的机器如何连接到目标 MySQL 服务器,而在 SSH Tunnel 模式下,需要先从运行 Heidi 的机器连接到 SSH 主机,再以 SSH 主机的身份连接到数据库服务器。

AWS Ubuntu 安装 PPTP VPN

AWS 现在提供新注册帐号一年免费服务,1台1G内存30G硬盘的 VPS,每月 15G 流量,可以用来架 VPS 或者博客主机,虽然流量不大,但日韩机房的速度很不错。

  1. 首先需要在主机配置面板的安全设置中,把入口流量防火墙的 1723 端口打开。否则配置正确也会被防火墙挡上。
  2. 安装 PPTPD 服务。
  3. 编辑 pptpd.conf 配置文件。
  4. 编辑 pptpd-options 配置文件。
  5. 编辑 chap-secrets 配置文件,添加 VPN 用户名和密码。
  6. 打开 IP 转发
  7. 需要重启服务:
  8. 添加 iptables 规则,这句根据服务商的不同会有不同,本句适用于 AWS
  9. 并添加到启动项中,以便服务器意外重启后继续正常工作:
  10. 配置完成,重启 pptpd 服务

VMWare 安装 Ubuntu 出现『默认声音设备无法打开』的原因与解决办法

Update: Ubuntu 16.04 系的解决了这个问题。此文终结。


无标题

这个 Bug 出现在几乎所有版本的 VMWare Workstation、VMWare Fusion 而且按原理来说似乎也会出现在 VirtualBox 上(未验证)。用户选择右键点击喇叭图标手动连接,则可以使用一段时间,Rhythmbox 之类的也可以正常播放声音,但只要打开声音设置或其它类似操作就又会断开。

遇到这种情况,可以先尝试在宿主机接上麦克风/耳麦,随便弄个录音设置,或者把普通耳机插头插进录音孔也行。对的,尽管实际上录不了音,但只要让录音孔插着东西就行。无标题

然后重启虚拟机,如果一切正常该提示不再出现,就继续往下看真·解决办法,如果依然不行,很抱歉你的问题不是这篇文章所能解决的。

 

这个问题的真正原因是:Ubuntu 默认会检测音频硬件设备,包括音频输入和输出两种设置,但 VMWare 不能正常反馈宿主机声卡的状态。感觉更多的是 Ubuntu 的锅,它没有检测设备存在就直接调用录音设备。

解决办法:

安装 pavucontrol 软件包,然后在 Term 中输入 pavucontrol 启动旧版的音量控制:

Ubuntu 64-2016-02-27-20-44-14

在音量控制界面,选择『配置』选项卡,选择『模拟立体声输出』,不要选任何带“输入”的项。然后注销用户再重新进入桌面。

Ubuntu 64-2016-02-27-20-45-50

 

以上,VMware Ubuntu 就可以正常出声了。

无标题

vmware下ubuntu虚拟机与宿主机共享文件夹

0.已经安装 VMware Tools。这个不写了。

1. 在 VMware 里开启共享文件夹,指定主机的共享目录。图为 Windows 宿主机,Mac 类似。

vmware-sharefolder-host

2. 在 Ubuntu 终端下进行 mount,mount 的目标最好选择容易通过文件管理器能够到达的目录。毕竟这个共享文件夹的 mount 和光驱之类的硬件 mount 不太一样,顺手最重要。我用的是 ~/vmshare 目录。输入代码:

Ubuntu-2014-08-25-01-53-16

这时候打开文件管理器,就已经可以看见主文件夹(home)下已经有一个 vmshare 的目录了。

3. 鼠标拖动该目录到桌面,先不要放手。按住 Alt 键,光标会变成一个带问号的小手,这时再松开鼠标,会弹出一个菜单询问你的操作。选择 “链接到此处” 项,如图:

Ubuntu-2014-08-25-01-58-07

这样,共享文件夹就在桌面建立了一个快捷方式。你在 vmware 里设置宿主主机共享目录,在 Ubuntu 虚拟机下也可以方便地看到了。如果主机没设置,这个目录里就为空。

vmware-sharefolder-sync

PS:要去掉这个共享目录(虽然我想不明白为啥要去掉),使用命令:

就可以了,~/vmshare 就是你自己挑选的路径。

Ubuntu 安装 Oh my zsh

>>这里<< 写了如何在 Ubuntu 桌面版下安装 oh-my-zsh 的命令行,但经实验以后发现最后几步存在问题。作个笔记:

1. 首先安装必要的软件包:

2. 下载别人写好的 oh-my-zsh 安装脚本并自动执行安装

3. 更换终端 Shell 到 zsh (其实这里开始就有问题了,我这步用的别的办法,简单好用,疗效显著)

4. 重启,显然只是为了让系统保存设置。

 

问题在于,第三步时经常会出现什么 PAM 未验证之类的问题。网上查的原因五花八门,解决方法也各异,挨个试过来,有时有效,浪费时间。

我用的办法很简单。

终端 – 菜单 – 编辑 – 配置文件首选项 – 标题和命令 – 运行自定义命令而不是 Shell(N) – 自定义命令:zsh

如图:

Ubuntu-2014-08-25-00-54-44

补充:

开始使用服务器后,这种方法就无效了。如果 sudo chsh 依然无效的话,可以 vim /etc/passwd,然后搜索 bash,并替换为 zsh,算是暴力解决方案。

补充:禁用升级提示

You have to add DISABLE_AUTO_UPDATE="true" on your .zshrc before the source $ZSH/oh-my-zsh.sh line. By doing so, oh-my-zsh will just skip the update checking script.