2016年2月

当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件。你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用。

$ ls /usr/bin/python*
/usr/bin/python  /usr/bin/python2  /usr/bin/python2.7  /usr/bin/python3  /usr/bin/python3.4  /usr/bin/python3.4m  /usr/bin/python3m

执行如下命令查看默认的 Python 版本信息:

$ python --version
Python 2.7.8

1、基于用户修改 Python 版本:

想要为某个特定用户修改 Python 版本,只需要在其 home 目录下创建一个 alias(别名) 即可。打开该用户的 ~/.bashrc 文件,添加新的别名信息来修改默认使用的 Python 版本。

alias python='/usr/bin/python3.4'

一旦完成以上操作,重新登录或者重新加载 .bashrc 文件,使操作生效。

$ . ~/.bashrc

检查当前的 Python 版本。

$ python --version
Python 3.4.2

2、 在系统级修改 Python 版本

我们可以使用 update-alternatives 来为整个系统更改 Python 版本。以 root 身份登录,首先罗列出所有可用的 python 替代版本信息:

# update-alternatives --list python
update-alternatives: error: no alternatives for python

如果出现以上所示的错误信息,则表示 Python 的替代版本尚未被 update-alternatives 命令识别。想解决这个问题,我们需要更新一下替代列表,将 python2.7python3.4 放入其中。

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode

--install 选项使用了多个参数用于创建符号链接。最后一个参数指定了此选项的优先级,如果我们没有手动来设置替代选项,那么具有最高优先级的选项就会被选中。这个例子中,我们为 /usr/bin/python3.4 设置的优先级为2,所以 update-alternatives 命令会自动将它设置为默认 Python 版本。

# python --version
Python 3.4.2

接下来,我们再次列出可用的 Python 替代版本。

# update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.4

现在开始,我们就可以使用下方的命令随时在列出的 Python 替代版本中任意切换了。

# update-alternatives --config python

# python --version
Python 2.7.8

3、移除替代版本

一旦我们的系统中不再存在某个 Python 的替代版本时,我们可以将其从 update-alternatives 列表中删除掉。例如,我们可以将列表中的 python2.7 版本移除掉。

# update-alternatives --remove python /usr/bin/python2.7
update-alternatives: removing manually selected alternative - switching python to auto mode
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode

via: http://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux

译者:mr-ping 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

终端并不只是黑白两色,虽然使用终端可以提高效率,但是这并不意味着我们只能面对非黑即白的界面。也许你的终端的某些应用在展示部分内容时已经使用了16色了,但是这在当今难免感觉还不够细腻。其实,很多终端,比如 xterm、urxvt,以及 Mac OSX 中的 Iterm.app 等都可以支持256色,可以在这些终端下看到更加细腻优雅的颜色表现。

这里涉及到了几个重要的程序的配置,供大家参考。注意,不是所有的终端和命令行应用都支持256色。

vim

能够区分不同的黄色,可以让你的 vim 看起来更加漂亮。点此下载配色文件,配色文件可按如下引入到你的 vim 配置中:

if $TERM == "xterm" || $TERM == "rxvt" || $TERM == "xterm-256color" || $TERM == "rxvt-unicode" || &term =~ "builtin_gui" || $TERM == "dumb"
    set t_Co=256
    colorscheme calmar256-dark
else
    colorscheme desert
endif

mutt

配色方案在此,可以通过 source 引入到你的 .muttrc 中:

source ~/.mutt/mutt_color_256

slrn

slrn 支持256色,但是很多元素不支持颜色区分。配色直接写在配置文件中

git

看看 git log 的输出,是不是更柔和了?配置文件在此

man / less

对于 Xterm/Urxvt,改变终端的前景/背景/粗体/下划线/斜体的颜色,可以让 less 显示更好的高亮效果。而 less 被用在 man 页面显示中,所以你会发现你的 man 显示更漂亮了。配置文件在此

另外,可以在你的 $LESS 环境变量中添加 -J 选项,这样在搜索某个内容时,结果所在行的前面会显示一个“*”。

窗口状态条

很多人喜欢在终端窗口的下方显示一个状态条,尤其是在使用 screen 将窗口分割成几个子窗口时。

配置文件在此

ls

ls 的彩色输出也可以更好一些。配置文件在此

grep

你可以设置 grep 以绿色显示匹配内容:

export GREP_COLOR='01;32'    # color grep matches green
alias grep='grep --color'

