Ubuntu16.04 中 supervisor 安装到使用

supervisor 进程管理是可以让进程在后台运行,而不占用控制台影响使用。

1. 安装 supervisor

sudo apt install supervisor

2. 添加进程

supervisor 可以将每个进程分别写成一个文件,supervisor 的进程文件放在 /etc/supervisor/conf.d/ 目录下,本例创建 test.conf 进程配置文件。其中 program 为要运行的进程的名称, command 为要执行的命令,directory 要执行命令的目录,user 运行的用户。

[program:test]
command=php artisan queue:work
directory=/var/www/html/wisdom
user=ubuntu

3. 启动进程

首先要重启supervisor,让配置文件生效

sudo supervisorctl reload

然后启动进程

sudo supervisorctl start test

完成。

Ubuntu 安装java8(jdk8)和java7(jdk7)并灵活切换

前言

本机装的是 jdk7 ,无奈最近看的源码不少都已经拥抱 jdk8 了。便于调试,安装了新的 java 版本。

安装 jdk

这里简单说明下 Ubuntu 下 jdk8 的安装过程,jdk7 的类似,不再赘述。

下载安装包: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ,选择 jdk-8u162-linux-x64.tar.gz。

新建目录并解压到该目录

sudo mkdir /usr/lib/java
sudo tar zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/java
sudo mv /usr/lib/java/jdk1.8.0_162/ /usr/lib/java/jdk8

打开配置文件, sudo gedit /etc/profile, 在文件中加入以下内容

export JAVA_HOME=/usr/lib/java/jdk8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

将新安装的 jdk 加入到选项里

sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jdk8/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/java/jdk8/bin/javac 300

通过 sudo update-alternatives –config java 指令,选择相应的jdk即可!

$ sudo update-alternatives --config java       
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
* 1            /usr/lib/java/jdk7/bin/java                      300       manual mode
  2            /usr/lib/java/jdk8/bin/java                      300       manual mode
  3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/java/jdk8/bin/java to provide /usr/bin/java (java) in manual mode

然后在命令行里查看 jdk 的版本

$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

切换 jdk 版本

修改 $PATH 中的java路径,然后通过 sudo update-alternatives –config java 指令切换版本即可!

Ubuntu搭建ghost博客 V1.20

官方推荐以下环境:

  • Ubuntu 16.04
  • MySQL
  • NGINX (minimum of 1.9.5 for SSL)
  • Systemd
  • Node v6 installed via NodeSource
  • 至少1GB内存 (可用)
  • 可运行Ghost的非root用户

增加运行Ghost用户

adduser <user>

(为自定义的用户名称,需改,下同)

usermod -aG sudo <user>

为新增用户添加root权限

su - <user>

切换到新增用户

升级Packages

sudo apt-get update

升级package lists

sudo apt-get upgrade

升级installed packages

安装Mysql&Nginx

sudo apt-get install nginx

安装nginx

sudo ufw allow 'Nginx Full'

打开HTTP/HTTPS防火墙

sudo apt-get install mysql-server

安装mysql数据库(root密码不要设为空)

安装Node.js

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash

安装6版本以上的Node.js

sudo apt-get install -y nodejs

运行安装命令

安装Ghost-CLI

sudo npm i -g ghost-cli

用CLI安装Ghost博客

sudo mkdir -p /var/www/ghost

新建一个ghost博客的目录(可改)

sudo chown [user]:[user] /var/www/ghost

给新增的用户全部新建的目录的权限

cd /var/www/ghost

进入目录

ghost install

安装ghost博客

后面会提示你输入ghost地址,只需要把域名解析到服务器地址并输入博客地址就行,一键安装包会帮你配置Nginx,并且支持一键申请ssl。

使用PM2让你的ghost博客保持运行

cd /var/www/ghost  
npm install pm2 -g # 安装PM2  
NODE_ENV=production pm2 ghost start --name "ghost"  
pm2 startup ubuntu  
pm2 save 

如果是centos请把代码中的ubuntu改为centos,debian也是如此。
因为GFW的强大,在上一步直接使用npm安装依赖的时候可能出现无法安装的情况,这时候可以使用以下代码:

npm install -g cnpm --registry=https://registry.npm.taobao.org  
cnpm install pm2 -g  
NODE_ENV=production pm2 start index.js --name "ghost"  
pm2 startup   ubuntu
pm2 save  

