pacman安装软件包时文件冲突的解决方法

arhclinux下用pacman安装docker-compose的时候,报以下错误(截取了一部分):

 

在archlinux的wiki中(见参考部分),查到问题的原因:pacman安装时发现文件冲突,也就是文件安装前已经存在了。

所以先分两步走排查原因,一种是pacman安装,另一种是非pacman安装。

如果是pacman安装的,自然是pacman依赖没做好,可以通过pacman -Qo来查询文件所属的软件包:

返回如果类似这样:

那就是pacman的问题了,明明安装过了却没记录下来,就需要往上报bug了。

但是如果是这样的:

那就是我们不知道什么时候自己安装上去的,把这个文件夹先做个备份转移走。

根据之前的错误提示,挨个排查(我的例子中就是urllib3和request),如果都是非pacman以来,就先都备份,然后重新执行pacman的安装应该就可以了。

参考:Archlinux Pacman

作者使用的pacman版本:Pacman v5.1.0 - libalpm v11.0.0

linux内核同步方法-原子操作

转自:edsionte's TechBlog

原子操作

原子操作用于执行轻量级、仅执行一次的操作,比如修改计数器,某些条件下的增加值或设置位等。原子操作指的是指令以原子的方式执行。之所以用原子来修饰这种操作方式是因为它们均不可再分。也就是说,原子操作要么一次性执行完毕,要么就不执行,这些操作的执行过程是不可被打断的。原子操作的具体实现取决于体系架构,以下代码如无特别声明,均来自linux/arch/x86/include/asm/atomic.h中

内核中提供了两组原子操作的接口:原子整形操作和原子位操作。前者是一组对整形数据的操作,后者则是针对单独的位操作。通过上面的叙述我们可以知道,这写操作接口完成的动作都是原子的。

继续阅读

Shell编程中的几个命令

介绍几个命令:echo, eval, exec, export, readonly, read, shift, wait和点(.)。

1.echo

格式:echo args

功能:在屏幕上显示出由args指定的字串。

2.eval

格式:eval args

功能:命令eval的功能是將参数(args)读入 C shell 中,然后在加以执行。例如:

vcom 是 'ls -l ; date'。当我们來执行“$vocm”,会出现错误信息ls: invalid option -- ;”及“try 'ls --help' for more infomation”。原因是 C shell 在语法解析中无法理解特殊符号所造成的。符号“;”和命令 date 被理解成是命令 ls -l 后的“文件名称”。所以才会有“ls: invalid option -- ;”。命令eval 便是用來解决这种情況:

其实在作法上使用命令 eval 便相当于以下的用法:

如果你是在 C shell 下,你也可使用以下的方式:

另外在使用命令 eval 上也有技巧,看一互換的技巧:

3.exec

格式:exec命令参数

功能:当Shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程(也就是最初的Shell)就终止了,所以Shell程序中exec后面的语句将不再被执行。

继续阅读

Linux chmod命令

之前用chmod命令一直也没注意chmod go-w xxx, chmod ugo+x xxx这类命令的意义,只是简单的766、+x、+w之类,所以特意把这篇文章转过来给备忘。

转自http://blog.csdn.net/linuxgroup

chmod 命令

用途
更改文件方式。

语法

要用符号更改文件方式
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }

要用数字更改文件方式
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }

继续阅读