需要一台可联网 ubuntu 服务器(尽量与无网络服务器版本一致)
有网服务器
更新源/安装依赖
# 更新源
sudo apt-get update
# apt-rdepends 可以查看依赖及依赖的依赖
# 这个工具可以创建完整的依赖树
sudo apt-get install -y apt-rdepends
# 建立deb包的依赖关系的时候可能会报错 需要安装这个
sudo apt-get install -y dpkg-dev
# 在无网服务器中 make 的时候可能会报错需要安装 libc6-dev 和它的依赖包
sudo apt-get download $(apt-rdepends libc6-dev|grep -v "^ ")
安装gcc和make
# 同时下载gcc的所有依赖包
sudo apt-get download $(apt-rdepends gcc|grep -v "^ ")
sudo apt-get install -y make
# 下载的依赖包会保存在 /var/cache/apt/archives 里面
安装telnet
# 输出空,则没有安装telnet
netstat -a | grep telnet
# 安装telnet
sudo apt-get install -y openbsd-inetd
sudo apt-get install -y telnetd
sudo apt-get install -y xinetd
# 需要检查openbsh-inted配置文件
cat /etc/inetd.conf
# 注意安装顺序是否和下面是否一致
# telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
# 查看状态
service xinetd status
# (注意如果/etc/inetd.conf 有那条记录可以不重启)启动服务
/etc/init.d/openbsd-inetd restart
# 查看telnet 运行端口
netstat -anpt|grep 23
# 测试是否可以登录(在别的机器上登录)
telnet ip
生成依赖关系
# [根目录]新建文件夹
sudo mkdir offlinePackage
# 将下载的 deb 包拷贝到新建文件夹中
sudo cp -r /var/cache/apt/archives /offlinePackage
# 修改文件夹的权限
sudo chmod -R 777 /offlinePackage/
# 建立 deb 包的依赖关系
sudo dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz -r
# 如果出现错误:sudo: dpkg-scanpackages: command not found
# 则需要先安装 dpkg-dev 工具
# sudo apt-get install dpkg-dev
# 将生成的 Packages.gz 包复制到和 deb 同目录下
sudo cp /offlinePackage/Packages.gz /offlinePackage/archives/Packages.gz
# 打成压缩包 备用 (打包前 请先看下面)
sudo tar -cvzf offlinePackage.tar.gz offlinePackage/
#####################################################################
# 有个问题 在无网络服务器中安装时 会报文件位置错误
# 所以需要把 offlinPackage 自身整个文件 copy 一份进 offlinPackage 里
# 然后再打包
# 目录如下:
├── / ## 根目录
│ ├── offlinPackage ## offlinPackage
│ ├── archives ## deb包目录
| ├── xxx.deb ## deb包
| ├── Packages.gz ## 依赖关系
│ ├── offlinPackage ## offlinPackage copy
│ ├── archives ## deb包目录
| ├── Packages.gz ## 依赖关系
│ └── Packages.gz ## 依赖关系
#####################################################################
无网服务器
将在有网服务器中生成的offlinePackage.tar.gz上传至无网服务器
更新系统源
# 将 offlinePackage.tar.gz 复制到[根目录]并解压
sudo tar -xzvf offlinePackage.tar.gz
# 备份原来的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑系统源
sudo vi /etc/apt/sources.list
# 在最后加入
# deb file:///offlinePackage archives/
# 注意:把其他 deb 全部注释掉
# 更新系统源
sudo apt-get update
# 可能会出现问题,以下是解决办法
sudo apt-get update --allow-insecure-repositories
sudo apt-get install -f
sudo apt-get update --allow-unauthenticated
# 注意:
# 本地的源是没有签名的,
# 直接更新ubuntu1604下的apt会提示找不到release文件,是一种不安全的源,默认是被禁用的。
# 如果还要安装的话需要加上这个 --allow-unauthenticated选项。
离线安装
# make 的时候可能会报错 需要安装这个
sudo apt-get install libc6-dev
# 此时就可以离线安装gcc和make了(不需要编译)
# 这里下载不能加 -y 因为是从咱的文件中安装 属于未验证安装包 加 -y 会报错
sudo apt-get install gcc
sudo apt-get install make
# 注意:这里就会报在(有网服务器->生成依赖关系)中说的文件位置错误。
# 查看是否安装成功
gcc -v
make -v
# 还有可能出现另一种错误
# You will have to enable the component called 'main'
# 解决方法:sudo add-apt-repository main
# 安装telnet
sudo apt-get install openbsd-inetd
sudo apt-get install telnetd
sudo apt-get install xinetd