linux中国_ 发布的文章

问题:当我运行一个Python应用程序时,出现了这个提示消息“ImportError: No module named scapy.all”。我怎样才能修复这个导入错误呢?

Scapy是一个用Python写的灵活的数据包生成及嗅探程序。使用Scapy,你可以完成创建任意数据包并发送到网络上、从网络上或转储文件中读取数据包、转换数据包等工作。使用Scapy的通用包处理能力,你可以很容易地完成像SYN扫描、TCP路由跟踪以及OS指纹检测之类的工作。你也可以通过Import,将Scapy整合到其它工具中。

该导入错误表明:你还没有在你的Linux系统上安装Scapy。下面介绍安装方法。

安装Scapy到Debian, Ubuntu或Linux Mint

 $ sudo apt-get install python-scapy 

安装Scapy到Fedora或CentOS/RHEL

在CentOS/RHEL上,你首先需要启用EPEL仓库

 $ sudo yum install scapy 

源码安装Scapy

如果你的Linux版本没有提供Scapy包,或者你想要试试最新的Scapy,你可以手工使用源码包安装。

下载最新版的Scapy,然后按照以下步骤安装。

$ unzip scapy-latest.zip
$ cd scapy-2.*
$ sudo python setup.py install 

via: http://ask.xmodulo.com/importerror-no-module-named-scapy-all.html

译者:GOLinux 校对:wxy

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

CentOS上周五宣布,CentOS Linux 的滚动构建版正式发布!这次发布包括了用于安装介质的CentOS Linux 7 的 ISO和通用的云镜像两种版本。

CentOS Linux 滚动构建版包括了从初始发布时到快照发布之间推送到 mirror.centos.org 的所有更新。这些更新包括了 CentOS Linux 的安全更新、错误修复、功能增强以及常规更新。使用这个版本安装的机器将包括之前所有已经发布的更新,和使用 yum 更新的没有什么不同。所有的 rpm/yum 库仍旧存储在 mirror.centos.org 上,位置和内容都没有变化。

我们将在每个月底前发布一个滚动更新版本。每个发布版本的名字都包括一个时间戳和用于区分所包括内容的构建标记。如 20141129\_02 的文件名表示它包括了发布在 mirror.centos.org 上的截止到 2014年11月29日在内的所有内容,而且是滚动周期中的第二次构建。所有的构建版本都会公开发布到 buildlogs.centos.org/ 上,但是只有通过了 QA 和测试的才会标记为“发布”,并放到 buildlogs.centos.org/rolling/ 下。我们也会在需要时(用于开发和测试)在不同的时间点上构建临时构建版本,这些临时构建版本不会当成通用发布版本,但是仍然可以公开得到。

因为需要测试这些镜像,所以这些版本的发布时间总是和它们的时间戳(及内容截止时间)有点延迟。我们希望尽可能的自动化这个过程来缩短这个时间差,但是终究还需要一点时间。

每个滚动周期,我们都希望能以滚动方式增加更多的内容。在紧接着的下一个周期(2014/12)我们会发布 CentOS Linux 7 的 Live 镜像的滚动构建版本,然后是 CentOS Linux 6的。

现在我们没有计划在这个滚动发行周期中包括 CentOS 5。

为了便于统一和交流,发布的介质将以其所包括的内容时间为标识,而不是以发布的时间为准。比如这次在12月发布的是2014/11月底的滚动构建版本。

其它的镜像,如容器及厂商特定的镜像,将和主 CentOS Linux 介质的滚动周期同步开始,不过如果需要的话,也许会迭代的更快。特别兴趣小组(Special Interest Groups - http://wiki.centos.org/SpecialInterestGroup
)也希望让他们的介质和安装器的发布尽量与滚动时间线同步。

最后,我要强调的是,滚动发行版可以在出现类似心脏流血、破壳漏洞和狮子狗等重大安全漏洞时尽快提供解决方案


CentOS Linux 发行版安装介质:

文件: CentOS-7-x86\_64-DVD-20141129\_02.iso
Sha256校验: 85a46c62b5bfc701678bef7854bb73af4ccfb840dfcbfb2f9b2189e08fe9438c

文件: CentOS-7-x86\_64-Everything-20141129\_02.iso
Sha256校验: f9fdd8b12c9529a1e3bf7628ebee964b2aeb9fd66540de7b369e0fde6f7a4236

文件: CentOS-7-x86\_64-Minimal-20141129\_02.iso
Sha256校验:e1338d13178f1c66c17386b7ced0b1459c677ff9a1cf095ac4db377234cc03fa

