当前位置:   article > 正文

软件管理之rpm、yum使用

软件管理之rpm、yum使用

静态和动态链接

   链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接

   静态链接

          1、把程序对应的依赖库复制一份到包

          2、libxxx.a

          3、嵌入程序包

          4、升级难,需重新编译

          5、占用较多空间,迁移容易

   动态链接

          1、只把依赖加做一个动态链接

          2、libxxx.so

          3、连接指向

          4、占用较少空间,升级方便

 动态库和静态库的区别如下图;

C程序静态链接

Java程序运行

java 字节码,号称一次编译,到处运行

    编译好以后可以运行在不能的平台上,因为它内部有java虚拟机,分不同平台的虚拟机wins 虚拟机、linux虚拟机

    内部是通过java编译器来操作

/lib64  共享库

Debian     dpkg

      1、dpkg 包管理器已经打包好,路径无需自己指定

      2、.deb文件安装   dpkg -i .deb

redhat      rpm

      1、rmp包管理器

      2、rpm -ivh

包命名

      源代码:name-VERSION.tar.gz|bz2|xz

            VERSION: major.minor.release

      rpm包命名方式:

            name-VERSION-release.arch.rpm

            例:bash-4.2.46-19.el7.x86_64.rpm

              1、bash-4.2.46 开源软件版本号

              2、19.el7.x86_64   整体指的是发行版,19 指的是打包次数  el7 redhat企业版7

            VERSION: major.minor.release

            release:release.OS

            常见的arch:

                 x86: i386, i486, i586, i686

                 x86_64: x64, x86_64, amd64

                 powerpc: ppc

                 跟平台无关:noarch

  实现盘自动挂载方式:

        systemctl start autofs

        systemctl enable autofs

这个路径适用于centos6、centos7

cd  /misc/cd/Packages

查看不同平台的rpm包

  cd /misc/cd/Package

[root@centos7 Packages]#ls *.rpm |rev|cut -d. -f2|rev|sort |uniq -c

   1385 noarch

   2636 x86_64

[root@centos7 Packages]#ls *.rpm|sed -r 's/.*\.(.*)\.rpm$/\1/'|sort|uniq -c

   1385 noarch

   2636 x86_64

centos7 以后不支持32位

/lib64 是共享库,很多程序都需要借助里面的库文件,如果移除危害很大,慎操作

库文件

      查看二进制程序所依赖的库文件

            ldd /PATH/TO/BINARY_FILE

      管理及查看本机装载的库文件

            ldconfig 加载配置文件中指定的库文件     

            /sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径映射关系

            配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

            缓存文件:/etc/ld.so.cache

