如何为 运行 "apt install ./<package_name>" 指定用户定义的存档目录
How to specify user defined archive directory for running "apt install ./<package_name>"
我必须安装一些软件包。问题是系统无法访问互联网。我可以使用
下载所有相关的 .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
安装它时,它不会搜索本地目录并上网。
有没有办法为 apt install 命令提供所有 .deb 文件的目录位置?
否则更好的解决方案也会有很大的帮助。
谢谢!
显然我找到了解决方案,但忘了在这里提及。
为了制作deb文件和依赖的本地目录路径。我们必须先下载任何文件夹中的所有依赖项,然后 运行 此命令。
echo "Dir::Cache::Archives "/opt/packages/dep/";" | sudo tee -a /etc/apt/apt.conf
编辑:
扩展答案以获得更好的解决方案:
在 Nginx Docker 容器上托管 deb 文件。并从 Nginx 容器中的 Ubuntu/CentOS 映像复制文件。
查看此要点:它具有 Docker 文件,用于在映像中创建依赖 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
我必须安装一些软件包。问题是系统无法访问互联网。我可以使用
下载所有相关的 .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
安装它时,它不会搜索本地目录并上网。
有没有办法为 apt install 命令提供所有 .deb 文件的目录位置?
否则更好的解决方案也会有很大的帮助。
谢谢!
显然我找到了解决方案,但忘了在这里提及。
为了制作deb文件和依赖的本地目录路径。我们必须先下载任何文件夹中的所有依赖项,然后 运行 此命令。
echo "Dir::Cache::Archives "/opt/packages/dep/";" | sudo tee -a /etc/apt/apt.conf
编辑: 扩展答案以获得更好的解决方案: 在 Nginx Docker 容器上托管 deb 文件。并从 Nginx 容器中的 Ubuntu/CentOS 映像复制文件。
查看此要点:它具有 Docker 文件,用于在映像中创建依赖 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