linux在离线状态下安装配置各种应用和包的几种方法(搭建本地YUM源仓库源、python-django项目依赖包迁移方法)

linux-centos中安装相关知识

一、源代码形式

1.      绝大多数开源软件都是直接以原码形式发布的

2.      源代码一般会被打成.tar.gz的归档压缩文件

3.      源代码需要编译成为二进制形式之后才能够运行使用

4.      源代码基本编译流程:

1).configure 检查编译环境;

2)make对源代码进行编译;

3make insall 将生成的可执行文件安装到当前计算机中
源代码形式

二、RPM

RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。

RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。

  1.安装软件:执行rpm -ivh rpm包名,如:
  #rpm -ivh apache-1.3.6.i386.rpm 
  2.升级软件:执行rpm -Uvh rpm包名。
  3.反安装:执行rpm -e rpm包名。
  4.查询软件包的详细信息:执行rpm -qpi rpm包名
  5.查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名
  6.查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名
RMP
1.源代码形式的特点:操作复杂、编译时间长、极易出现问题、依赖关系复杂

2.为了方便,RPM(redhat package manager)

3.RPM通过将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包

4.常用命令规范:linuxcast-1.2.0-30.el6.1686.rpm 包名-版本号-适用平台-32/64-rpm

5.使用rpm –i software.rpm(安装);

rpm -e software.rpm(卸载);

rpm –U software.rpm(升级形式安装);

rpm –ivh http://www.linuxcast.net/software.rpm(支持通过http\ftp协议形式安装)

-v 显示详细信息;-h显示进度条

查询功能:rpm –qa 列出全部已经安装的.rpm软件  rpm –qa |grep ***
RMP用法

三:YUM

1.      rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum解决这些问题。Yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系,其特点:

1) 自动解决依赖关系

2) 可以对rpm进行分组,基于组进行安装操作

3) 引入仓库概念,支持多个仓库

4) 配置简单

2.  yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库。

3. 仓库的配置文件/etc/yum.repos.d目录下

4. 使用:

1) yum install 安装;

2) yum remove卸载;

3) yum update 升级制定软件

5. 安装的时候,会下载软件包.Rpm在安装,所以用国内仓库

改变镜像源

1) 访问地址http://mirrors.163.com/

2)  点centos使用帮助

3) 按步骤来

6.  查询软件:可以使用yumsearch **
YUM说明

 四:PIP

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。

Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。

pip在安装完python后,可以使用软连接进行配置。
PIP使用说明

 

如果对服务器连接外网有严格要求,就必须在离线环境下进行安装配置。根据不同的情况,离线安装有以下几种方法:

安装少量无依赖的应用和包

1.使用能上网的设备,在提供包下载的网站上下载需要的内容,用U盘或FTP等方法拷贝到内网服务器安装。

  包下载网站: https://pypi.org/project  、http://rpmfind.net/ 等

  通过ftp拷贝:

    a)把包文件上传到ftp

    b)从服务器把需要的包文件下载

      ftp 192.168.1.2

        # 输入用户名,密码 登录

      ftp> prompt    #关闭下载提示

      ftp> get | mget   filename            #  get单文件下载;mget多文件下载

2.安装

  直接安装:  

    yum   -y   install    xxx.rpm

    pip install -y xxx.whl

  编译安装:

    tar -xvzf python3.8.3.tar.gz

    cd python3.8.3

    ./configure --prefix=/opt/python383

    make && make install

python-django项目迁移依赖包离线安装

可以从已经安装好环境的设备上批量下载离线安装包,然后安装到断网环境的设备上。

    1.在项目中导出下载依赖包包:
    pip freeze > requirements.txt    导出环境中用到的依赖包记录文本
    pip download -d /tmp/packages -r requirements.txt    
      要保存下载的包的目录 -r requirements.txt 通过txt文件中的内容,下载相应的依赖包到指定目录
 
 2.通过上面的方法,把包拷贝到内网服务器
 
 3.安装包:
        pip install --no-index --find-links=packages -r requirements.txt
        也可以下载一个包后,通过pip install **.whl或者python setup.py install **.tar.gz 安装
     指定安装目录
      pip38 install --no-index --find-links=packages -r requirements.txt --target=/opt/envs/django2.1.8/lib/python3.8/site-packages #未测试
 4. 注意:python3不再支持mysqldb,取而代之的是pymysql,安装依赖包时应注意。

