Ich versuche, ein Paket auf einer Maschine ohne Internetverbindung zu installieren. Was ich tun möchte, ist, alle Pakete und Abhängigkeiten auf einer Maschine MIT Internetverbindung herunterzuladen und dann alles auf den Offline-Computer zu sneaker-net.
Ich habe mit apt-get
und apt-cache
gespielt, aber ich habe keine schnelle und einfache Möglichkeit gefunden, das Paket und die Abhängigkeiten in einem Schritt in ein Verzeichnis meiner Wahl herunterzuladen. Wie würde ich das machen? Mache ich dieses Problem richtig? Wie würden Sie Offline-Pakete installieren, die viele Abhängigkeiten haben?
# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>
Die markierte Antwort hat das Problem, dass sich die verfügbaren Pakete auf dem Computer, auf dem die Downloads ausgeführt werden, vom Zielcomputer unterscheiden können und der Paketsatz daher möglicherweise unvollständig ist.
Um dies zu vermeiden und alle Abhängigkeiten zu erhalten, verwende ich Folgendes:
apt-get download $(apt-rdepends <package>|grep -v "^ ")
Der aptitude --download-only ...
-Ansatz funktioniert nur, wenn Sie eine Debian-Distribution mit Internetverbindung in der Hand haben.
Wenn Sie dies nicht tun, denke ich, ist es besser, das folgende Skript auf dem getrennten Debian-Rechner auszuführen:
apt-get --print-uris --yes install <my_package_name> | grep ^\' | cut -d\' -f2 >downloads.list
verschieben Sie die Datei "downloads.list" in einen verbundenen Linux-Computer (oder einen anderen Computer) und führen Sie Folgendes aus:
wget --input-file myurilist
dadurch werden alle Ihre Dateien in das aktuelle Verzeichnis heruntergeladen. Danach können Sie sie auf einen USB-Stick kopieren und in Ihrem getrennten Debian-Computer installieren.
gutschriften: http://www.tuxradar.com/answers/517
PS Ich habe den Blog-Post grundsätzlich kopiert, da er nicht sehr gut lesbar war und falls der Post verschwinden sollte.
Dieselbe Frage, die bereits hier beantwortet wurde: Wie kann ich die rekursiven Abhängigkeiten eines Debian-Pakets auflisten/herunterladen?
versuchen:
PACKAGES="wget unzip"
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances \
--no-pre-depends ${PACKAGES} | grep "^\w")
Etwas vereinfacht (und was für mich funktionierte), funktionierte für mich (basierend auf all dem oben)
Beachten Sie, dass die Hierarchie der Abhängigkeiten tiefer als eine Ebene gehen kann
Abhängigkeiten von Ihrem Paket abrufen
$ apt-cache depends mongodb | grep Depends:
Depends: mongodb-dev
Depends: mongodb-server
URLs erhalten:
Sudo apt-get --print-uris --yes -d --reinstall install mongodb-org mongodb-org-server mongodb-org-Shell mongodb-org-tools | grep "http://" | awk '{print$1}' | xargs -I'{}' echo {} | tee files.list
wget --input-file files.list
Dies lädt alle Debs in das aktuelle Verzeichnis herunter und schlägt NICHT fehl, wenn kein Kandidat gefunden wird.
Erfordert auch NICHT, dass Sudo sript ausführt!
nano getdebs.sh && chmod +x getdebs.sh && ./getdebs.sh
#!/bin/bash
package=ssmtp
apt-cache depends "$package" | grep Depends: >> deb.list
sed -i -e 's/[<>|:]//g' deb.list
sed -i -e 's/Depends//g' deb.list
sed -i -e 's/ //g' deb.list
filename="deb.list"
while read -r line
do
name="$line"
apt-get download "$name"
done < "$filename"
apt-get download "$package"
Hinweis: Ich habe dieses Beispiel als Beispiel verwendet, weil ich tatsächlich versucht habe, die Deps für SSMTP DL zu installieren, und dies ist auf debconf-2.0 fehlgeschlagen, aber dieses Skript hat mir das gebracht, was ich brauche! Ich hoffe es hilft.
Ich habe apt-cache depends package
verwendet, um in jedem Fall alle erforderlichen Pakete zu erhalten [], wenn bereits auf dem System installiert sind oder nicht .
Da der Befehl apt-cache je nach Sprache unterschiedlich arbeitet, müssen Sie diesen Befehl auf Ihrem System ausprobieren und den Befehl anpassen Apt-cache hängt von Ihrem Paket ab
Auf einem englischen System erhalten Sie:
$ apt-cache depends yourpackage
node
Depends: libax25
Depends: libc6
In einem deutschen System erhalten Sie: Knoten
Hängt ab von: libax25
Hängt ab von: libc6
Die englische Version mit dem Begriff:
"Depends:
"
In diesem Befehl müssen Sie den Begriff "yourpackage
" zweimal in Ihren Wunsch ändern, achten Sie darauf!
$ Sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep " Depends:" | sed 's/ Depends://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list
Und die deutsche Version mit dem Begriff:
"Hängt ab von:
"
In diesem Befehl müssen Sie den Begriff "yourpackage
" zweimal in Ihren Wunsch ändern, achten Sie darauf!
Dieser Text wird in diesem Befehl zweimal verwendet, wenn Sie ihn an Ihre Sprache anpassen möchten, kümmern Sie sich darum!
$ Sudo apt-get --print-uris --yes -d --reinstall install yourpackage $(apt-cache depends yourpackage | grep "Hängt ab von:" | sed 's/ Hängt ab von://' | sed ':a;N;$!ba;s/\n//g') | grep ^\' | cut -d\' -f2 >downloads.list
Sie erhalten die Liste der Links in downloads.list
Überprüfen Sie die Liste, gehen Sie zu Ihrem Ordner und führen Sie die Liste aus:
$ cd yourpathToYourFolder
$ wget --input-file downloads.list
Alle Ihre erforderlichen Pakete sind in:
$ ls yourpathToYourFolder
Ich gehe davon aus, dass Sie eine schöne, fette USB HD und eine gute Verbindung zum Netz haben. Sie können apt-mirror verwenden, um Ihren eigenen Debian-Spiegel zu erstellen.
Dadurch werden alle Pakete und Abhängigkeiten (noch nicht installiert) in ein Verzeichnis Ihrer Wahl heruntergeladen:
Sudo apt-get install -d -o Dir::Cache=/path-to/directory/apt/cache -o Dir::State::Lists=/path-to/directory/apt/lists packages
Stellen Sie sicher, dass /path-to/directory/apt/cache
und /path-to/directory/apt/lists
vorhanden sind . Wenn Sie -o Dir::Cache
nicht festlegen, verweist er auf /var/cache/apt
, Dir::State::Lists
zeigt auf /var/lib/apt/lists
( die Indexdateien der verfügbaren Pakete )
Beide -o
-Optionen können anstelle von install mit Update und Upgrade verwendet werden.
Führen Sie auf verschiedenen Maschinen denselben Befehl ohne '-d
' aus.