我必须安装一些软件包。问题是系统将无法访问互联网。我可以使用
下载所有相关的.deb文件for i in $(apt-cache depends default-jre-headless | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do apt-get download $i 2>>errors.txt; done
但是当我尝试使用apt install ./default-jre-headless
安装它时,它不会搜索本地目录并且会联机。
有没有办法为所有.deb文件提供目录位置以进行安装命令?
否则,更好的解决方案也将有很大帮助。
谢谢!
答案 0 :(得分:1)
显然我找到了解决方案,但是忘了在这里提及。
为了使deb文件和依赖项成为本地目录路径。我们必须首先将所有依赖项下载到任何文件夹中,然后运行此命令。
echo "Dir::Cache::Archives "/opt/packages/dep/";" | sudo tee -a /etc/apt/apt.conf
编辑: 扩展答案以获得更好的解决方案: 将deb文件托管在Nginx Docker容器上。然后从Nginx容器中的Ubuntu / CentOS映像复制文件。
查看此要点:它具有Dockerfile,可在映像中创建相关的deb / rpm文件并将其移至Nginx容器中。如果您有一些额外的zip或tar文件,也可以将其包含在内。另外,它还有一个conf文件供参考。 https://gist.github.com/ismail0352/e96d2cc94b71ef2324c9c0890ef7ca7f
其中一小部分可供参考:
# For Ubuntu
FROM ubuntu as ubuntu
RUN apt-get update
RUN apt-get install -y dpkg-dev wget gnupg2 curl
WORKDIR /opt/packages/deb
RUN apt update
RUN chown -R _apt /opt/packages/deb/
RUN apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances default-jre-headles | grep "^\w" | sort -u)
RUN dpkg-scanpackages . | gzip -9c > Packages.gz
# For Centos
FROM centos as centos
WORKDIR /opt/packages/rpm
RUN yum install wget curl epel-release createrepo yum-utils -y
RUN yum update -y
RUN yumdownloader --resolve java-1.8.0-openjdk-headless
# Nginx
FROM nginx
RUN apt-get update
RUN apt install wget -y
COPY nginx_default.conf /etc/nginx/conf.d/default.conf
WORKDIR /usr/share/nginx/html
COPY --from=ubuntu /opt/packages/ .
COPY --from=centos /opt/packages/ .
WORKDIR /usr/share/nginx/html/others/
RUN wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.1.zip