วิธีสร้างที่เก็บ APT ในพื้นที่


103

ฉันต้องการสร้างที่เก็บในเครื่องของฉันเองบน LAN ของฉันเพื่อให้เครื่องบน LAN สามารถอัปเดตและอัปเกรดได้ ฉันต้องการดาวน์โหลดแพ็คเกจและเก็บไว้ในเซิร์ฟเวอร์ในพื้นที่ของฉันเพื่อให้ฉันสามารถอัปเกรดอัปเกรดติดตั้งและอื่น ๆ ได้โดยไม่ต้องใช้อินเทอร์เน็ต


2
สำเนาซ้ำที่เป็นไปได้: askubuntu.com/questions/974/…
stephenmyall

3
ฉันไม่คิดว่ามันจะซ้ำกัน สิ่งที่ maythux ต้องการทำให้สำเร็จคือสร้างเซิร์ฟเวอร์ที่เก็บข้อมูลของตนเองเพื่อใช้งานกับความถนัด สิ่งที่ Keryx ทำแทนความถนัดเป็นผู้จัดการแพ็กเกจและสร้างแหล่งภายนอกสำหรับแพ็คเกจ
การใช้งาน

1
เป็นไปได้ซ้ำไหม - askubuntu.com/questions/9809/ …หรือaskubuntu.com/questions/3503/…
jrg

คำตอบ:


80

จากวิกิช่วยเหลือของ Ubuntu :

มี 4 ขั้นตอนในการตั้งค่าที่เก็บง่าย ๆ สำหรับคุณ

1.Install dpkg-dev
2. ใส่แพ็คเกจในไดเรกทอรี
3. สร้างสคริปต์ที่จะสแกนแพ็กเกจและสร้างไฟล์ apt-get update สามารถอ่านได้
4. เพิ่มบรรทัดลงในแหล่งที่มาของคุณรายการที่ชี้ไปยังที่เก็บของคุณ

ติดตั้ง dpkg-dev

พิมพ์เทอร์มินัล

sudo apt-get install dpkg-dev

สารบบ

สร้างไดเรกทอรีที่คุณจะเก็บแพ็คเกจของคุณ สำหรับตัวอย่างนี้เราจะใช้/usr/local/mydebs.

sudo mkdir -p /usr/local/mydebs

ตอนนี้ย้ายแพ็คเกจของคุณไปยังไดเรกทอรีที่คุณเพิ่งสร้างขึ้น

โดยทั่วไปแพคเกจที่ดาวน์โหลดมาจะถูกเก็บไว้ในระบบของคุณใน/var/cache/apt/archivesไดเรกทอรี หากคุณติดตั้ง apt-cacher คุณจะมีแพ็คเกจเพิ่มเติมที่เก็บไว้ในไดเรกทอรี / แพ็คเกจ

สคริปต์ปรับปรุง -dedebs

มันเป็นสามซับง่าย:

#! /bin/bash
 cd /usr/local/mydebs
 dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

ตัดและวางด้านบนลงใน gedit และบันทึกเป็น update-mydebs ใน ~ / bin (tilde '~' หมายถึงโฮมไดเร็กตอรี่ของคุณถ้าไม่มี / bin ให้สร้าง: อูบุนตูจะใส่ไดเร็กตอรี่นั้นไว้ใน PATH ของคุณมันเป็นที่ที่เหมาะสำหรับใส่สคริปต์ส่วนบุคคล) ถัดไปทำให้สคริปต์สามารถดำเนินการได้:

chmod u+x ~/bin/update-mydebs

How the script works:

dpkg-scanpackagesดูแพ็คเกจทั้งหมดใน mydebs และผลลัพธ์ถูกบีบอัดและเขียนไปยังไฟล์ (Packages.gz) ที่ apt-get update สามารถอ่านได้ (ดูด้านล่างสำหรับการอ้างอิงที่อธิบายสิ่งนี้ในรายละเอียดที่น่าตื่นเต้น) / dev / null เป็นไฟล์ว่างเปล่า; มันเป็นการทดแทนไฟล์แทนที่ซึ่งเก็บข้อมูลเพิ่มเติมเกี่ยวกับแพ็คเกจซึ่งในกรณีนี้ไม่จำเป็นต้องใช้จริงๆ ดู deb-override (5) หากคุณต้องการทราบ

