bash shell命令学习之软件安装篇

本博客内容来自《Linux命令行与shell脚本编程大全》第九章

目录

1、包管理基础

2、基于Debian的系统

用aptitude管理软件包

用aptitude安装软件包

用aptitude更新软件

用aptitude卸载软件

aptitude仓库

3、基于Red Hat的系统

yum命令

列出已安装包

安装软件

更新软件

卸载软件

处理损坏的包依赖

软件仓库

4、从源码安装


1、包管理基础

包管理系统PMS利用数据库来记录:

Linux系统上已安装软件包

每个包安装了什么文件

每个已经安装软件包的版本

软件包存储在服务器上,可以利用本地Linux系统上的PMS工具通过互联网访问。这些服务器称为仓库。

Linux中广泛使用的两种PMS基础工具是dpkg和rpm。

基于Debian的发行版(如Ubuntu和Linux mint)使用dpkg

基于Red Hat的发行版使用rpm命令

2、基于Debian的系统

dpkg命令是基于Debian系PMS工具的核心,包含在这个PMS中的其他工具有:

apt-get

apt-cache

aptitude

aptitude工具本质上是apt工具和dpkg的前端。dpkg是软件包管理系统工具,aptitude是完整的软件包管理系统。

用aptitude管理软件包

查看已安装软件包,只需要输入aptitude回车即可。如果只想查看某个软件:

aptitude show package_name

aptitude show mysql-client

查看所有跟某个特定软件包相关的所有文件列表:

dpkg -L package_name

可以查找某个特定文件属于哪个软件包:使用绝对文件路径

dpkg --search absolute_file_name

用aptitude安装软件包

搜索软件

aptitude search package_name

安装软件

aptitude install package_name

用aptitude更新软件

更新系统上所有软件包:

aptitude safe-upgrade

用aptitude卸载软件

只想删除软件包而不删除数据和配置文件,使用remove

aptitude remove package_name

删除软件包和相关数据与配置:

aptitude purge package_name

aptitude仓库

默认仓库位置为/etc/apt/sources.list

cat /etc/apt/souces.list

里面以下面的结构来指定仓库源:

deb (or deb-src) address distribution_name package_type_list

deb或deb-src的值表明软件包的类型,deb说明已编译,deb-src说明是源代码的源。address是软件仓库的web地址,distribution_name是发行版本的名称,package_type_list表明仓库里面有什么类型的包。

3、基于Red Hat的系统

yum命令

  • 列出已安装包

[root@izwz9194nuv8g0cwqfqsh3z ~]# yum list installed
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
GeoIP.x86_64                                       1.5.0-13.el7                                                                      @base      
NetworkManager.x86_64                      1:1.12.0-8.el7_6                                                              @updates

......

查看某个包详细信息:

[root@izwz9194nuv8g0cwqfqsh3z ~]# yum list xterm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
xterm.x86_64                 295-3.el7                                         base

查看该包是否安装:

[root@izwz9194nuv8g0cwqfqsh3z ~]# yum list installed xterm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Error: No matching Packages to list

查看某个特定文件属于哪个软件包:

[root@izwz9194nuv8g0cwqfqsh3z etc]# yum provides /etc/yum.conf 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
yum-3.4.3-161.el7.centos.noarch : RPM package installer/updater/manager
Repo        : base
Matched from:
Filename    : /etc/yum.conf

yum-3.4.3-161.el7.centos.noarch : RPM package installer/updater/manager
Repo        : @base
Matched from:
Filename    : /etc/yum.conf

  • 安装软件

yum install package_name

也可以手动下载rpm安装文件并用yum安装,即本地安装:

yum localinstall package_name.rpm

  • 更新软件

列出所有已安装包的可用更新:

[root@izwz9194nuv8g0cwqfqsh3z etc]# yum list updates

更新软件包:

yum update package_name

更新所有:

yum update

  • 卸载软件

只删除软件包,保留其他文件:

yum remove package_name

删除软件与其他所有文件:

yum erase package_name

  • 处理损坏的包依赖

在安装多个软件包时,某个包的软件依赖关系可能被另一个包的安装覆盖掉,这就是损坏的包依赖关系。

先尝试用以下命令:

yum clean all

然后用yum命令的update选项。

如果上述不行,再尝试:

yum deplist package_name

该命令显示了所有包的库依赖关系以及什么软件可以提供这些库依赖关系,缺啥补啥即可。以docker为例:

[root@izwz9194nuv8g0cwqfqsh3z etc]# yum deplist docker
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
package: docker.x86_64 2:1.13.1-91.git07f3374.el7.centos
  dependency: /bin/sh
   provider: bash.x86_64 4.2.46-31.el7
  dependency: docker-client = 2:1.13.1-91.git07f3374.el7.centos
   provider: docker-client.x86_64 2:1.13.1-91.git07f3374.el7.centos
  dependency: docker-common = 2:1.13.1-91.git07f3374.el7.centos
   provider: docker-common.x86_64 2:1.13.1-91.git07f3374.el7.centos
  dependency: libassuan.so.0()(64bit)
   provider: libassuan.x86_64 2.1.0-3.el7
  dependency: libaudit.so.1()(64bit)
   provider: audit-libs.x86_64 2.8.4-4.el7
  dependency: libc.so.6(GLIBC_2.17)(64bit)
   provider: glibc.x86_64 2.17-260.el7_6.3
  dependency: libcrypto.so.10()(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-16.el7
  dependency: libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-16.el7
  dependency: libcrypto.so.10(libcrypto.so.10)(64bit)
   provider: openssl-libs.x86_64 1:1.0.2k-16.el7
  dependency: libdevmapper.so.1.02()(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.149-10.el7_6.3
  dependency: libdevmapper.so.1.02(Base)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.149-10.el7_6.3
  dependency: libdevmapper.so.1.02(DM_1_02_97)(64bit)
   provider: device-mapper-libs.x86_64 7:1.02.149-10.el7_6.3
  dependency: libdl.so.2()(64bit)
   provider: glibc.x86_64 2.17-260.el7_6.3
  dependency: libgpg-error.so.0()(64bit)
   provider: libgpg-error.x86_64 1.12-3.el7
  dependency: libgpgme.so.11()(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  dependency: libgpgme.so.11(GPGME_1.0)(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  dependency: libgpgme.so.11(GPGME_1.1)(64bit)
   provider: gpgme.x86_64 1.3.2-5.el7
  dependency: libpthread.so.0()(64bit)
   provider: glibc.x86_64 2.17-260.el7_6.3
  dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
   provider: glibc.x86_64 2.17-260.el7_6.3
  dependency: libpthread.so.0(GLIBC_2.3.2)(64bit)
   provider: glibc.x86_64 2.17-260.el7_6.3
  dependency: libseccomp.so.2()(64bit)
   provider: libseccomp.x86_64 2.3.1-3.el7
  dependency: libsystemd.so.0()(64bit)
   provider: systemd-libs.x86_64 219-62.el7_6.5
  dependency: libsystemd.so.0(LIBSYSTEMD_209)(64bit)
   provider: systemd-libs.x86_64 219-62.el7_6.5
  dependency: rtld(GNU_HASH)
   provider: glibc.x86_64 2.17-260.el7_6.3
   provider: glibc.i686 2.17-260.el7_6.3
  dependency: subscription-manager-rhsm-certificates
   provider: subscription-manager-rhsm-certificates.x86_64 1.21.10-3.el7.centos
  dependency: systemd
   provider: systemd.x86_64 219-62.el7_6.5

如果还未解决问题,尝试:

yum update --skip-broken

忽略依赖关系损坏的那个包。

  • 软件仓库

要想知道你现在正在从哪些仓库中获取软件,输入如下命令:

[root@izwz9194nuv8g0cwqfqsh3z etc]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                  repo name                                                              status
base/7/x86_64                     CentOS-7                                                               10,019
dockerrepo                           Docker Repository                                                 110
epel/x86_64                         Extra Packages for Enterprise Linux 7 - x86_64    12,907
extras/7/x86_64                   CentOS-7                                                                371
updates/7/x86_64                CentOS-7                                                               1,098
repolist: 24,505

如果仓库中没有需要的软件,可以编辑配置文件,这些文件位于/etc/yum.repos.d目录:

[root@izwz9194nuv8g0cwqfqsh3z etc]# cd /etc/yum.repos.d
[root@izwz9194nuv8g0cwqfqsh3z yum.repos.d]# ll
total 40
-rw-r--r-- 1 root root  675 Feb 20 14:16 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23 21:16 CentOS-CR.repo
-rw-r--r-- 1 root root  649 Nov 23 21:16 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  314 Nov 23 21:16 CentOS-fasttrack.repo
-rw-r--r-- 1 root root  630 Nov 23 21:16 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23 21:16 CentOS-Sources.repo
-rw-r--r-- 1 root root 5701 Nov 23 21:16 CentOS-Vault.repo
-rw-r--r-- 1 root root  155 Feb 24 10:25 docker.repo
-rw-r--r-- 1 root root  230 Feb 20 14:16 epel.repo
[root@izwz9194nuv8g0cwqfqsh3z yum.repos.d]# cat docker.repo 
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

4、从源码安装

第一步:下载.tar.gz源码压缩包

第二步:解压缩

tar -zxvf ***.tar.gz

现在文件以及在***目录中,进入该目录

第三步:参考README文件,按照指示步骤完成安装。

第四步:使用make命令构建各种二进制文件,该命令会编译源码,然后链接器会为这个包创建最终的可执行文件

第五步:make install命令安装即可。

你可能感兴趣的:(Linux之路)