你是不是也有一些配色方案?欢迎分享。

Mutt 是一个 Linux/UNIX 终端环境下的开源的邮件客户端。Mutt 以及 Alpine 在 Linux 命令行爱好者中有着最忠诚的追随者,这不是没有原因的。想一下你所期待邮件客户端应有的功能,Mutt 拥有:多协议支持(例如,POP3、IMAP 和 SMTP),S/MIME 和 PGP/GPG 集成,会话线索,颜色标记,可定制宏/快捷键,等等。另外,基于命令行的 Mutt 相比粗重的基于浏览器的邮件客户端(如:Gmail,Ymail)或图形用户界面的邮件客户端(如:Thunderbird,MS Outlook)而言,是一个使用电子邮件的轻量级替代品。

当你想使用 Mutt 通过公司的 SMTP/IMAP 服务器访问或发送邮件,或取代网页邮件服务,可能所关心的一个问题是如何保护您的邮件凭据(如:SMTP/IMAP 密码),它们存储在一个纯文本 Mutt 配置文件(~/.muttrc)中。

对于这些人对安全的担忧,确实有一个容易的方法来加密 Mutt 配置文件*,以防止这种风险。在这个教程中,我描述了如何加密 Mutt 敏感配置,比如使用 GnuPG(GPG)加密 SMTP/IMAP 密码,GPG 是一个开源的 OpenPGP 实现。

第一步 (可选):创建 GPG 密钥

因为我们将要使用 GPG 加密 Mutt 配置文件,如果你没有 GPG 密钥,第一步就是创建一个(公钥/私钥对)。如果有,请忽略这步。

创建一个新 GPG 密钥,输入下面命令:

$ gpg --gen-key

选择密钥类型(RSA),密钥长度(2048 bits),和过期时间(0 代表不过期)。当出现用户 ID 提示时,输入关联到该公钥/私钥对的名字(Dan Nanni) 和邮箱地址([email protected])。最后,输入一个密码来保护你的私钥。

生成一个 GPG 密钥需要大量的随机字节来构成熵,所以在生成密钥期间确保在你的系统上执行一些随机行为(如:敲打键盘,移动鼠标或者读写磁盘)。根据密钥长度,生成 GPG 密钥要花几分钟或更多时间。

第二步:加密 Mutt 敏感配置

下一步,在 ~/.mutt 目录创建一个新的文本文件,然后把一些你想隐藏的 Mutt 敏感配置放进去。这个例子里,我指定了 SMTP/IMAP 密码。

$ mkdir ~/.mutt
$ vi ~/.mutt/password

set smtp_pass="XXXXXXX"
set imap_pass="XXXXXXX"

现在通过 GPG 使用你的公钥加密这个文件如下:

$ gpg -r [email protected] -e ~/.mutt/password

这将创建 ~/.mutt/password.gpg,这是一个原始文件的 GPG 加密版本。

然后删除 ~/.mutt/password,只保留 GPG 加密版本。

第三步:创建完整 Mutt 配置文件

现在你已经在一个单独的文件放置了加密的 Mutt 敏感配置,你可以在 ~/.muttrc 指定其余的 Mutt 配置。然后增加下面这行在 ~/.muttrc 末尾。

source "gpg -d ~/.mutt/password.gpg |"

当你启动 Mutt 时,这行将解密 ~/.mutt/password.gpg ,然后将解密内容应用到你的 Mutt 配置中。

下面展示一个完整 Mutt 配置例子,这可以让你通过 Mutt 访问 Gmail,而没有暴露你的 SMTP/IMAP 密码。用你的 Gmail ID 替代下面的 yourgmailaccount,此外你也需要在你的 Goolgle 账户设置中启用“支持不太安全的应用访问”。

set from = "[email protected]"
set realname = "Your Name"
set smtp_url = "smtp://[email protected]:587/"
set imap_user = "[email protected]"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed = "+[Google Mail]/Drafts"
set trash = "+[Google Mail]/Trash"
set header_cache =~/.mutt/cache/headers
set message_cachedir =~/.mutt/cache/bodies
set certificate_file =~/.mutt/certificates
set move = no
set imap_keepalive = 900

# encrypted IMAP/SMTP passwords
source "gpg -d ~/.mutt/password.gpg |"

第四步(可选):配置 GPG 代理