这样一来,我们的Ghost博客就可以保持运行啦,你可以使用以下指令来控制Ghost博客:

pm2 start/stop/restart ghost

Ubuntu下Python设置pip使用国内源站

在用户目录下建立.pip/pip.conf文件

cd ~/ && mkdir .pip
cd .pip && nano pip.conf

写入以下配置并保存即可

[global]
index-url = https://pypi.douban.com/simple/

当然,还可以选择使用清华,阿里等源站

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里: https://mirrors.aliyun.com/pypi/simple

未分类

解决 Ubuntu 下 ssh 服务器中文显示乱码

在 Ubuntu 16.10 下使用终端 ssh 登录远程服务器,然后使用服务器上的 VIM 打开代码文件,发现文件中的中文都是乱码。而使用 Mac 的自带终端进行同样的操作,看到的中文显示就是正常的。遂怀疑 Ubuntu 本地的配置有问题。

问题的原因是,本地的 locale 与服务器上的 locale 不匹配。参考链接里提供了四种解决方案,而我觉得 Stop forwarding locale from the client 这种解决方案最简单。

即,修改 Ubuntu 本地的 /etc/ssh/ssh_config 文件,注释掉

SendEnv LANG LC_*

这一行。然后重新 ssh 服务器,会发现中文已经可以正常显示了。

Ubuntu16.04解决无法切换root权限的问题

在su root时发现无法切换到root权限.显示: /usr/local/bin/zsh 没有文件或目录

想了想问题所在,突然想起来前段时间想要更换shell主题,于是装了zsh和oh-my-zsh,用了一段时间感觉没有bash好用(纯粹个人感觉),于是sudo apt remove zsh了.

当时将默认的shell改成了zsh:

chsh -s /bin/zsh

那么chsh到底修改了哪里呢? chsh -s 其实修改的是你的/etc/passwd文件里和你用户名相对应的一行,我们可以查看一下:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$  cat /etc/passwd|grep ^shanlei
shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/zsh
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$

进入passwd:

sudo vim /etc/passwd

我们可以看到 :

root:x:0:0:root:/root:/usr/local/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/bin/false
colord:x:113:123:colord colour management daemon,,,:/var/lib/colord:/bin/false
speech-dispatcher:x:114:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:117:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:118:126:RealtimeKit,,,:/proc:/bin/false
saned:x:119:127::/var/lib/saned:/bin/false
usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/zsh

因为我想要的是默认的bash,所以我修改了passwd文件的第一行和最后一行:

第一行的/usr/local/bin/bash改成/usr/local/bin/zsh,这个是root用户的:

root:x:0:0:root:/root:/usr/local/bin/bash

把最后一行的/bin/bash改成/bin/zsh,这个应该是每台电脑的登录用户名+计算机名组成的:

shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/bash

保存退出,重启shell,切换root权限,发现/usr/local/bin/bash 没有文件或目录

检查bash安装位置:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

发现bash的执行文件在/bin/bash,于是重新修改/etc/passwd文件的第一行:

root:x:0:0:root:/root:/bin/bash

然后把默认的shell改为bash:

chsh -s /bin/bash

再次切换:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ su -
密码: 
root@shanlei-Lenovo-ideapad-110-15ISK:~# 

成功~

————————————————————————-美丽的分割线—————————————————————————-

修改ubuntu默认shell的另外两种方式:

  • ln -s : 强制把/bin/sh的软链接改到bash中: sudo ln -s /bin/bash /bin/sh
  • dpkg-reconfigure dash:在Ubuntu中建议使用这个方法:sudo dpkg-reconfigure dash,弹出来个选择项,把“dash设为默认shell”选择no。
    怎样查看自己的机器上装了哪些shell?
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

怎样查看自己当前使用的shell是哪个?(注意SHELL一定要是大写!)

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ echo $SHELL
/bin/bash
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

执行了zsh之后,我查看当前shell类型仍然是/bin/bash呢?

当前的shell是一个大环境,是针对一个已登录用户而言的,而我们使用的bash或zsh只是启动了一个bash或zsh解释器程序而已,并没有改变大环境,如果想要改变改变大环境,必须使用chsh

Ubuntu 16.04 mysql安装配置

安装mysql

sudo apt-get install mysql-server mysql-client

测试是否安装成功

sudo netstat -tap | grep mysql

