解决CentOS安装过程中出现的Kdump安装失败

在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump,但是蛋疼的问题出现了。

看到这个“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”),但是我后来分配了4G内存给虚拟机,但是还是提示这个错误。后来想起kdump还有一个图形界面配置的命令,所以在终端下输入system-config-kdump命令,会弹出下面的界面:

选择Target settings,会弹出下面的界面:

我第一次点开的时候没有红色圈住的那部分,后来就点了那个“Reload”按钮,然后再点击了“apply”按钮,在终端下输入service kdump restart终于启动成功了!真是太爽了!

赶紧测试一下,输入echo “c”>/proc/sysrq-trigger,界面会出现一些信息,类似下面一样:

过一会系统就会自动重启,这个时候就说明你的kdump已经配置成功了,重启之后/var/crash目录下就可以看到有一个文件夹,文件夹的名字是日期,里面就是你需要的core文件。至此终于神奇的误打误撞成功了。如果你还没成功,就把那几个“apply”、“reload”,“enable”,“disable”按钮来回点,多试几次,说不定也像我一样成功了。

最后总结一下整个过程:

1、完全安装CentOS 6.2,所有的包都选,一个也不要落下。
2、安装按成后忽略“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”)这个错误,进入系统后打开终端输入system-config-kdump命令,如果没有,先安装。
3、在界面中先点击reload按钮,然后在点击“apply”让配置生效,重启系统,测试看是否成功。

 

安装CentOS时提示kdump安装失败

由于测试需要,我在Ubuntu的虚拟机下安装了CentOS。安装过程中一切顺利,结果在启动的时候发现kdump启动失败。
听名字感觉kdump像个debug工具。上网搜索了一下,得知:
[codesyntax lang=”text”]

kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,
在这个时候将由kdump产生一个用于capture当前运行信息的内核,
该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core
文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。
这和以前的diskdump,netdump是同样道理。只不过kdump是RHEL5特有的。

[/codesyntax]
虽然不影响设备的正常使用,启动不了老是觉得不舒服。经过我的多次研究,我是这样修复的:

编辑/etc/sysconfig/kdump文件:
设置MKDUMPRD_ARGS和KDUMP_COMMANDLINE

MKDUMPRD_ARGS="/sbin/mkdumprd"(默认时这个参数的空的)
KDUMP_COMMANDLINE="ro root=LABEL=xxx"

其中xxx是root所在的分区的卷标。查看root卷标的命令是:
ls /etc/disk/by-label

保存,然后重启。

重启之后如果还不行:
安装kexec-tools
[codesyntax lang=”bash”]

yum install kexec-tools

[/codesyntax]
其实我不知道安装这个软件是不是必须的,
对于一般用户来说,没有必要开kdump。
所以建议初次时候通过ntsysv禁止其随开机启动

HTTPD启动绑定端口失败

问题描述:

在apache中绑定非http标准端口时,一直出现如下的错误提示:

[root@localhost ~]# /etc/init.d/httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address 0.0.0.0:8087
no listening sockets available, shutting down
Unable to open logs

原因分析:

该问题是由SELinux 引起的

解决方案:

 

1、快速解决,修改selinux级别(不推荐)

vi /etc/sysconfig/selinux 
SELINUX=enforcing =>SELINUX=disabled 
reboot

 

2、从根本上解决(推荐)

根据自己的需求在selinux中添加需要指定的端口
前提需要先安装semanage(Centos6.0默认没有安装该应用)
a)安装方式如下:

[root@localhost /]# yum provides /usr/sbin/semanage
[root@localhost /]# yum whatprovides /usr/sbin/semanage
[root@localhost /]# yum -y install policycoreutils-python
[root@localhost /]# semanage

b)使用semanage添加apache侦听的端口

查看现在的支持http的端口有哪些

[root@localhost /]# semanage port -l|grep http 
为http服务添加新的端81 

[root@localhost /]# semanage port -a -t http_port_t -p tcp 81 
查看添加的结果 

[root@localhost /]# semanage port -l|grep http

 

Git 乱码处理方法

乱码情景1

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。

解决方案:

在bash提示符下输入:

[codesyntax lang=”text”]

git config --global core.quotepath false

[/codesyntax]
core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

乱码情景2

在MsysGit中,使用git log显示提交的中文log乱码。

解决方案:

设置git gui的界面编码

[codesyntax lang=”text”]

git config --global gui.encoding utf-8

[/codesyntax]
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

[codesyntax lang=”text”]

git config --global i18n.commitencoding utf-8

[/codesyntax]
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

[codesyntax lang=”text”]

git config --global i18n.logoutputencoding gbk

[/codesyntax]
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

[codesyntax lang=”text”]

export LESSCHARSET=utf-8

[/codesyntax]

乱码情景3

在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。

解决方案:

使用?lls --show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

为了方便使用,可以编辑?/etc/git-completion.bash?,新增一行?alias ls="ls --show-control-chars"

解决Git pull出现non-fast-forward错误

当要push代码到git时,出现提示:

error:failed to push some refs to …

Dealing with “non-fast-forward” errors
From time to time you may encounter this error while pushing:

$ git push origin master
To ../remote/
! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to ‘../remote/’

To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the ‘non-fast forward’
section of ‘git push –help’ for details.
This error can be a bit overwhelming at first, do not fear. Simply put, git cannot make the change on the remote without losing commits, so it refuses the push. Usually this is caused by another user pushing to the same branch. You can remedy this by fetching and merging the remote branch, or using pull to perform both at once.
In other cases this error is a result of destructive changes made locally by using commands like git commit –amend or git rebase. While you can override the remote by adding –force to the push command, you should only do so if you are absolutely certain this is what you want to do. Force-pushes can cause issues for other users that have fetched the remote branch, and is considered bad practice. When in doubt, don’t force-push.

 

问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容

git push -f

2,先把git的东西fetch到你本地然后merge后再push

$ git fetch

$ git merge

这2句命令等价于

  1. $ git pull

可是,这时候又出现了如下的问题:

上面出现的 [branch “master”]是需要明确(.git/config)如下的内容
[branch “master”]
remote = origin

merge = refs/heads/master

这等于告诉git2件事:

1,当你处于master branch, 默认的remote就是origin。

2,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变

如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

之后再重新git pull下。最后git push你的代码吧。it works now~

Git push错误及解决方法

在使用Git Push代码到数据仓库时,提示如下错误: [codesyntax lang=”text”]

[remote rejected] master -> master (branch is currently checked out)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git@192.168.1.X:/var/git.server/.../web
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push Test refs to 'git@192.168.1.X:/var/git.server/.../web'

[/codesyntax]

这是由于git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码:

[codesyntax lang=”text”]

[receive]
    denyCurrentBranch = ignore

[/codesyntax]

注意上面修改的是代码仓库的config,而不是本地分支的config

在初始化远程仓库时最好使用 git –bare init   而不要使用:git init

如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时,   如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上,  也即在远程仓库的目录下对应的文件还是之前的内容,必须得使用git reset –hard才能看到push后的内容.

Github常见问题

如果输入$ git remote add origin git@github.com:iprayz(github帐号名)/test(项目名).git

提示出错信息:fatal: remote origin already exists.

解决办法如下:

1、先输入$ git remote rm origin

2、再输入$ git remote add origin git@github.com:iprayz/test.git 就不会报错了!

3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section ‘remote.origin’. 我们需要修改gitconfig文件的内容

4、找到你的github的安装路径,我的是C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc

5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!

如果输入$ ssh -T git@github.com

出现错误提示:Permission denied (publickey)

因为新生成的key不能加入ssh就会导致连接不上github。

解决办法如下:

1、先输入$ ssh-agent,再输入$ ssh-add ~/.ssh/id_key,这样就可以了。

2、如果还是不行的话,输入ssh-add ~/.ssh/id_key 命令后出现报错Could not open a connection to your authentication agent.解决方法是key用Git Gui的ssh工具生成,这样生成的时候key就直接保存在ssh中了,不需要再ssh-add命令加入了,其它的user,token等配置都用命令行来做。

3、最好检查一下在你复制id_rsa.pub文件的内容时有没有产生多余的空格或空行,有些编辑器会帮你添加这些的。

如果输入$ git push origin master

提示出错信息:error:failed to push som refs to …….

解决办法如下:

1、先输入$ git pull origin master //先把远程服务器github上面的文件拉下来

2、再输入$ git push origin master

3、如果出现报错 fatal: Couldn’t find remote ref master或者fatal: ‘origin’ does not appear to be a git repository以及fatal: Could not read from remote repository.

4、则需要重新输入$ git remote add origin git@github.com:iprayz/test.git

使用git在本地创建一个项目的过程

[codesyntax lang=”bash”]