sources.list

เพิ่มบรรทัด

deb file:/usr/local/mydebs ./

ไปยัง /etc/apt/sources.list ของคุณและคุณทำเสร็จแล้ว

ตัวเลือกซีดี

คุณสามารถเขียนไดเร็กตอรี่ที่มี debs ไปยัง CD และใช้มันเป็นที่เก็บได้เช่นกัน (เหมาะสำหรับการแชร์ระหว่างคอมพิวเตอร์) ในการใช้ซีดีเป็นแหล่งเก็บข้อมูล

sudo apt-cdrom add

การใช้พื้นที่เก็บข้อมูล

เมื่อใดก็ตามที่คุณใส่ deb ใหม่ในไดเรกทอรี mydebs ให้เรียกใช้

sudo update-mydebs
sudo apt-get update

ตอนนี้แพ็กเกจโลคัลของคุณสามารถจัดการได้ด้วยคำสั่ง Synaptic, aptitude และ apt: apt-get, apt-cache ฯลฯ เมื่อคุณพยายามติดตั้ง apt-get การพึ่งพาใด ๆ จะได้รับการแก้ไขตราบใดที่สามารถตอบสนองได้ .

แพ็คเกจที่ทำไม่ถูกต้องอาจล้มเหลว แต่คุณจะไม่ต้องทนอยู่กับ dpkg


3
คุณช่วยอธิบายไวยากรณ์บนบรรทัดdpkg-scanpackages . /dev/null | gzip -9c > Packages.gzได้ไหม สิ่งที่/dev/nullทำมี ฉันอ่าน man page ด้วย แต่ก็ไม่ชัดเจน
sayantankhan

@ blade19899 ฉันต้องการความกระจ่างเล็กน้อย ฉันต้องการพื้นที่เก็บข้อมูลที่มีเพียงบางแพ็คเกจเท่านั้นไม่ใช่ทุกแพ็คเกจที่ฉันเคยสัมผัส ฉันถูกต้องไหมว่าเทคนิคนี้จะทำให้ฉันมีความสามารถนั้นหรือไม่? เป้าหมายที่นี่คือการมีพื้นที่เก็บข้อมูลที่กลุ่มการติดตั้งซอฟต์แวร์สามารถใช้งานบน LAN แบบแยกห่างจากสิ่งล่อใจที่จะได้รับที่ไม่จำเป็น
Wes Miller

@WesMiller ฉันคิดว่าคุณต้องการฉันเพิ่งแก้ไขโพสต์ของเขา!
blade19899

@ blade19899 ฉันขอโทษฉันไม่เข้าใจคำตอบของคุณ
Wes Miller

@WesMiller คุณต้องการ BigSack ฉันเพิ่งแก้ไขโพสต์ของเขาสำหรับปัญหาด้านไวยากรณ์ (ฉันคิดว่า bin มันชั่วครู่) นี่ไม่ใช่คำตอบของฉัน แต่ BigSack's
blade19899

41

* เพื่อสร้างที่เก็บออฟไลน์ผ่าน LAN *

ติดตั้ง Local Apache Webserver

# apt-get install apache2

ตามค่าเริ่มต้นแพ็คเกจ Apache ของ Debian จะตั้งค่าเว็บไซต์ภายใต้/var/wwwระบบของคุณ สำหรับวัตถุประสงค์ของเราก็ไม่เป็นไรดังนั้นจึงไม่มีเหตุผลที่จะทำอะไรอีก คุณสามารถทดสอบได้อย่างง่ายดายโดยชี้เบราว์เซอร์ที่http://localhostคุณชื่นชอบที่คุณควรเห็นหน้าเว็บหลังการติดตั้งเริ่มต้นซึ่งถูกจัดเก็บจริงใน/var/www/index.html


สร้างไดเรกทอรีเก็บแพคเกจ Debian