相关操作

  • 登录 mysql -uroot -p
  • 检查MySQL服务器占用端口 netstat -nlt|grep 3306
  • 检查MySQL服务器系统进程 ps -aux|grep mysql
  • 查看数据库的字符集编码 show variables like ‘%char%’;

让MySQL服务器被远程访问

  • 打开mysql配置文件
# 注意:不同 mysql 版本此配置文件位置和名字可能不同
sudo vim /etc/mysql/my.cnf
#找到将bind-address = 127.0.0.1注销​
#bind-address            = 127.0.0.1
  • 修改后,重启MySQL服务器
sudo /etc/init.d/mysql restart
  • 重新登录mysql -uroot -p
grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx';
flush privileges;
  • 检查MySQL服务器占用端口
~ netstat -nlt|grep 3306
  tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

我们看到从之间的网络监听从 127.0.0.1:3306 变成 0 0.0.0.0:3306,表示MySQL已经允许远程登陆访问。

将字符编码设置为UTF-8

默认情况下,MySQL的字符集是latin1,因此在存储中文的时候,会出现乱码的情况,所以我们需要把字符集统一改成UTF-8。
打开mysql配置文件

sudo vim /etc/mysql/my.cnf
a) 打开mysql配置文件:

                vim/etc/mysql/my.cnf

b) 在[client]下追加:

                default-character-set=utf8

c) 在[mysqld]下追加:

                character-set-server=utf8

d) 在[mysql]下追加:

                default-character-set=utf8

修改后,重启MySQL服务器,并登录

mysql -uroot -p

再次查看字符串编码

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Ubuntu下配置nginx反向代理服务器

Nginx是一个高性能的Web服务器并且也是一个高性能反向代理服务器,多种测试结果表面Nginx在处理静态文件的速度以及性能要优于Apache,而在一些项目中我们可能需要使用Apache搭配nginx做反代,以获得良好的性能提升

今天本教程主要讲如何使用nginx做反向代理服务器.

最基本要求是你的服务器已经安装了Apache作为web,并且运行于80端口.首先我们修改apache默认端口号:

vim /etc/apache2/ports.conf

找到下面行:

NameVirtualHost *:80
Listen 80

我们修改为:

NameVirtualHost *:8080
Listen 8080

修改后我们虚拟主机或默认主机配置文件也要相应修改一下:

#这里默认端口80咱改为8080

现在我们接着禁用一些不需要的模块:

vim /etc/apache2/apache2.conf
KeepAlive Off

接着继续使用命令禁用下列模块:

a2dismod deflate
a2dismod cgi
a2dismod autoindex
a2dismod negotiation
a2dismod ssl

接着我么安装一个转发模块:

apt-get install libapache2-mod-rpaf
#此模块作用是将访客真实ip转发给后面应用层的apache,不然web无法货取到真实访客ip

安装好后我们重启apache:

/etc/init.d/apache2 restart

然后接着设置nginx你用apache想必一定没安装nginx,现在我们先安装一下.