对于Vmware来说,选择光盘重置的办法;

      1、选择 "重置",重置相当于物理关机,而非命令行关机

      2、出现开机的进度条,立马敲"ESC",可以露出启动方式

      3、选择"CD-RAM Drive"

      4、选择:troube shutting

      5、选择rescue ;救援模式,绕过硬盘故障

      6、如果对于删除的文件,需要安装rpm  -ivh /run/install/Package/*.rpm  --root=/mnt/sysimage  ,要装在/root下。而非安装在当前目录

  ldconfig -p   #查看硬盘中加载的共享库

包管理器

       程序包管理器:

              功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而

          方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

       包文件组成 (每个包独有)

               RPM包内的文件

               RPM的元数据,如名称,版本,依赖性,描述等

               安装或卸载时运行的脚本

       RPM包依赖于/var/lib/rpm数据库,里面记录了程序名称及版本;依赖关系、功能说明、安装后生成的各个文件路径和校验码

      如果此数据库破坏,基本不能用。每次安装rpm包,都会从这个路径下检索,如果已经安装则不会再次安装

程序包的来源

        管理程序包的方式:

              使用包管理器:rpm

              使用前端工具:yum, dnf

        获取程序包的途径:

         (1)系统发版的光盘或者官方服务器

                  CentOS镜像:

                  Download

                  http://mirrors.aliyun.com

                  http://mirrors.sohu.com

                  http://mirrors.163.com

           (2)项目官方站点

             (3) 第三方组织:

                    Fedora-EPEL:

                          Extra Packages for Enterprise Linux

                    Rpmforge:RHEL推荐,包很全

                    搜索引擎:

                          http://pkgs.org

                          http://rpmfind.net

                          http://rpm.pbone.net

                          Compare, Download & Develop Open Source & Business Software - SourceForge

              (4) 自己制作

               注意:第三方包建议要检查其合法性:来源合法性,程序包的完整性

rpm包管理

       CentOS系统上使用rpm命令管理程序包:

                  安装、卸载、升级、查询、校验、数据库维护

                  安装:

                  rpm {-i|--install} [install-options] PACKAGE_FILE …

                        -v: verbose

                        -vv:  更加详细的过程

                        -h: 以#显示程序包管理执行进度

      之前一直执行这个命令,却不知道h的含义。。。。。

rpm 命令检查包的具体来源

      上面所说的每安装rpm包,/var/lib/rpm,此时查看发现已经更新时间了    

rpm包安装

      [install-options]

           --test: 测试安装,但不真正执行安装,即dry run模式

           --nodeps:忽略依赖关系

           --replacepkgs | replacefiles

           --nosignature: 不检查来源合法性

           --nodigest:不检查包完整性

           --noscripts:不执行程序包脚本

                    %pre: 安装前脚本 --nopre

                    %post: 安装后脚本 --nopost

                    %preun: 卸载前脚本 --nopreun

                    %postun: 卸载后脚本 --nopostun

rpm安装时有时报错缺少依赖,可以加参数来忽略依赖,但安装的包依旧用不了   --nodeps:忽略依赖关系

rpm -q mariadb 查看是否安装  #q query 查询   mariadb  只需输入服务名称,不用加版本号

rpm -e mariadb 卸载

rpm -ql tree  查看包中包含哪些文件

[root@centos7 Packages]#rm -f /usr/bin/tree

[root@centos7 Packages]#rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm                                                                              

warning: /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY

Preparing...                          ################################# [100%]

        package tree-1.6.0-10.el7.x86_64 is already installed

可以使用 --replacepkgs  全覆盖

[root@centos7 ~]#rpm -ivh /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm  --replacekgs

只覆盖冲突的包 replacefiles

rpm -qi    Package     #i 表示 information

查看程序包是否有脚本

[root@centos7 usr]#rpm -q --scripts tree

磁盘里面的包,安装脚本

[root@centos7 usr]#rpm -q --scripts  /misc/cd/Package/......

rpm包升级

      升级:

      rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

      rpm {-F|--freshen} [install-options] PACKAGE_FILE...

           upgrade:安装有旧版程序包,则“升级”

                          如果不存在旧版程序包,则“安装”

           freshen:安装有旧版程序包,则“升级”

                          如果不存在旧版程序包,则不执行升级操作

           rpm -Uvh PACKAGE_FILE ...

           rpm -Fvh PACKAGE_FILE ...

           --oldpackage:降级

            --force: 强制安装    

******注意******

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核

(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文

件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后

保留

(3) 升级会遇到很多不可预知的问题,建议有问题重装即可

包查询

rpm {-q|--query} [select-options] [query-options]

[select-options]

-a:所有包

-f:查看指定的文件由哪个程序包安装生成

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

rpm2cpio 包文件|cpio –itv 预览包内文件

rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件

rpm  -qa |grep  Package  查看包是否已安装

rpm包格式的改成cpio格式的,然后预览:

rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv

压缩成cpio格式的:

rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -idv ./usr/bin/tree

这样的方法只是手工打包出来,文件属性不像rpm包打包的文件属性,使用时候小心谨慎

[query-options]

    --changelog:查询rpm包的changelog

    -c:查询程序的配置文件

    -d:查询程序的文档

    -i:information

    -l:查看指定的程序包安装后生成的所有文件

    --scripts:程序包自带的脚本

    --provides:列出指定程序包所提供的CAPABILITY

    -R:查询指定的程序包所依赖的CAPABILITY

包卸载:

    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers][--test] PACKAGE_NAME ...

    当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

查看磁盘中的文件来自与哪个包

[root@centos7 cmatrix]#rpm -qf   /usr/bin/tree

tree-1.6.0-10.el7.x86_64

查看文件列表  p 整个文件路径,而非包本身

rpm -qpi /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm

rpm -q --whatrequires /bin/bash

哪些包需要依赖bash

bash 是需要依赖哪个包

[root@centos7 usr]#rpm -q --whatprovides /bin/bash

bash-4.2.46-31.el7.x86_64

包校验

      rpm {-V|--verify} [select-options] [verify-options]

               S file Size differs

               M Mode differs (includes permissions and file type)

               5 digest (formerly MD5 sum) differs

               D Device major/minor number mismatch

               L readLink(2) path mismatch

               U User ownership differs

               G Group ownership differs

               T mTime differs

               P capabilities differ   

    导入所需要公钥

            rpm -K|checksig rpmfile 检查包的完整性和签名

            rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

            CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

            rpm -qa “gpg-pubkey*”

[root@centos7 ~]#chown ttyang /bin/tree

[root@centos7 ~]#ll /bin/tree

-rwxr-xr-x 1 ttyang root 62768 Jun 10  2014 /bin/tree

查看rpm包属性

[root@centos7 ~]#rpm -V tree

.....U...    /usr/bin/tree     #U 代表所有者发生变化

查看硬盘里包文件是否修改, -a 参数指的是所有文件

[root@centos7 ~]#rpm -Va

检验包:

cat /misc/cd/RPM-GPG-KEY-CentOS-7

将上述此文件导入

rpm --import /misc/cd/RPM-GPG-KEY-CentOS-7

密钥:

[root@centos7 ~]#rpm -qa "gpg-pubkey*"

gpg-pubkey-f4a80eb5-53a7ff4b

[root@centos7 ~]#rpm -qi gpg-pubkey-f4a80eb5-53a7ff4b

卸载密钥:

[root@centos7 ~]#rpm -e gpg-pubkey-f4a80eb5-53a7ff4b

rpm -K 校验,确保来源合法

root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm

===================================================================

底层原理:

yum 安装可以解决包依赖的问题

      1、yum是用python写的程序,底层是rpm,如果把rpm数据库破坏,yum也将不能使用

      2、yum是C/S模式,需要实现建yum服务器,分为2大块:要安装的文件列表+仓库;仓库里面包含的所有rpm包和元数据(metadata),并且包分组也在元数据里面;还要说的是存储metadata的包称作repodata

      3、yum的客户端需要配置,/etc/yum.repos.d/*.repo  ,在配置文件里写清楚文件路径

配置好以后,获取yum的流程如下--  yum  install  httpd  底层原理

      1、查询本地底层repo的源文件,是否配置仓库

      2、找到互联网的yum服务器,查看metadata,是否有依赖。客户端将(metadata)元数据下载到缓冲区中

      3、连接到缓冲区,下载好rpm包,rpm安装好以后一般会卸载,metadata 会缓存下来,以便后续下载使用

=====================================================================

对于光盘而言,cd /misc/cd/Package/  里面有repodata,就说明有yum源

cat CentOS-Base.repo

[base]                                                       # 名字自定义,必须唯一

name=CentOS-$releasever - Base         #描述性的文字

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra   #把仓库信息放在文件路径下

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/     # 仓库路径; $指的是变量   CPU架构的主版本号、操作系统版本号

gpgcheck=1                                           # 检查包是否合法

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   #密钥

[root@centos7 yum.repos.d]#pwd

/etc/yum.repos.d

将此路径下的以.repo 结尾的文件移除到另外一个文件夹bak,如果不移除的话,就会进行干扰

CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo

CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

**************************************************************

基础base.repo 配置是这样的

[root@centos7 yum.repos.d]#cat base.repo

[base]

name=cdrom base

baseurl=file:///misc/cd

gpgcheck=0

***************************************************************

enabled=0  默认启用; 0是禁用,1是启用

gpgcheck=1   默认是1,启用

yum repolist  列出所有仓库信息

配置epel源如下所示

*****************************************************************

[epel]

name=epel

baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/       

gpgcheck=0

enabled=1

*******************************************************************

#删除已经配置好的源,切记找对路径如要误删

rm -rf /var/cache/yum/*

#查看当前可用yum源

yum repolist

#查看所有yum源,包含禁用的

yum repolist  all

下载好以后,yum源路径在 /var/cache/yum/x86_64/7

[root@centos7 cache]#ls /var/cache/yum/x86_64/7/

base  epel  timedhosts  timedhosts.txt

#其中base是本地源, epel是手动配置好的源

后续如果出现yum源的问题,就可以从下面2个方面分析;

1、路径写错了

2、缓存

rpm数据库

      数据库重建:

             /var/lib/rpm

      rpm {--initdb|--rebuilddb}

            initdb: 初始化

               如果事先不存在数据库,则新建之

               否则,不执行任何操作

            rebuilddb:重建已安装的包头的数据库索引目录

有时网络不通,采用桥接方式连接,需要yum安装文件,默认就在epel 源里下载,此时需要禁用epel源,选择本地安装

alias disepel='sed -ri /enabled/s/enabled=1/enabled=0/ /etc/yum.repos.d/base.repo'

alias epel='sed -ri /enabled/s/enabled=0/enabled=1/ /etc/yum.repos.d/base.repo'

[root@centos7 yum.repos.d]#cat base.repo

[base]

name=cdrom base

baseurl=file:///misc/cd    

             https://mirrors.aliyun.com/epel/$releasever/$basearch/     

             #可以写两个路径

gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7   #安全起见,第一次装会询问是否安装key

#gpgcheck=1

failovermethod={roundrobin|priority}

              roundrobin:意为随机挑选,默认值

              priority:按顺序访问

cost= 默认为1000    #cost数值越大,说明代价越大,优先级越低

yum命令

      yum命令的用法:

            yum [options] [command] [package ...]

      显示仓库列表:

           yum repolist [all|enabled|disabled]

      显示程序包:

           yum 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] [...]

     清理本地缓存:

        清除/var/cache/yum/$basearch/$releasever缓存

         yum clean [ packages | metadata | expire-cache | rpmdb | plugins |

     构建缓存:

         yum makecache

     搜索:yum search string1 [string2] [...]

         以指定的关键字搜索程序包名及summary信息

     查看指定包所依赖的capabilities:

         yum deplist package1 [package2] [...]

yum的日志

cat /var/log/yum.log

yum的安装历史

[root@centos7 log]#yum history

Loaded plugins: fastestmirror, langpacks

ID     | Login user               | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

     2 | ttyang <ttyang>          | 2020-08-21 22:12 | Install        |    1  <

     1 | System <unset>           | 2020-07-01 23:57 | Install        | 1382 >

history list

查看上述说列出来ID为2的信息;

[root@centos7 log]#yum history info 2

       Loaded plugins: fastestmirror, langpacks

       Transaction ID : 2

       Begin time     : Fri Aug 21 22:12:08 2020

       Begin rpmdb    : 1386:4f7527a1defed85d7f6150bf5b1abbb07ee007fc

       End time       :            22:12:09 2020 (1 seconds)

       End rpmdb      : 1387:cad1f514c75ebd89c1f01b928cd4a53f5ef20814

       User           : ttyang <ttyang>

       Return-Code    : Success

       Command Line   : install sl

       Transaction performed with:

       Installed     rpm-4.11.3-35.el7.x86_64                      @anaconda

       Installed     yum-3.4.3-161.el7.centos.noarch               @anaconda

       Installed     yum-plugin-fastestmirror-1.1.31-50.el7.noarch @anaconda

       Packages Altered:

       Install sl-5.02-1.el7.x86_64 @epel

    history info  

删除依赖

yum history undo 2

撤销依赖

yum history redo 2

rpm安装某些包时,因为依赖而无法安装

[root@centos7 ~]#rpm -ivh /misc/cd/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm

error: Failed dependencies:

        /etc/mime.types is needed by httpd-2.4.6-88.el7.centos.x86_64

        httpd-tools = 2.4.6-88.el7.centos is needed by httpd-2.4.6-88.el7.centos.x86_64

        libapr-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64

        libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64

   

  /etc/mime.types是所需要的包

[root@centos7 ~]#yum provides /etc/mime.types

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types

Repo        : base

Matched from:

Filename    : /etc/mime.types

需要准备依赖的包 mailcap-2.1.41-2.el7.noarch  

重装

yum  reinstall COMMAND

后续安装rpm包,可以直接yum,直接跳过依赖

yum  install  /misc/cd/Packages/*.rpm

yum命令

    查看程序包information:

            yum info [...]

查看包依赖于哪个文件

[root@centos7 ~]#yum deplist httpd  

DNF (DaNdiFied)    

    DNF介绍:新一代RPM软件包管理器,是用python编写的,红帽8.0版本取代了yum,DNF包管理器克服了YUM包管理器的一些瓶颈,提升

了包括用户体验,内存占用,依赖分析,运行速度等。

   安装所需软件包,依赖epel源

   wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm

   wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm

   wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm

   yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm python2-libcomps-0.1.8-3.el7.x86_64.rpm libcomps-0.1.8-3.el7.x86_64.rpm

配置文件:/etc/dnf/dnf.conf

仓库文件:/etc/yum.repos.d/ *.repo

日志: /var/log/dnf.rpm.log

DNF 使用与yum一样

  程序包编译

     程序包编译安装:

     Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装

     源代码-->预处理-->编译-->汇编-->链接-->执行

     源代码组织格式:

            多文件:文件中的代码之间,很可能存在跨文件依赖关系

            C、C++:make 项目管理器

                        configure脚本 --> Makefile.in --> Makefile

            java: maven

 编译安装

       C语言源代码编译安装三步骤:

        1、./configure

          (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile

          (2) 检查依赖到的外部环境,如依赖的软件包

        2、make 根据Makefile文件,构建应用程序

        3、make install 复制文件到相应路径

        开发工具:

            autoconf: 生成configure脚本 

            automake:生成Makefile.in   

        注意:安装前查看INSTALL,README

       编译C源代码: 

              准备:提供开发工具及开发环境 

                        开发工具:make, gcc等 

                        开发环境:开发库,头文件

                                        glibc:标准库

               实现:通过“包组”提供开发组件 

                        Development Tools 

                        Server Platform Development 

               生产实践:(基于最小化安装的系统)

   yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils     

==============================================================

                    

 具体步骤:

      第一步:configure脚本 

               选项:指定安装位置、指定启用的特性 

                   --help: 获取其支持使用的选项         

       选项分类: 

              安装路径设定:

              --prefix=/PATH:指定默认安装位置,默认为/usr/local/ 

              --sysconfdir=/PATH:配置文件安装位置 

                System types:支持交叉编译

              Optional Features: 可选特性 

                       --disable-FEATURE 

                       --enable-FEATURE[=ARG]

               注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件, 其包名一般类似于name-devel-VERSION

        第二步:make

        第三步:make install

       安装后的配置:

               (1) 二进制程序目录导入至PATH环境变量中 

                      编辑文件/etc/profile.d/NAME.sh 

                      export PATH=/PATH/TO/BIN:$PATH

                (2) 导入帮助手册 

                      编辑/etc/man.config|man_db.conf文件 

                      添加一个MANPATH

==============================================================

Ubuntu 软件管理

        Debian 软件包通常是预编译的二进制 制格式的扩展名“.deb”,类似rpm文件。 因此安装 快速,无需编译软件。

        dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包 管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项。安装命令为dpkg -i   *.deb

         APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu 的系统,基于客户/服务器架构

         APT工作原理:在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据 每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文 件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用 genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单, 从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安 装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解 压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时 候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已 安装、未安装或是可以升级的。

         

       dpkg常见用法: man dpkg

        dpkg  -i    *     安装

        dpkg  -r    *   删除包,不建议,不自动卸载依赖于它的包

        dpkg  -P   *   删除包(包括配置文件)

        dpkg -l          列出当前已安装的包,类似rpm -qa

        dpkg -l package 显示该包的简要说明,类似rpm –qi

        dpkg -L    *   列出该包中所包含的文件,类似rpm –ql

        dpkg -S    *   搜索包含pattern的包,类似rpm –qf

        dpkg -s    *   列出该包的状态,包括详细信息,类似rpm –qi

        dpkg --configure package 配置包,-a 使用,配置所有没有配置的软件包

        dpkg -c package.deb 列出 deb 包的内容,类似rpm –qpl

        dpkg --unpack package.deb   解开 deb 包的内容

例子:

  查看/bin/bash来自于哪个软件包 

       dpkg -S /bin/bash

  安装本地的 .deb 文件 

       dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb

  卸载软件包 

       dpkg -r zip

   注意:一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不 会卸载,并且可能无法再正常运行

   

     1、Ubuntu 16.04 之前, 在基于 Debian 的 Linux 发 行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。 apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工 具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中。在Ubuntu 16.04 之后, apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

      2、 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即 可用 apt 替换部分 apt-get 系列命令,但不是全部。

      3、具体用法可以查看帮助:apt help

      4、 apt 特有的命令 

            apt list 列出包含条件的包(已安装,可升级等) 

            apt edit-sources 编辑源列表

      5、 apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文件中

      6、 apt-cache madison  包名称     将列出所有来源的版本

例子:

    apt示例:

             安装包: apt install tree zip

             删除包: apt remove tree zip 

                       说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用

             更新包索引: apt update

            升级包:要升级系统,请首先更新软件包索引,再升级

                   apt upgrade

yum search Package   搜索包

编辑环境变量

vim  /etc/profile.d/env.sh

执行生效

. /etc/profile.d/env.sh

查看是否生效

echo $PATH

设置开机自起:

vim  /etc/rc.d/rc/local

将http  服务启动命令添加进去

/apps/httpd24/bin/apachectl start

然后修改可执行权限

chmod +x /etc/rc.d/rc.local

服务是持续的,并且是一个大软件,必须设置开机自起

如果只有命令行,非图形化界面,对于centos系统,可以安装一个包组

  yum install GNOME Desktop

Ubuntu  中的仓库系统已经配置好了,无需手工干预

apt update

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/469096
推荐阅读
相关标签
  

闽ICP备14008679号