Ubuntu离线安装软件包

一、介绍

1、背景

最近在工作中有遇到这样的情况:某台机器搭建环境的时候,需要安装第三方的软件,但是这台机器是内网的,内网源没有这个软件包,

那么怎么安装呢?

2、准备工作

这个时候就想到了一种方法,先去一台能联网的机器,最好是一台新的机器,这是为了避免我们打包的时候把之前安装的其他三方包也打包进来了,

虽然没有什么影响,但是打包太大,上传比较麻烦。

假如我要下载的三方包是 chromium ,国内的机器可以更改ubuntu的更新源为阿里云。

用你熟悉的编辑器打开:
vim /etc/apt/sources.list

替换默认的
http://archive.ubuntu.com/
为
mirrors.aliyun.com

# ubuntu 16.04 配置如下
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

# 然后更新源,执行命令
apt-get update

然后在这台新机器上,apt-get install chromium-browser 下载chromium-browser

执行完上述指令后,XXXX软件的安装包就下载到了/var/cache/apt/archives目录下

二、开始制作离线包

1、生成依赖关系并打包

# 在新机器(已经下载了chromium-browser的机器下操作)
1.新建一个文件夹
在项目根目录新建文件夹offlinePackage
mkdir /offlinePackage

2.拷贝下载的deb包
将下载的deb包拷贝到上述新建的文件夹下
cp -r /var/cache/apt/archives  /offlinePackage

3.修改文件夹的权限,可读可写可执行
sudo chmod 777 -R /offlinePackage/

4.建立deb包的依赖关系
sudo dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz
如果出现错误:sudo: dpkg-scanpackages: command not found
则需要安装dpkg-dev工具
apt-get install dpkg-dev

5.打包成压缩包
tar -zcvf offlinePackage.tar.gz /offlinePackage/
保存offlinePackage.tar.gz文件到本地或者其他能上传到公司内网的服务器

2、其他不能联网的机器安装

# 在另外一台Ubuntu上离线安装
1.拷贝文件到根目录
将刚才制作的offlinePackage.tar.gz复制到根目录下,解压
tar -zxvf offlinePackage.tar.gz /

2.先备份下原本的源,避免炸了,哈哈
cp /etc/apt/sources.list /etc/apt/sources.list.back
 
3.更新系统源
# 将安装包所在和源路径添加到系统源source.list
vim /etc/apt/sources.list

# 内容如下
deb file:// /offlinePackage/

# 更新
sudo apt-get update

4.结果
W: The repository 'file: offlinePackage/ Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
这个是正常的,已经更新成功了,提示我们这是不安全的更新源

5.离线安装
这时我们就可以下载我们刚才打包好的软件了,
因为刚才更新源的时候已经提示不安全了,所以安装软件时,加上这个参数:--allow-unauthenticated
apt-get -y install chromium-browser --allow-unauthenticated

三、将自己的deb项目添加到私有仓库,使用apt方式管理

我还看到了别人写的一篇好像挺不错的方法,这里记录下来:

参考文章1:https://www.jianshu.com/p/ee870d63c175

参考文章2:https://www.cnblogs.com/xiao987334176/p/9875480.html

上线使用的是file方式,只能本机使用。那么其他服务器要使用,就不行了!
这个时候,需要使用http方式。可以让局域网的其他服务器使用!

1、安装nginx

sudo apt-get install -y nginx

2、搭建项目索引页

这里不使用域名,直接访问IP地址作为主页!

注释掉nginx的默认首页

sudo vim /etc/nginx/nginx.conf

找到以下内容,将sites-enabled注释掉

include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*;

进入目录conf.d,新建文件deb.conf

vim /etc/nginx/conf.d/deb.conf 

内容如下:

复制代码
server {
    listen 80;
    server_name localhost;
    root /offlinePackage;

    location / {
        autoindex on;
    }
}
复制代码

检查配置文件是否正确

sudo nginx -t

如果出现以下提示,表示ok

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

加载配置

nginx -s reload

3、访问索引页

访问url: http://192.168.91.128/ ,效果如下:

4、更新ubuntu数据库

编辑配置文件

sudo vim /etc/apt/sources.list

最后一行增加

deb http://192.168.91.128 /

注意:保证有空格,否则会提示格式错误。

最后一个是斜杠

使用apt-get update来更新一下

sudo apt-get update

之后,就可以安装软件了!

务必注意:使用apt-get install -y 软件名,后面一定要带--allow-unauthenticated,因为它是私有的,还没有签名!

原文地址:https://www.cnblogs.com/Zzbj/p/14100234.html