LINUX.ORG.RU

sh && dpkg && sysroot


0

0

Вообщем суть, есть у меня скрипт (не важно красивый или нет(работает и работает))

<skipped>
#getting archives
cd debinfo/
URL=http://http.$COUNTRY.debian.org/debian/dists/$DISTR/main/binary-$ARCH
wget -c $URL/Packages.bz2
bunzip2 Packages.bz2
mv Packages All
URL=http://http.$COUNTRY.debian.org/debian/dists/$DISTR/contrib/binary-$ARCH
wget -c $URL/Packages.bz2
bunzip2 Packages.bz2
cat Packages >> All
rm Packages
URL=http://http.$COUNTRY.debian.org/debian/dists/$DISTR/non-free/binary-$ARCH
wget -c $URL/Packages.bz2
bunzip2 Packages.bz2
cat Packages >> All
rm Packages
# returning ..
cd ../debs

total_pkg=`cat ../packages.txt | wc -l`
echo "Total packages to install: $total_pkg"

for i in `cat ../packages.txt`; do
    echo "Requested package-> $i"
    FILENAME=`../findfn.pl ../debinfo/All $i`
    echo "Package location: $FILENAME"
    wget -c http://http.$COUNTRY.debian.org/debian/$FILENAME
done;

cd ..
pwd 
#returning
mkdir -p sysroot/var/lib/dpkg/updates
touch sysroot/var/lib/dpkg/status
touch sysroot/var/lib/dpkg/available
# installing downloaded packages
for d in `ls debs/*.deb`; do
    echo "Installing: $d"
    fakeroot dpkg --admindir=sysroot/var/lib/dpkg --instdir=sysroot/ --unpack $d
done;
<skipped>

где findfn.pl собственноручно писанный "парсер", по имени 
пакета тупо выдирает его локацию.
Все скачивается и хорошо, далее мне надо все это поставить в sysroot.
Так вот вопрос как ? Сейчас оно что то там создает даже, но 
сильно ругается про list file и в итоге вылетает с ошибкой.
Я явно понимаю что то не так, как мне быть?
Кто спец - помогите плиз.

Да опережая вопросы, скрипт работает на ubuntu/debian и там и там 
должен работать, sysroot изначально пустая и должна быть с нуля.
packages.txt это список пакетов которые должны быть в sysroot, 
которые я ессно выдернул из рабочего sysroot окружения типа
dpkg --list | grep ii | awk '{print $2}' > packages.txt

аки сам на свой вопрос отвечаю, может кому пригодится 

это конечно не красивый хак но что делать;

делается это вот так - 

<skipped>                                                                                           
for d in `ls debs/*.deb`; do                                                                                                                                   
    echo "Extracting: $d"                                                                                                                                      
    dpkg-deb -x $d sysroot/                                                                                                                                    
done;                                                                                                                                                          
                                                                                                                                                               
echo "Install packages."                                                                                                                                       
                                                                                                                                                               
for d in `ls debs/*.deb`; do                                                                                                                                   
    echo "Installing: $d"                                                                                                                                      
    dpkg --force-all --admindir=sysroot/var/lib/dpkg --instdir=sysroot/ --root=sysroot/ --install $d                                                           
done;
<skipped>

:)

alphex_kaanoken ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.