zoukankan      html  css  js  c++  java
  • Linux 软件包管理

    Ø  简介

    本文主要介绍 Linux 软件包的管理,包括如下内容:

    目录

    1.       wget 命令的使用... 1

    2.       RedHat 系使用 RPM 二进制软件包管理... 1

    3.       RedHat 系使用 YUM 二进制软件包管理... 5

    4.       RedHat 系源代码包安装... 6

    5.       RedHat 系脚本安装(Shell 或 Java 脚本)... 8

    6.       Debian 系 Linux 软件包管理介绍(APT 包管理). 10

     

     

    1.   wget 命令的使用

    功能描述

    wgetLinux下下载文件的最常用命令。wget支持HTTPHTTPSFTP协议,支持自动下载,即可以在用户退出系统后在后台执行,直到下载结束。

    语法

    wget [选项] [URL]

        -P 指定下载存储路径;

    -b 启动后转入后台;

    -N 只获取比本地文件新的文件;

        -c 断点续传下载文件。

        -S 打印服务器响应,不下载任何文件

        --spider 模拟下载,不下载任何文件;

    --no-check-certificate 不验证HTTPS服务器的证书

    示例:

    #下载nginx

    wget -P /opt/soft https://nginx.org/download/nginx-1.18.0.tar.gz

    wget --spider http://test.ms.zxsxdd.com     #模拟下载(检查网站是否正常)

     

    wget 介绍:

    wget 可以跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,这又常被称作递归下载

    wget 非常稳定,它在带宽很窄的情况下,或者网络不稳定的情况下有很强的适应性。如果是由于网络的原因下载失败,wget 会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

    更多使用方法:https://www.cnblogs.com/ftl1012/p/9265699.html

     

    2.   RedHat 系使用 RPM 二进制软件包管理

    n  RPM 的优缺点

    1)   rpm 在查询上很好的弥补了 yum 的不足,查询速度要比 yum 快很多;

    2)   rpm 不足的地方是,在解决软件包的依赖关系上,不如 yum 方便。

     

    n  RPM 软件包的一个例子:

    sudo.1.7.2pl-5.e15.i386.rpm 各部分分别表:

    l  sudo    表示软件名;

    l  1.7.2p1 版本号

    l  5.e15   发行号

    l  i386    硬件平台

    l  rpm     后缀,表示为RPM

     

    1)   卸载

    # rpm -e sudo       #sudo 表示要卸载的软件名称

    注意:如果其他软件包有依赖关系,卸载是会产生提示信息,可以使用 –nodeps 选项进行强制卸载,例如:# rpm -e –nodeps samba

     

    2)   安装

    # rpm -ivh sudo-1.7.2pl-5.e15.i386.rpm

    选项:-i 安装;-v 显示安装时的详细信息;-h 显示安装进度(#)

     

    1.   Linux 系统光盘中安装

    挂载光盘:

    # mkdir /mnt/cdrom                 #创建挂载点目录

    # mount /dev/cdrom /mnt/cdrom       # /dev/cdrom 挂载到 /mnt/cdrom

    说明:现在访问 /mnt/cdrom 这个目录,就相当于访问光盘上的 /dev/cdrom

     

    # ls -l | grep sudo #/mnt/cdrom/Packages 目录下查找 sudo 软件包

    # rpm -ivh sudo-1.8.23-3.el7.x86_64.rpm     #安装 sudo 软件包

     

    [root@localhost Packages]# rpm -q sudo      #查看软件包是否安装

    [root@localhost Packages]# rpm -qa | grep samba     #查看所有安装的软件包中指定的软件包

     

    2.   其他安装选项

    1)   不安装文档文件

    [root@localhost Packages]# rpm -ivh --excludedocs sudo-1.8.23-3.el7.x86_64.rpm    #不安装软件包中的文档文件(说明文档、帮助文档等)

    2)   指定安装目录

    [root@localhost Packages]# rpm -ivh --prefix=/usr/local/sudo  sudo-1.8.23-3.el7.x86_64.rpm    #指定安装包的安装目录

    注意:

    1.   Linux 中,大多数 RPM 包都不允许指定安装目录,因为在很多 rpm 包的作者在生成 rpm 包时,都已经规定好 rpm 软件包的存放位置;

    2.   这样会不会管理很麻烦,或者卸载不干净?是不会的,安装后并不会向 Windows 一样会有注册表、或存储在其他位置,导致卸载不不干净。Linux 卸载时也会卸载对应的安装目录,这个不用担心。

     

    3)   测试安装

    [root@localhost Packages]# rpm -ivh --test sudo-1.8.23-3.el7.x86_64.rpm    #只对安装进行测试,并不是实际安装

    说明:比如测试是否已经安装、是否会冲突、是否存在依赖等。

     

    4)   软件包已被安装

    [root@localhost Packages]# rpm -ivh --replacepkgs sudo-1.8.23-3.el7.x86_64.rpm    #覆盖安装该软件包

     

    5)   文件冲突

    [root@localhost Packages]# rpm -ivh --replacepkgs --replacefiles sudo-1.8.23-3.el7.x86_64.rpm     #如果要安装的软件包中有一个文件以及在安装其它软件包是安装,解决文件冲突时可以使用 --replacefiles 选项,可以忽略该错误信息。

     

    6)   未解决依赖关系

    RPM 软件包可能依赖于其他软件包,在安装了特定的软件包之后才能安装该软件包。

    [root@localhost Packages]# rpm -ivh --replacepkgs --nodeps sudo-1.8.23-3.el7.x86_64.rpm

    说明:如果不考虑依赖关系,强行安装可以使用 --nodeps 选项,但是安装后该软件包可能不能正常运行。

     

    3)   升级

    [root@localhost Packages]# rpm -Uvh sudo-1.8.23-3.el7.x86_64.rpm

    注意:

    1.   首先需要将新版本的软件包下载下来;

    2.   指定升级的软件包应该比当前的软件包版本更高。

     

    4)   查询【选项】

    1.   -p 查询软件包

    # rpm -q sudo

    注意:只能查询二进制软包,不能查询源代码包和脚本安装的软件。

     

    2.   -a 查询所有已安装的软件包

    # rpm -qa

     

    3.   -f 查询文件(文件、命令、配置文件等)所属的软件包

    # rpm -qf /etc/services     #查看配置文件软件包

    # rpm -qf /bin/ls          #查看命令所属软件包

     

    4.   -i 查询已安装的软件包信息

    # rpm -qi sudo

     

    5.   -p 查询未安装的软件包信息

    # rpm -qip sudo-1.8.23-3.el7.x86_64.rpm     #因为还未安装,所以需要写上软件包的全称

     

    6.   -l 查询软件包中的文件列表

    # rpm -ql sudo      #查询已安装软件包的安装目录和文件

    # rpm -qlp sudo-1.8.23-3.el7.x86_64.rpm     #查询未安装软件包的安装目录和文件

     

    提示:Linux 相同类型的文件都存放在同一目录下,例如:

    /etc/                      一般用于存放配置文件

    /usr/bin/ 或者 /usr/sbin/   一般用于存放命令文件

    /usr/libexec/               一般用于存放库文件

    /usr/share/doc/             一般用于存放文档文件

    /usr/share/man/            一般用于存放帮助文件

    /var/                      一般用于存放临时文件

     

    7.   -d 查询被标注为文档的文件列表(与 -l 相比,可以看做是分类查询)

    # rpm -qd sudo      #查询已安装的

    # rpm -qdp sudo-1.8.23-3.el7.x86_64.rpm     #查询未安装的

     

    8.   -c 查询被标注为配置文件的文件列表(与 -l 相比,可以看做是分类查询)

    # rpm -qc sudo      #查询已安装的

    # rpm -qcp sudo-1.8.23-3.el7.x86_64.rpm     #查询未安装的

     

    示例1查看一个服务的软件包信息

    # ls /etc/rc.d/init.d

    functions  msg.script  netconsole  network  README

    # rpm -qf /etc/rc.d/init.d/functions

    initscripts-9.49.46-1.el7.x86_64

    # rpm -qip /etc/rc.d/init.d/functions

     

    示例2查看 vim 软件包的示例文件(寻找 ~/.vimrc 文件注释问题)

    # rpm -qa | grep vim                   #查找 vim 的安装包

    # rpm -ql vim-common | grep example     #查找 vim 的示例文件

    # more /usr/share/vim/vim74/vimrc_example.vim   #查看 vim 示例文件内容

    clip_image001[4]

    可以看到,示例文件中并不是以 # 号注释,而是使用"(双引号)

     

    5)   校验

    校验的作用:解决比如黑客侵入系统,获取其他人将软件文件修改,删除,导致软件运行不了。这时就需要使用到校验功能。

    语法:# rpm -V 软件名称

    示例:

    # rpm -V sudo                  #首先校验 sudo 软件包(无返回内容)

    说明:在无任何改动的情况下,是不没有返回内容的(这是正常的)

     

    # vi /etc/pam.d/sudo           #模拟将 sudo 的配置文件进行修改

    # rpm -V sudo                  #再次校验 sudo 软件包

    S.5....T.  c /etc/pam.d/sudo    #返回内容

    n  以上值分别代表的改变项:

    1.   5 文件的 md5 校验值

    2.   S 文件的大小

    3.   L 链接文件

    4.   T 文件的创建或修改时间

    5.   D 设备文件

    6.   U 文件的用户

    7.   G 文件的用户组

    8.   M 文件的权限

     

    说明:为什么 RPM 软件包可以校验?是因为 rpm 软件包安装到系统后,会自动生成一个 rpm 库,校验时会与 rpm 库进行比较,得出校验的值。

     

    6)   软件包文件提取

    如果不小心把系统中的配置文件或命令删除掉了,可以通过软件包文件提取的方式,恢复丢失的文件。

    clip_image003[4]

    示例:将 sudo 中的 sudo-i 配置文件删除后,再从软件包中恢复。

    # rpm -ql sudo | grep etc       #查找 etc 下的配置文件

    /etc/pam.d/sudo-i              # sudo-i 为例

    # rm -f /etc/pam.d/sudo-i      #删除 sudo-i

     

    # rpm -q sudo                  #确定 sudo 属于哪个软件包

    sudo-1.8.23-3.el7.x86_64

    [root@localhost /]# mkdir backup    #创建解压目录

    [root@localhost backup]# rpm2cpio /mnt/cdrom/Packages/sudo-1.8.23-3.el7.x86_64.rpm | cpio -idv ./etc/pam.d/sudo-i     #解压到当前目录(/backup/etc/pam.d)

    [root@localhost backup]# cp etc/pam.d/sudo-i /etc/pam.d/sudo-i  #拷贝恢复文件

    [root@localhost /]# rm -rf backup   #删除临时目录

     

    3.   RedHat 系使用 YUM 二进制软件包管理

    n  YUM 的优缺点

    1)   自动解决软件包的依赖关系;

    2)   方便软件包的升级(不需要手动下载软件包,可以自动在 yum 源中下载);

    3)   安装的软件包是 yum 源官方的,是可以信赖的。如果自己去网站中下载,软件包中可能植入木马,是不安全的。

    4)   缺点是,yum 在查询软件包信息时比较慢,这是可以采用 RPM 来弥补。

     

    1)   安装

    # yum install sudo      #自动安装 sudo 软件包

    # yum -y install tree   #当安装过程提示选择全部为"yes"

    注意:因为 yum 是在互联网寻找软件包的源,所以必须是联网的。

     

    2)   检测升级

    # yum check-update sudo     #指定检测 sudo 软件包是否升级,如果不指定将检测所有软件包。如果有可用的新软件包将会显示,否则不会显示

    说明:为什么要升级软件包呢?因为软件包可能存在一些漏洞或BUG,这些漏洞可能照成黑客的侵入,所以有必要升级为最新的软件包。

     

    3)   升级

    # yum update sudo   #升级 sudo 软件包

    # yum -y update    #升级所有包同时也升级软件和系统内核

    # yum -y upgrade    #只升级所有包,不升级软件和系统内核

     

    4)   查询软件包

    # yum list | more       #查询 yum 源中所有的软件包

    # yum list | grep sudo  #查询 yum 源中 sudo 软件包的安装信息

    或者

    # yum list sudo         #查询 yum 源中 sudo 软件包的安装信息

    sudo.x86_64         1.8.23-4.el7_7.2          @updates

    @updates 处可能包含的值(带有@表示已更新或已安装):

    l  updates: 未安装

    l  installed: 已安装

    l  @updates: 已更新

    l  base: Linux 自带的软件包(已安装)

    l  extras: Linux 自带的软件包(未安装)?

    l  @anacond: Linux 自带的软件包(已更新)?

     

    5)   查看软件包

    yum info sudo                      #查看软件包信息

    yum list | grep libgdiplus          #查看软件包安装位置

    rpm -ql libgdiplus-devel.x86_64

     

    6)   卸载

    yum remove sudo

     

    7)   帮助

    yum -help

    man yum

     

    4.   RedHat 系源代码包安装

    n  源代码包的特点

    1)   二进制包在安装和使用比较简单,但是二进制包并没有提供给使用者提供更多的空间,导致使用者很难去配置,或指定安装目录。

    2)   而源代码包可以指定很多的设置和选项,或者去修改源代码,在很多知名软件中都是直接提供源代码包的,灵活度和定制型非常高,使用者可以自己去增加或去掉一些功能。

    3)   因为是源代码包,是在安装时才进行编译安装,与二进制包相比,它可以支持更多的 CPU 和操作系统。

     

    1)   安装示例(proftpd)

    1.   第一步:下载源代码包

    下载地址:http://www.proftpd.org/

     

    2.   第二步:下载后上传至系统 /home/abream/learn 目录下

    /home/abream/learn/proftpd-1.3.6c.tar.gz

    分别表示:proftpd 软件名称;1.3.6c 版本号;tar.gz 压缩格式

     

    3.   第三步:解压缩到当前目录

    [root@localhost learn]# tar -xzvf proftpd-1.3.6c.tar.gz

     

    4.   第四步:进入到解压目录(proftpd-1.3.6c)

    [root@localhost proftpd-1.3.6c]# ls

    clip_image005[4]

    标准的源代码包中都会有一个 configure 的可执行脚本。

     

    5.   第五步:配置

    rpm 二进制包不一样,源代码包没有专门的卸载命令,所以安装前建议指定安装目录。通常情况下,源代码包建议安装在 /usr/local 目录下,然后再加一个以软件名命名的目录,例如:/usr/local/proftpd

    [root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd

    clip_image007[4]

    以上提示错误信息:表示在系统的 $PATH (缺省路径)中,没有找到 C 的编译器,配置终止了。如果存在其他错误,注意看提示信息!如果存在缺少的软件包,安装上即可。

     

    C 编译器广泛采用的是 gcc,下面就安装下 gcc 的编译器。而 gcc 依赖于很多库文件,所以建议采用 yum 来进行安装。

    [root@localhost proftpd-1.3.6c]# yum install gcc

    提示:

    1)   因为源代码是 C 语言写的,所以必须有一个 C 的编译器才能安装;

    2)   C 编译器装 cc 或者其他的都是可以的,只是 gcc 用的比较广泛。

     

    gcc 安装完成后,再次执行配置

    [root@localhost proftpd-1.3.6c]# ./configure --prefix=/usr/local/proftpd

    clip_image008[4]

    显示以上提示,表示配置这个步骤已经完成了。

     

    6.   第六步:编译

    [root@localhost proftpd-1.3.6c]# make

    编译成功后,会在当前目录中生成对应的可执行文件,提供按安装。

    clip_image009[4]

     

    7.   第七步:编译安装

    [root@localhost proftpd-1.3.6c]# make install

    安装完成后,可以在安装目录下查看到安装目录和文件:

    clip_image010[4]

    提示:

    1)   直到这一步才真正将源代码包安装完成;

    2)   最后一步(安装),其实就是将编译好的文件,拷贝到对应的目录中。

     

    2)   卸载示例(proftpd)

    # kill `pgrep proftpd`         #关闭 proftpd 的进程

    # rm -rf /usr/local/proftpd     #删除安装的目录即可

     

    5.   RedHat 系脚本安装(Shell Java 脚本)

    因为源代码包安装比较复杂,所以有些公司推出脚本安装的方式(比如:webmin,这种方式与 Windows 安装软件没多大区别。脚本安装分为两种,一种是 Shell 脚本(webmin),另一种是 Java 脚本(如:OpenOffice(Java 脚本采用图形安装)

     

    1)   安装示例(webminShell 脚本安装示例))

    远程管理 Linux 除了使用命令行工具(如:XshellSecureCRTputty,和图形管理工具(如:WinSCPXManager)。

    webmin 是一个介于两则之间的远程管理工具,采用浏览器来远程管理操作系统,它是一种图形化的操作。在业界是比较有名的,强大的远程管理工具。

    1.   第一步:下载软件包

    下载地址:http://webmin.com/

     

    2.   第二步:下载后上传至系统 /home/abream/learn 目录下

    /home/abream/learn/webmin-1.941.tar.gz

     

    3.   第三步:解压缩到当前目录

    [root@localhost learn]# tar -xzvf webmin-1.941.tar.gz

     

    4.   第四步:查看安装说明文件

    [root@localhost webmin-1.941]# ls -l | grep README

    -rw-rw-r--.   1 3001 wheel   3801 1  15 08:06 README.md

    [root@localhost webmin-1.941]# cat README.md

    clip_image012[4]

    Linux 中,如果不是标准的源代码安装方式,那么一定有一个说明文档,比如:README(请先读我)、INSTALL(安装说明)

     

    5.   开始安装

    [root@localhost webmin-1.941]# ./setup.sh       #执行安装脚本

    clip_image013[4]

    说明:确定配置文件目录,不改直接回车,如果要改则输入指定的目录。

    clip_image014[4]

    说明:因为 webmin 是使用 perl 语言写的,安装会检查是否 perl 语言,如果没有安装将会终止。

    clip_image015[4]

    说明:指定 webmin 的端口,例如:web service:80ftp:2021ssh:22

    clip_image016[4]

    安装过程中,会生成卸载 webmin 的脚本,后续需要卸载直接执行该脚本即可。

    注意:当完成以上设置后,后续的编译安装过程都是自动完成的。

    clip_image018[4]

    安装完成!用户名:admin,密码:admin

     

    6.   访问 webmin

    本机访问:http://localhost.localdomain:10000/

    局域网访问:http://192.168.1.150:10000/

    局域网如果无法访问,需要打开防火墙:

    1)   进入 /etc/sysconfig/ 目录

    2)   将端口加入信任规则中,执行命令:

    iptables -I INPUT -p TCP –dport 10000 -j ACCEPT

     

    2)   卸载示例(webmin

    # /etc/webmin/uninstall.sh     #执行卸载脚本

     

    6.   Debian Linux 软件包管理介绍(APT 包管理)

    1.   搜索软包 apt-cache search

    2.   软件包信息 apt-cache show

    3.   安装 apt-get install(reinstall-f)

    4.   删除 apt-get remove(autoremove--purge)

    5.   更新软件源 apt-get update

    6.   更新已安装包 apt-get upgrade

  • 相关阅读:
    节点和坐标系
    精灵类
    导演类
    部分辅助宏
    妥善使用autorelease()方法
    内存管理笔记
    向eclipse中的项目导入jar包(作为library引用和放入web-inf/lib下的两种方法和区别)
    Request processing failed; nested exception is java.lang.NullPointerException
    getRequestURI、getReuqestURL的区别【转】
    tomcat部署javaWeb项目,界面样式都没有加载
  • 原文地址:https://www.cnblogs.com/abeam/p/15415603.html
Copyright © 2011-2022 走看看