这时候,你将可以使用加密了IMAP/SMTP 密码的 Mutt。然而,每次你运行 Mutt,你都要先被提示输入一个 GPG 密码来使用你的私钥解密 IMAP/SMTP 密码。

如果你想避免这样的 GPG 密码提示,你可以部署一个 gpg-agent。它以后台守护进程方式运行,gpg-agent 可以安全地缓存你的 GPG 密码,无需手工干预,gpg 可以自动从 gpg-agent 获得你的 GPG 密码。如果你正在使用 Linux 桌面,你可以配置使用一些等同于 gpg-agent 的特定的桌面软件,例如,GNOME 桌面的 gnome-keyring-daemon。

你可以在基于 Debian 系统安装 gpg-agent:

$ sudo apt-get install gpg-agent

gpg-agent 在基于 Red Hat 的系统上是预装好的。

现在增加下面这些到你的 .bashrc 文件中。

envfile="$HOME/.gnupg/gpg-agent.env"
if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
    eval "$(cat "$envfile")"
else
    eval "$(gpg-agent --daemon --allow-preset-passphrase --write-env-file "$envfile")"
fi
export GPG_AGENT_INFO

重载 .bashrc,或简单的登出然后重新登录。

$ source ~/.bashrc

现在确认 GPGAGENTINFO 环境变量已经设置妥当。

$ echo $GPG_AGENT_INFO

/tmp/gpg-0SKJw8/S.gpg-agent:942:1

并且,当你输入 gpg-agent 命令时,你应该看到下面的信息。

$ gpg-agent

gpg-agent: gpg-agent running and available

一旦 gpg-agent 启动运行,它将会在第一次提示你输入密码时缓存你的 GPG 密码。随后你多次运行 Mutt ,都不会被提示要 GPG 密码(gpg-agent 一直开着,缓存就不会过期)。

结论

在这个指导里,我提供一个使用 GnuPG 加密如 SMTP/IMAP 密码这样的 Mutt 敏感配置的方法。注意,如果你想在 Mutt 上使用 GnuPG 来加密或签名你的邮件,你可以参考官方指南关于 GPG 与 Mutt 结合的部分。

如果你知道任何使用 Mutt 的安全技巧,欢迎分享它。


via: http://xmodulo.com/mutt-email-client-encrypted-passwords.html

作者:Dan Nanni 译者:wyangsun 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

给你的Linux或Unix控制台创造一棵圣诞树玩玩吧。在此之前,需要先安装一个Perl模块,命名为Acme::POE::Tree。这是一棵很喜庆的圣诞树,我已经在Linux、OSX和类Unix系统上验证过了。

安装 Acme::POE::Tree

安装perl模块最简单的办法就是使用CPAN(Perl综合典藏网(Comprehensive Perl Archive Network))。打开终端,把下面的指令敲进去便可安装Acme::POE::Tree。

### 以root身份运行 ###
perl -MCPAN -e 'install Acme::POE::Tree'

示例输出:

Installing /home/vivek/perl5/man/man3/POE::NFA.3pm
Installing /home/vivek/perl5/man/man3/POE::Kernel.3pm
Installing /home/vivek/perl5/man/man3/POE::Loop.3pm
Installing /home/vivek/perl5/man/man3/POE::Resource.3pm
Installing /home/vivek/perl5/man/man3/POE::Filter::Map.3pm
Installing /home/vivek/perl5/man/man3/POE::Resource::SIDs.3pm
Installing /home/vivek/perl5/man/man3/POE::Loop::IO_Poll.3pm
Installing /home/vivek/perl5/man/man3/POE::Pipe::TwoWay.3pm
Appending installation info to /home/vivek/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod
  RCAPUTO/POE-1.367.tar.gz
  /usr/bin/make install  -- OK
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  Has already been unwrapped into directory /home/vivek/.cpan/build/Acme-POE-Tree-1.022-uhlZUz
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  Has already been prepared
Running make for R/RC/RCAPUTO/Acme-POE-Tree-1.022.tar.gz
cp lib/Acme/POE/Tree.pm blib/lib/Acme/POE/Tree.pm
Manifying 1 pod document
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_basic.t .. ok
All tests successful.
Files=1, Tests=2,  6 wallclock secs ( 0.09 usr  0.03 sys +  0.53 cusr  0.06 csys =  0.71 CPU)
Result: PASS
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
Tests succeeded but one dependency not OK (Curses)
  RCAPUTO/Acme-POE-Tree-1.022.tar.gz
  [dependencies] -- NA

