Behöver installera en pakethanterare för ett tomt Linux OS
Jag har byggt mitt eget Linux OS. Jag saknar pakethanterare.
Hur kan jag installera en sådan igenom att använda förkompilerade filer?
Jag har testat installera dpkg igenom att packa upp allt och kopiera in. Detta fungerar faktiskt! Men det tar en jävla tid att göra detta manuellt. Man får hoppas på att länkarna aldrig ändras!
#!/bin/bash
# Download dpkg from ubuntu
wget http://ports.ubuntu.com/pool/main/d/dpkg/dpkg_1.22.0ubuntu1_a...
# Extract it
ar -x dpkg_1.22.0ubuntu1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
cp -a ./etc /
cp -a ./var /
cp -a ./sbin /
cp -a ./lib /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/libm/libmd/libmd0_1.1.0-2bu...
# Extract it
ar -x libmd0_1.1.0-2build1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/x/xz-utils/liblzma5_5.6.2-2...
# Extract it
ar -x liblzma5_5.6.2-2_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/g/glibc/libc6_2.38-1ubuntu6...
# Extract it
ar -x libc6_2.38-1ubuntu6.3_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
cp -a ./etc /
cp -a ./lib /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/b/bzip2/libbz2-1.0_1.0.8-6_...
# Extract it
ar -x libbz2-1.0_1.0.8-6_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/libs/libselinux/libselinux1...
# Extract it
ar -x libselinux1_3.5-2ubuntu5_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/p/pcre2/libpcre2-8-0_10.42-...
# Extract it
ar -x libpcre2-8-0_10.42-4ubuntu2_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/libz/libzstd/libzstd1_1.5.5...
# Extract it
ar -x libzstd1_1.5.5+dfsg2-2build1.1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.3.dfsg-3.1u...
# Extract it
ar -x zlib1g_1.3.dfsg-3.1ubuntu2.1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/t/tar/tar_1.35+dfsg-3build1...
# Extract it
ar -x tar_1.35+dfsg-3build1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
cp -a ./etc /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/z/zlib/zlib1g_1.3.dfsg-3.1u...
# Extract it
ar -x zlib1g_1.3.dfsg-3.1ubuntu2.1_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
# Download
wget http://ports.ubuntu.com/pool/main/a/acl/libacl1_2.3.2-2_armhf...
# Extract it
ar -x libacl1_2.3.2-2_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
# Clean
rm -r *
## Configure dpkg - Not sure if being used!
# Download
wget http://ports.ubuntu.com/pool/main/g/glibc/libc-bin_2.38-1ubun...
# Extract it
ar -x libc-bin_2.38-1ubuntu6.3_armhf.deb
unzstd data.tar.zst
tar -xvf data.tar
# Copy
cp -a ./usr /
cp -a ./sbin /
#cp -a ./var / <- Don't need because it's empty
cp -a ./etc /
# Clean
rm -r *
Men när dpkg är installerad. Då kan jag installera apt (vilket jag är mest van med). Men där är det ännu mera problem.
För då måste jag installera varje paket för sig. Denna kod gör så att den tankar ned (förhoppningsvis) alla paket som tillhör paketet apt och installerar dessa. Men problemet är att när jag installerar alla .deb filer så säger den att den saknar den ena eller andra .deb filen först. Detta är en sådan enorm opraktisk metod.
Så min fråga till er: Finns det något lättare knep? Jag behöver bara ha tillgång till Ubuntus paket och där efter så kan jag bara installera exakt allt vad jag vill.
#!/bin/bash
# Set the base address
base_url="http://ports.ubuntu.com/"
replace="amd64.deb"
with="armhf.deb"
package_name="apt"
# List all dependencies for $package_name
dependencies=$(apt-rdepends $package_name | grep -E '^ ' | sed 's/^ //g' | awk -F' ' '{print $2}' | sort | uniq)
# Create the long wget string
wget_string=""
while read -r pkg; do
file_path=$(apt-cache show $pkg | grep ^Filename | awk '{print $2}' | sort -V | head -n 1)
url_path="$base_url$file_path"
new_url_path=$(echo "$url_path" | sed "s/${replace}/${with}/")
wget_string="$wget_string $new_url_path"
done <<< "$dependencies"
# Add the last wget
wget_string="wget -nc $wget_string"
# Save
echo "#!/bin/bash" >> download_install_$package_name.sh
echo "$wget_string" >> download_install_$package_name.sh
echo "dpkg i *.deb" >> download_install_$package_name.sh
# Make executable
chmod +x download_install_$package_name.sh
# End
echo "Done!"