如何指定用户定义的存档目录以运行“ apt install ./ <package_name>”

时间:2019-09-27 09:34:20

标签: ubuntu apt

我必须安装一些软件包。问题是系统将无法访问互联网。我可以使用

下载所有相关的.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文件提供目录位置以进行安装命令?

否则,更好的解决方案也将有很大帮助。

谢谢!

1 个答案:

答案 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