以下符号链接总是指向最新的滚动发行版本:

http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-DVD.iso

  • -> CentOS-7-x86\_64-DVD-20141129\_02.iso

http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-Everything.iso

  • -> CentOS-7-x86\_64-Everything-20141129\_02.iso

http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-Minimal.iso-- CentOS-7-x86\_64-Minimal-20141129\_02.iso

每次测试通过并发布后,这些符号链接都会指向到最新的滚动发行版本。

云和实例镜像:

CentOS Linux 7 通用云镜像包括了 Extras/ 库中的云初始化部分。这个镜像有多种格式及不同的内容。云镜像发布在: http://cloud.centos.org/centos/7/images/

文件: CentOS-7-x86\_64-GenericCloud-20141129\_01.qcow2
描述:这是一个基准镜像。
大小: 944 MB
Sha256校验: 7710ffdd497cf00fc72c22a3fa7cc7adb3424d3542521ca8fbe19eba9ded403f

文件: CentOS-7-x86\_64-GenericCloud-20141129\_01.qcow2c
描述:和上面的镜像内容一样,但是通过qemu qcow2 内部压缩设置运行,适合于开发和测试,它的 I/O 性能较低,所以不适合在产品环境中使用。
大小: 399MB
Sha256校验:db42e4fb9565e75f0acbe6b54a5b8822f3f1e9783fb1a553e1552c72ceaff8df

文件: CentOS-7-x86\_64-GenericCloud-20141129\_01.qcow2.xz
描述:这是一个标准的 qcow2 文件,通过 xz 压缩工具运行,适合于产品环境中使用。
大小: 266MB
Sha256校验:9b0b38c48a24164c15c33625972b87835501b6994c3ee894f6b79ce40e7d5e54

文件: CentOS-7-x86\_64-GenericCloud-20141129\_01.raw
描述: 这是一个原始格式的文件,没有使用 qcow2 镜像格式。它可以用“qemu-img convert”转换成其它的格式。
大小: 8GB.
Sha256校验:2e643310bdb3cda775905408dbfe378a5eed04e91db193165178afc5ed5492b8

以下符号链接总是指向最新的滚动发行版本:

http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2

每次测试通过并发布后,这些符号链接都会指向到最新的滚动发行版本。

