Linux软件安装

Linux中两种软件安装包:

1、源码包:
        软件的源代码是软件的原始数据,但是源代码不能在计算机中直接运行安装。需要通过编译将源代码转换为计算机可以识别的机器语言,之后才可以进行安装。源码包安装的方式可以在安装过程中根据自己的需求定制自己所需要的功能。

Linux上大部分软件也是开源软件。

例如:apache、tomcat、PHP、MySQL等。开源软件大多都提供源码下载、源码安装等方式。

装等方式。

1)源码包安装优点

  • 开放源代码,可以自行修改源代码。
  • 可以自由选择安装所需功能。
  • 软件是编译安装,更加稳定高效。
  • 卸载方便,直接删除安装目录即可。

2)源码包安装缺点:

  • 安装过程中过程较为复杂。
  • 编译过程时间较长(与RPM包相比)。

3)源码包安装步骤:

官方网站下载源码包。

解压并进入源码包目录。

解压后进入解压生成的文件夹。

通常会有名为REDAME的文件。此文件记录了:这个软件所能完成的功能,授权许可,安装需求,安装注意事项,安装方式等。

目录中会有一个名为configure的文件。

执行./configure,就会开始检测当前系统是否拥有安装软件所需的所有文件和工具。

检测成功后会生成makefile文件。

而有些软件没有提供configure脚本,直接提供了makefile文件,可以直接执行make编译步骤。

make:一般在输入make命令时,make命令默认会查找当前目录下的Makefile件。

如果用其他文件作为Makefile文件那么需要在make之后加-f子选项来指定Makefile文件。

由于需要相应的编译软件才能将源代码转换为机器识别的语言,所以在执行configure的时候如果没有编译,工具就会有error报错。

make install:进行安装。

2、RPM安装:

          RedHat Package Manager的缩写,是红帽软件包工具。RPM的提供可升级,具有强大查询功能支持安全验证的通用型Linux软件包管理工具。由于这种软件管理方式非常方便,所以逐渐被其他Linux发行版所借用。现在已经称为Linux平台下通用的软件包管理方式。

1)RPM包优点: 

  • 安装简单方便。
  • 安装时不用指定安装位置。
  • 方便升级、卸载。

2)RPM包缺点:

                    大多数RPM安装需要解决依赖关系。

3)RPM包命名规则:  

httpd-2.2.15-53.el6.centos.x86_64.rpm

httpd        软件包名

2.2.15       软件版本

53           软件发布次数

el6.centos   适合的Linux平台

x86_64       适合的硬件平台

rpm          rpm包扩展名

4)RPM安装命令: 

格式:rpm -ivh 软件包名(全名)

-i    install的意思,就是安装软件

-v    显示安装过程中的详细信息。

-h    #号显示安装的进度

5)卸载命令:

格式:rpm -e 软件名(不用指定包全名

6)升级命令:

格式:rpm -Uvh 软件包全名

-U   升级安装,若没安装则直接安装,若安装有旧版本,则升级安装。

-F   升级安装,若没安装,则不安装,必须有旧版本才进行升级安装。

7)查询已安装的软件信息:

格式:rpm -q 包名      查询包是否安装  

rpm -qa          查看系统中已安装的所有RPM软件包列表

rpm -qi 包名     查看指定软件所安装的信息

rpm -ql 包名     查询指定软件所安装目录,文件列表

8)查询未安装的RPM包文件:

格式:rpm -qpl 包全名    查询指定未安装软件所安装的目录、文件列表

rpm -qpR 包全名    查询指定未安装软件的依赖文件

9)查询文件或者目录属于哪个RPM软件

格式:rpm -qf 文件或目录名

3、yum安装 

    因为在RPM安装过程中经常要解决依赖关系,而有些依赖关系并不会有准确的依赖安装包提示信息

    YUM是yellow dog update modified的简写。YUM是一个RPM包管理工具,可以很好的解决RPM包安装过程中会遇到的依赖关系问题。YUM可以从多个源当中搜索软件以及软件安装所依赖的安装包,并自动安装相应的依赖软件。使用YUM安装软件时至少需要一个YUM,可以把YUM源理解为一个存放一些RPM包的文件夹。用户可以使用ftp、http等方式访问YUM源。

    安装源分别是本地yum网络yum(网络仓库),在默认配置文件生效的情况下,网络yum源优先级别高于本地yum源。网络源分为默认网络源和扩展网络源。

