# 安装软件
安装软件的几种方式:
- 下载源代码包,手动编译出可执行文件,然后的操作同第二种方式。
- 需要安装编译工具,比如 gcc、make 等。
- 下载预编译包,将其中的库文件存放到 /usr/local 等目录下,将其中的可执行文件放到 /usr/local/bin 目录下。
- 可能还需要安装依赖库、初始化配置。
- 下载的预编译包不一定兼容本机运行。
- 使用包管理工具,可以方便的安装软件(并安装依赖库、初始化配置)、更新软件、卸载软件。
- RHEL、CentOS、Fedora 等 Linux 发行版采用 .rpm 格式的软件安装包,采用 yum 作为默认的包管理工具。
- Ubuntu 等 Linux 发行版采用 .deb 格式的软件安装包,采用 apt 作为默认的包管理工具。
# rpm
:(Red Hat Package Manager),一个包管理工具,其软件安装包的扩展名为 .rpm 。
- 命令:
rpm -iv <name>.rpm # 安装一个软件 -Uv <name>.rpm # 使用该 rpm 包升级某个已安装的软件 -e <name> # 卸载一个软件 -qa # 查看已安装的所有 rpm 包 -ql <name> # 查看某个包的安装位置
- 例如:卸载 proftpd-1.2.3.rpm 时,可以执行 rpm -e proftpd-1.2.3 或 rpm -e proftpd 。
- 访问网站 http://rpmfind.net/linux/RPM/ (opens new window) 可以搜索和下载常见的 rpm 包。
- 直接安装 rpm 包时,容易遇到缺少依赖库的问题,所以应该通过包管理工具 yum 来安装。
# yum
:(Yellowdog Update Modifier),一个包管理工具。
基于 rpm 工具,提供了更多功能,比如从软件仓库下载包,并自动安装其依赖包。
命令:
yum install <name>[-version] # 安装一个软件包,不指定版本则安装最新版本 -y # 在安装过程中遇到选项时都选择 yes --downloadonly --downloaddir=$PWD # 不安装,只是下载 rpm 包,包括所有依赖包,保存到当前目录 remove <name> # 卸载一个软件包 makecache # 从服务器获取软件包的最新版本列表 update # 根据 makecache 获得的版本列表,更新已安装的所有软件包 [name] # 只更新指定的软件包 list # 显示本地仓库和远程仓库中所有可用的软件包 search <name> # 在软件列表中查找某个软件包 info <name> # 查看软件包的信息 repolist # 显示已启用的软件包仓库 all # 显示所有软件包仓库 history # 查看 yum 的事务记录 info <事务 id> # 查看某次 yum 事务的详细信息 clean all # 清除 yum 缓存的软件包和 header
yum 工具是采用 Python2 开发的,因此不能卸载或升级 CentOS 系统自带的 Python2 。
/etc/yum.conf
的配置示例:[main] cachedir=/var/cache/yum/$basearch/$releasever # 一个目录,用于缓存下载的软件包 keepcache=0 # 安装软件包之后,是否保留其缓存 debuglevel=2 logfile=/var/log/yum.log exactarch=1 # 升级软件包时,是否只采用 CPU 架构一致的软件包 obsoletes=1 # 升级软件包时,是否启用过时处理逻辑 gpgcheck=1 # 是否根据 gpg 签名,检查下载的文件是否被篡改 plugins=1 # 是否启用插件 # installonlypkgs=xx,xx,xx # 指定一些软件包,只安装,不升级 # installonly_limit=5 # 限制 installonlypkgs 中每个软件包可安装的版本数 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release # 指定一个软件包,用于判断当前 Linux 发行版的版本 # reposdir=/etc/yum.repos.d/ # proxy=socks5://10.0.0.1:1080 # 使用代理
/etc/yum.repos.d/
目录下保存了一些 .repo 文件,记录了 yum 可用的仓库源。- 修改仓库源之后,要执行
yum makecache
才会生效。 - 一个 repo 文件中可以声明多个仓库源,每个仓库源的格式如下:
[epel] # 仓库源的唯一标识符 name=EPEL for redhat/centos $releasever - $basearch # 仓库源的名称描述 enabled=1 # 是否启用 baseurl=http://mirrors.tencentyun.com/epel/$releasever/$basearch/ # 基础链接 gpgcheck=1 # 是否检验文件 gpgkey=http://mirrors.tencentyun.com/epel/RPM-GPG-KEY-EPEL-7 # 如果检验文件,则需要指定公钥文件
- EPEL 是 Fedora 社区维护的仓库源,提供了常用的软件包。执行以下命令即可启用它:
yum install epel-release
- 例:下载阿里云的 repo 文件,使用阿里云的仓库源
curl http://mirrors.aliyun.com/repo/Centos-7.repo -o /etc/yum.repos.d/CentOS-7-aliyun.repo
- 修改仓库源之后,要执行
# dpkg
:(Debian Packager),一个包管理工具,其软件安装包的扩展名为 .deb 。
- 命令:
dpkg -i <name>.deb # 安装一个软件包 -r <name> # 删除一个软件包,但是保留其配置文件 -P <name> # 删除一个软件包,并且删除其配置文件 -l # 查看已安装的所有 deb 包 -L <name> # 查看某个包的安装位置
# apt
:(Advanced Package Tool),一个包管理工具。
- 基于 dpkg 工具,提供了更多功能,比如从软件仓库下载包,并自动安装其依赖包。
- Debian 8 于 2015 年发布,将默认的包管理工具从 apt-get 改为 apt ,进行了一些优化。两个命令的用法大部分相同。
- 命令:
apt install <name>[=version] # 安装一个软件包,不指定版本则安装最新版本 --no-install-recommends # 默认会自动安装 recommends 类型的依赖包,除非启用该选项 --install-suggests # 默认不会自动安装 suggests 类型的依赖包,除非启用该选项 remove <name> # 卸载一个软件包 update # 从服务器获取软件包的最新版本列表 upgrade # 根据 update 获得的版本列表,更新已安装的所有软件包 [name] # 只更新指定的软件包 list # 显示本地仓库和远程仓库中所有可用的软件包 search <name> # 在软件列表中查找某个软件包 show <name> # 查看软件包的信息
/etc/apt/sources.list
文件中记录了 apt 可用的仓库源。- 修改仓库源之后,要执行 apt update 才能生效。
- 例:下载腾讯云的 sources.list 文件,使用腾讯云的仓库源
curl http://mirrors.cloud.tencent.com/repo/ubuntu20_sources.list -o /etc/apt/sources.list
- 用 apt 安装一个软件包时,它可能依赖了其它软件包,分为以下几种类型:
- depends :该依赖包是必需的,会被 apt 自动安装。如果依赖包安装失败,则当前包也不能安装。
- recommends :该依赖包是推荐安装的,否则当前包可能缺少一些功能。
- suggests :该依赖包是可选的,通常是提供一些额外功能。
# 相关命令
# install
:该命令用于将一个文件拷贝到指定目录,并设置可执行权限。相当于 cp+chmod 命令。
- 用法:
install <src> <dst> -o <uid> # --owner ,设置文件所有者,默认为当前用户 -g <gid> # --group ,设置文件所有组,默认为当前用户组 -m <mode> # --mode ,设置文件权限,默认为 755
- 例:
install tmp.sh /usr/bin/