更多的信息请加入我们的 centos-devel 邮件列表( http://lists.centos.org/ )。

提问: 我想要将一个纯文本文件转换成PDF文档。在Linux命令行下是否有一个简单的方法将文本文件转换成PDF文件?

当你有一大堆文本文件要维护的时候,把它们转换成PDF文档会好一些。比如,PDF更适合打印,因为PDF文档有预定义布局。除此之外,还可以减少文档被意外修改的风险。

要将文本文件转换成PDF格式,你要按照下面的两步。

准备工作

首先你要安装两个需要的包。

在 Debian、Ubuntu 或者 Linux Mint上:

$ sudo apt-get install enscript ghostscript 

在 Fedora、CentOS/RHEL上:

$ sudo yum install enscript ghostscript 

在 Arch Linux上:

$ sudo pacman -S enscript ghostscript 

将文本文件转换成PDF格式

准备工作完成之后,按照下面的两步从文本文件生成一个PDF文件

首先,使用enscript命令行工具将文本文件转换成postscript格式。

$ enscript -p output.ps input.txt 

最后将postscript格式文件转换成PDF文件。

$ ps2pdf output.ps output.pdf 

via: http://ask.xmodulo.com/convert-text-to-pdf-linux.html

译者:geekpi 校对:Caroline

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

提问: 我有一台运行在VirtualBox上的使用NAT的虚拟机,因此虚拟机会被VirtualBox分配一个私有IP地址(10.x.x.x)。如果我想要从主机SSH到虚拟机中,我该怎么做?

VirtualBox对虚拟机支持几种不同的网络方式,其中一种是NAT网络。当虚拟机启用NAT后,VirtualBox会自动在虚拟机和主机之间进行网络翻译,因此你不必在虚拟机和主机之间配置任何东西。这也意味着NAT中的虚拟机对于外部网络以及主机本身是不可见的。这会在你想要从主机访问虚拟机时会产生问题(比如SSH)。

如果你想从VirtualBox的NAT环境的虚拟机,你可以在GUI或者命令行下启用VirtualBox NAT的端口转发。本篇教程将会演示如何通过启用22端口转发而从主机SSH连接到NAT环境的客户机。如果你先想要从HTTP访问NAT的客户机,用80端口代替22端口即可。

通过GUI配置VirtualBox端口转发

在VirtualBox中选择你想要访问的虚拟机,打开虚拟机的“设置”。点击左侧的“网络”菜单,点击网络适配选项的“高级”。

点击“端口转发”按钮

你会看到一个配置端口转发规则的窗口。点击右上角的“添加”图标。

就会看到像下面那样的转发规则。

  • Name: SSH (可以是任意唯一名)
  • Protocol: TCP
  • Host IP: 127.0.0.1
  • Host Port: 2222 (任何大于1024未使用的端口)
  • Guest IP: 虚拟机IP
  • Guest Port: 22 (SSH 端口)

端口转发的规则会自动在你启动虚拟机的时候启用。为了验证。可以在你启用虚拟机后检查端口2222是否被VirtualBox开启了。

$ sudo netstat -nap | grep 2222 

现在端口转发可以使用了,你可以用下面的命令SSH到虚拟机。

 $ ssh -p 2222 <login>@127.0.0.1 

发送到127.0.0.1:2222的登录请求会自动被VirtualBox翻译成10.0.2.15:22,这可以让你SSH到虚拟机中。

通过命令行配置VirtualBox端口转发

VirtualBox有一个称为VBoxManage的命令行管理工具。使用命令行工具,你也可以为你的虚拟机设置端口转发。

下面的命令会为IP地址为10.0.2.15的虚拟机设置一个名字为"centos7"的端口转发规则,SSH的端口号为22,映射到本地主机的端口为2222。规则的名字(本例中是SSH)必须是唯一的。

$ VBoxManage modifyvm "centos7" --natpf1 "SSH,tcp,127.0.0.1,2222,10.0.2.15,22" 

规则创建之后,你可以用下面的命令来验证。

 $ VBoxManage showvminfo "centos7" | grep NIC 


via: http://ask.xmodulo.com/access-nat-guest-from-host-virtualbox.html

译者:geekpi 校对:wxy

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

编者按:Debian 8 Jessie的 init 系统默认使用 systemd,这一选择在社区引发了大量争议,导致了技术委员会的多名成员辞职。现在,“老兵 Unix 管理员”宣布要创建一个新的不使用 sytemd 的 Debian 分支。这群 Unix 哲学拥护者们请求外界捐赠支持他们的新使命。

以下内容来自 debianfork.org 的相关内容:


// 更新: 项目名称正式命名为:Devuan

我们是谁?!

我们是老兵 Unix 管理员(Veteran Unix Admins),我们非常关注 Debian GNU/Linux 在 systemd 上的分歧,并且决定分支(fork)Debian 项目。

为什么我们要这样做?

我们中的一些人是上游开发者,一些人是专业的系统管理员:我们每天都要和 Debian 打各种交道。

我们不想被强迫使用 systemd 来替代传统的 UNIX sysvinit 初始化系统,因为 systemd 背离了 UNIX 哲学。

我们考虑采用贴近 sysvinit 的架构,而不是那种破坏了“做一件事,把它做好”的原则、带着数十个紧密耦合的二进制文件和不透明的日志的东西。

有比创建分支更好的解决方案么?

不幸的是,目前没有!

在下一代的 Debian v.8 "Jessie" 发行版中,默认的初始化系统将是 systemd,它将挟裹着一堆紧密纠缠的东西来到。

我们需要分离这些依赖的牵扯,从所有受到影响的软件包中清除这些,并提供相应的替代品。我们所要创建的分支的稳定性是目前阶段所要考虑的首要重点。

你觉得为什么会走到了这一步?

现在的 Debian 项目的领导者受到了 GNOME 开发者太多的影响,而且在项目中考虑了太多的桌面需求的因素,而 Debian 用户却大多数是精通技术的系统管理员。

而且,今天 Debian 正逐渐背离自己最初愿景,也是开源软件的基石:用户至上。这到底是怎么了?所谓的“do-ocracy”开发者和包维护者正在给用户强加他们的选择。

你可以说一下你对 systemd 的意见吗?

套用一下 Eric S. Raymond 在这个问题上的看法,我们认为 systemd 很容易就会发生嬗变,进而臃肿不堪、最后变成了那种讨厌的纠结在一起的毛球。

我们希望能够用可以阅读的 shell 脚本来控制系统的启动,因为可读性能够给我们这些有能力的人更多的控制和洞悉。我们认为,在一个守护进程中集中控制服务、socket、设备、挂载等等,是对传统的 UNIX 哲学的一记响亮耳光。

某些支持 systemd 的人对此的快速回应可以在 forkfedora.org (已经关闭,需要翻墙才能看历史归档)上看到。这个页面突出了两者之间的根本不同:systemd 也许对于配置 init 来说很简单,但是它增加了 init 过程中的不透明度。在 systemd 中很明确是这样的:可以通过更少的变量来调整,而通过远超 sysvinit 大小的程序将大部分细节隐藏在一个巨大的二进制程序里面。

  ls -lH /sbin/init
  sysvinit: -rwxr-xr-x 1 root root 36992 Jul 14  2013 /sbin/init
  systemd: -rwxr-xr-x 1 root root 1317632 Sep  1 14:41 /sbin/init
# 你也许认为我不够强大,但是你也太胖了!

可以说 systemd 的安全模式更多的依赖于开发者和包维护者,而不怎么指望系统管理员。作为 Debian 用户,我们只是希望不要被强迫必须如此,看看 CTTE 关于这个问题的投票就会知道,我们相信这样下去会越来越多的听到用户要求:放开那个 Init !不要和 systemd 和它的那堆零碎纠缠在一起。

你们能坚持多久?

这不是比谁的胡子更长,放心,毛茸茸的不总是绵羊!

概括一下计划?

“放开那个 Init”( Init Freedom),这是我们的承诺,我们会建立一个 Debian 项目的分支,创建一个新的基础发行版。

这需要一些时间,我们会一步步来。

首先我们会配合 Debian 8 "Jessie" 的发布,给当前的 Debian 用户平滑升级提供一个完整的解决方案。

如果你也需要这个,请帮助我们: 捐赠 或者参与进来。

我们需要谈谈。

当然,您可以写电子邮件给 [email protected]

我们也有一些人聚集在 IRC , Freenode 频道号是 #debianfork ,欢迎加入。

可以订阅邮件列表。喜欢的话来发布意见吧,不管是什么。

只有你们这些家伙吗?

不是,有很多用户都对 systemd 有意见。

有一篇文章是对这个问题的很好的介绍: Systemd: Linux 世界末日的预兆

有个 boycott systemd 网站也有一些相关的资料。那里有个叫做 uselessd 的 “systemd 分支”,有些不错的地方和许多笑点(lulz)。

还有人提出了一个 当世界 systemd 了之后的撤退战略。

在维基百科的 systemd reception 章节也有一些对其提出的批评意见。

谢谢你做的这些,我怎么帮助你们?

老兵 Unix 管理员(Veteran Unix Admins)的一个小型的核心小组正在积极建设分支的相关框架和一些用于开发的基础设施。

这时的捐赠有助于我们确定可以在基础架构上投入多少以及人们的对我们的预期。

如果你会捐赠,那么来吧

如我们现在做的,我们会在此一直更新我们的项目进展。

对于你做的这些,人们是怎么看的?

下面是我们收到的一些邮件(略,请参照原链接),我们会匿名发表这些信息,除非你申明不用。

我们会保密你的邮件地址,并会通知你我们的下一步进展。

问题:我需要找出我的Linux系统上的GNU C库(glibc)的版本,我怎样才能检查Linux上的glibc版本呢?

GNU C库(glibc)是标准C库的GNU实现。glibc是GNU工具链的关键组件,用于和二进制工具和编译器一起使用,为目标架构生成用户空间应用程序。

当从源码进行构建时,一些Linux程序可能需要链接到某个特定版本的glibc。在这种情况下,你可能想要检查已安装的glibc信息以查看是否满足依赖关系。

这里介绍几种简单的方法,方便你检查Linux上的glibc版本。

方法一

下面给出了命令行下检查GNU C库的简单命令。

$ ldd --version 

在本例中,glibc版本是2.19

方法二

另一个方法是在命令行“输入”glibc 库的名称(如,libc.so.6),就像命令一样执行。

输出结果会显示更多关于glibc库的详细信息,包括glibc的版本以及使用的GNU编译器,也提供了glibc扩展的信息。glibc变量的位置取决于Linux版本和处理器架构。

在基于Debian的64位系统上:

$ /lib/x86_64-linux-gnu/libc.so.6

在基于Debian的32位系统上:

$ /lib/i386-linux-gnu/libc.so.6

在基于Red Hat的64位系统上:

$ /lib64/libc.so.6

在基于Red Hat的32位系统上:

$ /lib/libc.so.6

下图中是输入glibc库后的输出结果样例。


via: http://ask.xmodulo.com/check-glibc-version-linux.html

译者:GOLinux 校对:wxy

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