Автор статьи: CrownRU Дата: 24.05.2005
Буду рад любым толковым замечаниям и предложениям об улучшении.
Обновляем с помощью apt SuSE 9.1 на 9.2 или 9.3 а также небольшой HowTo как проинсталлитъ KDE 3.4
Описываемые здесь операции могут порушить Вашу систему.
Поэтому сперва внимательно прочитайте статью, лучше два раза, а потом уж берите в руки скальпель.
Также подразумевается, что Вы уже работали с Linux и знаете для чего нужен apt в часности.
point-of-no-return буду указывать отдельно.
При написании статьи воспользовался HowTO, любезно предоставленным oc2pus с сайта
Первоисточник на немецком:
Что Вы должны иметь/уметь
Разумеется apt должен быть установлен на Вашей системе.
Backup очень даже не повредит.
apt обычно сохраняет свои Download в локалном Cache /var/cache/apt.
У Вас там должно быть 700-900 МБ свободного места для 9.2 пакетов.
Если у Вас там недостаточно места, то apt Repository можно скачать в другое место, для этого надо подправить
/etc/apt/apt.conf.d/apt.conf
Шаг 1: логинимся под root
su -
< passwd >
Шаг 2: сохраним актуальную конфигурацию apt (если она есть)
cd etc
tar cvzf myApt-conf-9.1.tar.gz apt/*
Шаг 3: делаем временную директорию для сохранения различной информации
cd /root
mkdir update
cd update
Шаг 4: сохраним актуальный список установленых пакетов
rpm -qa | sort > myAktRPMs-9.1
Шаг 5: сохраним актуальный apt.log и взамен него начнем новый
mv /var/log/apt.log apt-9.1.log
touch /var/log/apt.log
Шаг 6: Правим /etc/apt/sources.list и /etc/apt/security.list для 9.2 репозитария.
Проверьте актуальные пути на странице
Дополнения sources.list можно глянуть на /sources.list.FTP
Вот Вам пример как должен быть выглядеть sources.list:
rpm SuSE/9.2-i386 base
Совет: деактивируйте kernel-of-the-day, чтобы проинсталлировалось стандартное ядро для 9.2 (см. Ниже Шаг 7).
У кого в /etc/sources.list есть другие конфигурации, их следует также обновить для 9.2 версии
Шаг 7: В файле /etc/apt/apt.conf.d/apt.conf опцию Hold для kernel деактивируем
RPM
{
Hold { "kernel-default"; }; изменить на // Hold { "kernel-default"; };
...
}
Естественно, кто использует другое ядро, в этой строчке надо подставить нужное (Напр: kernel-default-smp)
Шаг 8: Правим файл /etc/apt/preferences :
Удаляем все предыдущие настройки /etc/apt/preferences. Если этого файла вообще нет, его нужно создать. Теперь вставим в него:
Package: *
Pin: release v=9.2
Pin-Priority: 1001
Это мы делаем для того, чтобы в случае одинаковых версий пакетов, тянулись пакеты из 9.2 репозитария. Непонятно немножко...
К примеру, у нас установлен самый актуальный пакет. Если не провести вышеуказанную настройку, то он не обновится и в нем будет стоять метка 9.1.
Система будет неконсистентна. К сожалению эта метка присутствует не во всех пакетах, поэтому иногда приходится дорабатывать...
Шаг 9: Чтобы пакеты для update на 9.2 не слились в старую Cache-директорию для 9.1, изменяем /etc/apt/apt.conf.d/apt.conf в секции Dir "/" { }
// Directory layout
Dir "/"
{
// Location of the state dir
State "local/state/apt/"
{
lists "lists-9.2/";
status "/local/status";
...
};
// Location of the cache dir
Cache "local/cache/apt/" {
archives "archives-9.2/";
srcpkgcache "srcpkgcache-9.2.bin";
pkgcache "pkgcache-9.2.bin";
};
...
};
Шаг 10: Создаем новые директории для Cache.
mkdir -p /local/state/apt/lists-9.2/partial
mkdir -p /local/cache/apt/archives-9.2/partial
touch /local/state/apt/lists-9.2/lock
touch /local/cache/apt/archives-9.2/lock
Таким образом мы закончили настройку apt и теперь можем перейти к инсталляции.
Шаг 11: Заполняем apt-Репозитарий
apt update
Если вылазят ошибки, идем к первому пункту и внимательно еще раз все проверяем.
Шаг 12: Посмотрим что установится и сохраним в отдельный файл
apt -s dist-upgrade | tee upgrade.txt
Файл upgrade.txt будет выглядеть примерно так:
Building Dependency Tree...
The following packages will be upgraded
3ddiag BitTornado CheckHardware DirectFB GTorrentViewer ImageMagick MPlayer
OpenOffice_org OpenOffice_org-de OpenOffice_org-de-templates SDL SDL-devel
SDL_image SDL_image-devel SDL_mixer SDL_net SDL_sound SDL_ttf SDLmm
SDLmm-devel a2ps aaa_base aaa_skel aalib aalib-devel acl afio apollon
apt-file apt-iselect apt-smartclean apt4rpm arc ash aspell at attr audiofile
autoyast2-installation avifile avifile-qt awesfx bash bc bchunk bin86
binutils bison bitstream-vera blt bluez-libs bonobo bootsplash
bootsplash-theme-SuSE bzip2 cabextract ccd2iso cdk cdparanoia cdrdao chaplin
checkinstall clanlib clanlib-devel colorgcc compat control-center coreutils
cpdvd cpio cpp cpvts cracklib cron ctags cups-client cups-drivers cups-libs
curl curl-devel cvs cyrus-imapd cyrus-sasl cyrus-sasl-plain dar db db-devel
db-utils db1 db41 dbh ddclient ddd ddrescue deb desktop-data-SuSE
device-mapper devs dhcpcd dialog diffutils dirsync distcc
docbook-dsssl-stylesheets docbook-toys docbook-utils docbook-xml-website
docbook-xsl-stylesheets docbook_3 docbook_4 dos2unix dosbootdisk dosfstools
doxygen e2fsprogs e2fsprogs-devel eazy eject enscript esound esound-devel
ethtool evms expat faad2 fam fam-devel fbset fetchmail fftw fftw3 file
filesystem fillup findutils finger flac flac-devel flash-player flex
fontconfig fontconfig-devel foomatic-filters fping freeglut freeglut-devel
freetype freetype2 freetype2-devel fribidi ftp fvwm2 gail gail-devel gal gawk
gcc gcc-c++ gconf gconf2 gdb gdbm gdbm-devel gdk-pixbuf gettext
ghostscript-fonts-other ghostscript-fonts-std ghostscript-library
ghostscript-x11 giFT giFT-FastTrack giFT-openft gle glib glib-devel glibc
glibc-devel glibc-html glibc-locale gnokii gnome-desktop gnome-filesystem
gnome-icon-theme gnome-keyring gnome-libs gnome-libs-devel gnome-mime-data
gnome-print gnome-vfs2 gpg gpm graphviz grep groff grub gtk gtk-devel
gtk-xfce-engine gtkglarea gtkhtml-devel gtkmm gtkmm-devel guile gv gxine
gxmhtml gzip hdparm heimdal-lib help2man hermes hotplug htdig html-dtd
html2txt htop hwinfo hwinfo-devel id3lib id3lib-devel ifnteuro imap-lib
imediff2 imlib imlib-devel imwheel indent info info2html initviocons insserv
intlfnts iproute2 iptables iptables-devel iputils irssi isapnp iselect
iso_ent itcl iwidgets jack jack-devel jta-javadoc kaffeine kalbum kbd kbear
kconfigure kdocker kfile_torrent kim kinternet kio-apt kmenc15 krename
krpmbuilder ksymoops kwatch kwavencoder kxmleditor ladspa latex2html-pngicons
ldapcpplib less lha libacl libattr libavc1394 libbonobo libbonoboui libcap
libdar libdar-devel libdvdread libdvdread-devel libexif libgcc libgcj
libghttp libgiFT libgimpprint libglade libglade-devel libglade2
libglade2-devel libgnome libgnomecanvas libgnomeprint libgnomeprintui
libgnomeui libgpg-error libgphoto2 libgtkhtml libidl libidl-devel libidn
libidn-devel libieee1284 libjasper libjpeg liblcms liblcms-devel libmal
libmcal libmcrypt libmcrypt-devel libmikmod libmng libmng-devel libmpeg2
libmpeg3 libnetpbm libofx libpcap libpng libpng-devel libquicktime libraw1394
libsamplerate libselinux libsigc++ libsigc++-devel libsndfile
libsndfile-devel libstdc++ libstdc++-devel libstroke libtiff libunicode
libusb libwmf libxcrypt libxfce4mcs libxfce4mcs-devel libxfce4util
libxfce4util-devel libxfcegui4 libxfcegui4-devel libxml libxml-devel
liby2util libzvt libzvt-devel linc linc-devel linux-atm linux-atm-lib lirc
listexec logrotate lsof lua lua-devel lvm2 lzo lzo-devel mad mad-devel mailx
make man man-pages mc mdadm metacity mhash mingetty mjpegtools mkinitrd
mktemp mkvtoolnix mm module-init-tools mpglen mrtg mtools myspell-german
mysql-shared nasm ncurses ncurses-devel net-snmp net-tools netcat netcfg
netpbm newt newt-devel nfs-utils normalize nss_ldap ntfsprogs oaf openjade
openldap2-client openmotif openmotif-libs openslp opensp openssh
openssh-askpass openssl openssl-devel orbit orbit-devel orbit2 orbit2-devel
pam pam-devel pam-modules pam_ldap pango pango-devel parted parted-devel
patch patchutils pciutils pcre pcre-devel pcsc-lite perl perl-Archive-Tar
perl-Archive-Zip perl-Bit-Vector perl-Compress-Zlib perl-Config-Crontab
perl-Config-General perl-Config-IniFiles perl-Convert-TNEF perl-Convert-UUlib
perl-Curses perl-Cyrus-IMAP perl-Cyrus-SIEVE-managesieve perl-Date-Calc
perl-Digest-HMAC perl-Digest-SHA1 perl-File-MMagic perl-File-Tail perl-GD
perl-Gtk-Perl perl-HTML-Parser perl-HTML-Tagset perl-HTML-Template
perl-IO-stringy perl-Inline perl-MIME-tools perl-MailTools perl-Net-DNS
perl-Net-Server perl-Net_SSLeay perl-PDA-Pilot perl-Parse-RecDescent
perl-SGMLS perl-SNMP perl-TermReadKey perl-TimeDate perl-Tk perl-URI
perl-Unix-Syslog perl-XML-LibXML perl-XML-Parser perl-XML-Writer
perl-cpan2rpm perl-gettext perl-libapt-pkg perl-libconfigfile
perl-libwww-perl perl-spamassassin permissions pgmfindclip pilot-link
pkgconfig popt popt-devel portmap postfix postgresql-libs powertweak ppp pptp
procinfo procmail procps providers psmisc pvm pvm-devel pwdutils python
python-curses python-devel python-gtk python-numeric python-pygame python-tk
python-wxGTK python-xml pyxml qt3 qt3-devel qt3-devel-doc qt3-non-mt qvcd
qvcdgear raidtools rcs readline readline-devel recode reiserfs release-notes
resmgr ripmake rpm rpm-devel rpm-python rpmkey-suser-scorot rrdtool rsh rsync
sablot sash sax2 sax2-ident sax2-tools scpm screen scrollkeeper scsi sed
sensors setserial sgml-skel shared-mime-info sharutils siga sitar slang
slang-devel slib smpeg smpppd sox spamassassin sqlite sqlite-devel squid
src_vipa startup-notification strace submount sudo superkaramba
suse-build-key suse-release susehelp susehelp_de suselinux-adminguide_de-pdf
swig synaptic sysconfig syslinux syslogd sysvinit t1lib tarfix tcl tcl-devel
tcpd tcpdump tcsh telnet telnet-server terminfo texinfo tidy tightvnc
timezone tix tk tkxcd tleds toolame torrentsniff tovid txt2man txt2regex udev
unace unarj unclutter unixODBC unixODBC-devel unzip update-desktop-files upx
usbutils utempter util-linux uudeview vcdgear vim vorbis-tools w3m
w3m-inline-image wbumount webalizer wget whois wvdial wvstreams wxGTK
wxGTK-compat wxGTK-devel wxGTK-gl xanim xaw3d xbanner xchat xdg-menu xdmbgrd
xf86tools xfcalendar xfce-mcs-manager xfce-mcs-manager-devel xfce-mcs-plugins
xfce-utils xfce4-appfinder xfce4-icon-theme xfce4-iconbox xfce4-mixer
xfce4-panel xfce4-session xfce4-session-devel xfce4-session-engines
xfce4-systray xfce4-toys xfce4-trigger-launcher xfdesktop xffm xfprint
xfsprogs xfwm4 xfwm4-themes xinetd xlockmore xmlcharent xmms xmms-lib xntp
xorg-x11 xorg-x11-Mesa xorg-x11-Mesa-devel xorg-x11-Xvnc xorg-x11-devel
xorg-x11-driver-options xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi
xorg-x11-fonts-scalable xorg-x11-libs xorg-x11-man xorg-x11-server
xorg-x11-server-glx xscreensaver xtermset yast2 yast2-backup yast2-bootloader
yast2-control-center yast2-core yast2-country yast2-inetd yast2-installation
yast2-ldap yast2-ldap-client yast2-mail yast2-mail-aliases yast2-mouse
yast2-ncurses yast2-network yast2-nfs-client yast2-nfs-server
yast2-nis-client yast2-nis-server yast2-online-update yast2-packagemanager
yast2-packager yast2-pam yast2-perl-bindings yast2-powertweak yast2-printer
yast2-profile-manager yast2-qt yast2-restore yast2-runlevel yast2-scanner
yast2-security yast2-storage yast2-support yast2-sysconfig
yast2-theme-SuSELinux yast2-trans-de yast2-transfer yast2-tune yast2-update
yast2-users yast2-x11 yast2-xml yp-tools ypbind zip ziptool zisofs-tools zlib
zlib-devel zoo zsh
The following packages will be REPLACED:
java2 (by java-1_4_2-sun-devel) java2-jre (by java-1_4_2-sun) libungif (by
giflib) par (by par2cmdline)
The following NEW packages will be installed:
OpenEXR SuSEfirewall2 boehm-gc compat-readline4 dirmngr ed fonts-config
giflib gpg2 gpgme jadetex java-1_4_2-sun java-1_4_2-sun-devel latex-ucs
libexif5 libgcrypt libgnomecups libksba libmspack libnscd libtunepimp libzio
openct opensc par2cmdline perl-BerkeleyDB pinentry te_etex te_latex te_pdf
tetex update-alternatives xsu yast2-firewall
The following packages have been kept back
ImageMagick-devel kernel-default m4
The following packages will be DOWNGRADED
a52dec acroread ajcore ajcore-gui alsa alsa-devel alsa-tools amavisd-new
apache2 apt apt-devel apt-libs apt-server atk atk-devel awstats
bash-completion bind cdrecord cdrecord-devel cutter d4x divx4linux fame
ffmpeg gd gd-devel gdome2 gdome2-devel glib2 glib2-devel gmp gtk2 gtk2-devel
guarddog imlib2 imlib2-devel jpackage-utils kdebase3 kdebase3-kdm
kdebase3-ksysguardd kdegraphics3 kdegraphics3-imaging kdegraphics3-kamera
kdelibs3 kdemultimedia3-jukebox kdepim3 kdepim3-devel kdepim3-kpilot
kdepim3-organizer kdepim3-sync kdepim3-time-management kdevelop3 lame libao
libart_lgpl libart_lgpl-devel libcddb libcddb-devel libcdio libcdio-devel
libdv libfame libffmpeg0 libffmpeg0-devel libnet libogg libogg-devel
libsmbclient libtheora libtheora-devel libtool libvcd libvcd-devel libvorbis
libvorbis-devel libxine1 libxine1-devel libxine1-sdl libxine1-syncfb libxml2
libxml2-devel libxml2-python libxslt libxslt-devel libxslt-python lve mkisofs
mpgtx multitail nmap ogmtools perl-XML-GDOME perl-XML-LibXML-Common
perl-XML-NamespaceSupport perl-XML-SAX php4-bcmath php4-bz2 php4-calendar
php4-ctype php4-curl php4-dbase php4-domxml php4-exif php4-filepro php4-ftp
php4-gd php4-gettext php4-gmp php4-iconv php4-imap php4-ldap php4-mbstring
php4-mcal php4-mcrypt php4-mhash php4-mime_magic php4-mysql php4-pgsql
php4-qtdom php4-session php4-shmop php4-snmp php4-sockets php4-swf
php4-sysvsem php4-sysvshm php4-unixODBC php4-wddx php4-xslt php4-yp php4-zlib
rar rpmkey-packman rpmlint samba-client sarg schafkopf speex subtitleripper
transcode vcdimager vsftpd w32codec-all xine-skins xine-ui xvid xvid-devel
720 upgraded, 34 newly installed, 148 downgraded, 4 replaced, 0 removed and 3 not upgraded.
Шаг 13: Теперь создадим небольшой shell-Script myUpgrade. С помощю этого скрипта производится download и update
Вот так он должен выглядеть:
#!/bin/bash
apt --test install \
<Все пакеты из "The following packages will be upgraded:">
<Все пакеты из "The following NEW packages will be installed:">
<Все пакеты из "The following packages will be DOWNGRADED">
<Все пакеты из "The following packages have been kept back">
Эту информацию мы можем взять из предусмотрительно созданного файла upgrade.txt. В конце этого списка сделаем небольшое добавление:
kernel-default java-1_4_2-sun-plugin (владельцы других ядер, не забыли, что я говорил выше?)
Кто еще использует inetd должен перейти на xinetd и с inetd- деинсталлировать старую версию - в 9.2 ее уже нет.
Шаг 14: Все пакеты из секции "The following packages will be REPLACED" в myUpgrade дополним знаком "-": java2- libungif- par- ... сие означает, что эти пакеты перед инсталляцией новых будут деинсталлированы.
The following packages will be REPLACED:
java2 (by java-1_4_2-sun-devel) java2-jre (by java-1_4_2-sun) libungif (by
giflib) par (by par2cmdline)
Шаг 15: В SuSE 9.2 изменилось поведение Java. Чтобы browser Firefox и Mozilla могли и дальше работать с Java, нам понадобится RPM java-1_4_2-sun-plugin. В скрипт myUpgrade вконце добавим java-1_4_2-sun-plugin.
Место для инсталляции OpenOffice было также изменено с /opt/OpenOffice.org на /usr/lib/ooo-1.1. Чтобы наш актуальный оффис смог и дальше работать надо сделать символический линк в /usr/lib:
cd /usr/lib
ln -s /opt/OpenOffice.org ooo-1.1
Шаг 17: Сохраняем myUpgrade и деалем его исполняемым
chmod +x myUpgrade
Шаг 18: Запускаем myUpgrade
./myUpgrade
Если вылезают ошибки насчет зависимостей, "виновников" надо будет стереть вручную:
rpm -e --nodeps <пакет, вызывающий ошибку>
И запустить ./myUpgrade еще раз. Редко, но случаются странные зависимости друг на друга "порочный круг:)". Чаще всего виновата кривая сборка пакета.
Данную процедуру повторять до тех пор, пока не останется ни одной ошибки.
Вот например вывод моего первого прохода:
libcurl.so.2 is needed by (installed) php4-curl-4.3.10-0.1
libcurl.so.2 is needed by (installed) xine-ui-0.99.3-0.pm.0
liblber.so.199 is needed by (installed) bind-9.3.0-2.1
liblber.so.199 is needed by (installed) kdebase3-3.3.2-7
liblber.so.199 is needed by (installed) apache2-2.0.52-5.1
liblber.so.199 is needed by (installed) libsmbclient-3.0.10-0.1
liblber.so.199 is needed by (installed) php4-ldap-4.3.10-0.1
liblber.so.199 is needed by (installed) samba-client-3.0.10-0.1
libldap.so.199 is needed by (installed) bind-9.3.0-2.1
libldap.so.199 is needed by (installed) kdebase3-3.3.2-7
libldap.so.199 is needed by (installed) apache2-2.0.52-5.1
libldap.so.199 is needed by (installed) libsmbclient-3.0.10-0.1
libldap.so.199 is needed by (installed) php4-ldap-4.3.10-0.1
libldap.so.199 is needed by (installed) samba-client-3.0.10-0.1
m4 = 1.4o is needed by (installed) autoconf-2.59-79
libmpeg3.so is needed by (installed) transcode-0.6.14-0.pm.0
А вот решение:
1.) libcurl.so.2 не дает нам установить пакеты php4-curl и xine-ui fest, оба пакета имейут в SuSE-9.1 и SuSE-9.2 одинаковые версии. xine-ui не так уж важен, чтобы истема заработала, поэтому я его могу стереть:
rpm -e xine-ui xine-skins
С пакетами php4-curl и php4-ldap поступаем точно также
rpm -e php4-curl php4-ldap
Ничего страшного, при полном Update они будут проинсталлированы заново.
2.) apt policy libmpeg3 выдает:
libmpeg3:
Installed: 1.5-411
Candidate: 1.5.4-4
Version Table:
1.5.4-4 0
1001 SuSE/9.2-i386/base pkglist
*** 1.5-411 0
100 RPM Database
Тут мы видим, что уже проинсталлированая версия новей, чем пакет в SuSE-9.2. Значит мы должны немного подправить в скрипте myUpgrade:
libmpeg3=1.5.4-4
3.) apt policy autoconf выдает:
autoconf:
Installed: 2.59-79
Candidate: 2.59-79
Version Table:
*** 2.59-79 0
1001 SuSE/9.2-i386/kde pkglist
100 RPM Database
2.59-78 0
1001 SuSE/9.2-i386/base pkglist
Проинсталлированый autoconf имеет одинаковую версию с тем, что идет с 9.2, но в RPM ничего не написано о версии SuSE, для которой он был собран.
Поэтому, чтобы проинсталлировать autoconf версию из Repository base, Поэтому, чтобы проинсталлировать autoconf версию из Repository base, проинсталлируем 2.59-7, этого можно достичь путем изменения версии autoconf=2.59-78 -пишем в скрипт myUpgrade.
4.) Пакет bind разделен на много маленьких кусков. Т.к. проинсталлированая версия идентична bind identisch с SuSE-9.2, делаем downgrade пакета на имеющуюся в base-Repository версию 9.2.4-3.2.:
autoconf=2.59-78
apt policy bind
bind:
Installed: 9.3.0-2.1
Candidate: 9.3.0-2.1
Version Table:
*** 9.3.0-2.1 0
100 RPM Database
9.3.0-2.1 0
1001 SuSE/9.2-i386/suse-people pkglist
9.3.0-0.1 0
1001 SuSE/9.2-i386/suse-people pkglist
9.2.4-3.2 0
1001 SuSE/9.2-i386/base pkglist
В скрипт myUpgrade мы изменяем или добавляем:
bind=9.2.4-3.2 bind-utils=9.2.4-3.2 bind-libs=9.2.4-3.2
5.) Изменяем libsmbclient и samba-client (выбираем пакеты из Repository base, а не из suse-projects):
libsmbclient=3.0.9-2.1 samba-client=3.0.9-2.1
6.) Для apache2 выберем: apache2=2.0.50-7.3 и должны выбрать apache2-prefork=2.0.50-7.3 и добавить libapr0=2.0.50-7.3 (т.к. здесь впервые будут использоватся пакеты из base)
7.) последнии три зависимости были из за неустановленного пакета liblber.so.199 и libldap.so.199 для решении этой проблеммы можно воспользоватся так называемым "Виртуальным RPM". Для того, чтобы его создать, воспользуйтесь следующим скриптом:
#!/bin/sh
# Examples:
# ./mkvirtualrpm.sh glibc python db3 XFree86-libs zlib mysql postgresql
# ./mkvirtualrpm.sh /bin/csh
# ./mkvirtualrpm.sh libstdc++-2.96-98
# ./mkvirtualrpm.sh /usr/bin/env
if [ -z "$1" ]; then
echo "usage: $0 "
exit 1
fi
if test -z $SCRIPT_VERSION; then
SCRIPT_VERSION=1.0
fi
if test -z $RELEASE_VERSION; then
RELEASE_VERSION=0.xx.1
fi
mySpecName=myVirtual.spec
name=myVirtualPackages
packages="$*"
echo "virtual rpms: $packages"
tmpdir=`mktemp /tmp/virtual.XXXXXX`
rm -f $tmpdir
mkdir -p $tmpdir/{RPMS/i386,SPECS}
(
# Header
cat << $tmpdir/SPECS/$mySpecName
cat $tmpdir/SPECS/$mySpecName
rpm -bb --define "_topdir $tmpdir" $tmpdir/SPECS/$mySpecName
echo "copying $tmpdir/RPMS/i386/*rpm"
cp -p $tmpdir/RPMS/i386/*rpm .
rm -fr $tmpdir
Затем создаем "Виртуальный RPM"
./myVirtualRPM libmpeg3.so libldap.so.199 liblber.so.199
и проинсталлируем их через rpm.
Еще раз изменения в myUpgrade:
autoconf=2.59-78 \
libsmbclient=3.0.9-2.1 samba-client=3.0.9-2.1 \
bind=9.2.4-3.2 bind-libs=9.2.4-3.2 bind-utils=9.2.4-3.2 \
apache2=2.0.50-7.3 apache2-prefork=2.0.50-7.3 libapr0=2.0.50-7.3 \
libmpeg3=1.5.4-4
Иногда, там где пакету ABC непременно нужна библиотека libXXX.so.4, а другой пакет также страстно ее восжелал, мы можем сделать fake-параметр в конфигурации обеих пакетов, чтобы они требовали нужную библиотеку в /etc/apt/apt.conf.d/apt.conf
Например так:
RPM {
...
Fake-Provides {
"rpmlib(PartialHardlinkSets) 4.0.4-1";
"libjasper 1.701";
};
...
};
Таким образом мы оворим системе, что пакет libjasper версии 1.701 и программа rpmlib (PartialHardlinkSets) версии 4.0.4-1 уже проинсталлирована.
Такие решения скорей исключения из правил, но всяко бывает...
Источиком многих ошибок служит sources.list. Если там закомментированы Repositories то может случится так, что apt не будет видеть некоторые пакеты, впрочем наоборот бывает тоже. Оставьте в sources.list необходимый минимум, когда система уже установлена, можно экспереминтировать с бОльшим комфортом.
Когда срипт myUpgrade сделает проход без ошибок, самое трудное уже позади:)
На выводе мы можем тогда увидеть следующее:
....
720 upgraded, 36 newly installed, 144 downgraded, 4 replaced, 2 removed and 0 not upgraded.
Need to get 785MB/785MB of archives.
After unpacking 10.2MB of additional disk space will be used.
Do you want to continue? [Y/n]
Вздохнем поглубже и нажмем буковку Y, должен начатся download пакетов...
Шаг 19: Сеичас можете занятся чем нибудь другим, попить кофейку, пообедать или прикорнуть, пока компьютер будет пожирать мегабайты из сети:).
Шаг 20: Когда download закончится, надо проeдитировать скрипт myUpgrade и опцию --test поменять на --force
apt --test install \ ==> [quote title=Цитата:]apt --force install \
############################################################ #######################
Внимание! Здесь мы доходим до point-of-no-return, когда rpm начнет апдайтить пакеты, компютер нельзя ни в коем случае прерывать или выключать, если не хотите ставить систему с нуля!!!
Можно конечно восстановить порушенное, но трудов это займет, поверте...
Так, я Вас предупредил? Ну и ладушки, поехали дальше:)
############################################################ #######################
Шаг 21: стартуем измененный в Шаг 20 скрипт myUpgrade
.... Пакеты инсталлируются.....
Что бы сеичас поделать..?
Можно пойти погулять, можно посмотреть на ошибки/warning (чур меня, чур), если они будут, и записать что могло случится для последующего изучения.
Самое умное - это уже сеичас занятся конфигурацией системы во второй консоли (rpm говорит же нам, что фаил ххх сохраняется в ххх.rpmsave или фаил yyy создается как yyy.rpmnew)
Например:
warning: /etc/mail/spamassassin/local.cf created as /etc/mail/spamassassin/local.cf.rpmnew
Шаг 21b: В самом конце пройдемся apt-ом еще разок, чтобы подтянуть до актуальной версии те пакеты, которые мы были вынуждены downgrad-ить.
apt -s upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
apache2 apache2-prefork autoconf bind bind-libs bind-utils coreutils glibc-locale libapr0 libsmbclient samba-client
11 upgraded, 0 newly installed, 0 removed and 0 not upgraded.
Inst coreutils [5.2.1-23.6] (5.2.1-32 SuSE:9.2/stable)
Inst apache2-prefork [2.0.50-7.3] (2.0.52-5.1 SuSE:9.2/stable) []
Inst apache2 [2.0.50-7.3] (2.0.52-5.1 SuSE:9.2/stable) []
Inst libapr0 [2.0.50-7.3] (2.0.52-5.1 SuSE:9.2/stable)
Inst autoconf [2.59-78] (2.59-79 SuSE:9.2/stable)
Inst bind-utils [9.2.4-3.2] (9.3.0-2.1 SuSE:9.2/stable) []
Inst bind [9.2.4-3.2] (9.3.0-2.1 SuSE:9.2/stable) []
Inst bind-libs [9.2.4-3.2] (9.3.0-2.1 SuSE:9.2/stable)
Inst libsmbclient [3.0.9-2.1] (3.0.10-0.1 SuSE:9.2/stable)
Inst samba-client [3.0.9-2.1] (3.0.10-0.1 SuSE:9.2/stable)
Inst glibc-locale [2.3.3-98] (2.3.3-118 SuSE:9.2/stable)
Conf coreutils (5.2.1-32 SuSE:9.2/stable)
Conf libapr0 (2.0.52-5.1 SuSE:9.2/stable)
Conf apache2 (2.0.52-5.1 SuSE:9.2/stable)
Conf apache2-prefork (2.0.52-5.1 SuSE:9.2/stable)
Conf autoconf (2.59-79 SuSE:9.2/stable)
Conf bind-libs (9.3.0-2.1 SuSE:9.2/stable)
Conf bind-utils (9.3.0-2.1 SuSE:9.2/stable)
Conf bind (9.3.0-2.1 SuSE:9.2/stable)
Conf libsmbclient (3.0.10-0.1 SuSE:9.2/stable)
Conf samba-client (3.0.10-0.1 SuSE:9.2/stable)
Conf glibc-locale (2.3.3-118 SuSE:9.2/stable)
Шаг 22: Создадим лист проинсталлированых пакетов.
rpm -qa | sort > myAktRPMs-9.2
Шаг23: Сравним старый лист с новым
kompare myAktRPMs-9.1 myAktRPMs-9.2
Для того, чтобы убедится в том что старые пакеты переписались новыми, смотрим в /var/log/apt.log и ищем примерно такие строчки:
toolame is already the newest version.
rar is already the newest version.
rpmkey-packman is already the newest version.
w32codec-all is already the newest version.
xine-skins is already the newest version.
Если какие пакеты и не переписались - ничего страшного, сотрем их (пакеты от 9.1) вручную:
rpm -e --nodeps ...
и проинсталлируем их заново:
apt -f install
или
apt install ...
Шаг 24: запускаем SuSEconfig
./SuSEconfig
Шаг 25: Во время update должны были изменится некоторые конфигурационные файлы. Какие? Для этого запустим команду rcrpmconfigcheck
rcrpmconfigcheck
Пример вывода:
rcrpmconfigcheck
Searching for unresolved configuration files done
Please check the following files (see /var/adm/rpmconfigcheck):
/etc/X11/qtrc.rpmnew
/usr/lib/sasl2/smtpd.conf.rpmnew
Шаг 26: Теперь начинается самая "интересная" работа. ВСЕ вышеперечисленные конфиг фаилы должны быть проверены.
Чтобы их быстро сравнить, можно воспользоватся sdiff:
sdiff -s .rpmnew
Если мы на выходе ничего не получим, значит оба фаила одинаковы и мы можем .rpmnew стереть
Если же мы нашли различия, то выполняем команду:
kompare .rpmnew
Если Вы еще не имеете эту команду, то сеичас хороший повод ее установить:
apt install kdesdk3
###########################################################
ДОРАБОТКИ
###########################################################
Шаг 27: Когда Вы сравнили все конфиг-фаилы, можете облегченно вздохнуть - Вы теперь владеете SuSE 9.2
Старую Cache-директорию от 9.1 (обычно /var/cache/apt и /var/state/apt) можно стереть.
Шаг 28: Теперь можно ребутнутся.
###########################################################
Дополнительные материалы.
1.
2.
3.
4.
Теперь можно сказать, что вышеописаная методика update работает также для SuSE 9.3. Просто замените в скриптах 9.2 на 9.3.
Небольшой HowTo как проинсталлитъ KDE 3.4, какая версия SuSE не важно, как и обещал.
1. Обновлятся лучше из консоли, KDE вырубим. Для этого делаем Ctrl + Alt + F2, регистрируемся под root и жмем # init 3. Когда покажется надпись reached жмем Enter.
2. Пишем "apt update", чтобы проактуализировать apt список пакетов на локальном компьютере
3. Затем "apt -s upgrade". Должен вылезти лист пакетов, предлагаемых для upgrade.
Небольшое замечание: похоже пакет k3b не хочет работать с KDE 3.4. Самый простой способ это снести его и проинсталлировать более новую версию.
Рекомендую k3b взять отсюда:
Это исключение может быть не единственым.
4. Теперь пишем следующую команду, которая собствено и обновит KDE:
apt install ImageMagick ImageMagick-Magick++ ImageMagick-devel arts arts-devel k3b \
kde3-i18n-de kdeaddons3-games kdeaddons3-kate kdeaddons3-kicker \
kdeaddons3-konqueror kdeartwork3-sound kdeartwork3-xscreensaver kdebase3-extra \
kdebase3-kdm kdebase3-ksysguardd kdebase3-nsplugin kdebase3-samba kdegames3-arcade \
kdegames3-board kdegames3-card kdegames3-tactic kdegraphics3-extra kdegraphics3-fax \
degraphics3-imaging kdegraphics3-pdf kdegraphics3-postscript kdegraphics3-scan \
kdelibs3-doc kdenetwork3-InstantMessenger kdenetwork3-news kdeutils3-extra \
kdeutils3-laptop kdiff3 knights krecord libart_lgpl libart_lgpl-devel openldap2-client qindustrial \
qt3 qt3-devel qt3-mysql kdeadmin3 kdeartwork3 kdebase3 kdebase3-devel kdeedu3 \
kdegames3 kdegraphics3 kdelibs3 kdelibs3-devel kdenetwork3 kdepim3 kdeutils3
Просмотрите внимательно названия пакетов и удалите, то, что Вам не нужно.
5. Теперь тапустим "/opt/kde3/bin/genkdmconf" эта программа подкорректирует файл kdmrc под новый формат.
6. Ну и наконец "init 5" должен запустить новый KDE
Если у Вас стояла очень старая KDE, то возможно у Вас не будет системных звуков. На это может быть две (будет больше - пишите) причины:
а) В старых версия KDE звуки хранились в wav формате, сеичас они хранятся в ogg. Значит надо их переконвертировать/сменить на новые или попробовать запустить /opt/kde3/bin/genkdmconf это создаст новую конфигурацию для KDE
б)старая alsa. Это лечится просто:
apt --no-checksig install alsa alsa-tools
|