Monthly Archives: 1月 2018

1月 31st, 2018

不小心误删除了VPS下面的yum,大家都知道yum在linux中是很重要的一个功能,软件的下载,系统的更新都要靠他。没有yum,系统基本处于半残废状态。

yum的安装操作:

 

在SSH里面依次输入下面的命令:

1,下载最新的yum-3.2.28.tar.gz并解压

wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
tar xvf yum-3.2.28.tar.gz

2,进入目录,运行安装

cd yum-3.2.28
yummain.py install yum

结果提示错误: CRITICAL:yum.cli:Config Error: Error accessing file for config file:///etc/

后来经猫哥提醒,原来是缺少配置文件。在etc目录下面新建yum.conf文件,然后再次运行 yummain.py install yum,顺利完成安装。

3,最后更新系统,全部搞定,收工。^_^

yum check-update
yum update
yum clean all

1.yum的安装与配置

(1)yum的安装

检查yum是否已经安装:

[root@localhost~]# rpm -qa|grep yum

如果没有任何显示,表示系统中还没有安装yum工具,yum安装包在centos系统光盘中可以找到,执行如下指令进行安装:

[root@localhost~]# rpm -ivh yum-*.noarch.rpm

安装yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等软件包的支持,这些软件包在Centos Linux系统安装光盘均可找到,如果在安装yum过程中出现软件包之间的依赖性,只需按照依赖提示寻找相应软件包安装即可,直到yum包安装成功。

下面是某个环境的安装示例:

[root@localhost~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm

warning:yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature:NOKEY, key ID 443e1821

error:Failed dependencies:

       python-elementtree is needed by yum-2.4.3-1.c4.noarch

       python-sqlite is needed by yum-2.4.3-1.c4.noarch

       urlgrabber is needed by yum-2.4.3-1.c4.noarch

       yumconf is needed by yum-2.4.3-1.c4.noarch

[root@localhost~]# rpm -ivh python-elementtree-1.2.6-4.2.1.i386.rpm

warning:python-elementtree-1.2.6-4.2.1.i386.rpm: V3 DSAsignature: NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:python-elementtree     ###########################################[100%]

http://www.uplook.cn/?a=index&m=index&c=iframe&url=mailto%3Aroot%40localhost ~]#rpm -ivh sqlite-3.3.3-1.2.i386.rpm

warning:sqlite-3.3.3-1.2.i386.rpm: V3 DSA signature:NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:sqlite                ########################################### [100%]

[root@localhost~]# rpm -ivh python-sqlite-1.1.7-1.2.i386.rpm

warning:python-sqlite-1.1.7-1.2.i386.rpm: V3 DSAsignature: NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:python-sqlite         ########################################### [100%]

[root@localhost~]# rpm -ivh python-urlgrabber-2.9.8-2.noarch.rpm

warning:python-urlgrabber-2.9.8-2.noarch.rpm: V3 DSAsignature: NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:python-urlgrabber     ########################################### [100%]

http://www.uplook.cn/?a=index&m=index&c=iframe&url=mailto%3Aroot%40localhost ~]#rpm -ivh centos-yumconf-4-4.5.noarch.rpm

warning:centos-yumconf-4-4.5.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:centos-yumconf        ########################################### [100%]

[root@localhost~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm

warning:yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature:NOKEY, key ID 443e1821

Preparing…               ########################################### [100%]

  1:yum                   ########################################### [100%]

(2)yum的配置

yum工具安装完毕,接下来的工作是进行yum的配置,yum的配置文件有主配置文件/etc/yum.conf、资源库配置目录/etc/yum.repos.d,yum安装后,默认的一些资源库配置可能无法使用,因此需要进行修改,下面是/etc/yum.repos.d/CentOS-Base.repo资源库配置文件各项的详细含义:

[root@localhost~]#/etc/yum.repos.d/CentOS-Base.repo

[base]

name=CentOS-4- Base

#name就是发行版的名称,其格式表示“操作系统名和释出版本”,“base”是表明此段寻找的是base包信息。

baseurl=http://mirror.centos.org/centos/4/os/$basearch/

#baseurl”表示yum在互联网上查找升级文件的URL地址。其中“$basearch”代表了系统的硬件构架如“i386”、“x86-64等,同时,yum在资源更新时,会检查baseurl/repodata/repomd.xml文件。 “repomd.xml”是一个索引文件,它的作用是提供了更新rpm包文件的下载信息和SHA校验值。“repomd.xml”包括了3个文件,分别为“other.xml.gz”、”filelists.xml.gz”和”primary.xml.gz”,表示的含义依次是“其它更新包列表”、“更新文件集中列表”和“主要更新包列表”。

gpgcheck=1

#gpgcheck表示是否启用gpg检查,1表示启用,0表示不启用校验,如果启用,就是需要在配置文件里注明GPG-RPM-KEY的位置,可以看到下面gpgkey字段,指定了GPG-RPM-KEY验证文件的位置。

#releasedupdates

[update]

#本段是updates更新模块要用到的部分配置。

name=CentOS-4- Updates

baseurl=http://mirror.centos.org/centos/4/updates/$basearch/

gpgcheck=1

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#gpgkey指定GPG密钥的地址

#packagesused/produced in the build but not released

#本段指定的是尚未发布的软件包部分(addons)配置

[addons]

name=CentOS-4- Addons

baseurl=http://mirror.centos.org/centos/4/addons/$basearch/

gpgcheck=1

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additionalpackages that may be useful

#本段指定的是有用的额外软件包部分(extras)配置

[extras]

name=CentOS-4- Extras

baseurl=http://mirror.centos.org/centos/4/extras/$basearch/

gpgcheck=1

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additionalpackages that extend functionality of existing packages

#本段指定的是扩展的额外软件包部分(centosplus)配置

[centosplus]

name=CentOS-4- Plus

baseurl=http://mirror.centos.org/centos/4/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#contrib- packages by Centos Users

#这里是contrib部分

[contrib]

name=CentOS-4- Contrib

baseurl=http://mirror.centos.org/centos/4/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

1月 31st, 2018

日前,下一代互联网国家工程中心正式宣布推出 IPv6 公共 DNS:240c::6666 。通过免费提供性能优异的公共 DNS 服务,为广大 IPv6 互联网用户打造安全、稳定、高速、智能的上网体验,助力我国《推进互联网协议第六版(IPv6)规模部署行动计划》全面落实。同时,工程中心还联合全球 IPv6 论坛IPv6 Forum启动 IPv6 公共 DNS 的全球推广计划,旨在为全球用户提供更优质的上网解析服务。

当前 IPv6 网络已成为各国推动新的科技产业革命和重塑国家长期竞争力的先导领域,全球各个国家均加快了向 IPv6 过渡的步伐。与此同时,IPv6 用户量也在近两年内实现爆炸式增长,沉寂多年的 IPv6 发展局面得到显著改观。而 IPv6 行动计划的推出,无疑将为已蓄势待发的 IPv6 产业再填强劲助力,全面加快我国下一代互联网整体部署节奏。

作为网络基础设施的重要组成部分,域名系统(DNS)因其“特殊性”,在过去 30 年间频繁被攻击,顶级域故障、DNS 劫持、大规模 DNS 攻击等事件时有发生,给全球互联网产业带来严重影响。而当前,提升用户体验、保障网络安全的大部分公共 DNS 均仅面向 IPv4,这也是 IPv6 用户不断诟病的问题之一。为全面助力 IPv6 的发展, 下一代互联网工程中心依托自主研发的高性能 IPv6 DNS 系统,面向公众免费提供 DNS 服务,首选 DNS:240c::6666,备用 DNS:240c::6644

下一代互联网国家工程中心是我国下一代互联网领域唯一的国家级工程研究中心,多年来致力于 IPv6 下一代互联网等产业基础关键技术和应用的研究和推动。而本次推出的 IPv6 公共 DNS 无疑将为全球 IPv6 用户提供一个优化上网体验的绝佳选择,其精准快速、安全稳定、DNS64 三大特性,将全面保障 IPv6 网络的高效和稳定。

据介绍,工程中心在北京、广州、兰州、武汉、芝加哥、弗里蒙特、伦敦、法兰克福等全球众多地区部署递归节点。基于 IPv6 BGP Anycast 方式部署,让用户可以实现就近访问,使得域名在解析到根服务器的访问时延明显缩小,在速度上可以得到重要保障。不仅如此,IPv6 公共 DNS 将通过主动同步 com/net 域名、缓存热点域名等举措,减少递归过程,以最大程度实现快速应答。

在安全性方面,IPv6 公共 DNS 支持单 IP 解析限速,通过安全限速可有效拦截恶意攻击等,用户的访问安全将受到实时保护。同时,IPv6 公共 DNS 支持 DNSSEC 安全解析验证,用户在访问过程中无任何劫持,既不会出现恶意跳转,也不会有强制性广告出现。

同时,为方便 IPv6 用户访问 IPv4 相关服务的切实需求,IPv6 公共 DNS 特别推出 DNS64 解析服务,即通过该解析系统同样可以响应纯 IPv6 用户对纯 IPv4 网络资源的解析请求,这也在一定程度上避免了 IPv4 至 IPv6 过渡期所带来的内容尚未完全改造升级的困扰。

下一代互联网国家工程中心主任刘东表示,“早发展、快发展IPv6网络是我国争取全球互联网主动权的关键举措。而公共基础设施的建设和提升,是 IPv6 大规模部署的先决条件,更是工程中心多年来的愿景和努力方向。本次 IPv6 公共 DNS 面向全球免费服务,不仅为全球 IPv6 用户提供一个可以速度更快安全性更高的选择,也希望可以对我国全面推进 IPv6 下一代互联网部署起到促进作用。”

1月 31st, 2018

你的 home 目录下藏着很多隐藏文件。如果你在运行 macOS 或者主流的 Linux 发行版的话,你就会在靠近隐藏文件列表的上方看见一个名为 .bashrc 的文件。那么什么是 .bashrc,编辑 .bashrc 又有什么用呢?

finder-find-bashrc

finder-find-bashrc

如果你运行一个基于 Unix 或者类 Unix 的操作系统,bash 很有可能是作为默认终端被安装的。虽然存在很多不同的 shell,bash 却是最常见或许也是最主流的。如果你不明白那意味着什么,bash 是一个能解释你输入进终端程序的东西,并且基于你的输入来运行命令。它在一定程度上支持使用脚本来定制功能,这时候就要用到 .bashrc 了。

为了加载你的配置,bash 在每次启动时都会加载 .bashrc 文件的内容。每个用户的 home 目录都有这个 shell 脚本。它用来存储并加载你的终端配置和环境变量。

终端配置可以包含很多不同的东西。最常见的,.bashrc 文件包含用户想要用的别名。别名允许用户通过更短的名字或替代的名字来指向命令,对于经常在终端下工作的人来说这可是一个省时利器。

terminal-edit-bashrc-1

terminal-edit-bashrc-1

你可以在任何终端文本编辑器上编辑 .bashrc。在接下来的例子中我们将使用 nano

要使用 nano 来编辑 .bashrc,在终端中调用以下命令:

  1. nano ~/.bashrc

如果你之前从没有编辑过 .bashrc 的话,你也许会发现它是空的。这没关系!如果不是的话,你可以随意在任一行添加你的配置。

你对 bashrc 所做的任何修改将在下一次启动终端时生效。如果你想立刻生效的话,运行下面的命令:

  1. source ~/.bashrc

你可以添加到任何 .bashrc 的位置,随意使用命令(通过 #)来组织你的代码。

编辑 .bashrc 需要遵循 bash 脚本格式。如果你不知道如何用 bash 编写脚本的话,有很多在线资料可供查阅。这是一本相当全面的介绍指南,包含一些我们没能在这里提及的 bashrc 的方面。

相关: 如何在 Linux 启动时以 root 权限运行 bash 脚本

有一些有用的小技巧能使你的终端体验将更高效,也更用户友好。

为什么我要编辑 bashrc ?

Bash 提示符

bash 提示符允许你自定义你的终端,并让它在你运行命令时显示提示。自定义的 bash 提示符着实能提高你在终端的工作效率。

看看这些即有用有趣的 bash 提示符,你可以把它们添加到你的 .bashrc 里。

别名

terminal-edit-bashrc-3

terminal-edit-bashrc-3

别名允许你使用简写的代码来执行你想要的某种格式的某个命令。让我们用 ls 命令来举个例子吧。ls 命令默认显示你目录里的内容。这挺有用的,不过显示目录的更多信息,或者显示目录下的隐藏内容,往往更加有用。因此,有个常见的别名就是 ll,用来运行 ls -lha 或者其他类似的命令。这样就能显示文件的大部分信息,找出隐藏的文件,并能以“能被人类阅读”的单位显示文件大小,而不是用“块”作为单位。

你需要按照下面这样的格式书写别名:

  1. alias ll = "ls -lha"

左边输入你想设置的别名,右边引号里是要执行的命令。你可以用这种方法来创建命令的短版本,防止出现常见的拼写错误,或者让一个命令总是带上你想要的参数来运行。你也可以用你喜欢的缩写来规避讨厌或容易忘记的语法。这是一些常见的别名的用法,你可以添加到你的 .bashrc 里。

函数

terminal-edit-bashrc-2

terminal-edit-bashrc-2

除了缩短命令名,你也可以用 bash 函数组合多个命令到一个操作。这些命令可以很复杂,但是它们大多遵循这种语法:

  1. function_name () {
  2. command_1
  3. command_2
  4. }

下面的命令组合了 mkdir 和 cd 命令。输入 md folder_name 可以在你的工作目录创建一个名为“folder_name”的目录并立刻导航进入。

  1. md () {
  2. mkdir -p $1
  3. cd $1
  4. }

如你所见,函数中的 $1 代表第一个参数,就是你在函数名后紧跟着输入的文本。

1月 31st, 2018

有很多种方法可以将表的存储引擎转换成另一种引擎。每种方法都有其优缺点,在这里介绍四种方法:

选择优先级(pt-online-schema-change > 创建与查询 > 导出和导入 > ALTER TABLE)。

•ALTER TABLE

将表从一个引擎修改为另一个引擎最简单的方法是使用ALTER TABLE语句。下面的语句将TB表的引擎修改为InnoDB:

mysql> ALTER TABLE TB ENGINE = InnoDB;

PS:该方法适用于任何存储引擎。但有一个问题:需要很长的执行时间。

MySQL会按行将数据库从原表复制到一张新的表中,在复制期间可能会消耗系统所有的I/O能力,同时原表上会加上读锁。

•导出和导入(mysqldump)

为了更好的控制转换的过程,可以使用mysqldump工具将数据导出到文件,然后修改文件中CREATE TABLE语句的存储引擎选项,注意同时修改表名,因为同一个数据库中不能存在相同的表名,即使他们使用的是不同的存储引擎。

PS:mysqldump默认会自动在CREATE TABLE语句前加上DROP TABLE语句,不注意这一点可能会导致数据丢失。

1、下面的语句将DB库中的TB表数据导出到tb.sql文件中:

[root@desktop]# mysqldump -u root -p DB TB > tb.sql

2、修改tb.sql文件(如果需要备份TB表,请更改表名):

CREATE TABLE `TB` (
`name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、下面的语句将tb.sql文件导入到DB库中:

[root@desktop]# mysql -u root -p DB < tb.sql
•创建与查询(CREATE 和 SELECT)

这种方法综合第一种方法的高效和第二种方法的安全。不需要导出整个表的数据,而是首先创建一个新的存储引擎的表,然后利用INSERT…SELECT语法来导数据:

数据量不大使用以下语句:

mysql > CREATE TABLE TB2 like TB1;
mysql > ALTER TABLE TB2 ENGINE=InnoDB;
mysql > INSERT INTO TB2 SELECT * FROM TB1;
数据量大使用以下语句:

mysql > CREATE TABLE TB2 like TB1;
mysql > ALTER TABLE TB2 ENGINE=InnoDB;
mysql > START TRANSACTION;
mysql > INSERT INTO TB2 SELECT * FROM TB1 WHERE id BETWEEN x AND y;
mysql > COMMIT;

PS:这样的操作完成后,新表是原表的一个全量复制,原表还在,如需要可以删除原表。

如果有必要,可以在执行的过程中对原表进行加锁,以确保新表和原表的数据一致。

•使用Percona Toolkit提供的pt-online-schema-change工具:

使用以下命令可将DB库中的TB1表转换成InnoDB:

[root@desktop]# pt-online-schema-change -u root -h 127.0.0.1 -p 123456 –alter=’ENGINE=Innodb’ –execute A=utf8,D=DB,t=TB1

执行成功后会有如下提示:

Successfully altered `DB`.`TB1`.

PS:原理为创建临时表->修改修改结构->记录数据->删掉原表->重命名临时表

TAGS:
1月 31st, 2018

AWSTAT是免费的一个非常强大的日志分析工具的Apache日志文件。 从apache分析日志后,它以易于理解的图形格式显示它们。 Awstat是高级Web统计的缩写,它可以在命令行界面或CGI上运行。

在本教程中,我们将在我们的CentOS 7机器上安装AWSTAT以分析apache日志。

必要条件

1-在apache web服务器上托管的网站,创建一个在apache web服务器上阅读下面提到的教程,

在系统上启用了Epel存储库,因为Awstat包在默认存储库中不可用。 要启用epel-repo,请运行

$ rpm -Uvh https://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

安装Awstat

一旦在系统上启用了epel-repository,就可以通过运行来安装awstat,

$ yum install awstat

当安装了awstat时,它会在一些配置下在/etc/httpd/conf.d/awstat.conf中为apache创建一个文件。 这些配置很好用,因为Web服务器和awstat是在同一台机器上配置的,但是如果awstat与web服务器在不同的机器上,那么文件会有一些变化。

为Awstat配置Apache

要为远程Web服务器配置awstat,请打开/etc/httpd/conf.d/awstat.conf,并使用Web服务器的IP地址更新参数“Allow from”

$ vi /etc/httpd/conf.d/awstat.conf

<Directory “/usr/share/awstats/wwwroot”>
Options None
AllowOverride None
<IfModulemod_authz_core.c>
# Apache 2.4
Require local
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order allow,deny
Allow from 127.0.0.1
Allow from 192.168.1.100
</IfModule>
</Directory>

保存文件并重新启动apache服务来实现更改,

$ systemctl restart httpd

配置AWSTAT

对于我们添加到awstat的每个网站,需要使用网站信息创建不同的配置文件。 一个示例文件是通过“awstats.localhost.localdomain.conf”文件名创建到文件夹“/etc/awstats”中的,我们可以复制它并配置我们的网站,

$ cd /etc/awstats
$ cp awstats.localhost.localdomain.conf awstats.linuxidc.com.conf

现在打开文件并编辑以下三个参数来匹配您的网站,

$ vi awstats.linuxidc.com.conf

LogFile=”/var/log/httpd/access.log”
SiteDomain=”linuxidc.com”
HostAliases=www.linuxidc.com localhost 127.0.0.1

最后一步是更新配置文件,可以通过执行下面的命令来完成,

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=linuxidc.com–update

检查awstat页面

要测试/检查awstat页面,请打开Web浏览器并在地址栏中输入以下URL,
https://linuxidc.com/awstats/awstats.pl?config=linuxidc.com

请注意,我们也可以安排一个cron作业来定期更新awstat。 一个crontab的例子

$ crontab –e
0 1 * * * /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=linuxidc.com–update

1月 31st, 2018

YUM工具是CentOS/RHEL/Fedora最重要的工具之一。尽管在Fedora的最新版本中,它已经被DNF所取代,但这并不意味着它已经成功了。它仍然被广泛用于安装rpm包,我们已经在前面的教程中讨论了YUM(在这里阅读)。

在本教程中,我们将学习创建一个本地YUM存储库,首先使用OS的ISO映像,然后创建一个在线yum存储库的镜像。

使用DVD ISO创建YUM

我们在本教程中使用CentOS 7 DVD,同样的过程也应该在RHEL 7上运行。

首先在根文件夹中创建一个名为YUM的目录

$ mkdir /YUM-

然后安装CentOS 7 ISO,

$ mount -t iso9660 -o loop /home/dan/Centos-7-x86_x64-DVD.iso /mnt/iso/

接下来,从安装的ISO复制包到/YUM文件夹。一旦所有的软件包都被复制到系统中,我们将安装创建YUM所需的软件包。打开/YUM并安装以下RPM软件包,

$ rpm –ivh deltarpm
$ rpm –ivh python-deltarpm
$ rpm –ivh createrepo

一旦安装了这些软件包,我们将在/etc/yum.repos.d文件夹中创建一个名为“local.repo”的文件,其中包含所有的yum信息

$ vi /etc/yum.repos.d/local.repo

[LOCAL REPO]
Name=Local YUM
baseurl=file:///YUM
gpgcheck=0
enabled=1

保存并退出文件。接下来,我们将通过运行以下命令来创建仓库数据

$ createrepo –v /YUM

创建仓库数据需要一些时间。一旦过程完成,运行

$ yum clean all

清理缓存然后运行

$ yum repolist

检查所有存储库的列表。你应该在列表中看到“local.repo”。

使用联机存储库创建镜像YUM存储库

涉及创建yum的过程与使用ISO映像创建yum类似,只是我们将从联机存储库而不是ISO获取rpm包。

首先,我们需要找到一个在线资源库来获取最新的软件包。建议您找到离您所在地最近的在线 Yum 仓库,以优化下载速度。我们将使用下面提到的,您可以从CentOS 镜像中选择一个离您最近位置的镜像。

选择镜像之后,我们将使用rsync将该镜像与我们的系统同步,但在此之前,请确保您的服务器上有足够的空间

$ rsync –avz rsync://mirror.fibergrid.in/centos/7.2/os/x86_64/Packages/s/ /YUM

同步将需要相当长一段时间(也许一个小时),取决于您的互联网速度。同步完成后,我们将更新我们的仓库数据

$ createrepo – v /YUM

我们的Yum已经准备好使用了。我们可以创建一个cron作业,让我们的YUM仓库在每天或每周按照您的需要自动更新。

要创建一个用于同步存储库的cron作业,请运行

$ crontab –e

并添加以下行

30 12 * * * rsync –avz http://mirror.centos.org/centos/7/os/x86_64/Packages/ /YUM

这将使得每天晚上12:30同步YUM。 还请记住在/etc/yum.repos.d中创建存储库配置文件,就像我们上面所做的一样。

就是这样,你现在有你自己的yum仓库来使用

1月 30th, 2018

Q:我需要将所有包含 *.c 文件的文件夹从名为 hostA 的本地笔记本复制到 hostB。我使用的是下面的 scp 命令,但不知道如何排除特定的文件(如 *.out):

  1. $ scp -r ~/projects/ user@hostB:/home/delta/projects/

如何告诉 scp 命令在 Linux/Unix 命令行中排除特定的文件或目录?

人们可以使用 scp 命令在网络主机之间安全地复制文件。它使用 ssh 进行数据传输和身份验证。典型的语法是:

  1. scp file1 user@host:/path/to/dest/
  2. scp -r /path/to/source/ user@host:/path/to/dest/

scp 排除文件

我不认为你可以在使用 scp 命令时过滤或排除文件。但是,有一个很好的解决方法来排除文件并使用 ssh 安全地复制它。本页面说明如何在使用 scp 递归复制目录时过滤或排除文件。

如何使用 rsync 命令排除文件

语法是:

  1. rsync av -e ssh --exclude='*.out' /path/to/source/ user@hostB:/path/to/dest/

这里:

  1. -a :递归到目录,即复制所有文件和子目录。另外,打开归档模式和所有其他选项(相当于 -rlptgoD
  2. -v :详细输出
  3. -e ssh :使用 ssh 作为远程 shell,这样所有的东西都被加密
  4. --exclude='*.out' :排除匹配模式的文件,例如 *.out 或 *.c 等。

rsync 命令的例子

在这个例子中,从 ~/virt/ 目录递归地复制所有文件,但排除所有 *.new 文件:

  1. $ rsync -av -e ssh --exclude='*.new' ~/virt/ root@centos7:/tmp

示例输出:

Scp exclude files but using rsync exclude command

Scp exclude files but using rsync exclude command

如果远程服务器上找不到 rsync,那么 rsync 命令将失败。在这种情况下,请尝试使用以下 scp 命令,该命令在当前目录中使用 bash shell 模式匹配 (它不能与 -r 选项一起使用):

  1. $ ls

示例输出:

  1. centos71.log centos71.qcow2 centos71.qcow2.new centos71.v2.qcow2.new meta-data user-data

复制除 .new 之外的当前目录中的所有内容:

  1. $ shopt -s extglob
  2. $ scp !(*.new) root@centos7:/tmp/

示例输出:

  1. centos71.log 100 % 4262 1.3MB/s 00:00
  2. centos71.qcow2 100 % 836MB 32.7MB/s 00: 25
  3. meta-data 100 % 47 18.5KB/s 00:00
  4. user-data 100 % 1543 569.7KB/s 00:00

有关更多信息,请参阅以下手册页:

  1. $ man rsync
  2. $ man bash
  3. $ man scp
TAGS:
1月 30th, 2018

想到Gitlab就必定会想到SVN,因为两者都是代码管理系统,作为开发人员来说,用习惯了SVN的图形化界面和SVN代码更新和提交的方式,

可能就会觉得使用git会比较麻烦,其实不然git使用起来非常方便,并且好处也不少,git后面会成为一种流行和趋势。所以在这儿简单的介绍Gitlab

服务器的搭建和git的一些基本操作使用。

Git的优点和缺点介绍

优点

1、适合分布式开发,强调个体

2、公共服务器压力和数据量都不会太大

3、速度快、灵活

4、任意两个开发者之间可以很容易的解决冲突

5、离线可以正常提交代码和工作

缺点

1、学习周期相对而言比较长

2、不符合常规思维

3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

准备环境

Ubuntu16.04 server

安装介绍

主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录,以下是操作步骤(主要参考资料:https://about.gitlab.com/downloads/#ubuntu1604)

Gitlab安装

1.安装依赖包

sudo apt-get install curl openssh-server ca-certificates postfix

注:执行完成后,出现邮件配置,选择Internet那一项(不带Smarthost的)

2.利用清华大学的镜像(https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/)来进行主程序的安装

首先信任 GitLab 的 GPG 公钥

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add – &>/dev/null

使用root用户修改配置文件

vi /etc/apt/sources.list.d/gitlab-ce.list

#添加以下内容

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

vi /etc/gitlab/gitlab.rb

external_url ‘http://172.16.81.91/’

安装 gitlab-ce

sudo apt-get update

sudo apt-get install gitlab-ce

3.启动sshd和postfix服务

service sshd start

service postfix start

4.添加防火墙规则

sudo iptables -A INPUT -p tcp -m tcp –dport 80 -j ACCEPT

5.启动各项服务

sudo gitlab-ctl reconfigure

6..检查GitLab是否安装好并且已经正确运行

sudo gitlab-ctl status

#如果得到类似下面的结果,则说明GitLab运行正常

7.浏览web页面并设置密码

http://172.16.81.91/

 

8.创建组

 

9.添加ssh key

git仓库之间的代码传输协议主要使用ssh协议。而一般搭建gitlab的时候使用的git用户是没有密码的,因此直接ssh是不能登录的,就需要使用ssh-keygen上传公钥,使用非对称加密传输。下面讲述如何上传你的ssh公钥:

生成sshkey

在终端中敲下面的命令,第一步会生成一对私钥和公钥,分别存在 ~/.ssh/id_rsa~/.ssh/id_rsa.pub中。第二步查看公钥字符串。

   ssh-keygen -t rsa -C "邮箱地址"
   cat ~/.ssh/id_rsa.pub

在面板上依次点击Profile Settings –> SSH Keys –> Add SSH Keys。然后把上一步中的id_rsa.pub中的内容拷贝出来粘贴到输入框中,保存。

完成上面两步之后就成功的添加了sshkey了,然后就可以上传代码了。

10.创建项目

创建项目Test_Project

下一步,选择组,输入项目名

下一步,创建完成

在项目下面会有git的操作指南教你如何操作

完成创建项目!

至此,基于Ubuntu 16.04 x64操作系统的GitLab服务器搭建工作就完成了!

TAGS:
1月 30th, 2018

为服务器打补丁是 Linux 系统管理员的一项重要任务,为的是让系统更加稳定,性能更加优化。厂商经常会发布一些安全/高危的补丁包,相关软件需要升级以防范潜在的安全风险。

Yum (Yellowdog Update Modified) 是 CentOS 和 RedHat 系统上用的 RPM 包管理工具,yum history 命令允许系统管理员将系统回滚到上一个状态,但由于某些限制,回滚不是在所有情况下都能成功,有时 yum 命令可能什么都不做,有时可能会删掉一些其他的包。

我建议你在升级之前还是要做一个完整的系统备份,而 yum history 并不能用来替代系统备份的。系统备份能让你将系统还原到任意时候的节点状态。

某些情况下,安装的应用程序在升级了补丁之后不能正常工作或者出现一些错误(可能是由于库不兼容或者软件包升级导致的),那该怎么办呢?

与应用开发团队沟通,并找出导致库和软件包的问题所在,然后使用 yum history 命令进行回滚。

注意:

  • 它不支持回滚 selinux,selinux-policy-*,kernel,glibc (以及依赖 glibc 的包,比如 gcc)。
  • 不建议将系统降级到更低的版本(比如 CentOS 6.9 降到 CentOS 6.8),这会导致系统处于不稳定的状态

让我们先来看看系统上有哪些包可以升级,然后挑选出一些包来做实验。

  1. #yum update
  2. Loaded plugins: fastestmirror, security
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. epel/metalink |12 kB 00:00
  6. * epel: mirror.csclub.uwaterloo.ca
  7. base |3.7 kB 00:00
  8. dockerrepo |2.9 kB 00:00
  9. draios |2.9 kB 00:00
  10. draios/primary_db |13 kB 00:00
  11. epel |4.3 kB 00:00
  12. epel/primary_db |5.9 MB 00:00
  13. extras |3.4 kB 00:00
  14. updates |3.4 kB 00:00
  15. updates/primary_db |2.5 MB 00:00
  16. ResolvingDependencies
  17. -->Running transaction check
  18. --->Packagegit.x86_64 0:1.7.1-8.el6 will be updated
  19. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be an update
  20. --->Package httpd.x86_64 0:2.2.15-60.el6.centos.4 will be updated
  21. --->Package httpd.x86_64 0:2.2.15-60.el6.centos.5 will be an update
  22. --->Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.4 will be updated
  23. --->Package httpd-tools.x86_64 0:2.2.15-60.el6.centos.5 will be an update
  24. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be updated
  25. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be an update
  26. -->FinishedDependencyResolution
  27. DependenciesResolved
  28. =================================================================================================
  29. PackageArchVersionRepositorySize
  30. =================================================================================================
  31. Updating:
  32. git x86_64 1.7.1-9.el6_9 updates 4.6 M
  33. httpd x86_64 2.2.15-60.el6.centos.5 updates 836 k
  34. httpd-tools x86_64 2.2.15-60.el6.centos.5 updates 80 k
  35. perl-Git noarch 1.7.1-9.el6_9 updates 29 k
  36. TransactionSummary
  37. =================================================================================================
  38. Upgrade4Package(s)
  39. Total download size:5.5 M
  40. Isthis ok [y/N]: n

你会发现 git 包可以被升级,那我们就用它来实验吧。运行下面命令获得软件包的版本信息(当前安装的版本和可以升级的版本)。

  1. #yumlistgit
  2. Loaded plugins: fastestmirror, security
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. * epel: mirror.csclub.uwaterloo.ca
  6. InstalledPackages
  7. git.x86_64 1.7.1-8.el6@base
  8. AvailablePackages
  9. git.x86_64 1.7.1-9.el6_9 updates

运行下面命令来将 git 从 1.7.1-8 升级到 1.7.1-9

  1. #yum update git
  2. Loaded plugins: fastestmirror, presto
  3. Setting up UpdateProcess
  4. Loading mirror speeds from cached hostfile
  5. * base: repos.lax.quadranet.com
  6. * epel: Fedora.mirrors.pair.com
  7. * extras: mirrors.seas.harvard.edu
  8. * updates: mirror.sesp.northwestern.edu
  9. ResolvingDependencies
  10. -->Running transaction check
  11. --->Packagegit.x86_64 0:1.7.1-8.el6 will be updated
  12. -->ProcessingDependency:git=1.7.1-8.el6forpackage: perl-Git-1.7.1-8.el6.noarch
  13. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be an update
  14. -->Running transaction check
  15. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be updated
  16. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be an update
  17. -->FinishedDependencyResolution
  18. DependenciesResolved
  19. =================================================================================================
  20. PackageArchVersionRepositorySize
  21. =================================================================================================
  22. Updating:
  23. git x86_64 1.7.1-9.el6_9 updates 4.6 M
  24. Updatingfor dependencies:
  25. perl-Git noarch 1.7.1-9.el6_9 updates 29 k
  26. TransactionSummary
  27. =================================================================================================
  28. Upgrade2Package(s)
  29. Total download size:4.6 M
  30. Isthis ok [y/N]: y
  31. DownloadingPackages:
  32. Setting up and reading Presto delta metadata
  33. Processing delta metadata
  34. Package(s) data still to download:4.6 M
  35. (1/2):git-1.7.1-9.el6_9.x86_64.rpm |4.6 MB 00:00
  36. (2/2): perl-Git-1.7.1-9.el6_9.noarch.rpm |29 kB 00:00
  37. -------------------------------------------------------------------------------------------------
  38. Total5.8 MB/|4.6 MB 00:00
  39. Running rpm_check_debug
  40. RunningTransactionTest
  41. TransactionTestSucceeded
  42. RunningTransaction
  43. Updating: perl-Git-1.7.1-9.el6_9.noarch1/4
  44. Updating:git-1.7.1-9.el6_9.x86_64 2/4
  45. Cleanup: perl-Git-1.7.1-8.el6.noarch3/4
  46. Cleanup:git-1.7.1-8.el6.x86_64 4/4
  47. Verifying:git-1.7.1-9.el6_9.x86_64 1/4
  48. Verifying: perl-Git-1.7.1-9.el6_9.noarch2/4
  49. Verifying:git-1.7.1-8.el6.x86_64 3/4
  50. Verifying: perl-Git-1.7.1-8.el6.noarch4/4
  51. Updated:
  52. git.x86_64 0:1.7.1-9.el6_9
  53. DependencyUpdated:
  54. perl-Git.noarch 0:1.7.1-9.el6_9
  55. Complete!

验证升级后的 git 版本.

  1. #yumlistgit
  2. InstalledPackages
  3. git.x86_64 1.7.1-9.el6_9@updates
  4. # rpm -git
  5. git-1.7.1-9.el6_9.x86_64

现在我们成功升级这个软件包,可以对它进行回滚了。步骤如下。

 

使用 YUM history 命令回滚升级操作

首先,使用下面命令获取 yum 操作的 id。下面的输出很清晰地列出了所有需要的信息,例如操作 id、谁做的这个操作(用户名)、操作日期和时间、操作的动作(安装还是升级)、操作影响的包数量。

  1. #yum history
  2. #yum history list all
  3. Loaded plugins: fastestmirror, presto
  4. ID |Login user |Dateandtime|Action(s)|Altered
  5. -------------------------------------------------------------------------------
  6. 13| root |2017-08-1813:30|Update|2
  7. 12| root |2017-08-1007:46|Install|1
  8. 11| root |2017-07-2817:10| E, I, U |28 EE
  9. 10| root |2017-04-2109:16| E, I, U |162 EE
  10. 9| root |2017-02-0917:09| E, I, U |20 EE
  11. 8| root |2017-02-0210:45|Install|1
  12. 7| root |2016-12-1506:48|Update|1
  13. 6| root |2016-12-1506:43|Install|1
  14. 5| root |2016-12-0210:28| E, I, U |23 EE
  15. 4| root |2016-10-2805:37| E, I, U |13 EE
  16. 3| root |2016-10-1812:53|Install|1
  17. 2| root |2016-09-3010:28| E, I, U |31 EE
  18. 1| root |2016-07-2611:40| E, I, U |160 EE

上面命令显示有两个包受到了影响,因为 git 还升级了它的依赖包 perl-Git。 运行下面命令来查看关于操作的详细信息。

  1. #yum history info13
  2. Loaded plugins: fastestmirror, presto
  3. Transaction ID :13
  4. Begintime:FriAug1813:30:522017
  5. Begin rpmdb :420:f5c5f9184f44cf317de64d3a35199e894ad71188
  6. Endtime:13:30:542017(2 seconds)
  7. End rpmdb :420:d04a95c25d4526ef87598f0dcaec66d3f99b98d4
  8. User: root
  9. Return-Code:Success
  10. CommandLine: update git
  11. Transaction performed with:
  12. Installed rpm-4.8.0-55.el6.x86_64 @base
  13. Installedyum-3.2.29-81.el6.centos.noarch @base
  14. Installedyum-plugin-fastestmirror-1.1.30-40.el6.noarch@base
  15. Installedyum-presto-0.6.2-1.el6.noarch@anaconda-CentOS-201207061011.x86_64/6.3
  16. PackagesAltered:
  17. Updatedgit-1.7.1-8.el6.x86_64 @base
  18. Update1.7.1-9.el6_9.x86_64 @updates
  19. Updated perl-Git-1.7.1-8.el6.noarch@base
  20. Update1.7.1-9.el6_9.noarch@updates
  21. history info

运行下面命令来回滚 git 包到上一个版本。

  1. #yum history undo 13
  2. Loaded plugins: fastestmirror, presto
  3. Undoing transaction 53,fromFriAug1813:30:522017
  4. Updatedgit-1.7.1-8.el6.x86_64 @base
  5. Update1.7.1-9.el6_9.x86_64 @updates
  6. Updated perl-Git-1.7.1-8.el6.noarch@base
  7. Update1.7.1-9.el6_9.noarch@updates
  8. Loading mirror speeds from cached hostfile
  9. * base: repos.lax.quadranet.com
  10. * epel: fedora.mirrors.pair.com
  11. * extras: repo1.dal.innoscale.net
  12. * updates: mirror.vtti.vt.edu
  13. ResolvingDependencies
  14. -->Running transaction check
  15. --->Packagegit.x86_64 0:1.7.1-8.el6 will be a downgrade
  16. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be erased
  17. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be a downgrade
  18. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be erased
  19. -->FinishedDependencyResolution
  20. DependenciesResolved
  21. =================================================================================================
  22. PackageArchVersionRepositorySize
  23. =================================================================================================
  24. Downgrading:
  25. git x86_64 1.7.1-8.el6 base 4.6 M
  26. perl-Git noarch 1.7.1-8.el6 base 29 k
  27. TransactionSummary
  28. =================================================================================================
  29. Downgrade2Package(s)
  30. Total download size:4.6 M
  31. Isthis ok [y/N]: y
  32. DownloadingPackages:
  33. Setting up and reading Presto delta metadata
  34. Processing delta metadata
  35. Package(s) data still to download:4.6 M
  36. (1/2):git-1.7.1-8.el6.x86_64.rpm |4.6 MB 00:00
  37. (2/2): perl-Git-1.7.1-8.el6.noarch.rpm |29 kB 00:00
  38. -------------------------------------------------------------------------------------------------
  39. Total3.4 MB/|4.6 MB 00:01
  40. Running rpm_check_debug
  41. RunningTransactionTest
  42. TransactionTestSucceeded
  43. RunningTransaction
  44. Installing: perl-Git-1.7.1-8.el6.noarch1/4
  45. Installing:git-1.7.1-8.el6.x86_64 2/4
  46. Cleanup: perl-Git-1.7.1-9.el6_9.noarch3/4
  47. Cleanup:git-1.7.1-9.el6_9.x86_64 4/4
  48. Verifying:git-1.7.1-8.el6.x86_64 1/4
  49. Verifying: perl-Git-1.7.1-8.el6.noarch2/4
  50. Verifying:git-1.7.1-9.el6_9.x86_64 3/4
  51. Verifying: perl-Git-1.7.1-9.el6_9.noarch4/4
  52. Removed:
  53. git.x86_64 0:1.7.1-9.el6_9 perl-Git.noarch 0:1.7.1-9.el6_9
  54. Installed:
  55. git.x86_64 0:1.7.1-8.el6 perl-Git.noarch 0:1.7.1-8.el6
  56. Complete!

回滚后,使用下面命令来检查降级包的版本。

  1. #yumlistgit
  2. # rpm -git
  3. git-1.7.1-8.el6.x86_64

 

使用YUM downgrade 命令回滚升级

此外,我们也可以使用 YUM downgrade 命令回滚升级。

  1. #yum downgrade git-1.7.1-8.el6 perl-Git-1.7.1-8.el6
  2. Loaded plugins: search-disabled-repos, security, ulninfo
  3. Setting up DowngradeProcess
  4. ResolvingDependencies
  5. -->Running transaction check
  6. --->Packagegit.x86_64 0:1.7.1-8.el6 will be a downgrade
  7. --->Packagegit.x86_64 0:1.7.1-9.el6_9 will be erased
  8. --->Package perl-Git.noarch 0:1.7.1-8.el6 will be a downgrade
  9. --->Package perl-Git.noarch 0:1.7.1-9.el6_9 will be erased
  10. -->FinishedDependencyResolution
  11. DependenciesResolved
  12. =================================================================================================
  13. PackageArchVersionRepositorySize
  14. =================================================================================================
  15. Downgrading:
  16. git x86_64 1.7.1-8.el6 base 4.6 M
  17. perl-Git noarch 1.7.1-8.el6 base 29 k
  18. TransactionSummary
  19. =================================================================================================
  20. Downgrade2Package(s)
  21. Total download size:4.6 M
  22. Isthis ok [y/N]: y
  23. DownloadingPackages:
  24. (1/2):git-1.7.1-8.el6.x86_64.rpm |4.6 MB 00:00
  25. (2/2): perl-Git-1.7.1-8.el6.noarch.rpm |28 kB 00:00
  26. -------------------------------------------------------------------------------------------------
  27. Total3.7 MB/|4.6 MB 00:01
  28. Running rpm_check_debug
  29. RunningTransactionTest
  30. TransactionTestSucceeded
  31. RunningTransaction
  32. Installing: perl-Git-1.7.1-8.el6.noarch1/4
  33. Installing:git-1.7.1-8.el6.x86_64 2/4
  34. Cleanup: perl-Git-1.7.1-9.el6_9.noarch3/4
  35. Cleanup:git-1.7.1-9.el6_9.x86_64 4/4
  36. Verifying:git-1.7.1-8.el6.x86_64 1/4
  37. Verifying: perl-Git-1.7.1-8.el6.noarch2/4
  38. Verifying:git-1.7.1-9.el6_9.x86_64 3/4
  39. Verifying: perl-Git-1.7.1-9.el6_9.noarch4/4
  40. Removed:
  41. git.x86_64 0:1.7.1-9.el6_9 perl-Git.noarch 0:1.7.1-9.el6_9
  42. Installed:
  43. git.x86_64 0:1.7.1-8.el6 perl-Git.noarch 0:1.7.1-8.el6
  44. Complete!

注意: 你也需要降级依赖包,否则它会删掉当前版本的依赖包而不是对依赖包做降级,因为 downgrade 命令无法处理依赖关系。

 

至于 Fedora 用户

命令是一样的,只需要将包管理器名称从 yum 改成 dnf 就行了。

  1. # dnf listgit
  2. # dnf history
  3. # dnf history info
  4. # dnf history undo
  5. # dnf listgit
  6. # dnf downgrade git-1.7.1-8.el6 perl-Git-1.7.1-8.el6
TAGS:
1月 30th, 2018

Ubuntu 将Python从默认的2.7升级到3.* 版本(建议使用原系统Python版本进行Python开发)

因为Ubuntu很多底层采用的是Python2.*,Python3和Python2是互相不兼容的,所以此时不能卸载Python2,需要将默认Python的指向Python3。

先刷新源 sudo apt-get update

然后更新系统 sudo apt-get dist-upgrade就行了

在ubuntu 的终端中用代码下载最新的Python

sudo apt-get install python3

刚才下载的Python程序被安装在usr/local/lib/python3.5 中

cd /usr/local/lib

ls -l

pwd

root@linuxidc.com:~# cd /usr/local/lib
root@linuxidc.com:/usr/local/lib# ls -l
总用量 8
drwxrwsr-x 4 root staff 4096 12月 27 19:55 python2.7
drwxrwsr-x 3 root staff 4096 4月  12  2017 python3.5
root@linuxidc.com:/usr/local/lib# pwd
/usr/local/lib
root@linuxidc.com:/usr/local/lib#

我们先备份 sudo cp /usr/bin/python /usr/bin/python_bak

然后用命令删除usr/bin/目录下的默认python link文件

run24pro@linuxidc.com:/usr/local/lib$ cd /usr/local/lib
run24pro@linuxidc.com:/usr/local/lib$ cd /usr/bin/
run24pro@linuxidc.com:/usr/bin$ sudo cp /usr/bin/python /usr/bin/python_bak
run24pro@linuxidc.com:/usr/bin$ rm -rf python
rm: 无法删除’python’: 权限不够
run24pro@linuxidc.com:/usr/bin$ sudo -i
root@linuxidc.com:~# rm -rf python
root@linuxidc.com:~#

给系统默认python编译器建立新的连接

ln -s /usr/bin/python3.5 /usr/bin/python 注:如果要换回python2.7 先删除link然后这样 ln -s /usr/bin/python2.7 /usr/bin/python

run24pro@linuxidc.com:/usr/bin$ sudo -i
root@linuxidc.com:~# rm -rf python
root@linuxidc.com:~# cd /usr/bin/
root@linuxidc.com:/usr/bin# ln -s /usr/bin/python3.5 /usr/bin/python
ln: 无法创建符号链接’/usr/bin/python’: 文件已存在
root@linuxidc.com:/usr/bin# ln -s /usr/bin/python3.5 /usr/bin/python
ln: 无法创建符号链接’/usr/bin/python’: 文件已存在
root@linuxidc.com:/usr/bin# python
Python 2.7.13 (default, Nov 23 2017, 15:37:09)
[GCC 6.3.0 20170406] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> quit()
root@linuxidc.com:/usr/bin# rm -rf python
root@linuxidc.com:/usr/bin# ln -s /usr/bin/python3.5 /usr/bin/python
root@linuxidc.com:/usr/bin# python
Python 3.5.3 (default, Nov 23 2017, 11:34:05)
[GCC 6.3.0 20170406] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

输入 python

root@linuxidc.com:/usr/bin# python
Python 3.5.3 (default, Nov 23 2017, 11:34:05)
[GCC 6.3.0 20170406] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

成功!

如果遇到其它问题,需要修复的话,重新下载一下就好。

sudo apt-get install –reinstall python-minimal
sudo apt-get install –reinstall python2.7

注:

如果用的是python3.5,但如果修复后,之前下的pip,django,还有其它都是在python3对应的情况下下的,会出一些问题。因为不兼容。

这样的话,建议还是重装系统,然后使用python2.7,不要升级,以后就安装相对应的版本软件。这样就不会出现不兼容的问题。

TAGS: