Strona 1 z 2
Zależności dla pakietu lokalnego
: 09 kwietnia 2011, 12:51
autor: giaur
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
: 09 kwietnia 2011, 14:24
autor: fnmirk
Hasło pomocnicze: repozytorium lokalne. Odpowiedź w ,,Debian Reference''.
: 09 kwietnia 2011, 14:51
autor: giaur
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.
: 09 kwietnia 2011, 15:26
autor: DaVidoSS
Ja zrobiłem coś takiego dla automatycznej instalacji sterownika drukarki i skanera. Moze Ci się przydać jako szkielet.:
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
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.
: 09 kwietnia 2011, 15:40
autor: fnmirk
: 10 kwietnia 2011, 13:03
autor: lessmian2
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.
: 10 kwietnia 2011, 13:26
autor: fnmirk
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.
: 10 kwietnia 2011, 13:40
autor: lessmian2
fnmirk, summa summarum wychodzi na to samo co napisałem

: 10 kwietnia 2011, 13:48
autor: fnmirk
lessmian2, nie zawsze. Czasem Twój sposób potraktuje fragment zainstalowanego pakietu jako uszkodzony i go usunie. Dodanie opcji, o której wspomniałem, zainstaluje pakiet do odpowiednich katalogów i wypisze informacje o brakujących pakietach.
: 10 kwietnia 2011, 16:38
autor: giaur
Wyczytałem coś, że gdebi potrafi coś takiego zrobić. Sposób z apt-get -f też znalazłem, ale tak jak @fnmirk pisze - jest on niepewny. Bo sposób zachowania jest nieprzewidywalny - to już lepiej użyć aptitude i wybrać to co ma zrobić