mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-16 22:42:21 +08:00
Merge branch 'master' of https://github.com/LCTT/TranslateProject.git
This commit is contained in:
commit
0e626350c4
@ -2,11 +2,11 @@ Linux输入统计神器——WhatPulse
|
||||
================================================================================
|
||||
![](http://cdn.linuxaria.com/wp-content/uploads/2014/08/whatpulse.png)
|
||||
|
||||
如果,你想我这样,是个对统计数据有着狂热癖好的人,那么你必须在你的计算机上安装这个小应用:[WhatPulse][1]
|
||||
如果,你像我这样,是个对统计数据有着狂热癖好的人,那么你必须在你的计算机上安装这个小应用:[WhatPulse][1]
|
||||
|
||||
此软件会追踪用户的击键、鼠标点击以及使用的[带宽][2]和系统开机时间。用户可以周期性地,或者手动上传击键的数量到服务器上,这称之为“脉动”。
|
||||
|
||||
用户可以看到他们在所有加入该程序的人的领先选手排名板的所处位置,并且与他们自己国家的人作比较。用户也可以加入团队,在团队中他们可以和有着相同爱好的人作对比(去吧,Linux用户们!!)。
|
||||
用户可以看到他们在所有加入该程序的人的领先选手排行板的所处位置,并且与他们自己国家的人作比较。用户也可以加入团队,在团队中他们可以和有着相同爱好的人作对比(去吧,Linux用户们!!)。
|
||||
|
||||
软件分为免费的基础版和高级版,在基础版中你可以查看并检查所有的基本统计数据,而在高级版中你可以看到更多。
|
||||
|
||||
@ -16,11 +16,11 @@ Linux输入统计神器——WhatPulse
|
||||
|
||||
第一步,你必须在[WhatPulse网站][1]注册帐号,或者也可以在你第一次启动WhatPulse客户端时出现的实用向导中创建帐号,以用于上传自己的统计数据(你也可以使用Facebook的帐号登录)。
|
||||
|
||||
你会被提示需要登录,登录之后,你必须搜索你的计算机名,这是因为你可以通过该帐号登录到多台计算机,而它们的数据都会上传到同一统计帐号。一旦你登入后,一个小小的W将出现在你的系统托盘中,那就对了,你已搞定!
|
||||
你会被提示需要登录,登录之后,你必须找到你的计算机名,这是因为你可以通过该帐号登录到多台计算机,而它们的数据都会上传到同一统计帐号。一旦你登入后,一个小小的W将出现在你的系统托盘中,那就对了,你已搞定!
|
||||
|
||||
### 在Linux上安装WhatPulse ###
|
||||
|
||||
官方网站在[下载页][3]提供了一个通用版本.tar.gz归档压缩包(用于32位和64位)和一个debian包。
|
||||
官方网站在[下载页][3]提供了一个通用版本的.tar.gz归档压缩包(用于32位和64位)和一个debian包。
|
||||
|
||||
就我个人而言,我已经在我的Mint Qiana上安装了debian包,在我的Arch Linux[Aur包][4]一点问题都没有。
|
||||
|
||||
@ -57,7 +57,7 @@ Linux输入统计神器——WhatPulse
|
||||
|
||||
在网站上,你会看到与客户端上相同的所有统计数据。
|
||||
|
||||
免责声明:上面的WhatPulse网站链接包含了我的参考链接,注册时请使用该链接,这会让我的帐号在某天升级到高级帐号。
|
||||
免责声明:上面的WhatPulse网站链接包含了我的参考链接,注册时可以使用该链接,这会让我的帐号在某天升级到高级帐号。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -65,7 +65,7 @@ via: http://linuxaria.com/recensioni/check-how-much-do-you-type-with-whatpulse-o
|
||||
|
||||
作者:[linuxari][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,6 +1,6 @@
|
||||
Linux终端的乐趣之把玩Word Counts
|
||||
Linux终端的乐趣之把玩字词计数
|
||||
================================================================================
|
||||
Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,则是我们打算在这篇文章中讲到的。
|
||||
Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的。
|
||||
|
||||
立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux 命令是 [wc 命令] [1]。
|
||||
|
||||
@ -49,7 +49,7 @@ Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行
|
||||
a
|
||||
m
|
||||
|
||||
**Note**: `-w1`只是设定了长度
|
||||
**注**: `-w1`只是设定了长度
|
||||
|
||||
现在我们将从那个文本文件中掰下来的每一个字母,对结果进行排序,得到所需的输出频率的十个最常见的字符。
|
||||
|
||||
@ -68,7 +68,7 @@ Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行
|
||||
1224 r
|
||||
1021 l
|
||||
|
||||
如何区分大小写呢?之前我们都是乎略大小写的。所以,用如下命令。
|
||||
如何区分大小写呢?之前我们都是忽略大小写的。所以,用如下命令。
|
||||
|
||||
$ fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
|
||||
|
||||
@ -154,18 +154,19 @@ Linux 命令行有很多的乐趣,我们可以很容易并且完善地执行
|
||||
1 activate local mode format and display local manual files
|
||||
1 acute accent
|
||||
|
||||
**Note**: 上面的.越来越多,其实,我们可以使用.{10} 得到同样的效果。
|
||||
**注**: 上面的.越来越多,其实,我们可以使用.{10} 得到同样的效果。
|
||||
|
||||
这些简单的脚本,让我们知道最频繁出现的单词和英语中的字符。
|
||||
|
||||
这就是现在。我会在这里再一次提到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见的评论部分。
|
||||
现在结束了。下次我会在这里讲到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.tecmint.com/play-with-word-and-character-counts-in-linux/
|
||||
|
||||
作者:[Avishek Kumar][a]
|
||||
译者:[MikeCoder](https://github.com/MikeCoder)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,12 +1,12 @@
|
||||
如何在Linux命令行中下载GOG游戏
|
||||
================================================================================
|
||||
如果你是一个玩家同时也是一个Linux用户,你可能很高兴在[GOG][1]在几个月前宣布它会在你最喜欢的操作系统上推出游戏。如果你之前从来没有听说过GOG,我鼓励你看看他们的产品目录中的“很棒的老游戏”,价格合理,无DRM限制,而且充满了很棒的东西。然而现在的Windows上的GOG存在了很长的时间按,正式的Linux版本却是无处可见。因此,你不想等待官方的正式版本,一个名为LGOGDownloader非官方的开放源码计划能让你在命令行中访问你的库。
|
||||
如果你是一个游戏玩家同时也是一个Linux用户,你可能很高兴在[GOG][1]在几个月前宣布它会在你最喜欢的操作系统上推出游戏。如果你之前从来没有听说过GOG,我鼓励你看看他们的产品目录中的“很棒的老游戏”,价格合理,无DRM限制,而且充满了很棒的东西。虽然Windows上的GOG客户端已经存在了很长的时间,但是官方的Linux版本客户端却是无处可见。因此,如果你不想等待官方的正式版本,一个名为LGOGDownloader非官方的开放源码计划能让你在命令行中访问你的库。
|
||||
|
||||
![](https://farm4.staticflickr.com/3843/15121593356_b13309c70f_z.jpg)
|
||||
|
||||
### 在Linux中安装 LGOGDownloader ###
|
||||
|
||||
对于Ubuntu用户来说,[官方页面][2]建议您下载源代码并执行:
|
||||
对于Ubuntu用户来说,其[官方页面][2]建议您下载源代码并执行:
|
||||
|
||||
$ sudo apt-get install build-essential libcurl4-openssl-dev liboauth-dev libjsoncpp-dev libhtmlcxx-dev libboost-system-dev libboost-filesystem-dev libboost-regex-dev libboost-program-options-dev libboost-date-time-dev libtinyxml-dev librhash-dev help2man
|
||||
$ tar -xvzf lgogdownloader-2.17.tar.gz
|
||||
@ -14,7 +14,7 @@
|
||||
$ make release
|
||||
$ sudo make install
|
||||
|
||||
如果你是ArchLinux用户。有一个[AUR 包][2]等着你
|
||||
如果你是ArchLinux用户。有一个[AUR 包][2]等着你:
|
||||
|
||||
### LGOGDownloader 的使用###
|
||||
|
||||
@ -65,7 +65,7 @@ via: http://xmodulo.com/2014/09/download-gog-games-command-line-linux.html
|
||||
|
||||
作者:[Adrien Brochard][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -2,9 +2,8 @@
|
||||
================================================================================
|
||||
![Android, Chrome, Ubuntu](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/android-ubuntu.jpg)
|
||||
|
||||
Android, Chrome, Ubuntu
|
||||
|
||||
**Google最近发布了首批[能在Chrome OS本地运行的安卓应用集][1],通过‘安卓运行时’扩展完成了该壮举。**
|
||||
**Google最近发布了首批[能在Chrome OS本地运行的安卓应用集][1],通过‘安卓运行时’扩展完成了该壮举。**
|
||||
|
||||
现在,一位开发者已经[指明了将安卓应用带入桌面版Chrome的路][2]。
|
||||
|
||||
@ -12,51 +11,51 @@ Android, Chrome, Ubuntu
|
||||
|
||||
![IMDB, Flipboard and Twitter Android Apps running on Ubuntu 14.04 LTS](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/android-apps-on-linux.jpg)
|
||||
|
||||
运行在Ubuntu 14.04 LTS上的安卓应用:IMDB,Flipboard和Twitter
|
||||
*运行在Ubuntu 14.04 LTS上的安卓应用:IMDB,Flipboard和Twitter*
|
||||
|
||||
通过运行时运行的应用的性能不是很令人惊异,任何想要运行Dead Trigger 2或者其它图形密集型游戏的雄心壮志可以放到一边了。
|
||||
通过‘安卓运行时’运行的应用的性能不是很令人惊异,任何想要运行Dead Trigger 2或者其它图形密集型游戏的雄心壮志可以放到一边了。
|
||||
|
||||
同样地,作为官方运行时的非官方重构包并在Chrome OS之外运行,系统整合(如网络摄像头,扬声器等)可能不完整或者根本不可能。
|
||||
同样地,要运行官方的‘安卓运行时’的非官方重构包,或者在Chrome OS之外运行的话,其系统完整性(如网络摄像头,扬声器等)可能不完整或者根本不可能。
|
||||
|
||||
下面的指南只是提供原样,并不保证一定成功。它只能作为高度实验性进行,里面遍布漏洞,很不稳定——甚至平出恶魔。只能出于好奇而尝试,不去高度寄予厚望,那么你就不会深受其困扰。
|
||||
按照下面的指南一步步来,并不保证一定成功。它只能作为高度实验性进行,里面遍布漏洞,很不稳定——甚至白日见鬼。只能出于好奇而尝试,不要高度寄予厚望,这样你就不会深受其困扰。
|
||||
|
||||
### 安卓应用转战Linux大法 ###
|
||||
|
||||
要通过Chrome在Linux上运行安卓应用,很明显,你需要安装Chrome,要求的版本是37,或者更高。坦率地讲,如果你打算玩玩潜在不稳定的版本,那么你也可以下载并[为Linux安装不稳定的Google Chrome版本][6]。
|
||||
要通过Chrome在Linux上运行安卓应用,很明显,你需要安装Chrome,要求的版本是37,或者更高。坦率地讲,如果你打算玩玩不稳定的Chrome版本,那么你也可以下载并[为Linux安装][6]。
|
||||
|
||||
已经安装了Chrome的某个版本?你可以通过命令行来安装开发版,命令如下:
|
||||
如果已经安装了Chrome的某个版本?你可以通过命令行来安装不稳定版,命令如下:
|
||||
|
||||
sudo apt-get install google-chrome-unstable
|
||||
|
||||
接下来,你需要下载官方定制版,而不是Google或Chronium捐赠的版本——由弗拉德·菲利波夫创建的安卓运行时。这个版本和官方的有着诸多的不同,最突出的就是它可以运行在桌面版的浏览器上。
|
||||
有了 Chrome 之后,你需要下载定制版的‘安卓运行时’扩展,而不是Google或Chronium提供的版本——由弗拉德·菲利波夫创建的‘安卓运行时’。这个版本和官方的有着诸多的不同,最突出的不同就是它可以运行在桌面版的浏览器上。
|
||||
|
||||
- [从BitBucket下载ARChon v1.0][7]
|
||||
|
||||
下载好运行时后,你需要从.zip解压内容,并移动解压后的文件夹到你的Home文件夹。
|
||||
下载好‘安卓运行时’扩展后,你需要从.zip解压内容,并移动解压后的文件夹到你的Home文件夹。
|
||||
|
||||
要安装,打开Google Chrome,点击汉堡式菜单按钮,然后导航到扩展页。检查‘启用开发者模式’并点击‘加载解包的扩展’按钮。
|
||||
要安装它,打开Google Chrome,点击汉堡式菜单按钮,然后导航到扩展页。检查‘启用开发者模式’并点击‘加载解包的扩展’按钮。
|
||||
|
||||
![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/chromeos-apk-extensions.jpg)
|
||||
|
||||
运行时本身不会做太多事情,所以你需要从安卓应用创建兼容包。要完成这项工作,你需要‘[chromeos-apk][8]’[命令行Javascript工具][9],它可以从节点封装模块管理器安装。
|
||||
‘安卓运行时’扩展本身不会做太多事情,所以你需要从安卓应用创建兼容包。要完成这项工作,你需要‘[chromeos-apk][8]’[命令行Javascript工具][9],它可以从“Node 封装模块管理器(npm )”安装。
|
||||
|
||||
首先运行:
|
||||
|
||||
sudo apt-get install npm nodejs nodejs-legacy
|
||||
|
||||
Ubuntu 64位用户?你也需要攫取以下库:
|
||||
Ubuntu 64位用户?你还需要获取以下库:
|
||||
|
||||
sudo apt-get install lib32stdc++6
|
||||
|
||||
现在,运行命令来暗转脚本吧:
|
||||
现在,运行npm命令来安装该脚本吧:
|
||||
|
||||
npm install -g chromeos-apk
|
||||
|
||||
根据你的配置,你可能需要过会儿使用sudo来运行。如果你不喜欢[通过sudo安装npm模块,你可以][10]玩玩鬼把戏。
|
||||
根据你的配置,你可能需要过会儿使用sudo来运行。如果你不喜欢[通过sudo安装npm模块,你可以][10]试着骗过它。
|
||||
|
||||
![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/chromeos-apk-npm.jpg)
|
||||
|
||||
现在,你直接回家了。去Google找找你想要试试的应用的APK吧,请牢记**不是所有的安卓应用都会工作**,而**那些可以工作的也未必工作得很好**,或者缺少功能。
|
||||
现在,搞定了。去Google找找你想要试试的应用的APK吧,请牢记**不是所有的安卓应用都会工作**,而**那些可以工作的也未必工作得很好**,或者缺少功能。
|
||||
|
||||
把你想要的安卓APK放到~/Home,然后回到终端中使用以下命令来转换,你可以将APK命名成任何你想要的名字:
|
||||
|
||||
@ -68,9 +67,9 @@ Ubuntu 64位用户?你也需要攫取以下库:
|
||||
|
||||
现在,在你的Home文件夹内有个ARChon生成的Chrome APK extension-y folder-y这样的东西。所有剩下来要做的事,就是安装并查看它是否正常工作!
|
||||
|
||||
回到chrome://extensions页面,再次轻敲‘加载解封装扩展’按钮,但这次选择上面脚本创建的文件夹。
|
||||
回到chrome://extensions页面,再次轻敲‘加载解封装扩展’按钮,但这次选择上面脚本创建出来的文件夹。
|
||||
|
||||
应用应该会继续安装,不会有任何问题,但是它确实会没有问题吗?打开Chrome应用启动器或应用页面并启动它来看看是否有问题。
|
||||
应用应该会正确安装,但是它确实会没有问题吗?打开Chrome应用启动器或应用页面并启动它来看看是否有问题。
|
||||
|
||||
#### 深度探索 ####
|
||||
|
||||
@ -82,7 +81,7 @@ via: http://www.omgubuntu.co.uk/2014/09/install-android-apps-ubuntu-archon
|
||||
|
||||
作者:[Joey-Elijah Sneddon][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -1,8 +1,8 @@
|
||||
直接从硬盘启动Linux ISO镜像
|
||||
================================================================================
|
||||
![](data:image/png;base64,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)
|
||||
![](http://cdn8.howtogeek.com/wp-content/uploads/2014/09/boot-iso-files-directly-from-hard-drive-in-grub2.png)
|
||||
|
||||
Linux的GRUB2启动加载器可以直接从硬盘启动Linux ISO文件,可以启动Live CD,甚至可以不用烧录到磁盘来安装Linux到另外一个硬盘分区或从USB驱动启动。
|
||||
Linux的GRUB2启动加载器可以直接从硬盘启动Linux ISO文件,可以启动Live CD的 ISO,而不用烧录到光盘来安装Linux到一个硬盘分区,或从USB驱动启动。
|
||||
|
||||
我们在Ubuntu 14.04上实施了该过程——Ubuntu及基于Ubuntu的Linux版本对此支持良好。[其它Linux发行版][1]上的工作原理也类似。
|
||||
|
||||
@ -14,15 +14,15 @@ Linux的GRUB2启动加载器可以直接从硬盘启动Linux ISO文件,可以
|
||||
|
||||
### 检查ISO文件内容 ###
|
||||
|
||||
你可能需要检查ISO文件来明确确定指定的文件在哪里。例如,你可以通过使用Ubuntu及其它基于GNOME的桌面环境中的归档管理器/File Roller文件管理器这些图形化应用程序来打开ISO文件来完成此项工作。在Nautilus文件管理器中,右击ISO文件并选择使用归档管理器打开。
|
||||
你可能需要查看ISO文件的内部来知道那些特定的的文件在哪里。例如,你可以通过使用Ubuntu及其它基于GNOME的桌面环境中的归档管理器/文件管理器这些图形化应用程序来打开ISO文件。在Nautilus文件管理器中,右击ISO文件并选择使用归档管理器打开。
|
||||
|
||||
定位内核文件和initrd映像。如果你正在使用Ubuntu ISO文件,你会在卡斯帕文件夹中找到这些文件——vmlinuz文件时Linux内核,而initrd文件是initrd映像。后面,你需要知道它们在ISO文件中所处的位置。
|
||||
找到内核文件和initrd映像。如果你正在使用Ubuntu ISO文件,你会在casper文件夹中找到这些文件——vmlinuz文件是Linux内核,而initrd文件是initrd映像。后面,你需要知道它们在ISO文件中所处的位置。
|
||||
|
||||
![](http://cdn8.howtogeek.com/wp-content/uploads/2014/09/650x350xvmlinuz-and-initrd-file-locations.png.pagespeed.ic.hB1yMlHMr2.png)
|
||||
|
||||
### 检查硬盘分区路径 ###
|
||||
|
||||
GRUB使用与Linux不同的“设备命名”结构。在Linux系统中,/dev/sda0是硬盘上的第一个分区——**a**是指第一个硬盘,而**0**是指第一个分区。在GRUB中,与/dev/sda0相对应的是(hd0,1)。**0**指第一个硬盘,而**1**则指它上面的第一个分区。换句话说,在GRUB设备名中,磁盘编号从0开始计数,而分区编号则从1开始计数——是啊,这真是突然令人困惑。例如,(hd3,6)是指第四磁盘上的第六分区。
|
||||
GRUB使用与Linux不同的“设备命名”方式。在Linux系统中,/dev/sda0是硬盘上的第一个分区——**a**是指第一个硬盘,而**0**是指第一个分区。在GRUB中,与/dev/sda0相对应的是(hd0,1)。**0**指第一个硬盘,而**1**则指它上面的第一个分区。换句话说,在GRUB设备名中,磁盘编号从0开始计数,而分区编号则从1开始计数——是啊,这真是突然令人困惑。例如,(hd3,6)是指第四磁盘上的第六分区。
|
||||
|
||||
你可以使用**fdisk -l**命令来查看该信息。在Ubuntu上,打开终端并运行以下命令:
|
||||
|
||||
@ -34,7 +34,7 @@ GRUB使用与Linux不同的“设备命名”结构。在Linux系统中,/dev/s
|
||||
|
||||
### 创建GRUB2启动条目 ###
|
||||
|
||||
添加自定义启动条目的最简单的方式是编辑/etc/grub.d/40_custom脚本,该文件设计用于用户自行添加启动条目。在编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/脚本的内容将合成创建/boot/grub/grub.cfg文件——你不应该手工编辑该文件。它设计用于通过你在其它文件指定的设置自动生成。
|
||||
添加自定义启动条目的最简单的方式是编辑/etc/grub.d/40_custom脚本,该文件设计用于用户自行添加启动条目。在编辑该文件后,/etc/defaults/grub文件和/etc/grub.d/脚本的内容将合成创建/boot/grub/grub.cfg文件——你不应该手工编辑这个文件。它被设计为通过你在另外的文件中指定的设置自动生成。
|
||||
|
||||
你需要以root特权打开/etc/grub.d/40_custom文件来编辑。在Ubuntu上,你可以通过打开终端窗口,并运行以下命令来完成:
|
||||
|
||||
@ -48,22 +48,22 @@ GRUB使用与Linux不同的“设备命名”结构。在Linux系统中,/dev/s
|
||||
|
||||
这里为你展示了怎样来从ISO文件启动Ubuntu或基于Ubuntu的发行版,我们在Ubuntu 14.04下作了测试:
|
||||
|
||||
menuentry “Ubuntu 14.04 ISO” {
|
||||
set isofile=”/home/name/Downloads/ubuntu-14.04.1-desktop-amd64.iso”
|
||||
menuentry "Ubuntu 14.04 ISO" {
|
||||
set isofile="/home/name/Downloads/ubuntu-14.04.1-desktop-amd64.iso"
|
||||
loopback loop (hd0,1)$isofile
|
||||
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash
|
||||
initrd (loop)/casper/initrd.lz
|
||||
}
|
||||
|
||||
自定义启动条目以包含你期望的菜单的条目名称,计算机上到ISO文件的正确路径,以及包含ISO文件的硬盘和分区设备名。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。
|
||||
自定义启动条目以包含你期望的菜单的条目名称,并指定计算机上该ISO文件的正确路径,以及包含ISO文件的硬盘和分区设备名。如果vmlinuz和initrd文件的名称或路径不同,请为这些文件指定正确的路径。
|
||||
|
||||
(如果你有一个独立的/home/分区,忽略/home位,像这样:**set isofile=”/name/Downloads/${isoname}”**)。
|
||||
(如果你的/home/ 目录是一个分区,请忽略/home部分,像这样:**set isofile="/name/Downloads/${isoname}"**)。
|
||||
|
||||
**重要说明**:不同的Linux版本要求带有不同启动选项的不同的启动条目,GRUB Live ISO多启动项目提供了[用于不同Linux发行版的菜单条目][6]的各种不同类型。你应当可以为你想要启动的ISO文件调整这些示例菜单条目。你也可以仅仅从网页搜索你想要启动的Linux发行版的名称和发行编号,并附带关键词“在GRUB中从ISO启动”,以获取更多信息。
|
||||
**重要说明**:不同的Linux版本要求带有不同启动选项的不同的启动条目,GRUB Live ISO多启动项目提供了[用于不同Linux发行版的菜单条目][6]的各种不同类型。你应当为你想要启动的ISO文件调整这些示例菜单条目。你也可以仅仅从网页搜索你想要启动的Linux发行版的名称和发行编号,并附带关键词“在GRUB中从ISO启动”,以获取更多信息。
|
||||
|
||||
![](http://cdn8.howtogeek.com/wp-content/uploads/2014/09/650x392xadd-a-linux-iso-file-to-grub-boot-loader.png.pagespeed.ic.2FR0nOtugC.png)
|
||||
|
||||
如果你想要添加更多ISO启动选项,请为该文件添加额外章节。
|
||||
如果你想要添加更多ISO启动选项,请为该文件添加额外部分。
|
||||
|
||||
完成后保存文件,返回终端窗口并运行以下命令:
|
||||
|
||||
@ -73,7 +73,7 @@ GRUB使用与Linux不同的“设备命名”结构。在Linux系统中,/dev/s
|
||||
|
||||
再次启动计算机时,你将看到ISO启动条目,你可以选择它来启动ISO文件。在启动时,你可能需要按Shift键来显示GRUB菜单。
|
||||
|
||||
如果在尝试启动ISO文件时你看见错误信息或黑屏,那么你的启动条目配置不管怎么说配置错误了。即使ISO文件路径和设备名是正确的,ISO文件上的vmlinuz和initrd文件的路径可能是不正确的,或者你启动Linux系统可能需要不同的选项。
|
||||
如果在尝试启动ISO文件时你看见错误信息或黑屏,那么你的启动条目配置肯定配置错误了。即使ISO文件路径和设备名是正确的,ISO文件上的vmlinuz和initrd文件的路径可能是不正确的,或者你启动Linux系统可能需要不同的选项。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -81,7 +81,7 @@ via: http://www.howtogeek.com/196933/how-to-boot-linux-iso-images-directly-from-
|
||||
|
||||
作者:[Chris Hoffman][a]
|
||||
译者:[GOLinux](https://github.com/GOLinux)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
@ -0,0 +1,84 @@
|
||||
Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包
|
||||
================================================================================
|
||||
> **问题**:我想要从源码创建安装的软件包。有没有一种方式从源码来创建和安装软件包,而不是运行“make install”?这样的话,以后如果我想,我可以容易的卸载程序。
|
||||
|
||||
如果你已经从它的源码运行“make install”安装了linux程序。想完整移除它将变得真的很麻烦,除非程序的开发者在Makefile里提供了uninstall的目标设置。否则你必须在安装前后比较你系统里文件的完整列表,然后手工移除所有在安装过程中加入的文件。
|
||||
|
||||
这时候Checkinstall就可以派上使用。Checkinstall会跟踪install命令行所创建或修改的所有文件的路径(例如:“make install”、“make install_modules”等)并建立一个标准的二进制包,让你能用你发行版的标准包管理系统安装或卸载它,(例如Red Hat的yum或者Debian的apt-get命令)。已知它在 Slackware、SuSe、Mandrake 和 Gentoo 上也工作很好,请参考其[官方文档][1]。
|
||||
|
||||
在这篇文章中,我们只集中在红帽子和Debian为基础的发行版,并展示怎样从源码使用Checkinstall创建一个RPM和DEB软件包
|
||||
|
||||
### 在linux上安装Checkinstall ###
|
||||
|
||||
在Debian及其衍生发行版上安装Checkinstall:
|
||||
|
||||
# aptitude install checkinstall
|
||||
|
||||
在红帽子的发行版上安装Checkinstall,你需要下载一个已经打包好的Checkinstall rpm包(例如:从 [http://rpm.pbone.net][2]找到),不过它已经从Repoforge库里删除了。这个包是针对Cent OS6的,不过也可在Cent OS7里工作。
|
||||
|
||||
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm
|
||||
# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm
|
||||
|
||||
一旦checkinstall安装好,你就可以用下列格式创建一个特定的软件包
|
||||
|
||||
# checkinstall <install-command>
|
||||
|
||||
如果没有参数,默认安装命令“make install”将被使用
|
||||
|
||||
### 用Checkinstall创建一个RPM或DEB包 ###
|
||||
|
||||
在这个例子里,我们将创建一个htop包,这是一个linux交互式文本模式进程查看器(类似 top)。
|
||||
|
||||
首先,让我们从项目的官方网站下载源代码,作为一个好的习惯,我们存储源码包到/usr/local/src下,并解压它。
|
||||
|
||||
# cd /usr/local/src
|
||||
# wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz
|
||||
# tar xzf htop-1.0.3.tar.gz
|
||||
# cd htop-1.0.3
|
||||
|
||||
让我们看看htop的安装命令是什么,以便我们能用Checkinstall命令调用它,如下面所示,htop用“make install”命令安装。
|
||||
|
||||
# ./configure
|
||||
# make install
|
||||
|
||||
因此,要创建一个htop安装包,我们可以不带任何参数的调用checkinstall,这将使用“make install”命令创建一个包。在这个过程中, checkinstall命令会问你几个问题。
|
||||
|
||||
简而言之,如下命令会创建一个htop包:
|
||||
|
||||
# ./configure
|
||||
# checkinstall
|
||||
|
||||
“Should I create a default set of package docs?(我会创建一个默认设置的包文件?)”,回答“Y”:
|
||||
|
||||
![](https://farm6.staticflickr.com/5577/15118597217_1fdd0e0346_z.jpg)
|
||||
|
||||
你可以输入一个包的简短描述,然后按两次回车:
|
||||
|
||||
![](https://farm4.staticflickr.com/3898/15118442190_604b71d9af.jpg)
|
||||
|
||||
输入一个数字以修改下面的任何值或ENTER继续:
|
||||
|
||||
![](https://farm4.staticflickr.com/3898/15118442180_428de59d68_z.jpg)
|
||||
|
||||
然后checkinstall将自动地创建一个.rpm或者.deb包,根据你的linux系统是什么:
|
||||
|
||||
在CentOS7:
|
||||
|
||||
![](https://farm4.staticflickr.com/3921/15282103066_5d688b2217_z.jpg)
|
||||
|
||||
在Debian 7:
|
||||
|
||||
![](https://farm4.staticflickr.com/3905/15118383009_4909a7c17b_z.jpg)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://ask.xmodulo.com/build-rpm-deb-package-source-checkinstall.html
|
||||
|
||||
译者:[luoyutiantang](https://github.com/luoyutiantang)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://checkinstall.izto.org/docs/README
|
||||
[2]:http://rpm.pbone.net/
|
||||
[3]:http://ask.xmodulo.com/install-htop-centos-rhel.html
|
@ -1,159 +0,0 @@
|
||||
su-kaiyao translating
|
||||
|
||||
How to create and use Python CGI scripts
|
||||
================================================================================
|
||||
Have you ever wanted to create a webpage or process user input from a web-based form using Python? These tasks can be accomplished through the use of Python CGI (Common Gateway Interface) scripts with an Apache web server. CGI scripts are called by a web server when a user requests a particular URL or interacts with the webpage (such as clicking a "Submit" button). After the CGI script is called and finishes executing, the output is used by the web server to create a webpage displayed to the user.
|
||||
|
||||
### Configuring the Apache web server to run CGI scripts ###
|
||||
|
||||
In this tutorial we assume that an Apache web server is already set up and running. This tutorial uses an Apache web server (version 2.2.15 on CentOS release 6.5) that is hosted at the localhost (127.0.0.1) and is listening on port 80, as specified by the following Apache directives:
|
||||
|
||||
ServerName 127.0.0.1:80
|
||||
Listen 80
|
||||
|
||||
HTML files used in the upcoming examples are located in /var/www/html on the web server. This is specified via the DocumentRoot directive (specifies the directory that webpages are located in):
|
||||
|
||||
DocumentRoot "/var/www/html"
|
||||
|
||||
Consider a request for the URL: http://localhost/page1.html
|
||||
|
||||
This will return the contents of the following file on the web server:
|
||||
|
||||
/var/www/html/page1.html
|
||||
|
||||
To enable use of CGI scripts, we must specify where CGI scripts are located on the web server. To do this, we use the ScriptAlias directive:
|
||||
|
||||
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
|
||||
|
||||
The above directive indicates that CGI scripts are contained in the /var/www/cgi-bin directory on the web server and that inclusion of /cgi-bin/ in the requested URL will search this directory for the CGI script of interest.
|
||||
|
||||
We must also explicitly permit the execution of CGI scripts in the /var/www/cgi-bin directory and specify the file extensions of CGI scripts. To do this, we use the following directives:
|
||||
|
||||
<Directory "/var/www/cgi-bin">
|
||||
Options +ExecCGI
|
||||
AddHandler cgi-script .py
|
||||
</Directory>
|
||||
|
||||
Consider a request for the URL: http://localhost/cgi-bin/myscript-1.py
|
||||
|
||||
This will call the following script on the web server:
|
||||
|
||||
/var/www/cgi-bin/myscript-1.py
|
||||
|
||||
### Creating a CGI script ###
|
||||
|
||||
Before creating a Python CGI script, you will need to confirm that you have Python installed (this is generally installed by default, however the installed version may vary). Scripts in this tutorial are created using Python version 2.6.6. You can check your version of Python from the command line by entering either of the following commands (the -V and --version options display the version of Python that is installed):
|
||||
|
||||
$ python -V
|
||||
$ python --version
|
||||
|
||||
If your Python CGI script will be used to process user-entered data (from a web-based input form), then you will need to import the Python cgi module. This module provides functionality for accessing data that users have entered into web-based input forms. You can import this module via the following statement in your script:
|
||||
|
||||
import cgi
|
||||
|
||||
You must also change the execute permissions for the Python CGI script so that it can be called by the web server. Add execute permissions for others via the following command:
|
||||
|
||||
# chmod o+x myscript-1.py
|
||||
|
||||
### Python CGI Examples ###
|
||||
|
||||
Two scenarios involving Python CGI scripts will be considered in this tutorial:
|
||||
|
||||
- Create a webpage using a Python script
|
||||
- Read and display user-entered data and display results in a webpage
|
||||
|
||||
Note that the Python cgi module is required for Scenario 2 because this involves accessing user-entered data from web-based input forms.
|
||||
|
||||
### Example 1: Create a webpage using a Python script ###
|
||||
|
||||
For this scenario, we will start by creating a webpage /var/www/html/page1.html with a single submit button:
|
||||
|
||||
<html>
|
||||
<h1>Test Page 1</h1>
|
||||
<form name="input" action="/cgi-bin/myscript-1.py" method="get">
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</html>
|
||||
|
||||
When the "Submit" button is clicked, the /var/www/cgi-bin/myscript-1.py script is called (specified by the action parameter). A "GET" request is specified by setting the method parameter equal to "get". This requests that the web server return the specified webpage. An image of /var/www/html/page1.html as viewed from within a web browser is shown below:
|
||||
|
||||
![](https://farm4.staticflickr.com/3933/14932853623_eff2df3260_z.jpg)
|
||||
|
||||
The contents of /var/www/cgi-bin/myscript-1.py are:
|
||||
|
||||
#!/usr/bin/python
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
print "<html>"
|
||||
print "<h2>CGI Script Output</h2>"
|
||||
print "<p>This page was generated by a Python CGI script.</p>"
|
||||
print "</html>"
|
||||
|
||||
The first statement indicates that this is a Python script to be run with the /usr/bin/python command. The print "Content-Type: text/html" statement is required so that the web server knows what type of output it is receiving from the CGI script. The remaining statements are used to print the text of the webpage in HTML format.
|
||||
|
||||
When the "Submit" button is clicked in the above webpage, the following webpage is returned:
|
||||
|
||||
![](https://farm4.staticflickr.com/3933/15553035025_d70be04470_z.jpg)
|
||||
|
||||
The take-home point with this example is that you have the freedom to decide what information is returned by the CGI script. This could include the contents of log files, a list of users currently logged on, or today's date. The possibilities are endless given that you have the entire Python library at your disposal.
|
||||
|
||||
### Example 2: Read and display user-entered data and display results in a webpage ###
|
||||
|
||||
For this scenario, we will start by creating a webpage /var/www/html/page2.html with three input fields and a submit button:
|
||||
|
||||
<html>
|
||||
<h1>Test Page 2</h1>
|
||||
<form name="input" action="/cgi-bin/myscript-2.py" method="get">
|
||||
First Name: <input type="text" name="firstName"><br>
|
||||
Last Name: <input type="text" name="lastName"><br>
|
||||
Position: <input type="text" name="position"><br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</html>
|
||||
|
||||
When the "Submit" button is clicked, the /var/www/cgi-bin/myscript-2.py script is called (specified by the action parameter). An image of /var/www/html/page2.html as viewed from within a web browser is shown below (note that the three input fields have already been filled in):
|
||||
|
||||
![](https://farm4.staticflickr.com/3935/14932853603_ffc3bd330e_z.jpg)
|
||||
|
||||
The contents of /var/www/cgi-bin/myscript-2.py are:
|
||||
|
||||
#!/usr/bin/python
|
||||
import cgi
|
||||
form = cgi.FieldStorage()
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
print "<html>"
|
||||
print "<h2>CGI Script Output</h2>"
|
||||
print "<p>"
|
||||
print "The user entered data are:<br>"
|
||||
print "<b>First Name:</b> " + form["firstName"].value + "<br>"
|
||||
print "<b>Last Name:</b> " + form["lastName"].value + "<br>"
|
||||
print "<b>Position:</b> " + form["position"].value + "<br>"
|
||||
print "</p>"
|
||||
print "</html>"
|
||||
|
||||
As mentioned previously, the import cgi statement is needed to enable functionality for accessing user-entered data from web-based input forms. The web-based input form is encapsulated in the form object, which is a cgi.FieldStorage object. Once again, the "Content-Type: text/html" line is required so that the web server knows what type of output it is receiving from the CGI script. The data entered by the user are accessed in the statements that contain form["firstName"].value, form["lastName"].value, and form["position"].value. The names in the square brackets correspond to the values of the name parameters defined in the text input fields in **/var/www/html/page2.html**.
|
||||
|
||||
When the "Submit" button is clicked in the above webpage, the following webpage is returned:
|
||||
|
||||
![](https://farm4.staticflickr.com/3949/15367402150_946474dbb0_z.jpg)
|
||||
|
||||
The take-home point with this example is that you can easily read and display user-entered data from web-based input forms. In addition to processing data as strings, you can also use Python to convert user-entered data to numbers that can be used in numerical calculations.
|
||||
|
||||
### Summary ###
|
||||
|
||||
This tutorial demonstrates how Python CGI scripts are useful for creating webpages and for processing user-entered data from web-based input forms. More information about Apache CGI scripts can be found [here][1] and more information about the Python cgi module can be found [here][2].
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://xmodulo.com/create-use-python-cgi-scripts.html
|
||||
|
||||
作者:[Joshua Reed][a]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://xmodulo.com/author/joshua
|
||||
[1]:http://httpd.apache.org/docs/2.2/howto/cgi.html
|
||||
[2]:https://docs.python.org/2/library/cgi.html#module-cgi
|
@ -0,0 +1,158 @@
|
||||
如何创建和使用Python CGI脚本
|
||||
===
|
||||
|
||||
你是否想使用Python语言创建一个网页,或者处理用户从web表单输入的数据?这些任务可以通过Python CGI(公用网关接口)脚本以及一个Apache web服务器实现。当用户请求一个指定URL或者和网页交互(比如点击""提交"按钮)的时候,CGI脚本就会被web服务器启用。CGI脚本调用执行完毕后,它的输出结果就会被web服务器用来创建显示给用户的网页。
|
||||
|
||||
### 配置Apache web服务器,让其能运行CGI脚本 ###
|
||||
|
||||
在这个教程里,我们假设Apache web服务器已经安装好,并已运行。这篇教程使用的Apache web服务器(版本2.2.15,用于CentOS发行版6.5)运行在本地主机(127.0.0.1),并且监听80端口,如下面的Apache指令指定一样:
|
||||
|
||||
ServerName 127.0.0.1:80
|
||||
Listen 80
|
||||
|
||||
下面举例中的HTML文件存放在web服务器上的/var/www/html目录下,并通过DocumentRoot指令指定(指定网页文件所在目录):
|
||||
|
||||
DocumentRoot "/var/www/html"
|
||||
|
||||
现在尝试请求URL:http://localhost/page1.html
|
||||
|
||||
这将返回web服务器中下面文件的内容:
|
||||
|
||||
/var/www/html/page1.html
|
||||
|
||||
为了启用CGI脚本,我们必须指定CGI脚本在web服务器上的位置,需要用到ScriptAlias指令:
|
||||
|
||||
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
|
||||
|
||||
以上指令表明CGI脚本保存在web服务器的/var/www/cgi-bin目录,请求URL里包含/cgi-bin/的将会搜索这个目录下的CGI脚本。
|
||||
|
||||
我们必须还要明确CGI脚本在/var/www/cgi-bin目录下有执行权限,还要指定CGI脚本的文件扩展名。使用下面的指令:
|
||||
|
||||
<Directory "/var/www/cgi-bin">
|
||||
Options +ExecCGI
|
||||
AddHandler cgi-script .py
|
||||
</Directory>
|
||||
|
||||
下面访问URL:http://localhost/cgi-bin/myscript-1.py
|
||||
|
||||
这将会调用web服务器中下面所示脚本:
|
||||
|
||||
/var/www/cgi-bin/myscript-1.py
|
||||
|
||||
### 创建一个CGI脚本 ###
|
||||
|
||||
在创建一个Python CGI脚本之前,你需要确认你已经安装了Python(这通常是默认安装的,但是安装版本可能会有所不同)。本篇教程使用的脚本是使用Python版本2.6.6编写的。你可以通过下面任意一命令(-V和--version参数将显示所安装Python的版本号)检查Python的版本。
|
||||
|
||||
$ python -V
|
||||
$ python --version
|
||||
|
||||
如果你的Python CGI脚本要用来处理用户输入的数据(从一个web输入表单),然后你将需要导入Python cgi模块。这个模块可以处理用户通过web输入表单输入的数据。你可以在你的脚本中通过下面的语句导入该脚本:
|
||||
|
||||
import cgi
|
||||
|
||||
你也必须修改Python CGI脚本的执行权限,以防止web服务器不能调用。可以通过下面的命令增加执行权限:
|
||||
|
||||
# chmod o+x myscript-1.py
|
||||
|
||||
### Python CGI例子 ###
|
||||
|
||||
涉及到Python CGI脚本的两个方案将会在下面讲述:
|
||||
|
||||
- 使用Python脚本创建一个网页
|
||||
- 读取并显示用户输入的数据,并且在网页上显示结果
|
||||
|
||||
注意:Python cgi模块在方案2中是必需的,因为这涉及到用户从web表单输入数据。
|
||||
|
||||
### 例子1 :使用Python脚本创建一个网页 ###
|
||||
|
||||
对于这个方案,我们将通过创建包含一个单一提交按钮的网页/var/www/html/page1.html开始。
|
||||
|
||||
<html>
|
||||
<h1>Test Page 1</h1>
|
||||
<form name="input" action="/cgi-bin/myscript-1.py" method="get">
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</html>
|
||||
|
||||
当"提交"按钮被点击,/var/www/cgi-bin/myscript-1.py脚本将被调用(通过action参数指定)。通过设置方法参数为"get"来指定一个"GET"请求,服务器将会返回指定的网页。/var/www/html/page1.html在浏览器中的显示情况如下:
|
||||
|
||||
![](https://farm4.staticflickr.com/3933/14932853623_eff2df3260_z.jpg)
|
||||
|
||||
/var/www/cgi-bin/myscript-1.py的内容如下:
|
||||
|
||||
#!/usr/bin/python
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
print "<html>"
|
||||
print "<h2>CGI Script Output</h2>"
|
||||
print "<p>This page was generated by a Python CGI script.</p>"
|
||||
print "</html>"
|
||||
|
||||
第一行声明表示这是使用 /usr/bin/python命令运行的Python脚本。"Content-Type: text/html"打印语句是必需的,这是为了让web服务器知道接受自CGI脚本的输出类型。其余的语句用来输出HTML格式的其余网页内容。
|
||||
|
||||
当"Submit"按钮点击,下面的网页将返回:
|
||||
|
||||
![](https://farm4.staticflickr.com/3933/15553035025_d70be04470_z.jpg)
|
||||
|
||||
这个例子的要点是你可以决定哪些信息可以被CGI脚本返回。这可能包括日志文件的内容,当前登陆用户的列表,或者今天的日期。在你处理时拥有所有python库的可能性是无穷无尽的。
|
||||
|
||||
### 例子2:读取并显示用户输入的数据,并将结果显示在网页上 ###
|
||||
|
||||
对于这个方案,我们将通过创建一个含有三个输入域和一个提交按钮的网页/var/www/html/page2.html开始。
|
||||
|
||||
<html>
|
||||
<h1>Test Page 2</h1>
|
||||
<form name="input" action="/cgi-bin/myscript-2.py" method="get">
|
||||
First Name: <input type="text" name="firstName"><br>
|
||||
Last Name: <input type="text" name="lastName"><br>
|
||||
Position: <input type="text" name="position"><br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</html>
|
||||
|
||||
当"Submit"按钮点击,/var/www/cgi-bin/myscript-2.py脚本将被执行(通过action参数指定)。/var/www//html/page2.html显示在web浏览器中的图片如下所示(注意,三个输入域已经被填写了):
|
||||
|
||||
![](https://farm4.staticflickr.com/3935/14932853603_ffc3bd330e_z.jpg)
|
||||
|
||||
/var/www/cgi-bin/myscript-2.py的内容如下:
|
||||
|
||||
#!/usr/bin/python
|
||||
import cgi
|
||||
form = cgi.FieldStorage()
|
||||
print "Content-Type: text/html"
|
||||
print ""
|
||||
print "<html>"
|
||||
print "<h2>CGI Script Output</h2>"
|
||||
print "<p>"
|
||||
print "The user entered data are:<br>"
|
||||
print "<b>First Name:</b> " + form["firstName"].value + "<br>"
|
||||
print "<b>Last Name:</b> " + form["lastName"].value + "<br>"
|
||||
print "<b>Position:</b> " + form["position"].value + "<br>"
|
||||
print "</p>"
|
||||
print "</html>"
|
||||
|
||||
正如前面提到,import cgi语句需要用来确保能够处理用户通过web输入表单输入的数据。web输入表单被封装在一个表单对象中,叫做cgi.FieldStorage对象。一旦开始,"Content-Type: text/html"是必需的,因为web服务器需要知道接受自CGI脚本的输出格式。用户输入的数据在包含form["firstName"].value,form["lastName"].value, and form["position"].value的语句中被接受。那些中括号中的名称和**/var/www/html/page2.html**文本输入域中定义的名称参数一致。
|
||||
|
||||
当网页上的"Submit"按钮被点击,下面的网页将被返回。
|
||||
|
||||
![](https://farm4.staticflickr.com/3949/15367402150_946474dbb0_z.jpg)
|
||||
|
||||
这个例子的要点就是你可以很容易地读取并显示用户在web表单上输入的数据。除了以字符串的方式处理数据,你也可以用Python将用户输入的数据转化为可用于数值计算的数字。
|
||||
|
||||
### 结论 ###
|
||||
|
||||
本教程演示了如何使用Python CGI脚本创建网页并处理用户在网页表单输入的数据。查阅更多关于Apache CGI脚本的信息,点击[这里][1]。查阅更多关于Python cgi模块的信息,点击[这里][2]。
|
||||
|
||||
---
|
||||
|
||||
via: http://xmodulo.com/create-use-python-cgi-scripts.html
|
||||
|
||||
作者:[Joshua Reed][a]
|
||||
译者:[su-kaiyao](https://github.com/su-kaiyao)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:http://xmodulo.com/author/joshua
|
||||
[1]:http://httpd.apache.org/docs/2.2/howto/cgi.html
|
||||
[2]:https://docs.python.org/2/library/cgi.html#module-cgi
|
@ -1,86 +0,0 @@
|
||||
Linux 常见问题解答 --怎么用checkinstall从源码创建一个RPM或DEB包
|
||||
================================================================================
|
||||
> **问题**:我想要从源码创建安装的软件程序。有没有一种方式来创建并且从源码安装包,而不是运行“make install”?那样,以后如果我想,我可以容易的卸载程序。
|
||||
|
||||
如果你已经从从它的源码运行“make install”安装了linux程序。想完整移除它将变得真的很麻烦,除非程序的创造者在Makefile里提供卸载的目标。你会有在你系统里文件的完整列表来和从源码安装之后比较,然后手工移除所有在制作安装过程中加入的文件
|
||||
|
||||
|
||||
这时候Checkinstall就可以派上使用。Checkinstall保留命令行创建或修改的所有文件的路径(例如:“make install”“make install_modules”等)并建立一个标准的二进制包,让你能用你发行版的标准包管理系统安装或卸载它,(例子:Red Hat的yum或者Debian的apt-get命令) It has been also known to work with Slackware, SuSe, Mandrake and Gentoo as well, as per the official documentation. [official documentation][1].
|
||||
|
||||
在这篇文章中,我们只集中在红帽子和Debian为基础的发行版,并展示怎样从源码使用Checkinstall创建一个RPM和DEB软件包
|
||||
|
||||
### 在linux上安装Checkinstall ###
|
||||
|
||||
在Debian衍生上安装Checkinstall:
|
||||
|
||||
# aptitude install checkinstall
|
||||
|
||||
在红帽子的发行版上安装Checkinstall,你需要下载一个预先建立的Checkinstall rpm(例如:从 [http://rpm.pbone.net][2]),他已经从Repoforge库里删除。对于Cent OS6这个rpm包也可在Cent OS7里工作。
|
||||
|
||||
# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm
|
||||
# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm
|
||||
|
||||
一旦checkinstall安装,你可以用下列格式创建一个特定的软件包
|
||||
|
||||
# checkinstall <install-command>
|
||||
|
||||
如果没有参数,默认安装命令“make install”将被使用
|
||||
|
||||
### 用Checkinstall创建一个RPM或DEB包 ###
|
||||
|
||||
在这个例子里,我们将创建一个htop包,对于linux交互式文本模式进程查看器(就像上面的 steroids)
|
||||
|
||||
|
||||
首先,让我们从项目的官方网站下载源代码,一个最佳的练习,我们存储源码到/usr/local/src,并解压它
|
||||
|
||||
# cd /usr/local/src
|
||||
# wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz
|
||||
# tar xzf htop-1.0.3.tar.gz
|
||||
# cd htop-1.0.3
|
||||
|
||||
让我们找出htop安装命令,那样我们就能调用Checkinstall命令,下面展示了,htop用“make install”命令安装
|
||||
|
||||
# ./configure
|
||||
# make install
|
||||
|
||||
因此,创建一个htop包,我们可以调用checkinstall不带任何参数安装,这将使用“make install”命令创建一个包。随着这个过程 checkinstall命令会问你一个连串的问题。
|
||||
|
||||
总之,这个命令会创建一个htop包: **htop**:
|
||||
|
||||
# ./configure
|
||||
# checkinstall
|
||||
|
||||
回答“Y”“我会创建一个默认设置的包文件?”
|
||||
|
||||
![](https://farm6.staticflickr.com/5577/15118597217_1fdd0e0346_z.jpg)
|
||||
|
||||
你可以输入一个包的简短描述,然后按两次ENTER
|
||||
|
||||
![](https://farm4.staticflickr.com/3898/15118442190_604b71d9af.jpg)
|
||||
|
||||
输入一个数值修改下面的任何值或ENTER前进
|
||||
|
||||
![](https://farm4.staticflickr.com/3898/15118442180_428de59d68_z.jpg)
|
||||
|
||||
然后checkinstall将自动地创建一个.rpm或者.deb包,根据你的linux系统是什么:
|
||||
|
||||
在CentOS7:
|
||||
|
||||
![](https://farm4.staticflickr.com/3921/15282103066_5d688b2217_z.jpg)
|
||||
|
||||
在Debian 7:
|
||||
|
||||
![](https://farm4.staticflickr.com/3905/15118383009_4909a7c17b_z.jpg)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://ask.xmodulo.com/build-rpm-deb-package-source-checkinstall.html
|
||||
|
||||
译者:[luoyutiantang](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://checkinstall.izto.org/docs/README
|
||||
[2]:http://rpm.pbone.net/
|
||||
[3]:http://ask.xmodulo.com/install-htop-centos-rhel.html
|
Loading…
Reference in New Issue
Block a user