分類
Linux 软件

nano文本編輯器

nano是一個方便易用的命令行文本編輯器,相對於vi等文本編輯器勝在學習成本低廉而且linux平臺基本自帶(甚至android的busybox都有)。用nano常用的命令就是Ctrl+O寫入文件,Ctrl+X關閉文件,Ctrl+W查找文字。其他功能也很容易找到幫助,很適合不經常用linux的用戶(vi不常用的話,命令真的忘的好快)。

nano的複製粘貼也是很方便的。常用的就是CRTL+6用來選擇,ALT+6用來複製,CTRL+U用來粘貼。複製當前行的話直接ALT+6即可。

如果想把nano設置為默認的文本編輯器,比如使用crontab -e時,可以在~/.bashrc最後添加

export EDITOR=nano
export VISUAL=nano

如果要在多個文件間複製粘貼,可以用nano -F file1以多文件模式打開。打開之後,複製完按CTRL+R開啟另一個文件,就可以粘貼進去了。文件間的切換用ALT+,和ALT+.。

本文更新於 2017/03/22。

分類
Linux

Host a Debian in Win7 VirtualBox

正常的安裝就是在VirtualBox裡添加虛擬機,掛載下載好的Debian鏡像,即可安裝完成,最後安裝VirtualBox的附加組件,一路應該很順利。實際感覺是Debian比Ubuntu要稍微麻煩些。

apt的設置

如果你在安裝系統的時候就設置好了且工作正常,則不用設置。設置軟件源

nano /etc/apt/sources.list
我的是
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

給apt設置代理

nano /etc/apt/apt.conf.d/70debconf
#ubuntu下是/etc/apt/apt.conf
我的是在底部添加
Acquire::http::proxy "http://192.168.1.2:8123/";
Acquire::ftp::proxy "http://192.168.1.2:8123/";
這是的代理是Win7里運行的Shadowsocks。

安裝VirtualBox附加組件

轉自Installing Guest Additions on Debian。安裝完成後就可以共享剪切板和自由縮放屏幕大小了。

  1. Login as root;
  2. Update your APT database with apt-get update;
  3. Install the latest security updates with apt-get upgrade;
  4. Install required packages with apt-get install build-essential module-assistant;
  5. Configure your system for building kernel modules by running m-a prepare;
  6. Click on Install Guest Additions… from the Devices menu of VirtualBox, then run mount /media/cdrom.
  7. Run sh /media/cdrom/VBoxLinuxAdditions.run, and follow the instructions on screen.

添加中文支持

dpkg-reconfigure locales
空格選擇,回車確認。我選擇了這幾個
  • zh_TW BIG5 - 繁體中文(台灣),使用 Big5 碼
  • zh_TW.UTF-8 UTF-8 - 繁體中文(台灣),使用 UTF-8 碼
  • zh_HK.UTF-8 UTF-8 - 繁體中文(香港),使用 UTF-8 碼
  • zh_CN GB2312 - 簡體中文,使用 GB2312-80
  • zh_CN.GBK GBK - 簡體中文,使用 GBK
  • zh_CN.UTF-8 UTF-8 - 簡體中文,使用 GB18030
然後首選項選擇了zh_CN.UTF-8。

安裝字體:

apt-get install ttf-arphic-uming  xfonts-intl-chinese  xfonts-wqy

安裝輸入法:

apt-get install fcitx-sunpinyin
apt-get install im-switch

重啟就好了。


Debian使用systemd開機啓動

我裝的是Debian8,似乎已經不再支持rc.local了。以ss爲例,開機啓動可以這麼添加:首先新建開機服務文件

nano /lib/systemd/system/ss.service
內容爲
[Unit]
Description=ss

[Service]
Type=simple
ExecStart=/usr/local/bin/ss-local -c /etc/shadowcksB.json > /home/$YOURNAME/.sslog 2$
PrivateTmp=true