使用yum downloadonly下载RPM包及依赖包

1.下载yumdownloadonly插件

  yum install yum-plugin-downloadonly

2.下载到指定目录(依赖包会一起下载)

   #   --downloadonly                只下载

   #   --downloaddir=temp         rpm的下载保存地址

  yum install --downloadonly --downloaddir=/root/httpd httpd

再例如:

#yum -y groupinstall "Developmenttools" --downloadonly --downloaddir=/download/111
#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-deve xz gcc --downloadonly --downloaddir=/download/111

#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-develsqlite-devel readline-devel tk-devel gdbm-devel
          db4-devel libpcap-develxz-devel man --downloadonly --downloaddir=/download/111

 

3. 通过上面的方法,把包拷贝到内网服务器

4.在内网服务器的rpm所在的文件夹内,执行以下脚本,批量安装包和依赖
  rpm -Uvh --force --nodeps *.rpm

利用缓存下载离线包(不推荐)

默认情况下,yum在安装软件包后会自动清理软件包,修改配置,使yum不再清理软件包

  im /etc/yum.conf中修改keepcache = 0改为keepcache = 1
  /etc/init.d/yum-updatesd restart
  yum -y install httpd
  这时软件包已经安装下载,目录为/var/cache/yum

使用yum downloader下载RPM包及依赖包

1.下载安装downloader

     yum install yum-utils -y

2.downloader使用

    sudo yum downloader 软件名

    sudo yumdownloader nano 

  默认情况下,下载的包会被保存在当前目录中,我们需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。我们可以通过加参数,使得下载包的过程中同时下载依赖以及自定义下载位置,格式为:yumdownloader 软件名 –resolve –destdir=保存目录

例如:

  #--resolve  下载依赖包

  #--destdir=  下载保存目录

  sudo yum downloader httpd --resolve --destdir=/root/package/httpd

3. 通过上面的方法,把包拷贝到内网服务器

4.在内网服务器的rpm所在的文件夹内,执行以下脚本,批量安装包和依赖
 
  rpm -Uvh --force --nodeps *.rpm

通过搭建本地yum仓库源实现离线安装包和相关依赖(使用镜像ISO文件)

1.YUM本地仓库源配置文件介绍

CentOS使用的yum源是在/etc/yum.repos.d/目录下的两个文件中进行配置的CentOS-Base.repo和CentOS-Media.repo。
其中,CentOS-Base.repo是配置网络yum源,CentOS-Media.repo是配置本地yum源。

2.配置ISO挂载

  #下载地址: http://mirrors.sohu.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso

    将镜像文件centos7.iso拷贝至Linux文件目录,如/usr/local/src

  # 创建挂载路径

  sudo mkdir /mnt/iso

  # 挂载ISO镜像到目录

  mount  -o loop  /usr/local/src/centos7.iso    /mnt/iso

  # 验证挂载

  df -h

3.配置本地YUM源 

  cd /etc/yum.repos.d   #yum源配置文件放置目录

  mv CentOS-Base.repo CentOS-Base.repo.bak      #先将网络yum源配置文件更名(让其失效)

  vi CentOS-Media.repo    #编辑本地yum源文件

  (sudo touch /etc/yum.repos.d/local.repo) # 也可以创建一个新的源文件,把centos-media.repo改名

  name=CentOS-$releasever - Media        #本地yum源名称(可随意修改)

  baseurl=file:///mnt/iso/                   #光盘挂载目录

  gpgcheck=0

  enabled=1                                   #使用此yum源(等于0为不启用)

  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 本地yum源密钥

  其中,baseurl是本地yum源的位置,当然,根据我们iso的配置位置,这里是可以进行修改的。
  不过,我只是将iso文件挂载到
/mnt/iso/目录,所以,我也没有做修改。将enabled改为1,启用本地yum源,其他配置保持不变。

4.更新yum源,查看是否有yum列表产生

  yum clean all 

  yum makecache

  yum repolist

  yum list

