Zależno
Zależności dla pakietu lokalnego
Czy znacie jakiś sposób na zrealizowanie czegoś takiego. Mam pakiet .deb lokalnie na dysku. Pakiet ten do instalacji wymaga kilku zależności.
No i tutaj właśnie zaczyna się problem. Teraz, aby zainstalować taki pakiet muszę najpierw sprawdzić zależności, zainstalować je za pomocą apt-get, a potem dopiero zainstalować mój pakiet lokalny.
Pytanie jest takie: czy widzieliście taki program (lub skrypt - jestem przekonany że da się coś takiego napisać), który zrobi to automatycznie, czyli:
- sprawdzi zależności
- zainstaluje je za pomocą apt-get (używając repozytoriów ustawionych w moim systemie)
- zainstaluje mój pakiet za pomocą dpkg
No i tutaj właśnie zaczyna się problem. Teraz, aby zainstalować taki pakiet muszę najpierw sprawdzić zależności, zainstalować je za pomocą apt-get, a potem dopiero zainstalować mój pakiet lokalny.
Pytanie jest takie: czy widzieliście taki program (lub skrypt - jestem przekonany że da się coś takiego napisać), który zrobi to automatycznie, czyli:
- sprawdzi zależności
- zainstaluje je za pomocą apt-get (używając repozytoriów ustawionych w moim systemie)
- zainstaluje mój pakiet za pomocą dpkg
Wiem, że można zrobić repozytorium lokalne. Ale wydaje mi się to rozwiązaniem dość dziwnym. Naprawdę nie można bezpośrednio połączyć instalacji lokalnej przez dpkg z "dociąganiem" zależności z internetu?
Szukam czegoś w stylu:
I powinno to zadziałać tak jak chcę, czyli jesli trzeba - wywołać apt-get i dociągnąć zależności, a potem wywołać dpkg -i i zainstalować mój pakiet. Nie chce mi się tworzyć żadnych lokalnych repozytoriów bo to za dużo zachodu.
Jeśli nie ma takiego skryptu, to już zaczynam go pisać - nie wydaje się to trudne, a życie ułatwić może bardzo.
Szukam czegoś w stylu:
Kod: Zaznacz cały
instaluj nazwa_pakietuJeśli nie ma takiego skryptu, to już zaczynam go pisać - nie wydaje się to trudne, a życie ułatwić może bardzo.
Ja zrobiłem coś takiego dla automatycznej instalacji sterownika drukarki i skanera. Moze Ci się przydać jako szkielet.:
Takie cacko uruchamiam jako użytkownik poleceniem brother-x64-install.sh jako ze skrypt jest umieszczony w $PATH. Należy pamiętać o fladze dla pliku.
Jeśli nie znasz wymaganych zależności a masz plik deb to go wypakuj gdzieś, potem wypakuj control.tar.gz i tam w pliku control znajdziesz nazwy zależnych pakietów.
Kod: Zaznacz cały
davidoss@debian-squeeze-2011:~$ cat /usr/local/bin/brother-x64-install.sh
#!/bin/bash
echo 'Czyszczenie wcześniejszych instalacji'
echo ''
rm -r ~/brother_instalacja
brsaneconfig2 -r SCANNER
sudo rm -r /var/spool/lpd/dcp540cn
sudo rm -r /usr/share/cups/model
sudo apt-get remove cups --purge
sudo dpkg -P brscan2
sudo dpkg -P brscan-skey
sudo dpkg -P dcp540cncupswrapper
sudo dpkg -P dcp540cnlpr
sudo sed -i '/^lp$/d' /etc/modules
sudo modprobe -r lp
echo 'Instalacja'
echo ''
[B]sudo apt-get install ia32-libs cups sane-utils tcsh[/B]
sudo 'echo lp >> /etc/modules'
sudo modprobe lp
sudo mkdir /var/spool/lpd/dcp540cn
sudo mkdir /usr/share/cups/model
mkdir ~/brother_instalacja
cd ~/brother_instalacja
wget 'http://www.brother.com/pub/bsc/linux/dlf/dcp540cnlpr-1.0.1-1.i386.deb'
wget 'http://www.brother.com/pub/bsc/linux/dlf/dcp540cncupswrapper-1.0.1-1.i386.deb'
wget 'http://www.brother.com/pub/bsc/linux/dlf/brscan2-0.2.5-1.amd64.deb'
wget 'http://www.brother.com/pub/bsc/linux/dlf/brscan-skey-0.2.1-3.amd64.deb'
[B]sudo dpkg -i --force-architecture dcp540cnlpr-1.0.1-1.i386.deb
sudo dpkg -i --force-architecture dcp540cncupswrapper-1.0.1-1.i386.deb
sudo dpkg -i brscan-skey-0.2.1-3.amd64.deb
sudo dpkg -i brscan2-0.2.5-1.amd64.deb[/B]
echo''
echo 'Test instalacjii pakietow'
dpkg -l | grep Brother
echo ''
echo 'Konfiguracja cupsd'
echo 'Zaraz uruchomi sie okno konfiguracji. Ustaw drukarke według tego przykładu \
- LPD/LPR Host or Printer for Device \
- lpd://192.168.0.199/binary_p1 for Device URI \
- Brother for Make/Manufacturer Selection \
- DCP540CN for Model/Driver Selection \
'
sleep 15
iceweasel "http://localhost:631/printers" &
sleep 15
echo ''
echo 'Dodaję skaner'
brsaneconfig2 -a name=SCANNER model=DCP-540CN ip=192.168.0.199
echo ''
echo 'Test skanera'
brsaneconfig2 -q | grep SCANNER
scanimage -L | grep SCANNER
Jeśli nie znasz wymaganych zależności a masz plik deb to go wypakuj gdzieś, potem wypakuj control.tar.gz i tam w pliku control znajdziesz nazwy zależnych pakietów.
Można coś samemu próbować złożyć ale i tak moim zdaniem najprościej jest utworzyć lokalne repozytorium.
Programy pomocnicze:
http://packages.debian.org/sid/lintian
http://packages.debian.org/sid/aptoncd
http://packages.debian.org/sid/apt-offline
http://packages.debian.org/sid/apt-offline-gui
http://packages.debian.org/sid/apt-rdepends
http://packages.debian.org/sid/apt-utils
http://packages.debian.org/sid/gdebi
Programy pomocnicze:
http://packages.debian.org/sid/lintian
http://packages.debian.org/sid/aptoncd
http://packages.debian.org/sid/apt-offline
http://packages.debian.org/sid/apt-offline-gui
http://packages.debian.org/sid/apt-rdepends
http://packages.debian.org/sid/apt-utils
http://packages.debian.org/sid/gdebi
Raz mi się coś takiego zdarzyło, że miałem swój pakiet z zależnościami które chciałem, aby były dociągnięte z sieci. Rozwiązanie było bardzo proste Tu się dpkg wywalało na zależnościach.
Pociągnięcie wszystkich pakietów od których zależał mój, oraz sama instalacja tego pakietu. Możesz sobie to podpiąć pod jakiś alias, albo od biedy napisać dwuliniowy skrypt 
Rozwiązanie mało eleganckie, ale jak już pisałem, użyte raz czy dwa razy.
Kod: Zaznacz cały
dpkg -i mójpakiet.debKod: Zaznacz cały
apt-get install -fRozwiązanie mało eleganckie, ale jak już pisałem, użyte raz czy dwa razy.
Można przecież zainstalować pakiet z opcją:
A następnie:
Dodane:
Ostrożnie, z pierwszym poleceniem, można popsuć system jeżeli nie będziemy zwracać uwagi na komunikaty i system będzie nieprzystosowany do instalacji danej wersji pakietu.
Kod: Zaznacz cały
dpkg --force-all -i pakietKod: Zaznacz cały
apt-get install -fOstrożnie, z pierwszym poleceniem, można popsuć system jeżeli nie będziemy zwracać uwagi na komunikaty i system będzie nieprzystosowany do instalacji danej wersji pakietu.