เลือกที่จะสร้างไดเรกทอรี/var/www/debsสำหรับสิ่งนี้. ภายใต้นั้นคุณควรสร้างไดเรกทอรี "สถาปัตยกรรม" หนึ่งรายการสำหรับแต่ละสถาปัตยกรรมที่คุณต้องการสนับสนุน หากคุณใช้คอมพิวเตอร์เพียงเครื่องเดียว (หรือประเภทคอมพิวเตอร์) คุณจะต้องใช้เพียงเครื่องเดียว - โดยทั่วไปคือ "i386" สำหรับระบบ 32 บิตหรือ "amd64" สำหรับ 64 บิต หากคุณกำลังใช้สถาปัตยกรรมอื่นฉันจะสมมติว่าคุณอาจรู้เรื่องนี้อยู่แล้ว ตอนนี้เพียงแค่คัดลอกไฟล์แพคเกจ ".deb" สำหรับสถาปัตยกรรมที่กำหนดลงในไดเรกทอรีที่เหมาะสม หากคุณชี้เว็บเบราว์เซอร์ที่คุณชื่นชอบที่http://localhost/debs/amd64(ตัวอย่าง) คุณจะเห็นรายการของแพ็คเกจสำหรับระบบ 64 บิต


สร้างไฟล์ Packages.gz

ตอนนี้เราต้องสร้างไฟล์แคตตาล็อกเพื่อให้ APT ใช้งาน สิ่งนี้ทำด้วยยูทิลิตี้ที่เรียกว่า "dpkg-scanpackages" นี่'

# cd /var/www/debs/

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




ทำให้ที่เก็บรู้จัก APT

ตอนนี้สิ่งเดียวที่ต้องทำคือให้ APT รู้เกี่ยวกับที่เก็บของคุณ คุณทำได้โดยอัปเดตไฟล์ /etc/apt/sources.list ของคุณ คุณจะต้องมีรายการเช่นนี้:

deb http://localhost/debs/ amd64/

ฉันใช้ชื่อโฮสต์จริงของระบบแทน localhost - วิธีนี้รหัสเหมือนกันสำหรับคอมพิวเตอร์ทุกเครื่องใน LAN ของฉัน แต่ localhost จะทำได้ดีถ้าคุณใช้คอมพิวเตอร์เพียงเครื่องเดียว
ตอนนี้อัปเดต APT:

# apt-get update

2
การเพิ่มบรรทัดนั้นใน /etc/apt/sources.list จะทำให้การอัปเดตไม่อยู่ใน LAN ใช่ไหม
เฟลิกซ์

2
สำหรับ Ubuntu 16.04 คุณอาจจำเป็นต้องเปลี่ยนในคำตอบนี้กับ/var/www/debs /var/www/html/debsหรือคุณจะต้องทำตามขั้นตอนพิเศษเพื่อแก้ไขการตั้งค่า apache ของคุณด้วยตัวเองใน/etc/apache2
Erik

18

การสร้างที่เก็บรับรองความถูกต้อง

ฉันได้ดูคำตอบที่นี่และในเว็บไซต์อื่น ๆ และส่วนใหญ่มีข้อเสีย (IMHO ใหญ่) ที่คุณตั้งค่าพื้นที่เก็บข้อมูลที่ไม่ผ่านการตรวจสอบสิทธิ์ ซึ่งหมายความว่าคุณต้องทำงานapt-getที่มี--allow-unauthenticatedการติดตั้งแพคเกจจากมัน นี่อาจเป็นความเสี่ยงด้านความปลอดภัยโดยเฉพาะอย่างยิ่งในสคริปต์ที่แพ็คเกจที่คุณติดตั้งอาจไม่ได้มาจากที่เก็บในเครื่องของคุณ

โปรดทราบว่าฉันไม่ได้กล่าวถึงวิธีการใช้งานผ่าน LAN แต่นี่เป็นการตั้งค่าทั่วไปที่ค่อนข้างใช้ Apache หรือ nginx (ดูคำตอบอื่น ๆ ที่นี่)

ตั้งค่าไดเรกทอรี repo

mkdir /home/srv/packages/local-xenial
cd /home/srv/packages/local-xenial

จากนั้นเพิ่มบรรทัดsources.listดังนี้:

deb file:/home/srv/packages/local-xenial/ ./

การเพิ่มและการลบแพ็คเกจ

ลบแพ็คเกจ