5.安装rpm包

  yum install package_name

6.在虚拟环境中用DVD挂载ISO,配置YUM源

  https://cloud.tencent.com/developer/article/1336558

7.说明:使用mount命令挂载后,当系统重新启动后这些挂载的配置就不再生效(需检验),所以我们需要修改配置文件/etc/fstab来让挂载的配置永久生效

    vim /etc/fstab
    # 在文件的末尾添加如下内容(这是用DVD进行的挂载)
    /dev/sr0 /mnt/cdrom1 iso9660 defaults 0 0
    /dev/sr1 /mnt/cdrom2 iso9660 defaults 0 0

搭建本地离线yum仓库(非ISO)

大致需要如下几个步骤。

1.把rpm包及其相关依赖全部都下载到本地目录

  mkdir /opt/localrepo

  #通过downloadonly、downloader、在rmp网站直接下载等方法把包文件下载到本地目录

2.在/etc/yum.repos.d/目录下配置本地仓库源信息

  # vim /etc/yum.repos.d/localrepo.repo

  [localrepo]

  name=localrepo

  baseurl=file:///localrepo

  gpgcheck=0

  enabled=1

  # 说明

  .repo配置文件:

  localrepo是本地仓库名,可任意起名,但是注意不能与已有的仓库名重复。

  name后面是注释信息,随意书写。

  baseurl这后面就是填写本地仓库路径了,file://表示使用本地文件协议,后面的/localrepo本地rpm包存放路径。

  gpgcheck=0这是和验证包的安全信息的,最好设置成0,表示关闭安全验证,否则还需要准备安全验证文件,麻烦一堆一堆的。

  enabled=0,表示启用本仓库,0启用,1关闭。

  更多详细配置信息,请参考man yum.conf

3.使用createrepo命令生成repodata信息

    如果我们现在就直接使用本地仓库安装一个包,会报如下错误:

    couldn't open file /localrepo/repodata/repomd.xml

    告诉我们找不到/localrepo/repodata/repomd.xml这个文件,应为到目前位置我们的本地仓库里除了rpm包之外什么都没有,
    repomd.xml这个文件简单来说就是存放本地仓库rpm包的索引信息,具体用法不是我们关心的重点,可以使用createrepo直接生成。 假如我们本地仓库没有配置好,不仅本地仓库无法使用,整个yum安装工具都会一直报错,此时我们把本地yum配置文件改名或暂时删除即可 # createrepo命令默认系统没有,需要我们额外安装:
yum install createrepo -y 安装完毕之后,直接使用: createrepo /localrepo/ 这时会发现本地仓库repodata相关信息已经生成完毕。

4.使用yum repoinfo检查确认

使用下述命令可以检查看到本地仓库基本信息:

  yum repoinfo as4k

    Repo-id      : localrepo

    Repo-name    : localrepo

    Repo-status  : enabled

    Repo-pkgs    : 48

    Repo-size    : 514 M

    Repo-baseurl : file:///localrepo/

    Repo-expire  : 

    Filter     : read-only:present

    Repo-filename: /etc/yum.repos.d/localrepo.repo

    repolist: 48

5.安装rpm包测试

   yum install vim

6.使用说明

  可以看到使用起来,与线上仓库区别不大。创建好的本地仓库可直接scp复制到其它机器使用,yum配置文件及rpm仓库直接复制过去即可,无需再创建一遍repodata信息。

7.对本地仓库进行更新

  下载一个新的rpm软件包到本地仓库,此时我们使用yum repoinfo localrepo查看会发现软件包的数量并没有增加,
我们安装新增的软件包也会提示,找不到次软件包的现象,可以按照下述步骤,更新仓库信息。   查看旧的软件包总数
yum repoinfo localrepo | grep pkgs   更新本地仓库 createrepo --update /localrepo/   清除所有缓存 yum clean all   查看新的软件包总数 yum repoinfo localrepo | grep pkgs   如果软件包的数量增加,说明仓库更新成功。

搭建在局域网可以访问的YUM源

https://www.cnblogs.com/lynsen/p/10631255.html  

posted on 2020-06-30 16:48  东门乱弹琴  阅读(6541)  评论(0编辑  收藏  举报

导航