今天和兄弟在2017北京PHP全球开发者大会-高可用的PHP探讨了一下,mysqli::reap_async_query、curl_multi_exec两个函数,这两个函数在实现上是否真的可用于高并发?场景是啥? 1)这两个函数没法一块使用,形成类似协程的效果,有局限性。 2)这个数据库这块儿的并土用来做导入数据或导出的一些后台操作,并不在前端使用。
有个兄弟,用Swoole的Task做一些后台并行操作这样的事情,用Task的Retrun,然后,用Swoole的Finish汇总,把一些返回的状态位放到SwooleTable里或全局变量里,相关小巧。
PHP实现MySQL并发查询:http://www.cnblogs.com/shaoguan/p/6515072.html
有个兄弟,用Swoole的Task做一些后台并行操作这样的事情,用Task的Retrun,然后,用Swoole的Finish汇总,把一些返回的状态位放到SwooleTable里或全局变量里,相关小巧。
PHP实现MySQL并发查询:http://www.cnblogs.com/shaoguan/p/6515072.html
持续集成(Continuous Integration ,CI)
在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生。
持续集成意味着一个在家用笔记本编写代码的开发人员(嘿,史蒂夫)和另一个在办公室编程的开发人员(嘿,安妮)可以为同样的产品分别地编写软件,将其改动整合在一个叫做源存储库的地方。他们可以从各自编写的部分构建出组合的软件,并且按照他们期望的方式来测试软件。
开发人员通常使用一种叫做IC Server 的工具来做构建和集成。持续集成要求史蒂夫和安妮能够自测代码。分别测试各自代码来保证它能够正常工作,这些测试通常被称为单元测试(Unit tests)。
代码集成以后,当所有的单元测试通过,史蒂夫和安妮就得到了一个绿色构建(green build)。这表明他们已经成功地集成在一起,代码正按照测试预期地在工作。然而,尽管集成代码能够成功地一起工作了,它仍未为生产做好准备,因为它没有在类似生产的环境中测试和工作。在下面持续交付部分你可以了解到持续集成后面发生了什么。
考虑到实践持续集成,史蒂夫和安妮必须频繁地登记主代码仓库、集成和测试他们的代码。通常一小时很多次,并且每天最少一次。
持续集成的好处是,集成不再是个头疼事。软件在一直被编写和集成。在持续集成之前,集成发生在创建过程的结尾阶段,一次性完成,并且不知道要耗时多久。而现在持续集成,每天都融入到了工作方式当中。
持续交付(Continuous Delivery,CD)
让我们说回到我们的两位开发人员,史蒂夫和安妮。持续交付意味着每次史蒂夫或安妮修改、整合和构建代码时,也同时在类似于生产环境中自动测试了这段代码。我们通常将这个在不同环境发布和测试的过程叫做部署流水线。通常部署流水线有一个开发环境,一个测试环境,一个准生产环境,但是这些阶段会根据不同的团队、产品和组织而变化。例如,Mingle团队有一个阶段叫做“纸杯蛋糕”的准生产环境,而Etsy的准生产环境叫做“公主”。
在不同的环境下,安妮和史蒂夫写的代码被分别进行测试。当代码部署到生产环境它就开始了工作,这给予了他们更多的信心。并且只有当代码通过前一个环境的测试才会进入到下一个部署流水线的环境当中去。通过这种方式,安妮和史蒂夫将会从每个环境中测试并得到新的反馈,如果有失败,他们也可以在代码被应用到生产环境之前更加容易地发现问题并且修正它。
From: http://blog.dataman-inc.com/98-shurenyun-cdci/
在传统软件开发过程中,集成通常发生在每个人都完成了各自的工作之后。在项目尾声阶段,通常集成还要痛苦的花费数周或者数月的时间来完成。持续集成是一个将集成提前至开发周期的早期阶段的实践方式,让构建、测试和集成代码更经常反复地发生。
持续集成意味着一个在家用笔记本编写代码的开发人员(嘿,史蒂夫)和另一个在办公室编程的开发人员(嘿,安妮)可以为同样的产品分别地编写软件,将其改动整合在一个叫做源存储库的地方。他们可以从各自编写的部分构建出组合的软件,并且按照他们期望的方式来测试软件。
开发人员通常使用一种叫做IC Server 的工具来做构建和集成。持续集成要求史蒂夫和安妮能够自测代码。分别测试各自代码来保证它能够正常工作,这些测试通常被称为单元测试(Unit tests)。
代码集成以后,当所有的单元测试通过,史蒂夫和安妮就得到了一个绿色构建(green build)。这表明他们已经成功地集成在一起,代码正按照测试预期地在工作。然而,尽管集成代码能够成功地一起工作了,它仍未为生产做好准备,因为它没有在类似生产的环境中测试和工作。在下面持续交付部分你可以了解到持续集成后面发生了什么。
考虑到实践持续集成,史蒂夫和安妮必须频繁地登记主代码仓库、集成和测试他们的代码。通常一小时很多次,并且每天最少一次。
持续集成的好处是,集成不再是个头疼事。软件在一直被编写和集成。在持续集成之前,集成发生在创建过程的结尾阶段,一次性完成,并且不知道要耗时多久。而现在持续集成,每天都融入到了工作方式当中。
持续交付(Continuous Delivery,CD)
让我们说回到我们的两位开发人员,史蒂夫和安妮。持续交付意味着每次史蒂夫或安妮修改、整合和构建代码时,也同时在类似于生产环境中自动测试了这段代码。我们通常将这个在不同环境发布和测试的过程叫做部署流水线。通常部署流水线有一个开发环境,一个测试环境,一个准生产环境,但是这些阶段会根据不同的团队、产品和组织而变化。例如,Mingle团队有一个阶段叫做“纸杯蛋糕”的准生产环境,而Etsy的准生产环境叫做“公主”。
在不同的环境下,安妮和史蒂夫写的代码被分别进行测试。当代码部署到生产环境它就开始了工作,这给予了他们更多的信心。并且只有当代码通过前一个环境的测试才会进入到下一个部署流水线的环境当中去。通过这种方式,安妮和史蒂夫将会从每个环境中测试并得到新的反馈,如果有失败,他们也可以在代码被应用到生产环境之前更加容易地发现问题并且修正它。
From: http://blog.dataman-inc.com/98-shurenyun-cdci/
ubuntu下hdparm测试硬盘速度
Unix/LinuxC技术 jackxiang 2017-6-23 00:22
ubuntu下hdparm测试硬盘速度
root@jack:~# fdisk -l
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1555e2a7
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 2048 151093247 151091200 72G 83 Linux
/dev/sda2 151095294 156301311 5206018 2.5G 5 扩展
/dev/sda5 151095296 156301311 5206016 2.5G 82 Linux 交换 / Solaris
root@jack:~# hdparm -t /dev/sda1
/dev/sda1:
Timing buffered disk reads: 112 MB in 3.03 seconds = 36.97 MB/sec
=========================================================
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)
From:http://blog.csdn.net/amds123/article/details/68961474
http://www.jb51.net/LINUXjishu/160512.html
root@jack:~# fdisk -l
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1555e2a7
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 2048 151093247 151091200 72G 83 Linux
/dev/sda2 151095294 156301311 5206018 2.5G 5 扩展
/dev/sda5 151095296 156301311 5206016 2.5G 82 Linux 交换 / Solaris
root@jack:~# hdparm -t /dev/sda1
/dev/sda1:
Timing buffered disk reads: 112 MB in 3.03 seconds = 36.97 MB/sec
=========================================================
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)
From:http://blog.csdn.net/amds123/article/details/68961474
http://www.jb51.net/LINUXjishu/160512.html
[实践OK]麒麟Linux 18.04上Chrome打开提示解锁登录密钥环的麻烦,ubuntu 17.04上安装chromium出现输入密码以解锁您的登录
Unix/LinuxC技术 jackxiang 2017-6-23 00:21
更加详细来自: https://blog.csdn.net/zhangrelay/article/details/52856825
关键细节:在seahorse上面建立被chromium后,不再开机询问密码的设置,打开seahorse后:
密码和密钥
密码:
chromium 这个是锁住然状态,密码就是建立这个chromium的时候设置的密码。
登录 旁边有一个小锁是开的状态。
在麒麟ubuntu18.04的实践发现是在登录里面多一个chromium的解锁密码,而不是新建的chromium目录里面。
一)在ubuntu 17.04上安装了Chromium出现对话框输入密码解锁登录密钥环,如下所示:
因为密码框截图困难,这个是网上图片。
点取消就可以使用,但是每次都这样很烦,搜索后得解:
在终端输入seahorse,打开密钥管理软件,如下,注意不要加sudo:
OpenSSH Key ==>密码密钥环===》新建一个密码密钥环,chromium:
设定好密码后,再打开chromium,输入系统登录密码就OK了,之后也不会多次出现了。
From:http://www.linuxdiyf.com/linux/25176.html
二)麒麟Linux 18.04上Chrome打开提示解锁登录密钥环的麻烦:
运行seahorse
seahorse
解锁密码或修改密码环密码
密码->登录(Login)->右键解锁
另外一种情况
如果是chrome的安全数据没有存放于登录密钥环,那么有可能是创建了一个新叫“默认密钥环”的密钥环来存储。如想不每次打开电脑都输入的话就应该把它的密码设为空或者在登录密钥环上创建一个项目指向“默认密钥环”。
密码->默认密钥环->修改密码
转载请注明出处:http://www.cnblogs.com/keitsi/p/6080140.html
背景:想从不让复制的Url里取点东西出来,看源代码放Editpuls里ctrl+b后,用浏览器打开,发现乱码,怎么办?安装Charset后,【V】允许访问文件网址,即可。
自从谷歌升级了5.5以上之后(其实我自己也没注意到时是从哪个版本开始的),点击鼠标右键→工具→编码的功能选项没有了,这是怎么回事呢?通过搜集资料发现,原来是谷歌浏览器本身精简了这个功能,关于Google为什么要去掉这个功能,官方解释是这个功能会使得浏览器速度变慢(-1s),并且使用的不频繁,所以去除了这个功能。但是我们浏览网页或者制作网站的时候,经常会出现页面乱码的情况,这种情况就要用到编码转换的功能,而浏览器自带的这个功能没有了,怎么办呢?网上大牛给出了一个好办法:使用chrome插件(扩展应用)——Charset。
官方简介如下:由于使用频率较低,Google Chrome在55版本以后删除了手动设置网站编码的功能。但是在部分设置不规范不正确的网站,新版浏览器无法准确判断其使用的编码,导致网站显示乱码。GitHub开源地址:https://github.com/jinliming2/Chrome-Charset
Charset v0.1测试版,支持Chrome 54选择编码功能中所列出的编码进行了支持。
最后更新日期: 2017年2月14日
自从谷歌升级了5.5以上之后(其实我自己也没注意到时是从哪个版本开始的),点击鼠标右键→工具→编码的功能选项没有了,这是怎么回事呢?通过搜集资料发现,原来是谷歌浏览器本身精简了这个功能,关于Google为什么要去掉这个功能,官方解释是这个功能会使得浏览器速度变慢(-1s),并且使用的不频繁,所以去除了这个功能。但是我们浏览网页或者制作网站的时候,经常会出现页面乱码的情况,这种情况就要用到编码转换的功能,而浏览器自带的这个功能没有了,怎么办呢?网上大牛给出了一个好办法:使用chrome插件(扩展应用)——Charset。
官方简介如下:由于使用频率较低,Google Chrome在55版本以后删除了手动设置网站编码的功能。但是在部分设置不规范不正确的网站,新版浏览器无法准确判断其使用的编码,导致网站显示乱码。GitHub开源地址:https://github.com/jinliming2/Chrome-Charset
Charset v0.1测试版,支持Chrome 54选择编码功能中所列出的编码进行了支持。
最后更新日期: 2017年2月14日
Ubuntu 16.04的SWAP设置
Unix/LinuxC技术 jackxiang 2017-6-23 00:17
我在安装Ubuntu 16.04 LTS的时候,因为磁盘分区问题,在安装的时候没有设置SWAP分区,后来在使用过程中,时而出现系统运行不流畅的情况,看来SWAP分区还是需要的。
1. 在Ubuntu中配置使用新创建的Swap分区
Command list:
# 查找Swap分区的UUID
sudo blkid
# 在/ect/fstab中加入新的Swap分区
sudo gedit /etc/fstab
# 在最后加入下列内容,xxxx为Swap分区的UUID
UUID=xxxx none swap sw 0 0
# 激活Swap分区,Swap分区为/dev/sda3
sudo swapon /dev/sda3
2. 在Ubuntu中使用file当swap
Command list:
# 创建1个1GB的file
sudo dd if=/dev/zero of=/mnt/1GB.swap bs=1M count=1024
# 格式化为Swap file
sudo mkswap /mnt/1GB.swap
# 把swap file加入到系统中
sudo swapon /mnt/1GB.swap
上面的操作只是临时添加1个swap file,如果要做永久添加,则需要下列步骤。
# 在/ect/fstab中加入新的Swap分区
sudo gedit /etc/fstab
# 在最后加入下列内容
/mnt/1GB.swap none swap sw 0 0
3. Ubuntu的swap使用策略
Command list:
# 查看memory/buffer/Swap使用情况。
free
# 查看swap使用策略,Swap和memory各占百分百
# 默认是60,即Swap占60%,memory占40%
cat /proc/sys/vm/swappiness
# 修改swap使用策略
# 仅本次开机有效,重启后恢复原值
sudo sysclt vm.swappiness=20
# 修改swap使用策略,系统默认值
# 需要重启系统后,才能生效
sudo gedit /etc/sysctl.conf
# 在最后添加下列内容:
#################################################
# Set Swap usable availability
# Swap <-------> physical memory
# default: 60% 40%
vm.swappiness=20
4. 关闭swap
sudo swapoff -a
swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2047992 0 -1
来自: http://www.linuxidc.com/Linux/2013-03/80208.htm
1. 在Ubuntu中配置使用新创建的Swap分区
Command list:
# 查找Swap分区的UUID
sudo blkid
# 在/ect/fstab中加入新的Swap分区
sudo gedit /etc/fstab
# 在最后加入下列内容,xxxx为Swap分区的UUID
UUID=xxxx none swap sw 0 0
# 激活Swap分区,Swap分区为/dev/sda3
sudo swapon /dev/sda3
2. 在Ubuntu中使用file当swap
Command list:
# 创建1个1GB的file
sudo dd if=/dev/zero of=/mnt/1GB.swap bs=1M count=1024
# 格式化为Swap file
sudo mkswap /mnt/1GB.swap
# 把swap file加入到系统中
sudo swapon /mnt/1GB.swap
上面的操作只是临时添加1个swap file,如果要做永久添加,则需要下列步骤。
# 在/ect/fstab中加入新的Swap分区
sudo gedit /etc/fstab
# 在最后加入下列内容
/mnt/1GB.swap none swap sw 0 0
3. Ubuntu的swap使用策略
Command list:
# 查看memory/buffer/Swap使用情况。
free
# 查看swap使用策略,Swap和memory各占百分百
# 默认是60,即Swap占60%,memory占40%
cat /proc/sys/vm/swappiness
# 修改swap使用策略
# 仅本次开机有效,重启后恢复原值
sudo sysclt vm.swappiness=20
# 修改swap使用策略,系统默认值
# 需要重启系统后,才能生效
sudo gedit /etc/sysctl.conf
# 在最后添加下列内容:
#################################################
# Set Swap usable availability
# Swap <-------> physical memory
# default: 60% 40%
vm.swappiness=20
4. 关闭swap
sudo swapoff -a
swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2047992 0 -1
来自: http://www.linuxidc.com/Linux/2013-03/80208.htm
问题:在
$git status
# On branch master
$git checkout master
README.txt: needs merge
error: you need to resolve your current index first
git reset --merge
git pull #好了,但是出现:
# Changed but not updated: ( Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交)
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
现在有两个操作可供选择,要么把暂存区的所有内容添加到当前分支上;要么清除暂存区回退成与分支内容一致,但工作区没有清除,若想把工作区也清除,就得在使用git checkout -- file(这里的--后面有一个空格键)命令了。详细解说如下:
方法一,
按提示的来:"git checkout -- <file>...,发现还是不行,其它兄弟试了下是可以的,法一居然不行,其它兄弟试可以,最后用了法二:
git checkout -- ./WxPayApi.php #某个文件
git checkout -- * #这命令是还原当前分支下的所有修改到stage上并未commit的文件,-- 后面是文件名的意思。
以上方法没有办法搞定,奇怪了,最后还是用最后,这样解决了:
git commit -am"解决一下Master的:Changed but not updated" , 用:-am,Git的小乌龟难道看不到吗?奇怪了,默认就是-am呀,所有人都用乌龟就好了 ,绝对不会出现问题,哈哈,命令行捣蛋了???
解决办法继续参看:http://blog.csdn.net/qq_38801354/article/details/72793909
方法二、
用git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。",再提交Git服务器仓库,得以解决。
先检出Master:
$git checkout master
M api.jackxiang.com/components/WxPay/WxPayApi.php
M api.jackxiang.com/components/WxPay/WxPayConfig.php
M api.jackxiang.com/components/WxPay/WxPayDataBase.php
M api.jackxiang.com/components/WxPay/WxPayException.ph
核对还是有问题:
$git status
# On branch dev
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: api.jackxiang.com/components/WxPay/WxPayApi.php
git commit -am"只有这样解决了上面这个Changed but not updated问题"
$git commit -am"解决一下Master的:Changed but not updated"
把所有的都给提交了(Dev没有改动,无所谓):
git push --all
同理那个Dev分支也是一样的道理:
$git checkout master
$git status
$git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。"
================================================================================
从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他 同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操 作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
…….java : needs merge
…….java : needs merge
…….java : needs merge
error : you need to resolve your current index first
的错,google了半天,终于在stackoverflow上找到了答案,大题意思是:merge失败,有conflicts没解决,可以:
1、解决conflicts后再次执行merge;
2、回退到merge前
恩,既然merge冲突是其他同事的文件,我不需要去resolve conflicts,那就退回merge前吧,单纯的改我的文件再push吧,执行以下代码:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
git reset --merge
搞定!
顺便贴下stackoverflow上的链接:
http://stackoverflow.com/questions/6006737/git-merge-errors
本文参考来自链接:https://www.lbbniu.com/3059.html
$git status
# On branch master
$git checkout master
README.txt: needs merge
error: you need to resolve your current index first
git reset --merge
git pull #好了,但是出现:
# Changed but not updated: ( Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交)
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
现在有两个操作可供选择,要么把暂存区的所有内容添加到当前分支上;要么清除暂存区回退成与分支内容一致,但工作区没有清除,若想把工作区也清除,就得在使用git checkout -- file(这里的--后面有一个空格键)命令了。详细解说如下:
方法一,
按提示的来:"git checkout -- <file>...,发现还是不行,其它兄弟试了下是可以的,法一居然不行,其它兄弟试可以,最后用了法二:
git checkout -- ./WxPayApi.php #某个文件
git checkout -- * #这命令是还原当前分支下的所有修改到stage上并未commit的文件,-- 后面是文件名的意思。
以上方法没有办法搞定,奇怪了,最后还是用最后,这样解决了:
git commit -am"解决一下Master的:Changed but not updated" , 用:-am,Git的小乌龟难道看不到吗?奇怪了,默认就是-am呀,所有人都用乌龟就好了 ,绝对不会出现问题,哈哈,命令行捣蛋了???
解决办法继续参看:http://blog.csdn.net/qq_38801354/article/details/72793909
方法二、
用git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。",再提交Git服务器仓库,得以解决。
先检出Master:
$git checkout master
M api.jackxiang.com/components/WxPay/WxPayApi.php
M api.jackxiang.com/components/WxPay/WxPayConfig.php
M api.jackxiang.com/components/WxPay/WxPayDataBase.php
M api.jackxiang.com/components/WxPay/WxPayException.ph
核对还是有问题:
$git status
# On branch dev
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: api.jackxiang.com/components/WxPay/WxPayApi.php
git commit -am"只有这样解决了上面这个Changed but not updated问题"
$git commit -am"解决一下Master的:Changed but not updated"
把所有的都给提交了(Dev没有改动,无所谓):
git push --all
同理那个Dev分支也是一样的道理:
$git checkout master
$git status
$git commit -am"个人自媒体代码的Dev分支也解决一下Dev分支的问题,给全提交到仓库。"
================================================================================
从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大(且这些差异是其他 同事开发的文件),merge时产生冲突,使得B分支的状态为merging,其实是指merge失败,还停留在merge状态,也不能执行pull操 作。这时没有解决冲突,而是从B分支上执行checkout/switchto操作,试图再切换其他分支时,报:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
…….java : needs merge
…….java : needs merge
…….java : needs merge
error : you need to resolve your current index first
的错,google了半天,终于在stackoverflow上找到了答案,大题意思是:merge失败,有conflicts没解决,可以:
1、解决conflicts后再次执行merge;
2、回退到merge前
恩,既然merge冲突是其他同事的文件,我不需要去resolve conflicts,那就退回merge前吧,单纯的改我的文件再push吧,执行以下代码:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
git reset --merge
搞定!
顺便贴下stackoverflow上的链接:
http://stackoverflow.com/questions/6006737/git-merge-errors
本文参考来自链接:https://www.lbbniu.com/3059.html
查询CPU核心数 nproc
Unix/LinuxC技术 jackxiang 2017-6-23 00:12
rpm -qf /usr/bin/nproc
coreutils-8.22-18.el7.x86_64
#nproc
1
---------------------------------------
也可这样查:
#cat /proc/cpuinfo
processor : 0
coreutils-8.22-18.el7.x86_64
#nproc
1
---------------------------------------
也可这样查:
#cat /proc/cpuinfo
processor : 0
php-5.6.xx编译时出现:configure: error: Cannot find ldap libraries in /usr/lib 解决办法
Php/Js/Shell/Go jackxiang 2017-6-23 00:11
cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
版本:php-5.6.20
configure: error: Cannot find ldap libraries in /usr/lib 解决办法:
今天在centos 6.2 64位版本上安装LNMP,config php的时候出现下面错误而退出
CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/lib 有需要的朋友可参考参考。
在CentOS 64位下编译安装PHP5.4.8。cp -frp /usr/lib64/libpng* /usr/lib/ 结果在configure的时候提示
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决方法:
代码如下
cp -frp /usr/lib64/libldap* /usr/lib/
From:http://www.iitshare.com/cannot-find-ldap-libraries-in-usrlib.html
-----------------------------------这种问题到处都有---------------------------------------
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决办法:
cp -frp /usr/lib64/libldap* /usr/lib/
然后再./configure ...即可
From:http://www.cnblogs.com/xiangxiaodong/p/3492156.html
打包时先拷贝,再./configure:
%build
/bin/cp -frp /usr/lib64/libldap* /usr/lib/
./configure \
--prefix=%{_prefix} \
--with-libdir=%{_lib} \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-iconv-dir=/usr/local \
--with-iconv=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-ldap \
--with-ldap-sasl \
--with-libxml-dir=/usr \
--with-curl \
--with-curlwrappers \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--without-pear \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gettext \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-zip \
--enable-soap \
--enable-opcache \
--enable-exif \
--enable-mbregex \
--enable-inline-optimization \
--enable-ftp \
--disable-fileinfo \
--disable-rpath \
--disable-ipv6 \
--disable-debug
make ZEND_EXTRA_LIBS='-liconv' %{?_smp_mflags}
%install
rm -rf %{buildroot}
make INSTALL_ROOT=%{buildroot} install
CentOS Linux release 7.2.1511 (Core)
版本:php-5.6.20
configure: error: Cannot find ldap libraries in /usr/lib 解决办法:
今天在centos 6.2 64位版本上安装LNMP,config php的时候出现下面错误而退出
CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/lib 有需要的朋友可参考参考。
在CentOS 64位下编译安装PHP5.4.8。cp -frp /usr/lib64/libpng* /usr/lib/ 结果在configure的时候提示
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决方法:
代码如下
cp -frp /usr/lib64/libldap* /usr/lib/
From:http://www.iitshare.com/cannot-find-ldap-libraries-in-usrlib.html
-----------------------------------这种问题到处都有---------------------------------------
configure: error: Cannot find ldap libraries in /usr/lib
提示在/usr/lib 下找不到相关模块,这是因为64位的linux默认把以上文件都存在 /usr/lib64 文件夹下。
解决办法:
cp -frp /usr/lib64/libldap* /usr/lib/
然后再./configure ...即可
From:http://www.cnblogs.com/xiangxiaodong/p/3492156.html
打包时先拷贝,再./configure:
%build
/bin/cp -frp /usr/lib64/libldap* /usr/lib/
./configure \
--prefix=%{_prefix} \
--with-libdir=%{_lib} \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--with-iconv-dir=/usr/local \
--with-iconv=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-ldap \
--with-ldap-sasl \
--with-libxml-dir=/usr \
--with-curl \
--with-curlwrappers \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--without-pear \
--with-fpm-user=www \
--with-fpm-group=www \
--with-gettext \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-zip \
--enable-soap \
--enable-opcache \
--enable-exif \
--enable-mbregex \
--enable-inline-optimization \
--enable-ftp \
--disable-fileinfo \
--disable-rpath \
--disable-ipv6 \
--disable-debug
make ZEND_EXTRA_LIBS='-liconv' %{?_smp_mflags}
%install
rm -rf %{buildroot}
make INSTALL_ROOT=%{buildroot} install
[实践OK] rpmbuild打包错误:*** ERROR: No build ID note found in ******,以及Httpsqs是否真的支持Libevent1.4.13?
Unix/LinuxC技术 jackxiang 2017-6-23 00:10
背景:在打RPMBUILD一个张宴兄弟的httpsqs结合Libevent1.4.13的包的时候,出现错误,本来他写的是Libevent2.0,顾问在微信问了张宴兄弟下他本人说1.4.13也是也没有啥问题的,就要问了:为何要降级,因为Memcached也需要这个Libevent的低版本的,没办法,Httpsqs所以来的Libevnet也跟着降吧。出现问题:ERROR: No build ID note found in
*** ERROR: No build ID note found in /root/rpmbuild/BUILDROOT/usr/local/filebeat/scripts/import_dashboards
error: Bad exit status from /root/rpmbuild/tmp/rpm-tmp.Mi6g8i (%install)
BuildRequires: gcc,gcc-c++,make,tokyocabinet = 1.4.48,libevent >= 1.4.13
Requires: tokyocabinet = 1.4.48,libevent >= 1.4.13
还不够,得加这一行,因为不加会提示:
AutoReqProv: no
Rpmbuild自己会自动依赖一些so动态链接库的东西,给关掉:
rpm -ihv /home/test/rpmbuild/RPMS/x86_64/httpsqs-1.7-170522172954.el6.x86_64.rpm
error: Failed dependencies:
libevent-2.0.so.5()(64bit) is needed by httpsqs-1.7-170522172954.el6.x86_64
问题依旧:
service httpsqs start
Starting httpsqs: /usr/local/httpsqs/httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
[FAILED]
反查一个源码,如下:
tar -zxvf httpsqs-1.7.tar.gz
httpsqs-1.7/
httpsqs-1.7/httpsqs.c
httpsqs-1.7/prename.h
httpsqs-1.7/prename.c
httpsqs-1.7/Makefile
httpsqs-1.7/.Makefile.swp
httpsqs-1.7/httpsqs (这个文件应该是一个二进制文件,去了编译不过去,报错)
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function 'httpsqs_handler':
httpsqs.c:350: error: 'struct evhttp_request' has no member named 'uri_elems'
make: *** [httpsqs] Error 1
error: Bad exit status from /home/test/rpmbuild/tmp/rpm-tmp.OyM3VG (%build)
果然:
grep -r "libevent-2.0" ./
Binary file ./httpsqs matches
[root@ httpsqs]# stat httpsqs
File: `httpsqs'
Size: 20184 Blocks: 40 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 1066707 Links: 1
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-05-22 17:58:26.000000000 +0800
Modify: 2017-05-22 17:58:26.000000000 +0800
Change: 2017-05-22 17:58:50.635000020 +0800
[root@ httpsqs]# ldd httpsqs
linux-vdso.so.1 => (0x00007ffd27464000)
libevent-2.0.so.5 => not found
libtokyocabinet.so.9 => /usr/local/tokyocabinet/lib/libtokyocabinet.so.9 (0x00007fed13df0000)
libz.so.1 => /lib64/libz.so.1 (0x0000003cf6c00000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003cfc000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003cf7c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003cf7400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003cf8000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003cf7000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003cf6800000)
但是编译是从这儿编译的:
rpm -qa|grep libevent
libevent-devel-1.4.13-4.el6.x86_64
libevent-1.4.13-4.el6.x86_64
libevent-doc-1.4.13-4.el6.noarch
libevent-headers-1.4.13-4.el6.noarch
难怪了,原来写二进制里面了:^@^@^@^@^@^@^@^@libevent-2.0.so.5^@__gmon_start__^@_Jv_RegisterClass
稍微深入到源码看一下:
rpm2cpio libevent-2.0.22-170116172306.el6.x86_64.rpm |cpio -div
/usr/local/libevent/include/event2/http_struct.h
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’
struct evhttp_request{#57行到123行都是这个结构体的,而这个uri_elems定义在在98行。
struct evhttp_uri *uri_elems; /* uri elements */
}
张宴兄弟的源码里文件之httpsqs.c:350行:
350 httpsqs_query_part = evhttp_uri_get_query(req->uri_elems);
而旧的版本没有这个http_struct.h文件及结构体,如下:
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h
所以,张宴兄弟的说法不成立。
还不放心,看一下源码包,不看RPM包,有可能RPM包没有打进来?
http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/
DownLoad:http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/0b3ea18c634072d12b3c1ee734263664/libevent-1.4.13-stable.tar.gz
解压后,再用Editplus查找:uri_elems,并没有找到这个结构体变量,如下:
-- 在文件中查找: uri_elems in E:\download\libevent-1.4.13-stable excl *.* --
找到 0 个事件 (在 0 个文件中)。
输出完成 (耗时 0 秒)
So,张宴兄弟长时间没有看这块代码,应该是记错了!!!
在Fedora14中打rpm包,是没有/usr/src/redhat这个目录的,而是要建立~/rpmbuild目录,并建立SOURCES、SPECS、RPMS等相应目录。其它步骤相同。
但是在rpmbuild -ba时,遇到如下错误:
*** ERROR: No build ID note found in /home/wuyang/rpmbuild/BUILDROOT/******
error: Bad exit status from /var/tmp/rpm-tmp.BPd1OI (%install)
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
修改为:
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
[root@yum_rpmbuild-centos6_bj_sjs_10_71_183_1** httpsqs-1.7]# gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function ‘httpsqs_handler’:
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’
rpm -ql libevent-1.4.13-4.el6.x86_64
/usr/lib64/libevent-1.4.so.2
/usr/lib64/libevent-1.4.so.2.1.3
/usr/lib64/libevent_core-1.4.so.2
/usr/lib64/libevent_core-1.4.so.2.1.3
/usr/lib64/libevent_extra-1.4.so.2
/usr/lib64/libevent_extra-1.4.so.2.1.3
/usr/share/doc/libevent-1.4.13
/usr/share/doc/libevent-1.4.13/README
rpm -ql libevent-devel-1.4.13-4.el6.x86_64
/usr/bin/event_rpcgen.py
/usr/lib64/libevent.a
/usr/lib64/libevent.so
/usr/lib64/libevent_core.a
/usr/lib64/libevent_core.so
/usr/lib64/libevent_extra.a
/usr/lib64/libevent_extra.so
/usr/share/man/man3/evdns.3.gz
/usr/share/man/man3/event.3.gz
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h
解决方法是在.spec文件中任意位置添加如下参数:
%define __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}
重新打包,即可。
另外最后生成的rpm包是在/RPMS/i686中
来自:http://blog.csdn.net/onlyou930/article/details/6995645
*** ERROR: No build ID note found in /root/rpmbuild/BUILDROOT/usr/local/filebeat/scripts/import_dashboards
error: Bad exit status from /root/rpmbuild/tmp/rpm-tmp.Mi6g8i (%install)
BuildRequires: gcc,gcc-c++,make,tokyocabinet = 1.4.48,libevent >= 1.4.13
Requires: tokyocabinet = 1.4.48,libevent >= 1.4.13
还不够,得加这一行,因为不加会提示:
AutoReqProv: no
Rpmbuild自己会自动依赖一些so动态链接库的东西,给关掉:
rpm -ihv /home/test/rpmbuild/RPMS/x86_64/httpsqs-1.7-170522172954.el6.x86_64.rpm
error: Failed dependencies:
libevent-2.0.so.5()(64bit) is needed by httpsqs-1.7-170522172954.el6.x86_64
问题依旧:
service httpsqs start
Starting httpsqs: /usr/local/httpsqs/httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
[FAILED]
反查一个源码,如下:
tar -zxvf httpsqs-1.7.tar.gz
httpsqs-1.7/
httpsqs-1.7/httpsqs.c
httpsqs-1.7/prename.h
httpsqs-1.7/prename.c
httpsqs-1.7/Makefile
httpsqs-1.7/.Makefile.swp
httpsqs-1.7/httpsqs (这个文件应该是一个二进制文件,去了编译不过去,报错)
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function 'httpsqs_handler':
httpsqs.c:350: error: 'struct evhttp_request' has no member named 'uri_elems'
make: *** [httpsqs] Error 1
error: Bad exit status from /home/test/rpmbuild/tmp/rpm-tmp.OyM3VG (%build)
果然:
grep -r "libevent-2.0" ./
Binary file ./httpsqs matches
[root@ httpsqs]# stat httpsqs
File: `httpsqs'
Size: 20184 Blocks: 40 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 1066707 Links: 1
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-05-22 17:58:26.000000000 +0800
Modify: 2017-05-22 17:58:26.000000000 +0800
Change: 2017-05-22 17:58:50.635000020 +0800
[root@ httpsqs]# ldd httpsqs
linux-vdso.so.1 => (0x00007ffd27464000)
libevent-2.0.so.5 => not found
libtokyocabinet.so.9 => /usr/local/tokyocabinet/lib/libtokyocabinet.so.9 (0x00007fed13df0000)
libz.so.1 => /lib64/libz.so.1 (0x0000003cf6c00000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003cfc000000)
librt.so.1 => /lib64/librt.so.1 (0x0000003cf7c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003cf7400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003cf8000000)
libc.so.6 => /lib64/libc.so.6 (0x0000003cf7000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003cf6800000)
但是编译是从这儿编译的:
rpm -qa|grep libevent
libevent-devel-1.4.13-4.el6.x86_64
libevent-1.4.13-4.el6.x86_64
libevent-doc-1.4.13-4.el6.noarch
libevent-headers-1.4.13-4.el6.noarch
难怪了,原来写二进制里面了:^@^@^@^@^@^@^@^@libevent-2.0.so.5^@__gmon_start__^@_Jv_RegisterClass
稍微深入到源码看一下:
rpm2cpio libevent-2.0.22-170116172306.el6.x86_64.rpm |cpio -div
/usr/local/libevent/include/event2/http_struct.h
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’
struct evhttp_request{#57行到123行都是这个结构体的,而这个uri_elems定义在在98行。
struct evhttp_uri *uri_elems; /* uri elements */
}
张宴兄弟的源码里文件之httpsqs.c:350行:
350 httpsqs_query_part = evhttp_uri_get_query(req->uri_elems);
而旧的版本没有这个http_struct.h文件及结构体,如下:
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h
所以,张宴兄弟的说法不成立。
还不放心,看一下源码包,不看RPM包,有可能RPM包没有打进来?
http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/
DownLoad:http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/0b3ea18c634072d12b3c1ee734263664/libevent-1.4.13-stable.tar.gz
解压后,再用Editplus查找:uri_elems,并没有找到这个结构体变量,如下:
-- 在文件中查找: uri_elems in E:\download\libevent-1.4.13-stable excl *.* --
找到 0 个事件 (在 0 个文件中)。
输出完成 (耗时 0 秒)
So,张宴兄弟长时间没有看这块代码,应该是记错了!!!
在Fedora14中打rpm包,是没有/usr/src/redhat这个目录的,而是要建立~/rpmbuild目录,并建立SOURCES、SPECS、RPMS等相应目录。其它步骤相同。
但是在rpmbuild -ba时,遇到如下错误:
*** ERROR: No build ID note found in /home/wuyang/rpmbuild/BUILDROOT/******
error: Bad exit status from /var/tmp/rpm-tmp.BPd1OI (%install)
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
修改为:
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
[root@yum_rpmbuild-centos6_bj_sjs_10_71_183_1** httpsqs-1.7]# gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function ‘httpsqs_handler’:
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’
rpm -ql libevent-1.4.13-4.el6.x86_64
/usr/lib64/libevent-1.4.so.2
/usr/lib64/libevent-1.4.so.2.1.3
/usr/lib64/libevent_core-1.4.so.2
/usr/lib64/libevent_core-1.4.so.2.1.3
/usr/lib64/libevent_extra-1.4.so.2
/usr/lib64/libevent_extra-1.4.so.2.1.3
/usr/share/doc/libevent-1.4.13
/usr/share/doc/libevent-1.4.13/README
rpm -ql libevent-devel-1.4.13-4.el6.x86_64
/usr/bin/event_rpcgen.py
/usr/lib64/libevent.a
/usr/lib64/libevent.so
/usr/lib64/libevent_core.a
/usr/lib64/libevent_core.so
/usr/lib64/libevent_extra.a
/usr/lib64/libevent_extra.so
/usr/share/man/man3/evdns.3.gz
/usr/share/man/man3/event.3.gz
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h
解决方法是在.spec文件中任意位置添加如下参数:
%define __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}
重新打包,即可。
另外最后生成的rpm包是在/RPMS/i686中
来自:http://blog.csdn.net/onlyou930/article/details/6995645
创建规则容易,如何取消规则?
------------------------------------------
开始-----规则---下拉菜单中选择管理规则和通知。
勾选需要取消的规格,将其删除,确定。
来自:http://wenda.so.com/q/1459278170727172?src=140
创建规则:http://wenda.so.com/q/1369953110068210
------------------------------------------
开始-----规则---下拉菜单中选择管理规则和通知。
勾选需要取消的规格,将其删除,确定。
来自:http://wenda.so.com/q/1459278170727172?src=140
创建规则:http://wenda.so.com/q/1369953110068210
背景:在windows下提交了一个git更新,想在linux下强制更新(这个linux下的文件也被我改动了),以windows下提交的为准怎么办?还会出错,如下:
Git pull 强制覆盖本地文件,与在git bash下实践OK,AddTime:2016-9-29
git fetch --all
git reset --hard origin/master
git pull
git reset --hard origin/xiangdong
来自:http://blog.csdn.net/baple/article/details/49872765
main分支:
一)出错:
新增文件add commit后,push回原分支失败,报错:
Counting objects: 20, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1.30 KiB, done.
Total 11 (delta 5), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects
二)git本地有修改如何强制更新到远程:
本地有修改和提交,如何强制用远程的库更新更新。我尝试过用git pull -f,总是提示 You have not concluded your merge. (MERGE_HEAD exists)。
我需要放弃本地的修改,用远程的库的内容就可以,应该如何做?傻傻地办法就是用心的目录重新clone一个,正确的做法是什么?
正确的做法应该是:
git fetch --all
git reset --hard origin/master
git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本
参考链接:
http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull
Git pull 强制覆盖本地文件,与在git bash下实践OK,AddTime:2016-9-29
git fetch --all
git reset --hard origin/master
git pull
git reset --hard origin/xiangdong
来自:http://blog.csdn.net/baple/article/details/49872765
main分支:
一)出错:
新增文件add commit后,push回原分支失败,报错:
Counting objects: 20, done.
Delta compression using up to 24 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1.30 KiB, done.
Total 11 (delta 5), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects
二)git本地有修改如何强制更新到远程:
本地有修改和提交,如何强制用远程的库更新更新。我尝试过用git pull -f,总是提示 You have not concluded your merge. (MERGE_HEAD exists)。
我需要放弃本地的修改,用远程的库的内容就可以,应该如何做?傻傻地办法就是用心的目录重新clone一个,正确的做法是什么?
正确的做法应该是:
git fetch --all
git reset --hard origin/master
git fetch 只是下载远程的库的内容,不做任何的合并git reset 把HEAD指向刚刚下载的最新的版本
参考链接:
http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull
[实践ok]ubuntu 16.04在升级17.04时候,出现Failed to start Load Kernel Modules 解决方法
Unix/LinuxC技术 jackxiang 2017-6-23 00:04
ubuntu 16.04在升级17.04时候,出现Failed to start Load Kernel Modules 解决方法:
升级的时候不小心重启了,就看到出现这个错误,鼠标挂了,wifi没了,当时感觉是重装系统的节奏了,搜了下,有治。方法如下:
进入到命令行模式:ctl + alt + F1
在root模式下输入一下指令:
apt-get update
dpkg --configure -a
apt-get dist-upgrade
apt-get -f install
reboot
到此就可以了,这是在ubuntuforums.org上看到的。特此记录!!!
来自:http://m.blog.csdn.net/article/details?id=54091293
https://askubuntu.com/questions/809199/failed-to-start-load-kernel-modules-ubuntu-16-04
升级的时候不小心重启了,就看到出现这个错误,鼠标挂了,wifi没了,当时感觉是重装系统的节奏了,搜了下,有治。方法如下:
进入到命令行模式:ctl + alt + F1
在root模式下输入一下指令:
apt-get update
dpkg --configure -a
apt-get dist-upgrade
apt-get -f install
reboot
到此就可以了,这是在ubuntuforums.org上看到的。特此记录!!!
来自:http://m.blog.csdn.net/article/details?id=54091293
https://askubuntu.com/questions/809199/failed-to-start-load-kernel-modules-ubuntu-16-04
1./Users/jackXiang/Library/Services
2.系统偏好设置->键盘->快捷键,在其左侧有一个服务->通用
/Users/jackXiang/Library/Services/
快捷打开Typora.workflow
Copy path.workflow
Open Terminal.workflow
Terminal.workflow
WinzipAdd.workflow
WinzipEmail.workflow
WinzipUnzip.workflow
屏保.workflow
打开Download目录.workflow
快捷打开Chrome浏览器.workflow
快捷打开FoxMail.workflow
快捷打开MWeb.workflow
快捷打开MotionProVPN.workflow
快捷打开SecureCRT.workflow
快捷打开Sublime.workflow
快捷打开SwitchHost.workflow
快捷打开TextMate编辑器.workflow
快捷打开Typora.workflow
快捷打开VSCode.workflow
快捷键打开iTerm2.workflow
打开我的电脑.workflow
打开终端命令录制.workflow
快捷打开产品规划目录.workflow
快捷打开个人博客登陆入口.workflow
快捷打开企业微信私有部署版.workflow
上面的自动操作流程脚本保存为备份文件《自动操作脚本备份0921.tar.gz》:
一、开启应用程序:
如mate编辑器是在火箭筒里选服务(新版名叫“快速操作”),在实用工具打开后,
实用工具->资源库->开启应用程序->选现成的应用程序(switchHost是开启应用程序->其它,再找到应用程序位置填写路径。)即可。
2)系统偏好设置->键盘->快捷键,在其左侧有一个服务,找到刚才设置的标题,
如:快捷打开企业微信私有部署版,设计快捷键:control + option + command + q ,打开微信企业版。
二、运行脚本:打开火箭筒小人后,选服务(新版名叫“快速操作”),在实用工具打开后,再选择第二列的“运行shell脚本”,在右侧会弹出一个填写shell脚本的输入框,再点会再加一个一样的输入框:
1)打开火箭筒小人后,选服务,在实用工具选运行shell脚本,输入:open ~/Downloads ,后再设置快捷键。
2)系统偏好设置->键盘->快捷键,在其左侧有一个服务,找到刚才设置的标题,
如:打开Download目录,设计快捷键:control + option + command + d ,打开Download目录。
据上以此类推,MacBook下定义打开程序的快捷键,打开Iterm2、SecureCRT、Chrome仨:
下面这些快捷命令的目录均在:/Users/jackXiang/Library/Services/
工作流程收到:没有输入即可。
文章里面的服务现在是快速操作了,其它一样的,快捷键分别是:
Iterm2、SecureCRT、Chrome:
保存为:快捷打开Iterm2
保存为:快捷打开SecureCRT
保存为:快捷打开Chrome
保存为:快捷打开VSCode
保存为:快捷打开Sublime
保存为:快捷打开TextMate编辑器
保存为:快捷打开SwitchHost
保存为:快捷打开MotionProVPN
保存为:快捷打开Typora
保存为:快捷打开FoxMail
保存为:快捷打开MWeb
快捷打开个人博客登陆入口
快捷打开产品规划目录入口
Iterm2: Control+option+command+空格
SecureCrt: Control+option+command+s
googleChrome: Control+option+command+g
vscode: Control+option+command+e
sublime: Control+option+command+l (L小写)
mate: Control+option+command+x (m被全屏占了)
MotionProVPN: Control+option+command+v
Typora: Control+option+command+t
Typora: Control+option+command+b
Foxmail: Control+option+command+i
Download: Control+option+command+o #这块是在火箭筒里的快速操作里选择-》实用工具-》开启应用程序里面选现成的应用程序即可。
打开钉钉激活窗口:Control+option+command+d #这个是在应用程序里配置的,在钉钉偏好设置,激活窗口里设置的。
打开钉钉激活窗口:Control+option+command+p #快捷打开产品规划目录入口
New Iterm2 Window Here: Shift + command + x
Vscode 打开目录快捷键: Shift + option + w
#命令行快捷打开设置,程序位置:/Applications/TextMate.app/Contents/Resources/mate ,https://zhidao.baidu.com/question/1771510666890332220.html ln -s /Applications/TextMate.app/Contents/Resources/mate ~/bin/mate,echo $PATH|grep bin ==>/usr/local/bin ,chmod +x /Users/jackXiang/bin/mate
/Applications/MWeb.app/Contents/MacOS/MWeb '/Users/jackXiang/ops/xxx.md'
jackxiang: Control+option+command+j #alfred热键工作之工作流,只能设置为option+command+j,参考:mac效率神器alfred热键工作创建流程!用它打开一些应用程序并设置快捷键:https://www.mac69.com/news/399.html
来自:https://www.cr173.com/apple/168544_1.html
背景:是Ubuntu17.04,Chrome出现双击右键才出现, 一直以为是RP问题,后来发现貌似不止我一个人有这个疑问,Google Chrome右键不灵,Chrome for Mac为何双击右键才出现菜单?
是因为你装了 Smooth Gestures 或者类似的鼠标手势插件。在 Chrome for Mac 中,系统的右键菜单在 mouse down 的时候就弹出,这和鼠标手势使用冲突。因此 Smooth Gesture 禁用了右击打开菜单,改成在双击的时候再弹出。
其实不光是 Mac,在 Linux 下也是有这个问题的。Chrominum 的 google code 上有人报过这个问题,而开发人员则认为在 GTK 应用程序中,右键菜单就是应该在 mouse down 的时候弹出,所以他们把问题标记成了 WontFix:http://code.google.com/p/chromium/issues/detail?id=26666
Mac下的Chorme常用快捷键:
Command + , :用来打开chrome://settings/ ,也就是设置。
Option + command + l : chrome://downloads/, 也就是下载列表。
Option + command + i : 开发调试页。
Shift + command + n :打开无痕迹浏览。
Mac 上的每个菜单命令,都能自定义快捷键:
其实 Mac 上的每个菜单命令,都能自定义快捷键 | 一日一技 ∙ Mac
https://sspai.com/post/34527
实现了 secureCRT上定义了一个打开脚本-》Run...的快捷键为:command+s。
用:Run... 得加三个点。
2.系统偏好设置->键盘->快捷键,在其左侧有一个服务->通用
/Users/jackXiang/Library/Services/
快捷打开Typora.workflow
Copy path.workflow
Open Terminal.workflow
Terminal.workflow
WinzipAdd.workflow
WinzipEmail.workflow
WinzipUnzip.workflow
屏保.workflow
打开Download目录.workflow
快捷打开Chrome浏览器.workflow
快捷打开FoxMail.workflow
快捷打开MWeb.workflow
快捷打开MotionProVPN.workflow
快捷打开SecureCRT.workflow
快捷打开Sublime.workflow
快捷打开SwitchHost.workflow
快捷打开TextMate编辑器.workflow
快捷打开Typora.workflow
快捷打开VSCode.workflow
快捷键打开iTerm2.workflow
打开我的电脑.workflow
打开终端命令录制.workflow
快捷打开产品规划目录.workflow
快捷打开个人博客登陆入口.workflow
快捷打开企业微信私有部署版.workflow
上面的自动操作流程脚本保存为备份文件《自动操作脚本备份0921.tar.gz》:
下载文件
一、开启应用程序:
如mate编辑器是在火箭筒里选服务(新版名叫“快速操作”),在实用工具打开后,
实用工具->资源库->开启应用程序->选现成的应用程序(switchHost是开启应用程序->其它,再找到应用程序位置填写路径。)即可。
2)系统偏好设置->键盘->快捷键,在其左侧有一个服务,找到刚才设置的标题,
如:快捷打开企业微信私有部署版,设计快捷键:control + option + command + q ,打开微信企业版。
二、运行脚本:打开火箭筒小人后,选服务(新版名叫“快速操作”),在实用工具打开后,再选择第二列的“运行shell脚本”,在右侧会弹出一个填写shell脚本的输入框,再点会再加一个一样的输入框:
1)打开火箭筒小人后,选服务,在实用工具选运行shell脚本,输入:open ~/Downloads ,后再设置快捷键。
2)系统偏好设置->键盘->快捷键,在其左侧有一个服务,找到刚才设置的标题,
如:打开Download目录,设计快捷键:control + option + command + d ,打开Download目录。
据上以此类推,MacBook下定义打开程序的快捷键,打开Iterm2、SecureCRT、Chrome仨:
下面这些快捷命令的目录均在:/Users/jackXiang/Library/Services/
工作流程收到:没有输入即可。
文章里面的服务现在是快速操作了,其它一样的,快捷键分别是:
Iterm2、SecureCRT、Chrome:
保存为:快捷打开Iterm2
保存为:快捷打开SecureCRT
保存为:快捷打开Chrome
保存为:快捷打开VSCode
保存为:快捷打开Sublime
保存为:快捷打开TextMate编辑器
保存为:快捷打开SwitchHost
保存为:快捷打开MotionProVPN
保存为:快捷打开Typora
保存为:快捷打开FoxMail
保存为:快捷打开MWeb
快捷打开个人博客登陆入口
快捷打开产品规划目录入口
Iterm2: Control+option+command+空格
SecureCrt: Control+option+command+s
googleChrome: Control+option+command+g
vscode: Control+option+command+e
sublime: Control+option+command+l (L小写)
mate: Control+option+command+x (m被全屏占了)
MotionProVPN: Control+option+command+v
Typora: Control+option+command+t
Typora: Control+option+command+b
Foxmail: Control+option+command+i
Download: Control+option+command+o #这块是在火箭筒里的快速操作里选择-》实用工具-》开启应用程序里面选现成的应用程序即可。
打开钉钉激活窗口:Control+option+command+d #这个是在应用程序里配置的,在钉钉偏好设置,激活窗口里设置的。
打开钉钉激活窗口:Control+option+command+p #快捷打开产品规划目录入口
New Iterm2 Window Here: Shift + command + x
Vscode 打开目录快捷键: Shift + option + w
#命令行快捷打开设置,程序位置:/Applications/TextMate.app/Contents/Resources/mate ,https://zhidao.baidu.com/question/1771510666890332220.html ln -s /Applications/TextMate.app/Contents/Resources/mate ~/bin/mate,echo $PATH|grep bin ==>/usr/local/bin ,chmod +x /Users/jackXiang/bin/mate
/Applications/MWeb.app/Contents/MacOS/MWeb '/Users/jackXiang/ops/xxx.md'
jackxiang: Control+option+command+j #alfred热键工作之工作流,只能设置为option+command+j,参考:mac效率神器alfred热键工作创建流程!用它打开一些应用程序并设置快捷键:https://www.mac69.com/news/399.html
来自:https://www.cr173.com/apple/168544_1.html
背景:是Ubuntu17.04,Chrome出现双击右键才出现, 一直以为是RP问题,后来发现貌似不止我一个人有这个疑问,Google Chrome右键不灵,Chrome for Mac为何双击右键才出现菜单?
是因为你装了 Smooth Gestures 或者类似的鼠标手势插件。在 Chrome for Mac 中,系统的右键菜单在 mouse down 的时候就弹出,这和鼠标手势使用冲突。因此 Smooth Gesture 禁用了右击打开菜单,改成在双击的时候再弹出。
其实不光是 Mac,在 Linux 下也是有这个问题的。Chrominum 的 google code 上有人报过这个问题,而开发人员则认为在 GTK 应用程序中,右键菜单就是应该在 mouse down 的时候弹出,所以他们把问题标记成了 WontFix:http://code.google.com/p/chromium/issues/detail?id=26666
Mac下的Chorme常用快捷键:
Command + , :用来打开chrome://settings/ ,也就是设置。
Option + command + l : chrome://downloads/, 也就是下载列表。
Option + command + i : 开发调试页。
Shift + command + n :打开无痕迹浏览。
Mac 上的每个菜单命令,都能自定义快捷键:
其实 Mac 上的每个菜单命令,都能自定义快捷键 | 一日一技 ∙ Mac
https://sspai.com/post/34527
实现了 secureCRT上定义了一个打开脚本-》Run...的快捷键为:command+s。
用:Run... 得加三个点。
实际情况:git mv后的情况及提交,只能分开提交(如果:git commit -a"" fileA fileB...),没法和文件一块Commit! 没有试过:git commit -am"xxx",应该可以。
git rename怎么搞:
设置git库为大小写敏感(不建议)
$
git config core.ignorecase false
使用git mv命令(仅当core.ignorecase为true时可用)
$ git mv ABC.java
Abc.java
$ git status
......
renamed:
ABC.java -> Abc.java
实践发现问题:
1)Linux系统权限不对也会引起下面的问题。
2)有兄弟说那个暂时过渡一下,我是权限问题导致。
Git命令错误记录之git mv: fatal: renaming failed: Permission denied
git mv gittest.net.conf jackxiang.net.conf
fatal: renaming 'playbook/baige.cctv.com/files/jackxiang.net.conf' failed: Permission denied
运行环境:Windows 7,git version 1.9.5.github.0
解决方法:通过创建一个临时文件夹名字来中转。例如:
git mv oldFolderName tempFolderName
git mv tempFolderName newFolderName
From:http://www.cnblogs.com/sincerely/p/4230531.html
More:http://blog.csdn.net/njafei/article/details/53433023
git mv后的情况及提交,只能分开提交,没法和文件一块Commit:
git commit -m"renamed and deleted file"
[master 2626a4d] renamed and deleted file
4 files changed, 0 insertions(+), 12 deletions(-)
rename playbook/baige.jackxiang.com/files/{api.baiger.com.conf => api.baiger.jackxiang.com.conf} (100%)
delete mode 100644 playbook/baige.jackxiang.com/files/mount.sh
rename playbook/baige.jackxiang.com/files/{upload.baige.com.conf => upload.baige.jackxiang.com.conf} (100%)
rename playbook/baige.jackxiang.com/{manage.baige.jackxiang.net.yml => manage.baige.jackxiang.net.yml} (100%)
git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: files/api.baiger.com.conf -> files/api.baiger.jackxiang.com.conf
# deleted: files/mount.sh
# renamed: files/upload.baige.com.conf -> files/upload.baige.jackxiang.com.conf
# renamed: manage.baige.jackxiang.net.yml -> manage.baige.jackxiang.net.yml
http://blog.csdn.net/get_set/article/details/51018142
git rename怎么搞:
设置git库为大小写敏感(不建议)
$
git config core.ignorecase false
使用git mv命令(仅当core.ignorecase为true时可用)
$ git mv ABC.java
Abc.java
$ git status
......
renamed:
ABC.java -> Abc.java
实践发现问题:
1)Linux系统权限不对也会引起下面的问题。
2)有兄弟说那个暂时过渡一下,我是权限问题导致。
Git命令错误记录之git mv: fatal: renaming failed: Permission denied
git mv gittest.net.conf jackxiang.net.conf
fatal: renaming 'playbook/baige.cctv.com/files/jackxiang.net.conf' failed: Permission denied
运行环境:Windows 7,git version 1.9.5.github.0
解决方法:通过创建一个临时文件夹名字来中转。例如:
git mv oldFolderName tempFolderName
git mv tempFolderName newFolderName
From:http://www.cnblogs.com/sincerely/p/4230531.html
More:http://blog.csdn.net/njafei/article/details/53433023
git mv后的情况及提交,只能分开提交,没法和文件一块Commit:
git commit -m"renamed and deleted file"
[master 2626a4d] renamed and deleted file
4 files changed, 0 insertions(+), 12 deletions(-)
rename playbook/baige.jackxiang.com/files/{api.baiger.com.conf => api.baiger.jackxiang.com.conf} (100%)
delete mode 100644 playbook/baige.jackxiang.com/files/mount.sh
rename playbook/baige.jackxiang.com/files/{upload.baige.com.conf => upload.baige.jackxiang.com.conf} (100%)
rename playbook/baige.jackxiang.com/{manage.baige.jackxiang.net.yml => manage.baige.jackxiang.net.yml} (100%)
git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: files/api.baiger.com.conf -> files/api.baiger.jackxiang.com.conf
# deleted: files/mount.sh
# renamed: files/upload.baige.com.conf -> files/upload.baige.jackxiang.com.conf
# renamed: manage.baige.jackxiang.net.yml -> manage.baige.jackxiang.net.yml
http://blog.csdn.net/get_set/article/details/51018142
[实践OK]CentOS7.2内核升至最新
Unix/LinuxC技术 jackxiang 2017-6-22 23:57
前段时间在阿里云上部署docker服务(或者是安装glusternfs要求较高版本的内核),由于阿里云自带centos的内核版本地较低第所以遇到了升级内核问题。这篇文章简单介绍一下升级centos的过程。
1、导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
(这个命令并不行,手工解压elrepo-release-7.0-2.el7.elrepo.noarch.rpm并拷贝elrepo.repo更靠谱。rpm2cpio elrepo-release-7.0-2.el7.elrepo.noarch.rpm |cpio -div)
3、安装内核
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
kernel-ml.x86_64 0:4.11.2-1.el7.elrepo kernel-ml-devel.x86_64 0:4.11.2-1.el7.elrepo
查看最新内核版本
[root@iZ25x4ab3lrZ ~]# uname -r
4.8.10-1.el7.elrepo.x86_64
注意:虽然此刻看到的版本已经升级到最新,但是此时如何重启服务器,内核版本就会回到最初的版本。因此在reboot前还需要设置内核的默认启动顺序。
查看默认启动顺序:
[root@iZ25x4ab3lrZ ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.8.10-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core)
设置默认启动(从0开始计数)===>前面安装的是:kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
grub2-set-default 0
=======================================================================================
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.11.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.16.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.6.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.36.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux, with Linux 0-rescue-45461f76679f48ee96e95da6cc798cc8
4、重启,完成设置,并验证,成功升级到CentOS7.2:
#cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
#uname -r
4.11.2-1.el7.elrepo.x86_64
From: http://www.2cto.com/os/201701/587143.html
提取出Rpm包里的文件:http://justwinit.cn/post/8922/
1、导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安装elrepo的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
(这个命令并不行,手工解压elrepo-release-7.0-2.el7.elrepo.noarch.rpm并拷贝elrepo.repo更靠谱。rpm2cpio elrepo-release-7.0-2.el7.elrepo.noarch.rpm |cpio -div)
3、安装内核
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
kernel-ml.x86_64 0:4.11.2-1.el7.elrepo kernel-ml-devel.x86_64 0:4.11.2-1.el7.elrepo
查看最新内核版本
[root@iZ25x4ab3lrZ ~]# uname -r
4.8.10-1.el7.elrepo.x86_64
注意:虽然此刻看到的版本已经升级到最新,但是此时如何重启服务器,内核版本就会回到最初的版本。因此在reboot前还需要设置内核的默认启动顺序。
查看默认启动顺序:
[root@iZ25x4ab3lrZ ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.8.10-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core)
设置默认启动(从0开始计数)===>前面安装的是:kernel-ml-devel-4.11.2-1.el7.elrepo.x86_64
grub2-set-default 0
=======================================================================================
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.11.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.16.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.6.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.36.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.22.2.el7.x86_64) 7 (Core)
CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux, with Linux 0-rescue-45461f76679f48ee96e95da6cc798cc8
4、重启,完成设置,并验证,成功升级到CentOS7.2:
#cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
#uname -r
4.11.2-1.el7.elrepo.x86_64
From: http://www.2cto.com/os/201701/587143.html
提取出Rpm包里的文件:http://justwinit.cn/post/8922/
[实践OK]删除Ubuntu多余的开机启动项(旧的内核)
Unix/LinuxC技术 jackxiang 2017-6-22 23:55
实践发现:删除多了一个linux-image-extra-4..0-78-generic,应该留下俩。
当linux有新的内核发布时,ubuntu会把当前的内核更新为最新的内核,时间久了,电脑中会同时存在多个内核,最明显的是每次开机的时候,会有多个开机选项,比较麻烦。如果自己不想再使用以前的内核,可以考虑删除旧的内核,一来可以释放部分硬盘资源(一个内核100多M的样子吧),二来开机界面比较清新。
1.sunny@ubuntu:~$ dpkg --get-selections|grep linux-image
linux-image-2.6.38-10-generic install
linux-image-2.6.38-11-generic install
linux-image-2.6.38-12-generic install
linux-image-2.6.38-13-generic install
linux-image-generic install
2.查看当前使用的内核
sunny@ubuntu:~$ uname -a
Linux ubuntu 2.6.38-13-generic #56-Ubuntu SMP Tue Feb 14 12:40:40 UTC 2012 i686 i686 i386 GNU/Linux
3.删除其它旧的内核
sunny@ubuntu:~$ sudo apt-get remove linux-image-2.6.38-10-generic linux-image-2.6.38-11-generic linux-image-2.6.38-12-generic
4. 然后做下清理(可有可无)
sunny@ubuntu/usr/src sudo apt−get clean
sunny@ubuntu:/usr/srcsudoapt−getclean
sunny@ubuntu:/usr/src sudo apt-get autoclean
ubuntu中删除显示为deinstall的linux内核:
http://blog.csdn.net/iam333/article/details/37874683
下次开机就没有那些旧的内核了。
来自:http://www.cnblogs.com/king-77024128/articles/2507280.html
http://blog.csdn.net/u010987458/article/details/72381998
当linux有新的内核发布时,ubuntu会把当前的内核更新为最新的内核,时间久了,电脑中会同时存在多个内核,最明显的是每次开机的时候,会有多个开机选项,比较麻烦。如果自己不想再使用以前的内核,可以考虑删除旧的内核,一来可以释放部分硬盘资源(一个内核100多M的样子吧),二来开机界面比较清新。
1.sunny@ubuntu:~$ dpkg --get-selections|grep linux-image
linux-image-2.6.38-10-generic install
linux-image-2.6.38-11-generic install
linux-image-2.6.38-12-generic install
linux-image-2.6.38-13-generic install
linux-image-generic install
2.查看当前使用的内核
sunny@ubuntu:~$ uname -a
Linux ubuntu 2.6.38-13-generic #56-Ubuntu SMP Tue Feb 14 12:40:40 UTC 2012 i686 i686 i386 GNU/Linux
3.删除其它旧的内核
sunny@ubuntu:~$ sudo apt-get remove linux-image-2.6.38-10-generic linux-image-2.6.38-11-generic linux-image-2.6.38-12-generic
4. 然后做下清理(可有可无)
sunny@ubuntu/usr/src sudo apt−get clean
sunny@ubuntu:/usr/srcsudoapt−getclean
sunny@ubuntu:/usr/src sudo apt-get autoclean
ubuntu中删除显示为deinstall的linux内核:
http://blog.csdn.net/iam333/article/details/37874683
下次开机就没有那些旧的内核了。
来自:http://www.cnblogs.com/king-77024128/articles/2507280.html
http://blog.csdn.net/u010987458/article/details/72381998