如果没有连网,如果有其他网络源在,会报错(即使配置了本地源),根据报错去处理,对应的网络源进行改名(不止是Base.repoBase.repo 默认网络源

 /repodata 里面存放RPM包的依赖关系

1)前提条件:yum安装命令的前提是需要知道依赖关系,需要知道YUM源的位置

2)网络源配置文件

[root@localhost Packages]# cat /etc/yum.repos.d/CentOS-Base.repo 默认网络源

[base]                                 #YUM源唯一ID号,可任意填写。

name=CentOS-$releasever - Base         #YUM源描述,可任意填写。

mirrorlist=http://mirrorlist.centos.org/release=$releasever&arch=$basearch&repo=os&infra=$infra         #指定镜像站点目录。

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/       #指定YUM源URL(统一资源定位)地址,FTP或HTTP地址。

gpgcheck=1                         #是否开启gpg验证,0关闭,1开启。

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7        #检查软件包gpg验证信息位置。

设置本地YUM源:

  • 将光盘挂载至/mnt目录
  • vim /etc/yum.repos.d/CentOS-Media.repo(模板)  进入本地yum源配置文件
  • 修改baseurl=file///rpm包挂载点  7版本只需要一个
  • gpgcheck=1 不动
  • 修改enabled=1   0表示不开yum
  • 修改网络源配置文件后缀名(因为网络源优先级别高于本地源,网络源配置文件所在位置/etc/yum.repos.d/CentOS-Base.repo)后缀+.bak

3)yum管理命令

yum install 软件名

yum groupinstall 软件组名

yum remove 软件名

yum groupremove 软件组名

yum -y update

yum groupdate

yum list                   查询所有可安装的软件包

yum list 包名              查询yum源中是否有所查询包

yum info 软件名            查询指定软件包的信息

yum grouplist 软件组名     查询所有可以安装的软件组

yum groupinfo 软件组名     列出软件组中包含的软件

yum provides               查询文件在什么包中

yum search 命令            查询文件在什么包中

补充:

  • 频繁的用yum安装后可能会出现安装错误的现象;
  • 需要执行yum clean all 命令来清空一下yum缓存信息;
  • 之后使yum makecache根据配置文件建立新的缓存数据
  • 再执行yum list 读取yum可安装的软件包。

1:软件安装—字符界面安装图形化:

  yum -y groupinstall "X Window System"

  yum -ygroupinstall  "GNOME Desktop"

  #安装图形化以及工具。

systemctl get-default  #查看系统默认运行级别。 multi-user.target(字符)

systemctl set-default graphical.target    #设置默认级别为graphical.target

(图形)

centos7图形化中yum安装PackageKit进程锁定问题:

PackageKit是一款以方便Linux软件安装与升级为目的的系统,其设计初衷是在不同的Linux发行版中统一软件图形工具。PackageKit会离线检测更新永久禁用即可:

/etc/yum/pluginconf.d/langpacks.conf

将第一行:enable=1改为enable=0

kill 进程号

 4)概念补充:

缓冲:正在被修改或编辑的文件数据处于内存中的缓冲区。

缓存:内存从硬盘中读取的数据,存在于内存的缓存区。

安装网络扩展源命令

yum install -y http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm  #安装扩展源

yum -y install exfat-utils

yum -y install exfat-utils      安装依赖和它本身

yum -y install fuse-exfat

查询rzsz 安装包名称

[root@localhost ~]# yum provides rz  #也可以 yum search rz

lrzsz-0.12.20-36.el7.x86_64   #包名

 5)命令补充:

下载源centos7(阿里)

[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

iptables -F 暂时清空防火墙规则

iptables -L 查看防火墙规则

echo $?    查询上一条命令是否执行成功

CMD1 && CMD2  命令1执行成功,执行命令2

CMD1 ; CMD2  命令1成不成功不影响命令2

6) yum使用网络源安装并保存软件

修改yum配置文件:  vim  /etc/yum.conf文件中的keepcache=1

[root@localhost ~]# vim /etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever   #保存路径

keepcache=1    #是否保存安装包

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=5

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

举例安装ntfs-3g软件包

yum -y install epel-release  #安装扩展网络源

yum -y install ntfs-3g       #安装ntfs-3g

ls /var/cache/yum/x86_64/7/epel/packages #保存位置

[root@localhost ~]# ls /var/cache/yum/x86_64/7/base/packages

apr-1.4.8-7.el7.x86_64.rpm  mailcap-2.1.41-2.el7.noarch.rpm

[root@localhost ~]#

[root@localhost ~]# sz /var/cache/yum/x86_64/7/base/packages/apr-1.4.8-7.el7.x86_64.rpm

                                     #xshell远程端用rz命令将Linuxrpm包保存到Windows