$ makdir ~/hello-world??? //创建一个项目hello-world
$ cd ~/hello-world?????? //打开这个项目
$ git init???????????? //初始化
$ touch README
$ git add README??????? //更新README文件
$ git commit -m 'first commit'???? //提交更新,并注释信息“first commit”
$ git remote add origin git@github.com:defnngj/hello-world.git???? //连接远程github项目
$ git push -u origin master???? //将本地项目更新到github项目上去

[/codesyntax]

gitconfig配置文件

Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:

1./etc/gitconfig 文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’–system’ 给 git config,它将明确的读和写这个文件。
2.~/.gitconfig 文件 :具体到你的用户。你可以通过传递–global 选项使Git 读或写这个特定的文件。
3.位于git目录的config文件 (也就是 .git/config) :无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。因此,在.git/config中的值覆盖了在/etc/gitconfig中的同一个值。

PS: 在Windows系统中,Git在$HOME目录中查找.gitconfig文件(对大多数人来说,位于C:\Documents and Settings\$USER下)。它也会查找/etc/gitconfig,尽管它是相对于Msys 根目录的。这可能是你在Windows中运行安装程序时决定安装Git的任何地方。

配置相关信息:

2.1 当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

$ git config –global user.name “John Doe”

$ git config –global user.email johndoe@example.com

2.2??? 你的编辑器(Your Editor)

现在,你的标识已经设置,你可以配置你的缺省文本编辑器,Git在需要你输入一些消息时会使用该文本编辑器。缺省情况下,Git使用你的系统的缺省编辑器,这通常可能是vi 或者 vim。如果你想使用一个不同的文本编辑器,例如Emacs,你可以做如下操作:

$ git config –global core.editor emacs

2.3 检查你的设置(Checking Your Settings)

如果你想检查你的设置,你可以使用 git config –list 命令来列出Git可以在该处找到的所有的设置:

$ git config –list

你也可以查看Git认为的一个特定的关键字目前的值,使用如下命令 git config {key}:

$ git config user.name

2.4 获取帮助(Getting help)

如果当你在使用Git时需要帮助,有三种方法可以获得任何git命令的手册页(manpage)帮助信息:

$ git help <verb>

$ git <verb> –help

$ man git-<verb>

例如,你可以运行如下命令获取对config命令的手册页帮助:

$ git help config

push.default is unset的解决方案

在执行 git push 时看到如下消息: [codesyntax lang=”text”]

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

[/codesyntax]

经百度后,得知 ‘matching’ 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。 而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

根据提示,修改git push的行为:
[codesyntax lang=”text”]

git config --global push.default matching

[/codesyntax]再次执行 git push 得到解决。

Git乱码及解决方法

1. 系统乱码

项目中的编码统一设置为UTF-8编码。
设置系统的语言设置为 zh_UTF-8,把
export LANG=zh_CN.UTF-8
保存到~/.profile文件中。
$ env|grep LANG
LANG=zh_CN.UTF-8

2. 使用 git add 命令添加文件名含中文字符的文件时

乱码类似:
\316\304\261\276\316\304\265\265.txt
解决方案:
编辑C:\Git\etc\inputrc文件中对应的行,
查找以下2行,并修改其值,
原先:
set output-meta off?set convert-meta on
改为:
set output-meta onset convert-meta off

3. 使用git log查看含有中文的log信息时

乱码类似:
<E4><BF><AE><E6><94><B9><E6><96><87><E6><9C><AC><E6><96><87><E6><A1><A3>
解决方案:
在Bash提示符下输入:
git config –global i18n.commitencoding utf-8
git config –global i18n.logoutputencoding gbk
注:设置commit提交时使用utf-8编码,可避免Linux服务器上乱码;同时设置在执行git log时将utf-8编码转换成gbk编码,以解决乱码问题。因为windows系统默认编码为gbk。
编辑C:\Git\etc\profile文件,添加如下一行:
export LESSCHARSET=utf-8
注:以使git log可以正常显示中文(需要配合:i18n.logoutputencoding gbk)
如果系统设置了:
export LANG=zh_CN.UTF-8
则日志输出编码设置为utf-8
git config –global i18n.logoutputencoding utf-8

4. 使用ls命令查看含有中文的文件名乱码时

乱码类似:
????.txt
解决方案:
使用?ls –show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。
为了方便使用,可以编辑 C:\Git\etc\git-completion.bash 文件,添加如下一行:
alias ls=”ls –show-control-chars”

5. 在Git Gui中查看UTF-8编码的文本文件时

乱码类似:
锘夸腑鏂囨枃妗£
解决方案:
在Bash提示符下输入:
git config –global gui.encoding utf-8
注:通过上述设置,UTF-8编码的文本文件可以正常查看,但是GBK编码的文件将会乱码,所以还是没有从根本上解决问题。
可行的方法之一为:将所有文本文件的编码统一为UTF-8或GBK,然后设置相应的gui.encoding参数为utf-8或gbk。

6. git status乱码

git config –global core.quotepath false
或者编辑git配置文件:vi ~/.gitconfig
[core]
quotepath = false
作用:没有这一条,$git status输出中文会显示为UNICODE编码。

7. 回车符设置

git config –global core.autocrlf false
git config –global core.safecrlf true
或者编辑git配置文件:vi ~/.gitconfig
[core]
autocrlf = false
safecrlf = true

8. 用户信息设置

  • git config –global user.name KangLin

10.git config –global user.email kl222@126.com
或者编辑git配置文件:vi ~/.gitconfig
[user]
??? name = KangLin
??? email = kl222@126.com

11. 设置git默认编辑器

12.git config –global core.editor vim
或者编辑git配置文件:vi ~/.gitconfig
[core]
????? editor = vim

13. 彩色的 git 输出:

git config? –global color.ui true
或者编辑git配置文件:vi ~/.gitconfig
[color]
??? ui = true

14. 参考资料:

 

Windows安装Pycrypto

最近想着利用pysftp将本地的图片全部上传到站点服务器上去

结果却是发现他每次都提示找不到Crypto模块

没办法,只好上网找了   但是苦逼的是安装pyCrypto的时候  要么就报找不到.h头文件,要么就直接编译的时候给报错

报找不到.h文件的解决方法:

1. 直接从VS库里面将对应的.h文件放到python的include文件夹里面

2. 更改python脚本,让其在cl.exe后面添加新目录 –I <.h文件所在目录>

 

编译时错误:

[codesyntax lang=”text”]
D:\Apps\Python\module\pycrypto-2.6.1>setup.py install
running install
running build
running build_py
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

building ‘Crypto.Random.OSRNG.winrandom’ extension
W:\PROGRA~2\Microsoft Visual Studio 9.0\VC\bin\cl.exe /c /nologo /Ox /MD /W3 /GS – /DNDEBUG -Isrc/ -Isrc/inc-msvc/ -ID:\Apps\Python\include -ID:\Apps\Python\PC /Tcsrc/winrand.c /Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj
winrand.c
D:\Apps\Python\include\winnt.h(3019) : error C2061: 语法错误 : 标识符“PCONTEXT”
D:\Apps\Python\include\winnt.h(3020) : error C2059: 语法错误 : “}”
D:\Apps\Python\include\winbase.h(1481) : error C2061: 语法错误 : 标识符“LPCONTEXT”
D:\Apps\Python\include\winbase.h(1481) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2222) : error C2146: 语法错误 : 缺少“)”(在标识符“lpContext”的前面)
D:\Apps\Python\include\winbase.h(2222) : error C2081: “LPCONTEXT”: 形参表中的名称非法
D:\Apps\Python\include\winbase.h(2222) : error C2061: 语法错误 : 标识符“lpContext”
D:\Apps\Python\include\winbase.h(2222) : error C2059: 语法错误 : “;”
D:\Apps\Python\include\winbase.h(2223) : error C2059: 语法错误 : “)”
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“)”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2230) : error C2143: 语法错误 : 缺少“{”(在“*”的前面)
D:\Apps\Python\include\winbase.h(2231) : error C2059: 语法错误 : “)”
error: command ‘W:\\PROGRA~2\\Microsoft Visual Studio 9.0\\VC\\bin\\cl.exe’ failed with exit status 2
[/codesyntax]

 

找了很久 都没有找到解决办法

后来一想,算了虽然是开源的 但至少网络上已经人家已经编译好的程序 就直接进行复制得了
也省得自己耗费大量的精力去处理这些错误

功夫不负有心人,总算让我找到Windows下使用VS2008或者VS2010编译的PyCrypto应用了

 

PyCrypto 2.6:

 

PyCrypto 2.3:

 

PyCrypto 2.1:

 

好了 总算是大功告成了  暂时就先这样处理吧

同时 也欢迎诸位大神,如果能解决那个编译时错误的话 也敬请和我联系

 

本文参考至:  The Voidspace Python Module