解决 CentOS 7 报错: /var/run/yum.pid 已被锁定

报错描述

今天在使 yum 命令安装软件的时候遇到了如下报错:

/var/run/yum.pid 已被锁定,PID 为 3355 的另一个程序正在运行。
Another app is currently holding the yum lock; waiting for it to exit...
  另一个应用程序是:PackageKit
    内存:155 M RSS (717 MB VSZ)
    已启动: Sun Apr 28 15:01:12 2019 - 04:40之前
    状态  :运行中,进程ID:3355

报错截图如下:

图 1
图 1

解决方案

运行下面的命令, 强制结束 yum 进程即可:

rm -f /var/run/yum.pid

另外, 如果担心强制删除系统文件会引发难以预测的错误, 也可以尝试稍等一会(经过实测发现, 稍微等待一段时间后上述报错可能会自行消失)或者选择重启系统.

解决 CentOS 7 报错: “Repository base is listed more than once in the configuration”和”没有可用软件包 XXX”的问题

报错描述

我的 CentOS 7 的更新源使用的是直接从 163 镜像站上下载的更新源文件.

今天在使用 yum makecache 命令从更新服务器上把软件包的信息下载到本地缓存起来时遇到了如下报错:

Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration

报错截图如下:

图 1
图 1

而且在我使用 yum install htop 命令安装 htop 的时候, 还提示:

没有可用软件包 htop。
错误:无须任何处理

但是, 正常情况下 CentOS 7 的源里面应该是有 htop 这个软件包的, 可以直接使用 yum install htop 成功安装(我之前安装过).

上述问题的相关截图如下:

图 2

解决方案

分析上面的报错, 主要还是软件源文件出了问题, 于是我们先进入软件源配置文件所在的目录下:

cd /etc/yum.repos.d/

ls 查看一下, 回显如下:

