Linux软件包管理

Posted 出水芙蓉薇薇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux软件包管理相关的知识,希望对你有一定的参考价值。

     软件包就是将应用程序、配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便。suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。

一、编程语言

   1.系统级开发:

       c/c++:httpd、nginx

       golang:docker

   2.应用及开发

      java:hadoop、hbase

      Python:openstack

      per/ruby/php

二、程序包管理器

1. Linux程序包管理器,几个发行版本

     debian/Ubuntu:dpt、dpkg、deb

     redhat:rpm

     suse:rpm

 2. 获取程序包

    1)开源镜像站:

        http://mirrors.aliyun.com

        http://mirrors.sohu.com

        http://mirrors.163.com

    2)epel,提供centos众多额外的第三方包,可信任的第三方软件包组织

         如:http://mirrors.sohu.com/fedora-epel/7/x86_64/Packages/

                https://mirrors.aliyun.com/epel/7/x86_64/Packages/m/

 3. rpm命令     

     rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
     # i表示安装 v显示详细过程 h以进度条显示,每个#表示进度
     rpm -ivh filename.rpm 安装软件的命令格式
     rpm -Uvh filename.rpm 升级软件的命令格式
     rpm -e filename.rpm 卸载软件的命令格式
     rpm -qpi filename.rpm 查询软件描述信息的命令格式
     rpm -qpl filename.rpm 列出软件文件信息的命令格式
     rpm -qf filename 查询文件属于哪个 RPM 的命令格式  

   

 4.软件包依赖关系

    yum工具可以自动搜索依赖关系,并执行安装。rpm软件包在安装的时候,由作者定义依赖关系。

    一些自动解决依赖关系软件包管理器:

    yum:红帽系列rpm包管理工具

    apt-get:deb包管理工具

    zypper:suse的rpm包管理工具

    yum软件仓库可以根据用户的要求分析出所需要的软件包及其相关的依赖关系,然后自动从服务器上下载软件包并安装到系统。

    yum的基本工作机制:

        服务端:在服务器上存放了所有RPM软件包,然后以相关的功能区分析每个RPM文件的依赖关系,将这些数据记录成文件存放在服务器的某个特定目录内。

        客户端:如果需要安装某个软件,先下载服务器上面记录的依赖性关系文件,通过对服务器端下载的记录数据进行分析,然后取得所有相关软件,一次全部下载下来进行安装。

    yum仓库:存储了众多的软件包,以及相关的元数据文件

       文件服务器:ftp://        http://           nfs://          file://

    yum源的配置文件:/etc/yum.conf

    

     repo仓库文件:/etc/yum.repos.d/CentOS-Base.repo

   

 5. 配置yum源

     镜像源地址:http://mirrors.163.com/

      第一步:备份现有的repo仓库

                     mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

      第二步:下载新的repo源文件

                    CentOS6:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

                    CentOS7:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

                    CentOS8:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

      第三步:清空缓存,生成新的缓存

                     yum clean all

                     yum makecache

      第四步:使用阿里镜像源,出现不能解析地址的信息,可通过以下方法修改相关配置

                    sed -i -e \'/mirrors.cloud.aliyuncs.com/d\' -e \'/mirrors.aliyuncs.com/d\' /etc/yum.repos.d/CentOS-Base.repo

      第五步:配置epel源                

                   epel(RHEL 7)
                   wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
                   epel(RHEL 6)
                   wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

     

     

    

    实践: 如何使用光盘当作本地yum仓库:

               第一步:挂载光盘至某目录,例如/media/cdrom
                              mount -r -t iso9660 /dev/cdrom /media/cdrom
               第二步: 创建配置文件
                             [base]
                             name=CentOS-Base
                             baseurl=file://media/cdrom
                             gpgcheck=1
                             enabled=0

   6. yum命令

       yum命令的用法:
       yum [options] [command] [package ...]    

      显示仓库列表:
       yum    repolist [all|enabled|disabled]

      显示程序包:
      list
      yum list [all | glob_exp1] [glob_exp2] [...]
      yum list {available|installed|updates} [glob_exp1] [...]

      安装程序包:
      yum   install package1 [package2] [...]

      yum  reinstall package1 [package2] [...] (重新安装)

      升降级程序包:
      yum update [package1] [package2] [...]

      yum downgrade package1 [package2] [...]

      检查可用升级:
      yum check-update

      卸载程序包:
      yum remove | erase package1 [package2] [...]

      查看程序包information:
      yum info [...]

     查看指定的特性(可以是某文件)是由哪个程序包所提供:
     yum provides | whatprovides feature1 [feature2] [...]

     清理本地缓存:
     yum clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]

     构建缓存:
     yum makecache

     搜索:
      yum search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息;

     查看指定包所依赖的capabilities:
     yum deplist package1 [package2] [...]

     查看yum事务历史:
     yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

     安装及升级本地程序包:
        * localinstall rpmfile1 [rpmfile2] [...]
         (maintained for legacy reasons only - use install)
        * localupdate rpmfile1 [rpmfile2] [...]
         (maintained for legacy reasons only - use update)

    包组管理的相关命令:
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]

   yum的命令行选项:
          --nogpgcheck:禁止进行gpg check;
          -y: 自动回答为“yes”;
          -q:静默模式;
          --disablerepo=repoidglob:临时禁用此处指定的repo;
          --enablerepo=repoidglob:临时启用此处指定的repo;
          --noplugins:禁用所有插件