rm /home/srv/packages/local-xenial/some_package_idont_like

เพิ่มแพ็คเกจ

cp /some/dir/apackage.deb /home/srv/packages/local-xenial

ตอนนี้เรียกใช้สคริปต์ต่อไปนี้ซึ่งสร้างไฟล์แพคเกจปล่อยและ InRelease และลงนามด้วยคีย์ส่วนตัวของคุณ gpg:

#!/bin/bash

if [ -z "$1" ]; then
       echo -e "usage: `basename $0` DISTRO
where DISTRO is the Ubuntu version codename (e.g. 14.04 is trusty)\n
The way to use this script is to do the changes to the repo first, i.e. delete or copy in the .deb file to /srv/packages/local-DISTRO, and then run this script\n
This script can be run as an unprivileged user - root is not needed so long as your user can write to the local repository directory"
else
    cd /srv/packages/local-"$1"

    # Generate the Packages file
    dpkg-scanpackages . /dev/null > Packages
    gzip --keep --force -9 Packages

    # Generate the Release file
    cat conf/distributions > Release
    # The Date: field has the same format as the Debian package changelog entries,
    # that is, RFC 2822 with time zone +0000
    echo -e "Date: `LANG=C date -Ru`" >> Release
    # Release must contain MD5 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
    echo -e 'MD5Sum:' >> Release
    printf ' '$(md5sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
    printf '\n '$(md5sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
    # Release must contain SHA256 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
    echo -e '\nSHA256:' >> Release
    printf ' '$(sha256sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
    printf '\n '$(sha256sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release

    # Clearsign the Release file (that is, sign it without encrypting it)
    gpg --clearsign --digest-algo SHA512 --local-user $USER -o InRelease Release
    # Release.gpg only need for older apt versions
    # gpg -abs --digest-algo SHA512 --local-user $USER -o Release.gpg Release

    # Get apt to see the changes
    sudo apt-get update
fi

ตัวอย่างเนื้อหาของไฟล์ conf / distributions

Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC

การเชื่อมโยง

https://wiki.debian.org/RepositoryFormat

http://ubuntuforums.org/showthread.php?t=1090731

https://help.ubuntu.com/community/CreateAuthenticatedRepository


@Phillip การแก้ไขของคุณใช้date -Rcผมแก้ไขมันdate -Ruสมมติว่าเป็นสิ่งที่คุณหมายจากคำอธิบายการแก้ไข
Muru

ขอบคุณฉันเพิ่งเริ่มได้รับคำเตือนจาก apt เกี่ยวกับเรื่องนี้เนื่องจากวันที่สร้างขึ้นใน TZ ท้องถิ่นไม่ใช่ UTC ฉันแก้ไขมันในสคริปต์ของฉันเอง แต่ลืมที่จะแก้ไขได้ที่นี่
happyskeptic

1
@KevinJohnson ฉันได้อัปเดตคำตอบหลักตอนนี้ด้วยตัวอย่างของไฟล์จาก repo apt ในพื้นที่ของฉัน
happyskeptic

8

คุณยังสามารถตั้งค่าเซิร์ฟเวอร์ต้นทางในเครื่องโดย nginx และ reprepro:

  1. ติดตั้งแพ็คเกจเดเบียน

    sudo apt-get install reprepro nginx 
    
  2. ทำไดเรกทอรีสำหรับ reprepro และแก้ไข

    sudo mkdir -p /srv/reprepro/ubuntu/{conf,dists,incoming,indices,logs,pool,project,tmp}
    
    $ cd /srv/reprepro/ubuntu/
    $ sudo chown -R `whoami` . # changes the repository owner to the current user
    

    / srv / reprepro / อูบุนตู / conf / กระจาย

    Origin: Your Name
    Label: Your repository name
    Codename: karmic
    Architectures: i386 amd64 source
    Components: main
    Description: Description of repository you are creating
    SignWith: YOUR-KEY-ID
    

    / srv / reprepro / อูบุนตู / conf / ตัวเลือก

    ask-passphrase
    basedir .
    
  3. รวมไว้ใน reprepro สร้างมัน

    $ reprepro includedeb karmic /path/to/my-package_0.1-1.deb \
    # change /path/to/my-package_0.1-1.deb to the path to your package
    
  4. กำหนดค่า nginx:

    /etc/nginx/sites-available/vhost-packages.conf

    server {
      listen 80;
      server_name packages.internal;
    
      access_log /var/log/nginx/packages-access.log;
      error_log /var/log/nginx/packages-error.log;
    
      location / {
        root /srv/reprepro;
        index index.html;
      }
    
      location ~ /(.*)/conf {
        deny all;
      }
    
      location ~ /(.*)/db {
        deny all;
      }
    }
    
  5. เพิ่มประสิทธิภาพขนาดถัง:

    /etc/nginx/conf.d/server_names_hash_bucket_size.conf

    server_names_hash_bucket_size 64;
    

อ้างอิงถึงลิงค์คู่มือการติดตั้ง


4
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
gertvdijk

@elprup: คุณต้องลืมอัปเดตคำตอบนั้น :)
0xC0000022L

reprepor ไม่รองรับแพ็คเกจเดียวกันหลายรุ่น ฟังดูแปลก แต่นี่เป็นวิธีการทำงานของ
reprepro

6

คุณอาจต้องการที่จะดูที่และapt-mirrorapt-cacher

นี่คือคำแนะนำเกี่ยวกับวิธีการติดตั้งและใช้งาน


คำตอบของคุณอายุ 5 ปีกำลังถูกตั้งค่าสถานะเป็น LQ ถ้ามันจะถูกลบไปที่เมตาและขอยกเลิกการลบ ฉันโหวตให้เปิดไว้แต่ต้องการการแก้ไข! ;-)
Fabby

5

คำแนะนำใน@ BigSack คำตอบและการโพสต์วิกิอย่างเป็นทางการของ Ubuntuไม่ได้ผลสำหรับฉันใน Ubuntu 18.04 จนกว่าฉันจะทำการเปลี่ยนแปลงทั้งสองนี้:

  1. สร้างPackagesไฟล์ธรรมดาที่ไม่มีการบีบอัด(เมื่อเรียกใช้งานนี้ไดเร็กทอรีการทำงานต้องเป็นที่ตั้งของแพ็กเกจทั้งหมด)

    cd /usr/local/mydebs
    dpkg-scanpackages -m . > Packages
    
  2. เพิ่มรายการต่อไปนี้ใน /etc/apt/sources.list

    deb [trusted=yes] file:/usr/local/mydebs ./
    

4

มีสาเหตุหลายประการที่คุณอาจต้องการสร้างที่เก็บในเครื่อง อย่างแรกคือคุณต้องการประหยัดแบนด์วิดท์หากคุณมีเครื่อง Ubuntu หลายเครื่องที่ต้องอัพเดต ตัวอย่างเช่นถ้าคุณมีเครื่อง Ubuntu 25 เครื่องที่จำเป็นต้องอัพเดตอย่างน้อยสัปดาห์ละครั้งคุณจะประหยัดแบนด์วิดธ์อย่างมากเพราะคุณสามารถทำได้ทั้งหมดยกเว้นที่เก็บข้อมูลในเครื่อง

องค์กรส่วนใหญ่มีแบนด์วิดท์ที่เหมาะสมสำหรับเกตเวย์เครือข่าย แต่แบนด์วิดท์นี้เป็นสินค้าที่มีค่าซึ่งจำเป็นต้องใช้อย่างชาญฉลาด

หลายองค์กรยังมีเราเตอร์ที่มีขีด จำกัด 10MB หรือ 100MB ที่เกตเวย์ แต่การเชื่อมต่อเครือข่าย 1 GB ภายในเพื่อให้แบนด์วิดธ์สามารถใช้ภายในได้ดีขึ้น เหตุผลที่สองสำหรับการสร้างที่เก็บของคุณเองคือคุณสามารถควบคุมได้ว่าจะโหลดแอพพลิเคชั่นใดในเครื่อง Ubuntu ภายในของคุณ

คุณสามารถลบแอปพลิเคชันใด ๆ ที่องค์กรของคุณไม่ต้องการใช้บนเครือข่ายท้องถิ่นจากที่เก็บที่อัพเดตเครื่อง ยิ่งไปกว่านั้นคุณสามารถสร้างกล่องทดสอบและทดสอบแอปพลิเคชันและเวอร์ชันก่อนที่จะอนุญาตให้เปิดใช้งานเครือข่ายของคุณเพื่อความปลอดภัยและความมั่นคง

ก่อนอื่นคุณต้องตั้งค่ามิเรอร์เพื่อที่คุณจะต้องเพียงแค่กด Ctrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิดเทอร์มินัล เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง

apt-get install apt-mirror 

เมื่อคุณตั้งค่า apt-mirror เรียบร้อยแล้วคุณสามารถเริ่มดาวน์โหลดที่เก็บด้วยคำสั่งนี้

apt-mirror /etc/apt/mirror.list 1

อ่านต่อ

1ที่มา:สร้างที่เก็บ Ubuntu


ขออภัย link is Dead
xamiro

3

วิธีสร้างที่เก็บโลคัลออฟไลน์
1. ทำให้ dir เข้าถึงได้ (atleast by root)

sudo mkdir / var / my-local-repo

  1. คัดลอกไฟล์ deb ทั้งหมดไปยังไดเรกทอรีนี้
  2. สแกนไดเรกทอรี

sudo dpkg-scanpackages / var / my-local-repo / dev / null> / var / my-local-repo / แพ็คเกจ

  1. เพิ่มที่เก็บโลคัลลงในแหล่งที่มา

echo "ไฟล์ deb: / var / my-local-repo ./"> /tmp/my-local.list

sudo mv /tmp/my-local.list /etc/apt/sources.list.d/my-local.list

sudo apt-get update


สิ่งเดียวกันนั้นมีอยู่ใน wiki อย่างเป็นทางการเช่นกันมากขึ้น: ที่เก็บ / ส่วนบุคคล - ชุมชนช่วยเหลือ Wiki
sdaau

1

ฉันพยายามที่จะใช้apt-rdependsเหมือนในคำตอบที่เลือก แต่เมื่อฉันพยายามที่จะติดตั้งแพคเกจจากพื้นที่เก็บข้อมูลในท้องถิ่นของฉันมันบ่นเกี่ยวกับการพึ่งพาที่ขาดหายไป

apt-rdependsไม่ได้แสดงรายการสิ่งที่ต้องพึ่งพาสำหรับแพ็คเกจของฉัน ฉันสงสัยว่ามันมีบางอย่างที่เกี่ยวข้องกับความจริงที่apt-cache showแสดงให้เห็นหลายระเบียนสำหรับมัน

แต่ฉันใช้apt-cache dependsและนั่นก็หลอกลวง:

รับรายการการอ้างอิงซ้ำ

apt-cache depends <packagename> -i --recurse

-i: การอ้างอิงที่สำคัญเท่านั้น --recurse: การเรียกซ้ำ

เปลี่ยนเป็นรายการย่อย

  • การลบสัญลักษณ์และช่องว่าง: | tr -d "|,<,>, "
  • การลบขึ้นอยู่กับ: & PreDepends: | sed -e 's/^Depends://g' | sed -e 's/^PreDepends://g'
  • เรียงลำดับรายการ: | sort
  • เฉพาะค่าที่ไม่ซ้ำกัน: | uniq > list.txt

คำสั่งเสร็จสมบูรณ์:

apt-cache depends <packagename> -i --recurse | tr -d "|,<,>, " | sed -e \
's/^Depends://g' | sed -e 's/^PreDepends://g' | sort | uniq > list.txt

ดาวน์โหลดแพ็คเกจ

for i in $( cat list.txt ); do apt-get download $i; done;

สแกนหาแพ็กเกจแล้วเปลี่ยนเป็น Packages.gz

dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

1
อาจเป็นความคิดที่ดีในการอ้างอิงซึ่งคำตอบที่คุณพูดถึง ...
Anonymous 2

-1

ฉันใช้กระจกเงา apt-mirror เสร็จแล้ว

มันดี แต่คุณต้องมีพื้นที่ฮาร์ดไดรฟ์มากขึ้นเพราะมันจะทำการซิงค์กับเซิร์ฟเวอร์ repos

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.