[Install]
WantedBy=multi-user.target
ss用到的文件/home/$YOURNAME/.sslog需要自己新建touch下。

將服務設置爲開機啓動:

systemctl enable ss.service

測試服務是否正常:

systemctl start ss.service

查看當前服務狀態:

systemctl status ss.service -l

順便再貼一個polipo的開機啓動文件

[Unit]
Description=polipo
After=network.target

[Service]
Type=forking
ExecStart=/etc/init.d/polipo start
ExecReload=/etc/init.d/polipo restart
ExecStop=/etc/init.d/polipo stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

安裝flashplayer

Debian自帶的瀏覽器和火狐都沒有Flash,可以按照如下步驟安裝:
1, Lauch the browser and download the Flash Player in a seperate folder.Download link = http://get.adobe.com/flashplayer/
2, tar xzvf yourdownloadedfilename.tar.gz
3, cp libflashplayer.so /usr/lib/mozilla/plugins/

本文更新於 2016/05/19。

分類
Linux

shadowsocks client and firefox on Ubuntu 12


Shadowsocks Client

下載Shadowsocks-libev:https://github.com/madeye/shadowsocks-libev
unzip解壓至/home/me/Downloads/AppSrc/shadowsocks-libev cd到此目錄,運行

./configure
sudo make install

如果運行configure提示ssh header error,請安裝libssl-dev。Centos、Fedora下請安裝zlib-devel。如果提示ssl有問題,Fedora下可安裝openssl-devel。

新建配置文件

sudo nano /etc/shadowcks.json

粘貼進下面文本並保存

{
"server":"服务器的ip",
"server_port":服务器的端口,
"local_port":你的本地端口,默认1080,
"password":"密码",
"timeout":600,
"method":"加密方式"
}

運行下面命令啓動shadowsocks服務

ss-local -c /etc/shadowcks.json

如果提示隨機數不足,可以安裝rng-tools

yum install -y rng-tools
systemctl start rngd
systemctl status rngd
systemctl enable rngd

加入開機自動啟動:

#先建一個log文件
touch /home/me/.sslog
#将下面一行加入/etc/rc.local
/usr/local/bin/ss-local -c /etc/shadowcksB.json > /home/me/.sslog 2>&1 &

Firefox

從這裏下載firefox,或者通過市場安裝。火狐市場好像還沒被干擾,所以直接進插件市場搜索FoxyProxy安裝並重啓。點擊FoxyProxy圖標,新建代理服務器,選擇手動配置代理服務器,輸入127.0.0.1和端口,選中socks v5。URL模式勾選不要對內部網絡選項。保存後轉到訂閱模式,添加新的訂閱模式,訂閱網址http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txthttps://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt,代理服務器選擇剛剛新建的。Format選AutoProxy,Obfuscation選Base64。確定保存,如果訂閱添成功此時前面URL模式中應該多了很多項。最後將工作模式設置爲使用基於其預定義模板,就可以自動分流了。

18年09說06日,Firefox ESR版本也自動升級到了Quantum(版本號>60)。新版對於附加原件有較大改動,以至FoxyProxy老版本不能運行。雖然FoxyProxy作者開發了新版本,但是試用之後沒有找到導入gfwlist.txt的地方。搜了一下,發現SwitchOmega有了火狐的插件,雖然是測試版,用起來卻很好用。在auto swith中導入https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt就能自動分流,而且有加載不到的資源還可快速加入白名單,真實非常方便。


家裏長城寬帶按照上述方法無效。多數內容複製了+McNulty Gracie的帖子。

讓命令行通過shadowsocks的socksv5代理聯網

安裝proxychains

sudo apt-get install proxychains

修改配置文件/etc/proxychains.conf,更改如下4行:

dynamic_chain
#strict_chain
#socks4         127.0.0.1 9050
socks5    127.0.0.1 1234 #你的本地代理地址和端口

測試下proxychains:

proxychains wget -O - http://myip.dnsdynamic.org/ | more
#如果成功會顯示出你代理服務器的IP

Ubuntu搭建Shadowsocks

安裝

sudo apt-get install python-pip python-m2crypto supervisor
sudo pip install shadowsocks

编辑 /etc/shadowsocks.json

#sudo nano /etc/shadowsocks.json
{
"server":"0.0.0.0",
"server_port":服务器的端口,
"local_port":1080,
"password":"密码",
"timeout":600,
"method":"aes-256-cfb"
}

编辑 /etc/supervisor/conf.d/shadowsocks.conf

#sudo nano /etc/supervisor/conf.d/shadowsocks.conf
[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autorestart=true
user=nobody
#如果端口 < 1024,把上面的 user=nobody 改成 user=root

在 /etc/default/supervisor 最后加一行:

ulimit -n 51200

reboot或者

service supervisor start
supervisorctl reload

Ubuntu或CentOS分享Shadowsocks給局域網用戶

安裝polipo

sudo apt-get install polipo

在配置文件/etc/polipo/config的末尾貼上下面的配置信息

proxyAddress = "0.0.0.0"

socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5

chunkHighMark = 50331648
objectHighMark = 16384

serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32

重啟polipo

/etc/init.d/polipo restart

現在就可以在局域網設備上使用http代理了,主機為運行ssclient的ip地址,端口為8123。

本文更新於 2024/04/19。

分類
Linux

pip3为python3安装模块

Ubuntu 14.04对硬件的要求还是稍高,笔记本有些力不足。Ubuntu 12.04默认是python2,用pip安装模块后也是为python2安装的。想要在Ubuntu 12.04给python3安装需要先安装pip3:

sudo apt-get install python3-setuptools
sudo easy_install3 pip

然后就可以使用pip3为python3安装模块了,如:

pip3 install lxml
pip3 install lxml==4.5.0
pip3 install lxml>=4.5.0
#重新安裝指定版本
pip3 install lxml==4.5.0 --force-reinstall
#製作與使用requirements文件
pip freeze > requirements.txt
pip install -r requirements.txt

剛剛安裝numpy,網速令人抓狂,掛上代理就好多了(沒有合適代理可用下面方法指定國內軟件源):

pip3 install --proxy http://127.0.0.1:8123 numpy

使用重裝大法解決 pip 出現各種疑難

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall
ln -s 目標文件 鏈接文件
ln -s /usr/local/bin/python3.5 /usr/bin/python3

ImportError: No module named _internal.cli.main 可以嘗試把 pip 文件的 from pip._internal import main 修改為 from pip import main

Centos 或 Fedora 安裝python3

其實centos安裝python3就和安裝其他軟件一樣,從官網下載,然後解壓,三扳斧搞定。那我為什麼要記下來呢,只是感嘆下,這麼厲害的軟件居然這麼好裝,哈哈哈!

#for sqlite3
yum install sqlite-devel
#for virtualenv
yum install zlib-devel
#其他依賴
yum install libffi-devel openssl-devel xz-devel bzip2-devel
#然后
wget https://www.python.org/ftp/python/3.9.11/Python-3.9.11.tar.xz
tar xf Python-3.9.11.tar.xz
./configure --prefix="/usr/local" --enable-optimizations --enable-loadable-sqlite-extensions
make
sudo make install

##如果上面編譯的時候加了指定的參數,就不用看下面這幾行了
# centos7 安裝 python3.7的時候要安裝
yum install libffi-devel openssl-devel
# configure 也要加上 --with-ssl
./configure  --with-ssl
#解決的是 No module named '_ctypes'
#和 No module named '_ssl'

python3沒有_tkinter

如果安裝python3時沒有裝tkinter,那麼很可能會遇到這個錯誤:ImportError: No module named _tkinter,我在使用pandas導出圖表時就遇到了。CentOS下經過嘗試,先安裝下面兩個軟件,然後再次執行上面的三扳斧,就有_tkinter模塊啦。

yum install tkinter
yum install tk-devel

Ubuntu下我的python3.5是系統自帶的,所以直接安裝下面的軟件即可。

sudo apt-get install python3-tk
sudo apt-get install tk-dev

Fedora自帶python3,但是也沒有自帶_tkinter,這時只要安裝dnf install python3-tkinter就可以了。

使用 Python 自帶的 venv 模塊建立虛擬環境

自帶的 venv 模塊可以直接使用,可以搭配 pip freeze > requirements.txtpip install -r requirements.txt 來遷移環境。

#在當前目錄建立虛擬環境
python3.11 -m venv my_venv
啟用虛擬環境
source my_venv/bin/activate
#直接使用 pip 安裝需要的依賴即可
#推出虛擬環境
deactivate
#刪除虛擬環境
rm -rf my_venv
#以虛擬環境運行 Python 項目
my_venv/bin/python YOUR_SCRIPT.py

使用 pipenv 建立虛擬環境

#如果主環境沒有 pipenv,則需先安裝
pip install pipenv
#建立一個 Python 3.11 的虛擬環境
pipenv --python 3.11
#如果系統沒有 Python 3.11 則需要你先安裝或編譯,我推薦安裝系統編譯好的
sudo dnf install python3.11 python3.11-devel

#安裝依賴
pipenv install <package_name>

#刪除依賴
pipenv uninstall <package_name>

#檢查安全漏洞
pipenv check

#啟用虛擬環境
pipenv shell

#退出虛擬環境
exit

#在當前文件夾運行 Python 項目
pipenv run YOUR_SCRIPT.py

#查看虛擬環境的具體位置
pipenv --py
#/home/42/.local/share/virtualenvs/scripts-t2tF_lNI/bin/python
#使用虛擬環境運行 Python 項目
/home/42/.local/share/virtualenvs/scripts-t2tF_lNI/bin/python /home/42/workspace/scripts/YOUR_SCRIPT.py

#刪除虛擬環境
pipenv --rm

#恢復虛擬環境。進入 Pipfile 和 Pipfile.lock 所在目錄
pipenv install

使用virtualenv才是解決多python版本的好方法(過時)

多版本的Python及virtualenv的安裝請參考:在CentOS 6.4上设置Python 2.7.6和3.3.3环境,我這裡簡單記下virtualenv的使用。使用virtualenv不必使用高權限。

#centos安裝pip和virtualenv
#Step1
##For RHEL 7.x and CentOS 7.x (x86_64)
yum install epel-release
#Step2
yum install -y python-pip
#Step3
pip install virtualenv
#Fedora裝virtualenv
dnf install python3-pip
dnf install python3-virtualenv
#在當前目錄新建一個python環境
cd pythons
#查看python所在目錄
whereis python
#生成python2.7的環境
virtualenv --python=/usr/local/bin/python2.7 p27
#或生成python3.5的環境
virtualenv --python=/usr/local/bin/python3.5 p35
#如果報ImportError: No module named zlib,centos下可安裝zlib-devel
#然後重新對python執行make和make install
cd p27
#啟用python2.7的環境
source bin/activate
#退出當前環境
deactivate

pip使用國內軟件源

有時網絡環境惡劣,pip裝組建時經常遇到中斷,可以通過下面命令使用國內的軟件源進行安裝。

#豆瓣
pip install numpy -i https://pypi.douban.com/simple/
#阿里雲
pip install virtualenv --trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple

如果想永久修改pip的軟件源,可以修改~/.pip/pip.conf(centos下root用戶為/root/.pip/pip.conf)內容如:

[global]
trusted-host =  mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple

fedora安裝psutil出現No such file

可能是沒有安裝dev和redhat-rpm-config

#python2
dnf install python-devel
#python3
dnf install python3-devel
#redhat-rpm-config
dnf install redhat-rpm-config

本文更新於 2024/03/01。

分類
Linux 其它

Vim常用命令

以前主要用nano,简单易上手,多数Linux也都有配,甚至android里装了buzybox都有(但是中文显示乱码,vi可正常显示中文)。但是为了不至于被nano限制,学一些vim也是有必要的,所以记一些简单命令吧。

插入命令:a在光标后插入文本;A在本行末插入文本;i在光标前插入文本;I在本行开始插入文本;o在光标的下一行插入新行;O在光标的上一行插入新行。

定位命令:hjkl分别是左下上右;$行尾;0行首;HML分别是屏幕的上边中间和下边。:set nu设置行号;:set nonu取消设置行号;gg到第一行;G到最后一行;42G定位到第42行;:42定位到第42行。

删除命令:x删除光标所在处的字符;42x删除从光标所在处开始其后42个字符;dd删除(剪切)光标所在行;42dd删除(剪切)光标所在行及其下42行;dG删除所在直到文件末尾;D删除光标所在字符到行尾;:12,42删除从12行到42行。

复制粘贴命令:yy或Y复制当前行;42yy或42Y复制光标所在行及其下42行;p将内容粘贴在所在行的下面;P将内容粘贴在所在行的上面。

替换和撤销命令:r替换当前光标所在字符;R从光标所在处开始替换字符,Esc结束替换;u撤销上一步操作。

搜索和替换命令:默认搜索和替换是区分大小写的,如想不区分,可:set ic就不区分大小写了(:set noic);/42搜索42出现的位置,此时n查看下一个出现的位置,N查看上一个出现的位置;:%s/42/55/g把全文的42全部替换成55,并且不需要确认(g);:42,55s/old/new/c把第42行到55行的old替换为new,并且确认每一个替换(c)。

保存和退出命令::ZZ或:wq保存并退出。:w保存;:q退出;:q!强制退出(不保存所做修改)。如果是root用户在遇到只读文件时,仍可以使用:w!来保存更改。:w /temp/a.bak将文件另存一份,但后续修改仍旧保存在原始文件中。

分類
Linux 网站

Apache限制IP访问

只需在配置文件中添加如下代码即可:

&lt;Location /&gt;
Order Allow,Deny
Allow from localhost
Deny from 192.168.1.*
&lt;/Location&gt;

我的配置文件位于/etc/apache2/sites-enabled/000-default。将上面Location节点放在VirtualHost节点内即可。其实现的效果是除本机外其他局域网主机都无法访问站点。

重启Apache时提示Could not reliably determine the server's fully qualifieddomain name可以通过在/etc/apache2/httpd.conf中添加一行ServerName localhost来解决。

最后在记一下修改Ubuntu hosts文件方法:

  1. 打开hosts文件:sudo gedit /etc/hosts
  2. 添加一行:127.0.0.1 localhost
  3. 重启网络:sudo /etc/init.d/networking restart

比较遗憾的是host文件并不支持通配符。

分類
Linux

Ubuntu安装fcitx中文输入法

听说fcitx中文输入法是较为先进的中文输入法,而且拥有相对漂亮的皮肤,当然亮点还是能支持云输入法,众多优点当然要试一下啦。要安装fcitx中文输入法,依此在终端执行如下命令:

<code>sudo add-apt-repository ppa:wengxt/fcitx-nightly</code>
<code>sudo apt-get update</code>
<code>sudo apt-get install fcitx fcitx-config-gtk fcitx-sunpinyin</code>
<code>sudo apt-get install fcitx-table-all</code>

下面两条命令是可选的,第一个是设置fcitx为默认输入法,第二个是为防止乱码所安装的uming字体。

<code>im-switch -s fcitx -z default</code>
<code>sudo apt-get install ttf-arphic-uming</code>

最后需要重启生效。如果没有中文输入法出现,可以在Configuation里点“+”,然后反选Only Show Current Language,在下面输入框里输pinyin就可以添加中文输入法了。默认Ctrl+Space切换输入法,Shift切换语言,中文下按Enter输入英文。