Let’s say that I have a computer that I installed Ubuntu 14.04 x86-64 also known as amd64
. I want to download a package, but I want to download the package and its dependencies from a different architecture instead of amd64
. In this scenario, I want to download a package from arm64
architecture.
Enable Another Architecture to Download
First, we will add a new architecture to be able to select when installing or downloading any package. Instead of arm64
, you can substitute any architecture abbreviated name in the following command.
sudo dpkg --add-architecture arm64
Update sources.list
To get access to arm64
packages, we need to add additional sources to our sources.list
where apt-get
finds its packages.
sudo vi /etc/apt/sources.list
Add the following URLs to the file. Note that I am using Ubuntu 14.04, which is code named: trusty
. You will use a different code name at the end of the URLs if you have a different version of Ubuntu.
# source urls for arm64 deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted deb http://ports.ubuntu.com/ubuntu-ports/ trusty universe deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty universe deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates universe deb http://ports.ubuntu.com/ubuntu-ports/ trusty multiverse deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty multiverse deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates multiverse deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates multiverse
We need to update our sources list with the new URLs so that we can download packages for arm64
.
sudo apt-get update
How to Download Ubuntu Packages and Dependencies Locally
Afterwards, we should make a directory to store the packages that we want to download.
mkdir arm64-packages
Now, we download the package inside that directory. For instance, let’s say that we wanted to download vim
and not install it. To download arm64
architecture packages, you have to place :arm64
after the package name. If you don’t put the architecture name after the package, then the default architecture in my case amd64
will be downloaded.
Where vim:arm64
is, you can replace with the name of any package available through apt-get
followed by :arm64
.
cd arm64-packages
for i in $(apt-cache depends vim:arm64 | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>no32.txt; done
Any errors will be outputted inside no32.txt
. If you ls
, then you should see all of the deb packages and dependencies for arm64
.
ls
libacl1_2.2.52-1_arm64.deb libc6_2.19-0ubuntu6.9_arm64.deb libgpm2_1.20.4-6.1_arm64.deb libpython2.7_2.7.6-8ubuntu0.2_arm64.deb libselinux1_2.2.2-1ubuntu0.1_arm64.deb libtinfo5_5.9+20140118-1ubuntu1_arm64.deb no32.txt vim-common_2%3a7.4.052-1ubuntu3_arm64.deb