实验

1>​​​​​局域网内服务器作为网络源

服务器端

1、挂载光盘

[root@localhost ~]#mount /dev/sr0 /mnt/

2、修改本地源配置文件,给网络源改名

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Media.repo

baseurl=file:///mnt

enabled=1

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

3、执行yum list 查看

[root@localhost ~]# yum list

#如果执行失败,用kill 进程号 结束进程   kill -9 强制结束

4、安装httpd软件包和createrepo

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# yum -y install createrepo

服务器端

1、挂载光盘

[root@localhost ~]#mount /dev/sr0 /mnt/

2、修改本地源配置文件,给网络源改名

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Media.repo

baseurl=file:///mnt

enabled=1

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

3、执行yum list 查看

[root@localhost ~]# yum list

#如果执行失败,用kill 进程号 结束进程   kill -9 强制结束

4、安装httpd软件包和createrepo

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# yum -y install createrepo

5、创建/var/www/html/package目录

[root@localhost ~]# mkdir /var/www/html/package

6、将源码包复制到package下

[root@localhost ~]# cp -a /mnt/Packages/* /var/www/html/package/

7、生成依赖关系文件

[root@localhost ~]# createrepo /var/www/html/

#也可以将原有的repodata依赖文件复制过来

如果想通过局域网yum源或通过服务器端进行软件组的安装,没有软件组安装不用执行此命令