在Shell中显示圣诞树

只需要在终端上运行以下命令:

perl -MAcme::POE::Tree -e 'Acme::POE::Tree->new()->run()'

示例输出

Gif 01: An animated christmas tree in Perl

Gif 01: 一棵用Perl写的喜庆圣诞树

树的定制

以下是我的脚本文件tree.pl的内容:

#!/usr/bin/perl

use Acme::POE::Tree;
my $tree = Acme::POE::Tree->new(
{
  star_delay => 1.5,  # shimmer star every 1.5 sec
  light_delay => 2,   # twinkle lights every 2 sec
  run_for => 10,      # automatically exit after 10 sec
}
);
$tree->run();

这样就可以通过修改stardelay、runfor和light\_delay参数的值来自定义你的树了。一棵好玩的终端圣诞树就此诞生。


via: http://www.cyberciti.biz/open-source/command-line-hacks/linux-unix-desktop-fun-christmas-tree-for-your-terminal/

作者:Vivek Gite 译者:soooogreen 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

简介

openSUSE(发音为 /ˌoʊpənˈsuːsə/ 或 /ˌoʊpənˈsuːzə/,德语发音 /ˌoʊpənˈzuːzə/)是以Linux核心为基础,提供符合一般日常使用的操作系统。开放社区的openSUSE Project所开发,并由Novell赞助。

2004年1月当Novell成功收购SuSE后,Novell决定将SuSE Professional产品完全开源,包括SUSE Linux引以为傲的YaST管理工具,以加入社区力量,协助其开发其商业产品SUSE Linux Enterprise。2011年Attachmate集团收购了Novell,并把Novell和SUSE做为两个独立的子公司运营。openSUSE 操作系统和相关的开源程序会被SUSE Linux Enterprise(比如 SLES 和 SLED)使用。2014年9月,SUSE Linux的母公司Attachmate集团被Micro Focus收购,这是SUSE的第3位东家。

openSUSE发布的第一个版本是基于SuSE Professional 10.0的测试版,而目前的稳定版是在2017年7月26日发布的42.3,而42.x开始的版本是42.1 对上一个版本是2014年11月4日发布的13.2版。版本号为何跳跃如此之大,并选择这样的一个数字,可参看:《openSUSE Leap 42.1 华丽发布》一文。

官方网站:http://www.opensuse.org/

下载

openSUSE 42.3 分为滚动更新版 Tumbleweed 和完整版 Leap。

滚动更新版 Tumbleweed

下载页面:https://software.opensuse.org/distributions/tumbleweed

  • Intel & AMD/ 兼容 PC 64 位 DVD ISO 镜像,适用于 64-bit 位 PC 点此下载

完整版 Leap

完整 DVD,也可用于 USB:下载页面: https://software.opensuse.org/distributions/leap

  • Intel & AMD/ 兼容 PC 64 位 4.7GB ISO 镜像,适用于 64-bit 位 PC 点此下载

发行

openSUSE 可以免费的、完整的下载得到。它包括支持32位和64位的 x86 架构:

  • openSUSE 下载版本:可以从 openSUSE 的下载页面自由的下载 ISO 版本。有几种不同版本:包括 KDE 4或 GNOME 的 Live-CD 版本(也可以安装到硬盘),和完整的 DVD 版本。此外还有一个含有专有软件即语言包的光盘。这个版本不包括任何技术支持和纸质手册。
  • openSUSE 零售版或 openSUSE 机器:用户可以从 www.opensourcepress.de 购买德语版本的 openSUSE 机器。该版本包含纸质的文档。零售版本不包含官方的英语及其它语言版本。
  • openSUSE FTP: 可以用一个小的 ISO 来通过 FTP 进行网络安装。有两种不同的 FTP 镜像站点:一个是开源软件包(OSS),另外一个是非开源软件包或整个协议是受限的。
  • openSUSE Factory: 这是一个持续开发版本,包含开发过程中的 CVS、GIT 等版本控制信息,用于开发团队用于构建稳定版本之前的标准快照(里程碑和 RC)。
  • openSUSE Leap:完整稳定版本,是最新的openSUSE主力发行版,只提供64位版本。
  • openSUSE Tumbleweed:滚动发布,当新的软件包的稳定版可用时立刻发布。

当前版本

目前的稳定版是在2017年7月26日发布的42.3版。

稳健的