apt-get install nginx
rm -rf /etc/nginx/sites-enabled/*
#然后我们要删掉默认的web项目站点,这里主要是防止产生冲突

删除后我们新建一个默认web主机

cat >/etc/nginx/sites-available/000-default <

并且修改或新建一个项目使请求转发到后面 apachecat >/etc/nginx/sites-available/youdomain.com < 然后我们重启 nginx/etc/init.d/nginx restart #service nginx restart 发起一个请求看看,若后端出现无法获取真实ip问题,记得检查下前面我们提到的转发模块是否安装加载正常.若没问题,恭喜你,配置成功啦.

Ubuntu的apt-file解决依赖问题

1. 背景

平常我们在安装应用时,经常会碰到缺少各种文件、依赖等问题,例如缺少.so文件。Ubuntu中提供了一个强大的工具apt-file来查找依赖。最适合的场景是在Docker中使用,因为Docker Image的系统通常是Ubuntu。

2. 安装

apt-file的安装命令如下:

# Install
$ apt-get update
$ apt-get install apt-file
# Update apt-file
$ apt-file update

3. 搜索缺少的文件

如果缺少cv.py文件,则搜索cv.py文件,apt-file会列出包含cv.py的包,发现需要的包是python-opencv,然后安装ython-opencv。

# 命令格式
$ apt-file seach [filename]
# Demo
$ apt-file search cv.py
gnuradio: /usr/lib/python2.7/dist-packages/gnuradio/analog/wfm_rcv.py
gnuradio: /usr/share/gnuradio/examples/uhd/usrp_am_mw_rcv.py
gnuradio: /usr/share/gnuradio/examples/uhd/usrp_nbfm_rcv.py
gnuradio: /usr/share/gnuradio/examples/uhd/usrp_tv_rcv.py
gnuradio: /usr/share/gnuradio/examples/uhd/usrp_wfm_rcv.py
gnuradio: /usr/share/gnuradio/examples/uhd/usrp_wxapt_rcv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/db_recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/direct_recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/messenger/recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/reactor/recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/selected_recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/simple_recv.py
libqpid-proton2-dev-examples: /usr/share/proton-0.10/examples/python/tx_recv.py
lowpan-test-tools: /usr/lib/x86_64-linux-gnu/lowpan-tools/test_recv.py
python-kivy: /usr/lib/python2.7/dist-packages/kivy/core/camera/camera_opencv.py
python-mvpa2-doc: /usr/share/doc/python-mvpa2-doc/examples/nested_cv.py
python-opencv: /usr/lib/python2.7/dist-packages/cv.py
python-pyavm: /usr/lib/python2.7/dist-packages/pyavm/cv.py
python-pysnmp4: /usr/lib/python2.7/dist-packages/pysnmp/entity/rfc3413/ntfrcv.py
python-pysnmp4: /usr/share/pyshared/pysnmp/entity/rfc3413/ntfrcv.py
python-pysnmp4-doc: /usr/share/doc/python-pysnmp4-doc/examples/v1arch/manager/ntfrcv.py
python-scapy: /usr/lib/python2.7/dist-packages/scapy/sendrecv.py
python-scapy: /usr/share/pyshared/scapy/sendrecv.py
python3-kivy: /usr/lib/python3/dist-packages/kivy/core/camera/camera_opencv.py
python3-pyavm: /usr/lib/python3/dist-packages/pyavm/cv.py
python3-pysnmp4: /usr/lib/python3/dist-packages/pysnmp/entity/rfc3413/ntfrcv.py

4. 列出包中的文件

查看python-opencv中的文件。

# 命令格式
$ apt-file list [package name]
# Demo
$ apt-file list python-opencv
python-opencv: /usr/lib/python2.7/dist-packages/cv.py
python-opencv: /usr/lib/python2.7/dist-packages/cv2.x86_64-linux-gnu.so
python-opencv: /usr/share/doc/python-opencv/changelog.Debian.gz
python-opencv: /usr/share/doc/python-opencv/copyright
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/__init__.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/CamShiftConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/ContourMomentsConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/ConvexHullConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/EdgeDetectionConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/FBackFlowConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/FaceDetectionConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/FindContoursConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/GeneralContoursConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/GoodfeatureTrackConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/HoughCirclesConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/HoughLinesConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/LKFlowConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/PeopleDetectConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/PhaseCorrConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/SegmentObjectsConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/SimpleFlowConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/WatershedSegmentationConfig.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/cfg/__init__.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Circle.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_CircleArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_CircleArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Contour.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_ContourArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_ContourArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Face.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_FaceArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_FaceArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Flow.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_FlowArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_FlowArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_FlowStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Line.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_LineArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_LineArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Moment.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_MomentArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_MomentArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Point2D.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Point2DArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Point2DArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Point2DStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Rect.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RectArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RectArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RotatedRect.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RotatedRectArray.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RotatedRectArrayStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_RotatedRectStamped.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/_Size.py
python-opencv-apps: /usr/lib/python2.7/dist-packages/opencv_apps/msg/__init__.py
python-opencv-apps: /usr/share/doc/python-opencv-apps/changelog.Debian.gz
python-opencv-apps: /usr/share/doc/python-opencv-apps/copyright

5. 其它系统

在其它系统中,例如CentOS中,可以用yum whatprovides命令来查询命令所在的包。

【Ubuntu】修改Ubuntu的apt-get源为国内镜像源的方法

1、原文件备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2、编辑源列表文件

sudo vim /etc/apt/sources.list

3、将原来的列表删除,添加如下内容(中科大镜像源)

deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

4、运行sudo apt-get update