我的软件装哪儿去了

使用 linux 的过程中,我们会安装许多的软件/命令/工具,linux 安装软件十分方便,在 CentOS 下,通过 yum 命令就可以完成软件及其依赖的安装。但是,有时候你可能会遇到这种情况:软件安装完了,但是却不知道与它相关的目录都在哪儿。下文这些知识可能会帮上你。

常见目录介绍

  • / 根目录
  • /root root 用户的家目录
  • /home/username 普通用户的家目录
  • /etc 配置文件目录
  • /bin 命令目录
  • /sbin 管理命令目录
  • /usr/bin /usr/sbin 系统预装的其他命令

软件安装

包管理器是方便软件安装、卸载,解决软件依赖关系的重要工具。CentOS、RedHat 使用 yum 包管理器,软件安装包的格式为 rpm 。Debian、Ubuntu 使用 apt 包管理器,软件安装包格式为 deb 。
rpm 包格式:vim-common-7.4.10-5.el7.x86_64.rpm ,其中软件名称为 vim-common ,软件版本为 7.4.10-5,系统版本为 el7 ,平台为 x86_64。

rpm 命令常用参数

  • -q 查询软件包
  • -i 安装软件包
  • -e 卸载软件包

rpm 包的问题:

  • 需要自己解决依赖关系
  • 软件包来源不可靠

yum 命令和仓库很好的解决了以上问题,参见yum 服务介绍

因为一些特殊原因(你懂得,日常使用的时候,我们需要切换源

  1. 备份
1
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
1
2
3
4
5
6
7
8
9
10
11
CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  1. 之后运行yum makecache生成缓存

查询某个包所有的安装文件

以我安装的 mariadb 为例,使用 -ql 参数就可以找到并 List files in package

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@localhost ~]# rpm -ql mariadb
/etc/my.cnf.d/client.cnf
/usr/bin/aria_chk
/usr/bin/aria_dump_log
/usr/bin/aria_ftdump
/usr/bin/aria_pack
/usr/bin/aria_read_log
/usr/bin/msql2mysql
/usr/bin/my_print_defaults
/usr/bin/mysql
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mariadb-5.5.64
/usr/share/doc/mariadb-5.5.64/COPYING
/usr/share/doc/mariadb-5.5.64/COPYING.Google
/usr/share/doc/mariadb-5.5.64/COPYING.Percona
/usr/share/doc/mariadb-5.5.64/README
/usr/share/doc/mariadb-5.5.64/README.mysql-docs
/usr/share/doc/mariadb-5.5.64/README.mysql-license
/usr/share/man/man1/aria_chk.1.gz
/usr/share/man/man1/aria_dump_log.1.gz
/usr/share/man/man1/aria_ftdump.1.gz
/usr/share/man/man1/aria_pack.1.gz
/usr/share/man/man1/aria_read_log.1.gz
/usr/share/man/man1/my_print_defaults.1.gz
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_find_rows.1.gz
/usr/share/man/man1/mysql_waitpid.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz

查看命令所在位置

which - shows the full path of (shell) commands.
whereis - locate the binary, source, and manual page files for a command

yum 安装与源码编译安装实际使用区别

总结一些我实际生产使用的区别:

  1. yum安装不是说不行,都行,各有千秋。
  2. yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下。
  3. yum安装说的模块定制不能自行解决,这个是个痛点,但话说我们用的模块基本也够了,即便编译安装的同样也是这些模块,有何区别。
  4. 源码编译安装好处在于模块自定义,文件几种,好迁移,但也有缺点,比如编译时间长,环境变量要自行设置,开机启动要自行解决。
  5. 其实发觉yum安装和源码编译安装同样会出现依赖的问题,好在现在网络发达,基本的错误都能找到方法解决。
  6. yum其实本质是rpm包的前端,所有使用yum安装后要查询安装后的内容时,使用rpm的相关命令即可解决。