Posiadam wirtualną maszynę z zainstalowanym Ubuntu w wersji 10.10.
Obraz maszyny mam zarchiwizowany, że w racie czego mogę przywrócić stan po instalacji.
Chciałem zrobić pakiet Lazarus 0.9.28.2 do instalacji offline.
W poniższym tekście, mianem "odświeżenia systemu" będę nazywać usunięcie obrazu dysku i wyciągnięcie z archiwum obrazu zawierającego stan przed instalacją.
Jestem w stanie po instalacji systemu. Stwierdzając, że Ubuntu to tak naprawdę Debian, ściągnąłem te pliki:
http://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20i386%20DEB/Lazarus%200.9.28.2/
Pliki *.tar rozpakowałem archiwizerem zainstalowanym "fabrycznie" w Ubuntu.
Wszystki pakiety wrzuciłem do jednego folderu, wykonałem w nim polecenie:
sudo dpkg -i *.deb
Okazało się, że są następujące zależności:
fp-units-gtk2 - wymaga libgtk2.0-dev
fp-units-multimedia - wymaga, libogg-dev, libvorbis-dev, a52dec-dev, libdts-dev, libmad0-dev, libmodplug-dev
Pakiety, których wymaga, nie istnieją, więc stwierdziłem, że autorzy projektu nie udostępniają WSZYSTKICH wymaganych pakietów. Być może oryginalny Debian zawiera wszystkie, o czym nie wiem?
Poszedłem inną ścieżką:
http://wiki.lazarus.freepascal.org/Lazarus_release_version_for_Ubuntu
Wyczytałem gdzieś, że jak się wykonuje:
sudo apt-get install jakisprogram
to wszystkie pobrane pakiety są wprowadzane do folderu "/var/cache/apt/archives/", i tak rzeczywiście jest, o czym przekonałem się instalując Wine i Monodevelop.
Postąpiłem troszeczkę inaczej niż jest w tym tekście:
Uruchomiłem połączenie z siecią, a następnie konsolę i w niej wykonałem następujące połączenia:
gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F
gpg --export 6A11800F | sudo apt-key add -
Potem wszedłem do menedżera Synaptic, w konfiguracji, gdzie sa repozytoria, dopisałem repozytorium:
"deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe"
Wróciłem do konsoli i wykonałem:
sudo apt-get update
sudo apt-get install lazarus
Bezpośrednio po zakończeniu instalacji zamknąłem konsolę i wyłączyłem połączenie z siecią.
W rzeczywistości, w maszynie wirtualnej mam drugi dysk, który służy do tymczasowego przechowywania plików, do których muszę mieć dostępo po odświeżeniu systemu.
Na tym drugim dysku założyłem nowy katalog i do niego wrzuciłem zawartość "/var/cache/apt/archives/" pakując do *.zip oprócz folderu "partial" i pliku "lock", były tam wszystkie pobrane pakiety.
Otworzyłem program lazarus, zrobiłem w nim aplikację okienkową tyou "hello world", aplikacja bez porblemu skompilowała się i uruchomiła.
Odświeżyłem system.
Rozpakowałem na pulpit katalog plik zip z drugiego dysku, żeby mieć "luzem" to, co ściągnął "apt-get".
Wszedłem do konsoli, ustawiłem powyższy katalog, wykonałem polecenie:
sudo dpkg -i *.deb
Po standardowych napisach pojawił się taki tekst:
Wystąpiły błędy podczas przetwarzania:
build-essential
fp-units-multimedia
libcairo2-dev
libfreetype6-dev
libgdk-pixbuf2.0-dev
libglib2.0-dev
libgtk2.0-dev
libpango1.0-dev
libpng12-dev
libxcb1-dev
libxcb-render0-dev
libxcb-shm0-dev
libxft-dev
x11proto-xext-dev
fpc
fp-units-gtk
libatk1.0-dev
libfontconfig1-dev
fp-units-gnome1
Lazaru uruchamia się, ale nie kompiluje, czemu trudno się diwić w takiej sytuacji.
Próbowałem zainstalować tylko bould-essential*.deb (w miejscu gwiazdki jest numer wersji, dpkg odszuka pakiet, którego nazwa zaczyna się od słów umieszczonych przed gwiazdką).
Pojawił się komunikat, że powyższy pakiet wymaga pakietu g++.
Pakiet g++ zainstalował się.
W konsoli mam taki tekst:
xxx@xxx-virtual-machine:/Pulpit/zxc$ sudo dpkg -i g++*.deb/Pulpit/zxc$ sudo dpkg -i build-essent*.deb
(Odczytywanie bazy danych ... 155520 plików i katalogów obecnie zainstalowanych.)
Przygotowanie do zastąpienia g++-4.4 4.4.4-14ubuntu5 (wykorzystując g++-4.4_4.4.4-14ubuntu5_i386.deb) ...
Rozpakowanie pakietu zastępującego g++-4.4 ...
Konfigurowanie g++-4.4 (4.4.4-14ubuntu5) ...
Przetwarzanie wyzwalaczy dla man-db...
xxx@xxx-virtual-machine:
(Odczytywanie bazy danych ... 155520 plików i katalogów obecnie zainstalowanych.)
Przygotowanie do zastąpienia build-essential 11.5 (wykorzystując build-essential_11.5_i386.deb) ...
Rozpakowanie pakietu zastępującego build-essential ...
dpkg: problemy z zależnościami uniemożliwiają skonfigurowanie build-essential:
build-essential zależy od g++ (>= 4:4.4.3); jednakże:
Pakiet g++ nie jest zainstalowany.
dpkg: błąd przetwarzania build-essential (--install):
problemy z zależnościami - pozostawiony nieskonfigurowany
Wystąpiły błędy podczas przetwarzania:
build-essential
xxx@xxx-virtual-machine:~/Pulpit/zxc$
Najśmieszniejsze jest to, że prozy próbie instalacji dpkg nie widzi pakietu g++ mimo, że był chwilę wcześniej zainstalowany.
Potem znowu odświeżyłem system i powtórzyłem całą procedurę. Za drugim razem tak samo. Czyli Lazarus zainstalowany online działał, a próba instalacji offline po odświeżeniu systemu nie powiodła się.
Gdzie jest przyczyna tych problemów? Przy instalacji Wine i MonoDevelop postępowałem w taki sam sposób i działało bez problemów.