createrepo /var/www/html/ -g /mnt/repodata/*comps.xml --update

8、清空防火墙规则,启动httpd,可以查询端口对应的进程

[root@localhost ~]# iptables -F

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# netstat -anpt

tcp6       0      0 :::80                   :::*                    LISTEN      65779/httpd

9、浏览器输入本机IP192.168.26.128,无法看到package ,在IP后面输入package

5、创建/var/www/html/package目录

[root@localhost ~]# mkdir /var/www/html/package

6、将源码包复制到package下

[root@localhost ~]# cp -a /mnt/Packages/* /var/www/html/package/

7、生成依赖关系文件

[root@localhost ~]# createrepo /var/www/html/

#也可以将原有的repodata依赖文件复制过来

如果想通过局域网yum源或通过服务器端进行软件组的安装,没有软件组安装不用执行此命令

createrepo /var/www/html/ -g /mnt/repodata/*comps.xml --update

8、清空防火墙规则,启动httpd,可以查询端口对应的进程

[root@localhost ~]# iptables -F

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# netstat -anpt

tcp6       0      0 :::80                   :::*                    LISTEN      65779/httpd

9、浏览器输入本机IP192.168.26.128,无法看到package ,在IP后面输入package

客户端:

1、不在本地登录,用xshell远程登录(或卸载/dev/sr0

[root@localhost ~]# mount |grep sr0

[root@localhost ~]#

#没有返回结果,说明没有挂载光盘

2、不使用本地源,修改/etc/yum.repos.d/CentOS-Media.repo ,enabled修改为0

3、修改网络源配置文件(可以给原有代码加注释,在末尾编写;也可以之间新建.repo结尾的文件写代码)

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo

[testC7.6]   # [自定义名]

name=xxhf_test_Centos7.6    #自定义

baseurl=http://192.168.26.128   #服务器IP

gpgcheck=0

enabled=1

4、清空防火墙规则,清空缓存数据,yum list可看到列出的软件列表都来源于testC7.6(自定义)

[root@localhost ~]# iptables -F

[root@localhost ~]# yum clean all      #yum makecache 建立源数据缓存

已加载插件:fastestmirror

正在清理软件源: testC7.6   #yum repolist 查看当前使用yum

[root@localhost ~]#

[root@localhost ~]# yum list

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

testC7.6                                  | 2.9 kB     00:00    

testC7.6/primary_db                         | 3.2 MB   00:00    

已安装的软件包

GeoIP.x86_64                     1.5.0-13.el7           @anacond

….

5、安装tree命令

[root@localhost ~]# yum -y install tree

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

 Package    架构         版本               源              大小

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

正在安装:

 tree       x86_64       1.6.0-10.el7       testC7.6        46 k

#可以看到源 testC7.6,证明是从服务器端下载的

     安装有依赖关系的包

[root@localhost ~]# yum -y install vim

已安装:

  vim-enhanced.x86_64 2:7.4.160-5.el7                                                                                               

作为依赖被安装:

  gpm-libs.x86_64 0:1.20.7-5.el7                  perl.x86_64 4:5.16.3-293.el7             perl-Carp.noarch 0:1.26-244.el7         

  perl-Encode.x86_64 0:2.51-7.el7                 perl-Exporter.noarch 0:5.68-3.el7        perl-File-Path.noarch 0:2.09-2.el7      

  perl-File-Temp.noarch 0:0.23.01-3.el7           perl-Filter.x86_64 0:1.49-3.el7          perl-Getopt-Long.noarch 0:2.40-3.el7    

  perl-HTTP-Tiny.noarch 0:0.033-3.el7             perl-PathTools.x86_64 0:3.40-5.el7       perl-Pod-Escapes.noarch 1:1.04-293.el7  

  perl-Pod-Perldoc.noarch 0:3.20-4.el7            perl-Pod-Simple.noarch 1:3.28-4.el7      perl-Pod-Usage.noarch 0:1.63-3.el7      

  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7    perl-Socket.x86_64 0:2.010-4.el7         perl-Storable.x86_64 0:2.45-3.el7       

  perl-Text-ParseWords.noarch 0:3.29-4.el7        perl-Time-HiRes.x86_64 4:1.9725-3.el7    perl-Time-Local.noarch 0:1.2300-2.el7   

  perl-constant.noarch 0:1.27-2.el7               perl-libs.x86_64 4:5.16.3-293.el7        perl-macros.x86_64 4:5.16.3-293.el7     

  perl-parent.noarch 1:0.225-244.el7              perl-podlators.noarch 0:2.5.1-3.el7      perl-threads.x86_64 0:1.87-4.el7        

  perl-threads-shared.x86_64 0:1.43-6.el7         vim-common.x86_64 2:7.4.160-5.el7        vim-filesystem.x86_64 2:7.4.160-5.el7   

#可以看到把所需要的依赖也安装了

注:无法下载安装软件组

2>源码包安装nginx举例:

1、配置yum源

[root@localhost ~]# mount /dev/sr0 /mnt/   #挂载光盘

mount: /dev/sr0 写保护,将以只读方式挂载

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Media.repo   #修改本地yum

[c7-media]

name=CentOS-$releasever - Media

baseurl=file:///mnt/   #挂载点

gpgcheck=1 #

enabled=1   #0改为1

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum

.repos.d/CentOS-Base.repo.bak   #Base网络源改名,使它失效

[root@localhost ~]# yum -y install vim  #安装vim

[root@localhost ~]# yum -y install lrzsz   #安装rzsz

[root@localhost ~]# rz #nginx传输到linux

[root@localhost ~]# ls

anaconda-ks.cfg  nginx-1.18.0.tar.gz

[root@localhost ~]#tar -xvf ./nginx-1.18.0.tar.gz  #nginx包进行解压缩

[root@localhost ~]# cd ./nginx-1.18.0  #切换到nginx目录

[root@localhost nginx-1.18.0]# ls    #查看目录下的文件和目录

auto     CHANGES.ru  configure  html     man     src

CHANGES  conf        contrib    LICENSE  README

[root@localhost nginx-1.18.0]# cat ./README   #查看当下目录文件

Documentation is available at nginx news   #帮助信息,提示了nginx的官网

不能同时启动两种web服务器,如果安装了两个,要修改他们的端口和配置文件

 configure在当前目录,检测系统当中有无对应需要的编译工具,还能检测有无安装所需要的函数库文件    #可以加参数,指定安装位置和开启的功能模块

[root@localhost nginx-1.18.0]#  ./configure --prefix=/usr/local/nginx #检测环境,指定安装目录

checking for OS

 + Linux 3.10.0-957.el7.x86_64 x86_64

checking for C compiler ... not found

./configure: error: C compiler cc is not found    #没有c语言编译工具

[root@localhost nginx-1.18.0]# yum -y install gcc gcc-c++   #安装c语言编译工具

再次检测  ./configure --prefix=/usr/local/nginx

[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx

./configure: error: the HTTP rewrite module requires the PCRE library.   #检测到没有PCRE库文件

[root@localhost nginx-1.18.0]# yum -y install pcre pcre-devel  #安装库文件pcre-devel(依赖)

[root@localhost nginx-1.18.0]# yum -y install zlib zlib-devel  #安装zlib-devel文件(依赖)

再次检测,没有报错,执行成功

[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx

nginx error log file: "/usr/local/nginx/logs/error.log"  #不是报错,存放错误日志的文件的位置

#如果 --prefix=/usr/local/nginx位置写错,将文件删除,重新生成Makefile

 如果没有指定直接输入 ./configure,可以将 ./nginx-1.18.0删掉,重新解压

[root@localhost nginx-1.18.0]# echo $?   #确认上条命令执行是否正确,0表示正确

0

ls当前目录查看,检测成功后出现Makefile文件(存放安装位置)

[root@localhost nginx-1.18.0]# ls

auto     CHANGES.ru  configure  html     Makefile  objs    src   CHANGES  conf        contrib    LICENSE  man       README

编译安装         如果用其他makefile文件,make -f 可以指定makefile文件的位置(绝对路径)

[root@localhost nginx-1.18.0]# make && make install    # && 前一条命令执行正确,后面再执行

[root@localhost nginx-1.18.0]# ls /usr/local/   #查看nginx安装是否成功

bin  games    lib    libexec  sbin   src

etc  include  lib64  nginx    share

启动nginx

[root@localhost ~]# systemctl start nginx

Failed to start nginx.service: Unit not found.      #systemctl没办法管理源码包安装的服务

[root@localhost ~]# /usr/local/nginx/sbin/nginx   #源码包服务启动方式

[root@localhost tmp]# /usr/local/nginx/sbin/nginx  -s stop  #停止方式 (切换到/tmp下)

想要删除nginx,先关闭服务,再删除 rm -rf /usr/local/nginx/

[root@localhost ~]# ll /usr/local/nginx/sbin/nginx

-rwxr-xr-x. 1 root root 3851224 10 21 11:18 /usr/local/nginx/sbin/nginx

[root@localhost ~]# yum -y install net-tools  #安装netstat命令 ifconfig命令

[root@localhost ~]# netstat -anpt   #查看端口状态

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   

tcp        0      0 0.0.0.0:80            0.0.0.0:*       LISTEN    21768/nginx: master   #80端口开启,http服务(nginx)启动

    执行./configure命令必须在当前目录中,执行完毕后查看是否有报错信息,是否需要安装其他的依赖软件包。

    有的安装包解压缩后,切换到目录下查看没有绿色的可执行的文件configure,但是有Makefile文件,可移执行make,再查看可以看到可执行的命令,可以在当前目录使用,

举例:tree

rzrpm包传到Linux中,解压缩

[root@localhost ~]# rz   

[root@localhost ~]#  ls

anaconda-ks.cfg  nginx-1.18.0  nginx-1.18.0.tar.gz   tree-1.7.0.tgz

[root@localhost ~]# file ./tree-1.7.0.tgz   #查看压缩包类型

./tree-1.7.0.tgz: gzip compressed data, from Unix, last modified: Thu Apr 24 05:39:26 2014

[root@localhost ~]# tar -xvf ./tree-1.7.0.tgz   #解压缩

[root@localhost ~]# ls   #查看,出现tree-1.7.0目录

anaconda-ks.cfg  nginx-1.18.0         tree-1.7.0

exfat.zip        nginx-1.18.0.tar.gz  tree-1.7.0.tgz

[root@localhost ~]# cd ./tree-1.7.0    #切换到目录下

[root@localhost tree-1.7.0]# ls      #查看目录下文件,没有可执行文件,但是有Makefile文件

CHANGES  hash.c   json.c    README        tree.c  xml.c

color.c  html.c   LICENSE   strverscmp.c  tree.h

doc      INSTALL  Makefile  TODO          unix.c

[root@localhost tree-1.7.0]# make    #

[root@localhost tree-1.7.0]# ls    #查看,有绿色可执行文件的tree

CHANGES  hash.c  INSTALL  Makefile      tree    unix.c

color.c  hash.o  json.c   README        tree.c  unix.o

color.o  html.c  json.o   strverscmp.c  tree.h  xml.c

doc      html.o  LICENSE  TODO          tree.o  xml.o

[root@localhost tree-1.7.0]# ./tree /boot  #在目录下可以执行./tree命令

/boot

├── config-3.10.0-957.el7.x86_64

├── efi

│   └── EFI

│       └── centos

├── grub

│   └── splash.xpm.gz

├── grub2

[root@localhost tree-1.7.0]# make install   #复制到/usr/bin /usr/man/man1

install -d /usr/bin

install -d /usr/man/man1

if [ -e tree ]; then \

install tree /usr/bin/tree; \

fi

install doc/tree.1 /usr/man/man1/tree.1

#只能在当前看到tree可执行文件,这些可执行文件需要到特定的路径下,才能不加路径的直接执行

把可执行文件放到/usr/bin /usr/sbin目录下,root用户可以执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值