一、实验背景

Ubuntu作为最优秀的Linux发行版之一,是初学者入门的不二选择,但Linux有个最大的问题,就是离了网络就废了。

在Windows系统中,安装软件十分方便,下载安装程序,直接setup就可以了。

其实Linux安装软件也非常方便,前提是在联网的情况下,但要是离线安装,就无法享用apt的优势了,而直接使用dpkg安装,各种软件的依赖关系绝对让你头疼。

在某些对安全要求比较严的地方,是没有上网环境的,如果我们要在不能联网的Ubuntu上安装特定的软件包(比如nginx),怎么办?

类比CentOS,聪明如果你,一定想到了将指定的软件包及其依赖先在有网的机器上下载下来,然后拷贝到不能联网的机器,搭建本地仓库(源),执行安装。

那么问题来了:

1. 怎么在有网的机器上将一个特定软件包及其依赖一次性下载下来?

2. 怎么在不能联网的机器,搭建本地仓库(源)?

 

二、实验环境

操作系统: Ubuntu16.04 

serverA   192.168.1.101    能联网

serverB  192.168.1.102    不能联网

 

三、在serverA上制作nginx离线安装包

 

1. 添加nginx官方仓库

 

Official Debian/Ubuntu packages

https://www.nginx.com/resources/wiki/start/topics/tutorials/install

 

#  vim  /etc/apt/sources.list.d/nginx.list

##############################################

deb http://nginx.org/packages/ubuntu/ xenial nginx

deb-src http://nginx.org/packages/ubuntu/ xenial nginx

##############################################

 

# apt-get update

# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  ABF5BD827BD9BF62

 

添加仓库(源)信任的另一种方式

 

#  vim  /etc/apt/sources.list.d/nginx.list

##########################################################

deb       [trusted=yes]      http://nginx.org/packages/ubuntu/   xenial nginx

deb-src  [trusted=yes]     http://nginx.org/packages/ubuntu/   xenial nginx

###########################################################

# apt-get update

列出添加的nginx源中软件包

 

#  ll /var/lib/apt/lists/*nginx*

#  grep -E "Package:|Version:" Package /var/lib/apt/lists/nginx.org_packages_ubuntu_dists_xenial_nginx_binary-amd64_Packages

# grep  -E "Package:|Version:" Package  /var/lib/apt/lists/nginx.org_packages_ubuntu_dists_xenial_nginx_binary-amd64_Packages | awk '{print $2}'

 

# apt-cache madison nginx

# apt-cache policy nginx

 

2. 下载nginx主包及其依赖

 

# mkdir -p /root/nginxDeps

# cd   /root/ngixDeps

# apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nginx=1.16.0-1~xenial | grep -v i386| grep "^\w" | sort -u

#  apt-get download  $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances nginx=1.16.0-1~xenial | grep -v i386| grep "^\w" | sort -u)

 

# dpkg-scanpackages . | gzip -9c > Packages.gz

 

 

3.将/root/nginxDeps目录打包,拷贝到serverB离线机器

#  tar  -zcf   nginxDeps.tar.gz     nginxDeps

 

 

四、在serverB利用离线安装包搭建本地源

 

# tar  -zxf    nginxDeps.tar.gz  -C  /tmp

注意:不能解压在/root 目录下,否则会报没有读取权限!

 

# cp /etc/apt/sources.list    /etc/apt/sources.list.bak

# echo  >  /etc/apt/sources.list 

#  vi   /etc/apt/sources.list  

#########################################

deb [trusted=yes] file:///tmp/nginxDeps/    ./

#########################################

 

# apt-get clean all

# apt-get update

 

# apt -y install nginx

 

 

 

还原仓库文件

#   cp  /etc/apt/sources.list.bak   /etc/apt/sources.list

#  rm  -rf  /tmp/nginxDeps

 

如上,我们实现了nginx在Ubuntu上的离线安装,其他软件的安装方法类似,触类旁通,举一反三。

 

六、参考

 

Get Docker CE for Ubuntu

https://docs.docker.com/install/linux/docker-ce/ubuntu

 

How To Build Local APT Repositories?

https://www.centos.bz/2017/07/apt-mirror-deploy-ubuntu-local-repositry

https://odzangba.wordpress.com/2006/10/13/how-to-build-local-apt-repositories

 

How To Install Softwares Offline In Ubuntu 16.04

https://www.ostechnix.com/install-softwares-offline-ubuntu-16-04

https://www.jb51.net/article/99570.htm

 

Is there an apt command to download a deb file from the repositories to the current directory?

https://askubuntu.com/questions/30482/is-there-an-apt-command-to-download-a-deb-file-from-the-repositories-to-the-curr

 

How to list/download the recursive dependencies of a debian package?

https://stackoverflow.com/questions/22008193/how-to-list-download-the-recursive-dependencies-of-a-debian-package

 

How to download all dependencies and packages to directory?

https://stackoverflow.com/questions/13756800/how-to-download-all-dependencies-and-packages-to-directory

 

How To Create A Local Debian/Ubuntu Mirror With apt-mirror?

https://www.howtoforge.com/local_debian_ubuntu_mirror

 

How do I download a package from apt-get without installing it?

https://stackoverflow.com/questions/4419268/how-do-i-download-a-package-from-apt-get-without-installing-it

 

How to Force update from unsigned repository Ubuntu 16.04 ?

https://askubuntu.com/questions/732985/force-update-from-unsigned-repository-ubuntu-16-04

 

How to download .deb package and all dependencies?

https://superuser.com/questions/876727/how-to-download-deb-package-and-all-dependencies

 

Ubuntu 16.04: Download deb package and all package dependencies

https://www.hiroom2.com/2016/08/10/ubuntu-16-04-download-deb-package-and-all-package-dependencies

 

How to list all packages from a repository in ubuntu / debian?

https://serverfault.com/questions/252333/list-all-packages-from-a-repository-in-ubuntu-debian

https://www.linuxuprising.com/2018/11/how-to-list-all-packages-in-repository.html

https://askubuntu.com/questions/220478/how-to-get-list-of-installable-packages-from-repositories

 

THE DEB AND DEB-SRC TYPES: GENERAL FORMAT

https://manpages.debian.org/testing/apt/sources.list.5.en.html

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