三、源代码编译安装

      

      前提条件:准备好开发工具以及开发环境

      开发工具:gcc ,make

      开发组件: yum groupinstall "Development Tools"

                          yum groupinstall  "Server Platform Development"

      第一步:下载源码包,解压

      第二步:进入目录,执行脚本configure文件

                    ./configure --prefix=软件安装路径

      第三步:执行make命令编译

                     make是Linux开发套件里面自动化编译的一个控制程序,它通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,它所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。

      第四步:安装make install

      实践:源码编译安装nginx

                 前提:创建nginx用户:useradd -M -s /sbin/nologin nginx

                 第一步:准备编译环境和安装依赖包:yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

                 第二步:下载nginx源代码,解压:cd /tmp;wget http://nginx.org/download/nginx-1.12.1.tar.gz;tar -zxvf nginx-1.12.1.tar.gz

                 第三步:进入源码目录:cd nginx-1.12.1

                 第四步:执行./configure文件:./configure --user=nginx --group=nginx --prefix=/usr/local/nginx  --with-http_stub_status_module --with-http_ssl_module  --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module  --with-mail --with-mail_ssl_module

                 第五步:执行make编译:

                 第六步:开始安装make install

                 第七步:配置nginx环境变量:vim /etc/profile.d/nginx.sh 写入 export PATH=/usr/local/nginx/sbin:$PATH

                

                 第八步:启动nginx服务,访问页面:

                               检测Nginx配置是否正确:nginx  -t

                              正确后,在启动:nginx

                

                

                 查看nginx的进程号:cat   /usr/local/nginx/logs/nginx.pid

               

                 Nginx Web 服务器软件安装完成后,程序主目录位于/usr/local/nginx,该目录下的内容分别为conf(主配置文件目录)、html(网站根目录)、logs(日志文件目录)、sbin(主程序目录)

                   

                 关闭主程序:nginx -s stop    

                 重新编译网页根目录文件内容:vi /usr/local/nginx/html/index.html
                 重新加载:nginx -s reload
               
               
               
四、yum安装与源码安装优缺点:
       yum安装:自动去yum源中寻找rpm包下载且安装,自动解决依赖,自动指定安装路径,无需人为干预。缺点:功能有rpm包控制,版本可能较低,功能受限,存在漏洞;且咱庄不能定义软件路径。
       源码安装:手动下载最新的源码包,按照指定需求,设定参数,指定安装路径,扩展第三方功能,更加灵活。缺点:无法自动解决依赖关系。
五、环境变量配置文件
       /etc/profile:用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置

      ~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

      ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
      ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件,通常存放清理工作的命令。

      执行顺序
      登陆shell
      登陆shell时,首先执行/etc/profile,之后执行用户目录下的~/.profile,~/.profile中会执行~/.bashrc

以上是关于Linux软件包管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux笔记 - 软件包管理

Linux笔记 - 软件包管理

linux 从入门到跑路 - rpm ,yum , dnf (软件包管理三兄弟)

golang包管理解决之道——go modules初探

Linux安装杀毒软件和防火墙

Linux 安装svn服务器