[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo    CentOS-CR.repo         CentOS-Media.repo
CentOS-Base.repo         CentOS-Debuginfo.repo  CentOS-Sources.repo
CentOS-Base.repo.backup  CentOS-fasttrack.repo  CentOS-Vault.repo
[root@localhost yum.repos.d]#

从对报错内容的分析来看, 应该是软件源有重复(“listed more than once”), 所以这里我们尝试删除一些上面的软件源配置文件.
在删除之前, 先对 /etc/yum.repos.d/ 目录下的文件做一个整体的备份, 以便于尝试失败后的还原, 操作过程如下:
/etc/yum.repos.d/ 目录下的文件整体压缩成一个 .zip 文件:

zip centos7-repo.zip /etc/yum.repos.d/*

然后执行删除操作:

rm -rf CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo

之后把 CentOS7-Base-163.repo 中的内容复制进 CentOS-Base.repo:

cp -p CentOS7-Base-163.repo CentOS-Base.repo

最后删除 CentOS7-Base-163.repo:

rm -rf CentOS7-Base-163.repo

之后运行如下命令重建缓存, 没有再出现”Repository base is listed more than once in the configuration”的报错:

yum clean all
yum makecache

但是, 在我尝试使用 yum 命令安装软件时, 仍然遇到了”没有可用软件包 XXX”的报错, 如下:

[root@localhost yum.repos.d]# yum install htop
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
没有可用软件包 htop。
错误:无须任何处理

“没有可用软件包”说明在 YUM 源中没有对应的软件包(163 的源本身应该是没有问题的, 这是一个大家都常使用的 Linux 方面的国内软件源).
其实, 在 CentOS 和 RHEL 等操作系统中, 常使用的软件源不仅有 YUM, 还有 EPEL. EPEL 英文全称为:”Extra Packages for Enterprise Linux”. 直译为中文就是”用于企业 Linux 的额外软件包”. EPEL 是 Fedora 的一个项目, 有关该项目的官方说明可以在下面的链接中找到:

EPEL – Fedora Project Wiki

这里我摘录一段 Fedora 对 EPEL 项目的说明:

企业版 Linux 附加软件包(以下简称 EPEL)是一个 Fedora 特别兴趣小组,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集,面向的对象包括但不限于 红帽企业版 Linux (RHEL)、 CentOS、Scientific Linux (SL)、Oracle Linux (OL) 。

EPEL 的软件包通常不会与企业版 Linux 官方源中的软件包发生冲突,或者互相替换文件。EPEL 项目与 Fedora 基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。

https://fedoraproject.org/wiki/EPEL/zh-cn

在 CentOS 7 中安装 EPEL 源的命令如下:

yum install -y epel-release

安装完成后, 在 /etc/yum.repos.d 目录下会多出来下面两个文件, 这两个文件就是 EPEL 源的配置文件:

  • epel.repo
  • epel-testing.repo

查看 epel.repo 文件中的内容可以发现其中软件源的地址指向的是 https://mirrors.fedoraproject.org/, epel-testing.repo 这个文件中的软件源的地址也是指向的是 https://mirrors.fedoraproject.org/. 为了加快软件安装速度, 我们可以将其更改为国内的 EPEL 源, 操作步骤如下:

进入 /etc/yum.repos.d 目录, 下载阿里云 EPEL 源:

wget http://mirrors.aliyun.com/repo/epel-7.repo

备份 Fedora 官方提供的 EPEL 源配置文件:

cp -p epel.repo epel.repo.bak
cp -p epel-testing.repo epel-testing.repo.bak

删除 epel-testing.repo:

rm -rf epel-testing.repo

epel-7.repo 中的内容覆盖写入到原来的 epel.repo 文件中:

cp -p epel-7.repo epel.repo

删除 epel-7.repo 文件:

rm -rf epel-7.repo

重新生成缓存:

yum clean all
yum makecache

之后可以正常安装软件.

总结

遇到”Repository base is listed more than once in the configuration”的问题要考虑系统中是否存在重复的软件源, 遇到”没有可用软件包 XXX”的问题首先要确认要安装的软件包名称是否写对了, 例如安装 pip 的命令不是 yum install pip, 而是 yum install python-pip, 在此之后如果问题仍然存在就需要考虑当前系统中是否正确配置了 YUM 和 EPEL 两个软件源.

百度浏览器宣布 PC 端部分功能停止服务

百度浏览器于 2019 年 04 月 03 日发布公告称将于 2019 年 04 月 30 日对产品部分功能停止服务, 停止服务的产品包括桌面百度, 百度工具栏, 百度地址栏, 百度极速浏览器和 hao123 浏览器. 这些停止服务的产品将不再更新.

公告全文如下:

【公告】百度浏览器(PC)部分功能停止服务

尊敬的用户:
您好,由于部门业务调整,官方将于2019年04月30日对产品部分功能停止服务。相关的产品包括桌面百度、百度工具栏、百度地址栏、百度极速浏览器,hao123浏览器,产品将不再更新,基本功能本地仍可使用。相关事宜公告如下:
1、用户登录功能,已登录用户登录状态失效,但仍可本地保留用户基本信息(收藏夹、历史纪录、设置等),未登录用户将不提供服务;
2、积分商城将无法访问,不提供用户积分查询服务;
3、用户的设置信息、历史纪录、收藏夹云同步失效;
4、产品相关推荐内容消失,相关页面将不能访问,如:新建标签(newtab.baidu.com)、主页(0.baidu.com);
5、一切插件相关功能均不可用,已经安装插件的可能部分能够继续使用;
6、皮肤相关将保留简单样式,其它不可用;
由此带来的不便敬请谅解。感谢您的理解与支持!我们衷心期待您的继续支持和关注百度旗下更多优秀的产品!

2019年04月03日

来自: https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/notice_llq.html

公告截图如下:

图 1 百度浏览器(PC)部分功能停止服务的公告
图 1 百度浏览器(PC)部分功能停止服务的公告

目前输入百度浏览器的官网地址”https://liulanqi.baidu.com/”会跳转到”https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/notice_llq.html”并显示上述关于百度浏览器停止服务的公告.

“https://liulanqi.baidu.com/”到”https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/notice_llq.html”的跳转过程是使用 302 暂时性转移重定向实现的, 如图 2:

图 2 302 暂时重定向
图 2 302 暂时重定向

“gss0.bdstatic.com”是百度 CDN 的一个节点域名, 备案号为”京ICP证030173号-23”.

Ubuntu 19.04 国内更新源

2019年4月18日, Ubuntu 19.04 正式发布. Ubuntu 19.04 的 Codename 是”disco(迪斯科舞厅)”:

zkf@ubuntu:~$ lsb_release -c
Codename:    disco

为了方便国内用户使用最新版的 Ubuntu 19.04, 本文提供了 Ubuntu 19.04 的国内更新源以及更改更新源的完整步骤.

进入更新源文件所在目录:

cd /etc/apt/

备份原有更新源文件:

sudo cp -p sources.list sources.list.bak

编辑更新源文件:

sudo vi sources.list

写入如下国内更新源:

#阿里云源
deb http://mirrors.aliyun.com/ubuntu/ disco main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ disco main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ disco-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ disco-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ disco-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ disco-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ disco-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ disco-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ disco-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ disco-proposed main restricted universe multiverse

#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ disco main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ disco main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ disco-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ disco-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ disco-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ disco-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ disco-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ disco-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse

#163源
deb http://mirrors.163.com/ubuntu/ disco main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ disco-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ disco-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ disco-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ disco-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ disco main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ disco-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ disco-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ disco-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ disco-backports main restricted universe multiverse

#清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse

更新系统:

sudo apt-get update
sudo apt-get upgrade

拟定每年的 4 月 18 日为本站的”数据安全日”

就在刚刚过去的 4 月 18 日的下午, 我在使用 “tar” 命令对网站的文件进行打包备份时, 由于将 “tar” 命令后面的参数写反了, 导致网站文件发生错误, Web 服务器也发生故障, 进而使本站无法访问. 由于我在故障发生之前备份了数据库, 再加上本站大部分图片都存储在独立的图片服务器中, 因此我才得以在 4 月 19 日的下午将网站恢复并上线.

这次网站事故使我深刻意识到数据安全的重要性, 如果我没有数据库的备份文件, 那么很可能导致我投入很多精力维护的这个网站就此消失, 因此, 我计划将每年的 4 月 18 日定为本站的 “数据安全日”, 即惊醒自己, 也希望大家都能更加重视数据安全.

另外, 关于本次网站事故的发生过程与我的处理过程, 我会在之后写一篇博文详细回顾.

巴黎圣母院大火:世界文明的又一次劫难

法国当地时间 4 月 16 日(周一),位于巴黎市中心的巴黎圣母院发生火灾。根据有关报道,本次火灾造成巴黎圣母院三分二的塔顶被毁,但好在整体结构得以保存。

图 1 火焰笼罩中的巴黎圣母院,From LeLaisserPasserA38, https://zh.wikipedia.org/wiki/File:Incendie_Notre_Dame_de_Paris.jpg, 本文件采用知识共享署名-相同方式共享 4.0 国际许可协议授权。
图 1 火焰笼罩中的巴黎圣母院,From LeLaisserPasserA38, https://zh.wikipedia.org/wiki/File:Incendie_Notre_Dame_de_Paris.jpg, 本文件采用知识共享署名-相同方式共享 4.0 国际许可协议授权。

发生本次火灾之前的巴黎圣母院:

图 2 由Sanchezn - 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=3011138
图 2 由Sanchezn – 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=3011138

巴黎圣母院大约建造于 1163 年到 1250 年期间,全名为“巴黎圣母主教座堂 (Cathédrale Notre-Dame de Paris)”是一座哥特式建筑。
巴黎圣母院既是一座教堂,也是一个艺术品,例如在本次大火中被烧毁的尖塔和玫瑰花窗 (2019 年 4 月 17 日下午 16 时 10 分更新:据报道,法国官方确认三面玫瑰花窗均安全) 都具有极高的艺术价值。

巴黎圣母院的玫瑰花窗:

图 3 由Julie Anne Workman - 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=11590000
图 3 由Julie Anne Workman – 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=11590000

從蒙帕納斯大樓遠眺巴黎聖母院:

图 4 由Julie Anne Workman - 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=11590000
图 4 由Julie Anne Workman – 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=11590000

大火发生时,许多民众在塞纳河畔忍不住哭泣,还有人跪地祈祷。火灾发生当晚,一些人向着巴黎圣母院的方向合唱圣歌,寄托心中的悲痛。虽然巴黎圣母院不在中国,但是这种看着本国和本民族文明象征的珍宝被毁时的切肤之痛,中国人是有同感的。
巴黎圣母院还可以修缮重建,也许再过八百年之后,巴黎圣母院仍然是一座恢弘壮丽的建筑,继续向全世界慕名而来的游客讲述着法兰西文明的多姿多彩,但是,我们的圆明园却被永远地禁锢在一片废墟之中,千千万万生长在这片土地上的中国人再也没有可能去一睹这座园林的雄伟壮阔。是的,圆明园之所以被烧的一部分原因是当时的中国软弱无能,“落后就要挨打”是弱肉强食的历史铁律——直到今天仍然如此。
不过,我并不认同一部分人因为英法联军曾经火烧圆明园而对如今法国的遭遇落井下石,说这是“天道轮回”。
我们不能以一部分人在一段时间内的罪行作为衡量一个国家或民族的所有人在整个历史长河中的善恶。艺术和科学一样都是没有国界的,巴黎圣母院不仅仅是法国人的,也是全世界的,作为人类的一份子,我也不希望看到如同巴黎圣母院这样的人类文明的宝贵财富在烈火中毁于一旦,正如我同样不希望圆明园在烈火中毁于一旦一样。
中国的圆明园,法国的巴黎圣母院以及世界上其他国家和地区的珍贵文物都是人类先民的智慧结晶,代表着一个国家和民族的历史,也代表着人类文明。希望在未来,这样的文明劫难能够不再发生,无论是人类之间还是人类与人类文明之间,都需要相互爱护与包容。

圆明园大水法残迹:

图 5 来自颐园新居,https://zh.wikipedia.org/wiki/File:Yuanmingyuan_Ruins_of_Dashuifa_20120715.JPG, 本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。
图 5 来自颐园新居,https://zh.wikipedia.org/wiki/File:Yuanmingyuan_Ruins_of_Dashuifa_20120715.JPG, 本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。

圆明园海晏堂遗址正面喷水池(十二生肖人身兽首像所在地):

图 6 来自颐园新居,https://zh.wikipedia.org/wiki/File:Yuanmingyuan_Haiyantang_20130126.JPG, 本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。
图 6 来自颐园新居,https://zh.wikipedia.org/wiki/File:Yuanmingyuan_Haiyantang_20130126.JPG, 本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。图 6 来自颐园新居,https://zh.wikipedia.org/wiki/File:Yuanmingyuan_Haiyantang_20130126.JPG, 本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。