我们在 openQA 上投入了大量的辛勤工作,通过这个自动化的测试工具来改进 openSUSE,确保了最新的 openSUSE 版本不会使最终用户失望而归。13.2 采用崭新的 Btrfs 作为 root 分区的默认文件系统,而 XFS 经过测试成为 /home 分区的默认文件系统。最新的 3.16 版 Linux 内核同样带来了一些稳定的特性,例如探测 Dell Latitude 笔记本是否正在跌落(到地上)。此外,YaST 在迁移到 Ruby 语言后,其代码库已经成熟,这意味着 YaST 获得了比以往更好的响应速度和可靠性。

网络化的

这个版本带来了 AppArmor 2.9,并设置为默认启用。这意味着那些相应 AppArmor 配置文件设置为强制模式的应用程序将会获得更强的安全性。此外其的他网络工具,例如 Samba, AutoYaST 等,同样有大量的更新包。

进化的

openSUSE 13.2 带来了 GCC 4.8,并且可以选择安装更新的 GCC 4.9 版本,Qt 5.3 带来了更多的改进,以适应 Qt5 框架。您也可以选择安装全新的(但仍在测试中) Plasma5

精致的

此版本中,YaST 向 Ruby 语言的迁移工作已成熟,其代码库已相当可靠,并且满满的都是您期待 YaST 应有的奇妙特性。ActiveDoc 可继续用来查找多种您在 Linux 世界中避无可避的工具的文档。13.2 还带来了 KDE 应用程序 4.14和 Plasma 桌面 4.11,它们共同组成了一个稳定的桌面环境,而 KDE 项目仍在迁移其代码到 KDE Frameworks 5。同时,GNOME 桌面更新到了3.14LXDE 在此版本中大动干戈,更新了软件包,改进了美工,以及修复了大量的故障并加入了很多新特性。

快速的

Linux 3.16 对 Nouveau 这个 NVIDIA 显卡的开源驱动进行了改进,同时还为 Intel 和 AMD 的显卡驱动添加了更多功能。这个新的内核还提升了 Btrfs 和 XFS 的性能表现。

全功能的

KDE Plasma 桌面现在支持通过 KDE Connect 整合您的移动设备了。默认的 Btrfs 文件系统为您带来大量新的特性,这些特性您之前想都不敢想!YaST 带来了新的 Qt 界面,迁移到了 Qt5。

创新的

这个版本包含了相当一部分值得尝试的实验性技术,例如 Wayland 1.4,KDE Frameworks 5。最前沿的软件可以从 编译服务上获取。此外此版本还有一个崭新的配色方案。

更多细节请参见:https://zh.opensuse.org/Features_13.2

历史

名称版本发布日期Linux内核版本
S.u.S.E Linux
(Slackware based)3/941994-03-???.?.?
7/941994-07-???.?.?
11/941994-11-???.?.?
4/951995-04-??1.2.9
8/951995-08-???.?.?
11/951995-11-???.?.?
S.u.S.E Linux4.21996-05-???.?.?
4.31996-09-???.?.?
4.41997-05-???.?.?
5.01997-07-??2.0.30
5.11997-10-??2.0.32
5.21998-03-232.0.33
5.31998-09-102.0.35
SuSE Linux6.01998-12-212.0.36
6.11999-04-072.2.6
6.21999-08-122.2.10
6.31999-11-252.2.13
6.42000-03-092.2.14
7.02000-09-272.2.16
7.12001-01-242.2.18
7.22001-06-152.4.4
7.32001-10-132.4.9
8.02002-04-222.4.18
8.12002-09-302.4.19
8.22003-04-072.4.20
SUSE Linux9.02003-10-152.4.21
9.12004-04-232.6.4
9.22004-10-252.6.8
9.32005-04-162.6.11
10.02005-10-062.6.13
10.12006-05-112.6.16
10.1bis2006-10-132.6.16
openSUSE10.22006-12-072.6.18
10.32007-10-042.6.22
11.02008-06-192.6.25
11.12008-12-182.6.27
11.22009-11-122.6.31
11.32010-07-152.6.34
11.42011-03-102.6.37
12.12011-11-163.1.0-1.2
12.22012-09-053.4.6-2.10
12.32013-03-133.7.10-1.1
13.12013-11-193.11.6
13.22014-11-043.16.6
Leap 42.12015-11-044.1
Leap 42.22016-11-164.4
Leap 42.32017-07-264.4

截屏

注:部分资料来自维基百科。