Fedora 14 (Laughlin)

четвъртък, ноември 25th, 2010

Поради ред причини отново не успях да отразя своевременно появата на новия release на Fedora – 14, с кодово име Laughlin, която се появи на 2-ри ноември.

За пръв път от доста време насам дистрибуцията, не предлага кой знае какви новости за обикновените десктоп потребители, освен libjpeg-turbo, който на теория  води до двукратно увеличение в бързината при зареждането и обработка на изображения.

Има някои  новости за разработчици (нови версии на Python и Perl, включване на D), като за мен най-интересната от тях е работата по gdb.

Този път има доста интересни неща и за системните администратори. За съжаление бе взето решение включването на будещият най-голямо внимание feature, а именно systemd да бъде отложено за следващия release. Чаках го с голям интерес, но ще почакам още малко, не ми се скача на Rawhide, само за да си начеша крастата. Но в общи линии ще преобърне boot процеса с главата надолу. Един от основните разработчици Lennart Poettering започна доста интересна серия от статии в блога си, описващи някои от възможностите на бъдещия заместник на SysV / Upstart. Lennart нашумя и покрай конфронтацията си с Linus Torvalds касаеща предложената алтернатива на добилият напоследък популярност 200 редов patch в linux ядрото. Но да се върна на това какво ново във Fedora. Laughlin включва tool-а virt-v2v, който да подпомогне лесната миграция от Xen към KVM. Освен това Fedora 14 бе достъпна на Amazon EC2 в деня на оповестяването на традиционния release.

За времето от излизането до сега, направих две чисти инсталации, както и два yum upgrade-а от 13 до 14. Всички машини работят без абсолютно никакви проблеми (тук отварям една скоба, но ще се спра на това по-късно). Начините за upgrade остават същите както досега, с тази разлика, че във функционалността на yum е добавена опцията releasever, благодарение на която вече не е нужно да се инсталират / конфигурират новите хранилища, а единствено да се импортне ключа, с който са подписани пакетите:

rpm --import https://fedoraproject.org/static/97A1071F.txt
yum update yum
yum --releasever=14 distro-sync --skip-broken

Естествено преди инсталация или upgrade не е лошо да се хвърли едно око на Common Bugs.

На http://spins.fedoraproject.org могат да бъдат намерени и персонализирани версии на дистрибуцията с инсталиран и преконфигуриран допълнителен софтуер.

И не на последно място, нека спомена че сайтът на дистрибуцията е с чисто нов дизайн.

На края нека спомена и за проблема, който се прояви на една от гореспоменатите машини. Изразяваше се в това, че звукът на flash клипчетата по сайтовете беше неслушаем. Първоначално не му обърнах особено внимание, т.е. не мислех, че може да се дължи на upgrade-а, защото се прояви на само една от машините, но то на две от другите е нямало и как това да стане. Bug-ът засяга 64bit системи. В крайна сметка се оказа, че се дължи на промяна в кода на glibc и некадърно написаният proprietary driver на Adobe. Workaround-а е дело на самия Linus Torvalds.

И нещо за бъдещия наследник, Fedora 15, която трябва да се появи май догодина, ще носи името Lovelock.

Нова опция в yum – history

неделя, декември 13th, 2009

Когато в предишното си писание споменах за проблемите покрай PackageKit, за които се шумеше при излизането на Fedora 12, много хора се питаха как никой от хората ползвали Rawhide не е забелязал такава промяна. Отговорът е прост. Никой (в това число и аз) не ползва графични инструменти от подобен род, когато имаш  yum.

Някъде  някой беше казал (за съжаление не си спомням, къде съм го прочел), че всяка себеуважаваща се съвременна дистрибуция трябва да има добър пакетен мениджър. За Redhat дериватите това е yum. Няма да се спирам на историята на проекта, но не мога да не спомена, че е изминат дълъг път от началото, и че постоянно става все по-добър. Разбира се, има и някои минуси (за мен лично, основно свързани с бързината), но след като в миналата версия бе представен yum-presto (delta rpms), то във Fedora 12 и съответната нова версия на yum (3.2.25), вече имаме yum history. Нещо, което предполагам доста администратори а и потребители безспорно ще оценят, и нещо, от което мисля,  че наистина имаше нужда.

Какво се получаваше преди yum history? Инсталираме даден пакет, който има дадени зависимости, които също се инсталират покрай него. По някаква причина решаваме, че нямаме нужда от въпросната програма и я премахваме. Не всички dependencies инсталирани заедно с нея, винаги се премахват обаче. Какво ни дава history?

Дава ни възможността да се върнем една стъпка назад (undo) и да инсталираме или премахнем, това, което сме инсталирали или премахнали преди това. Получи се малка тафтология, но мисля, че с примерите по-долу нещата ще се изяснят. Възможните опции са: yum history info|list|summary|undo|redo|new

Ето ги и примерите:

[root@Pegasus ~]# yum history
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
ID     | Login user             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
6 |  Nick                | 2009-12-13 00:52 | Install        |    1
5 |  Nick                | 2009-12-13 00:48 | Install        |    4
4 |  Nick                | 2009-12-12 12:02 | Install        |    2
3 |  Nick                | 2009-12-12 11:43 | Install        |    8
2 |  Nick                | 2009-12-12 11:29 | Install        |    2
1 |  Nick                | 2009-12-12 11:20 | E, I, U        |   77

Ако искаме да видим точно определена транзакция, то изпълняваме yum history info ID:

[root@Pegasus ~]# yum history info 2
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
Transaction ID : 2
Begin time     : Sat Dec 12 11:29:54 2009
Begin rpmdb    : 1968:ab76e09445bc9332ee617c5c7bf34a9859e04ade
End time       :            11:30:01 2009 (7 seconds)
End rpmdb      : 1970:c33229c535f6633f7b1ee91e1461fb56c9784e64
User           :
Return-Code    : Success
Transaction performed with:
    Installed    rpm-4.7.1-6.fc12.x86_64
    Installed    yum-3.2.25-1.fc12.noarch
    Installed    yum-plugin-fastestmirror-1.1.24-2.fc12.noarch
Packages Altered:
    Install      kmod-nvidia-190.42-1.fc12.8.x86_64
    Dep-Install  kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64

Ако искаме да премахнем промените направени от въпросната транзакция, то изпълняваме yum history undo ID:

[root@Pegasus ~]# yum history undo 2
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
Determining fastest mirrors
 * fedora: fedora.linuxman.biz
 * rpmfusion-free: ftp.upjs.sk
 * rpmfusion-free-updates: ftp.upjs.sk
 * rpmfusion-nonfree: ftp.upjs.sk
 * rpmfusion-nonfree-updates: ftp.upjs.sk
rpmfusion-free-updates                                                                                                                                       | 3.3 kB     00:00
rpmfusion-nonfree-updates                                                                                                                                    | 3.3 kB     00:00
updates                                                                                                                                                      | 4.4 kB     00:00
0 packages excluded due to repository protections
Undoing transaction 2, from Sat Dec 12 11:29:54 2009
    Install      kmod-nvidia-190.42-1.fc12.8.x86_64
    Dep-Install  kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64
Resolving Dependencies
--> Running transaction check
---> Package kmod-nvidia.x86_64 0:190.42-1.fc12.8 set to be erased
---> Package kmod-nvidia-2.6.31.6-166.fc12.x86_64.x86_64 0:190.42-1.fc12.8 set to be erased
--> Finished Dependency Resolution
 
Dependencies Resolved
 
====================================================================================================================================================================================
 Package                                                       Arch                            Version                                     Repository                          Size
====================================================================================================================================================================================
Removing:
 kmod-nvidia                                                   x86_64                          190.42-1.fc12.8                             installed                           0.0
 kmod-nvidia-2.6.31.6-166.fc12.x86_64                          x86_64                          190.42-1.fc12.8                             installed                           11 M
 
Transaction Summary
====================================================================================================================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)
 
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : kmod-nvidia-190.42-1.fc12.8.x86_64                                                                                                                           1/2
  Erasing        : kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64                                                                                                  2/2
 
Removed:
  kmod-nvidia.x86_64 0:190.42-1.fc12.8                                         kmod-nvidia-2.6.31.6-166.fc12.x86_64.x86_64 0:190.42-1.fc12.8
 
Complete!

Ако отново изпълним yum history list, ще видим, че това е създало нова транзакция:

[root@Pegasus ~]# yum history
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
ID     | Login user             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     7 |  Nick                | 2009-12-13 13:05 | Erase          |    2
     6 |  Nick                | 2009-12-13 00:52 | Install        |    1
     5 |  Nick                | 2009-12-13 00:48 | Install        |    4
     4 |  Nick                | 2009-12-12 12:02 | Install        |    2
     3 |  Nick                | 2009-12-12 11:43 | Install        |    8
     2 |  Nick                | 2009-12-12 11:29 | Install        |    2
     1 |  Nick                | 2009-12-12 11:20 | E, I, U        |   77

и ако решим все пак да върнем нещата назад и да инсталираме отново Kmod-nvidia*, то има два начина да го направим – yum history undo 7, или yum history redo 2:

[root@Pegasus ~]# yum history undo 7
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * fedora: fedora.linuxman.biz
 * rpmfusion-free: ftp.upjs.sk
 * rpmfusion-free-updates: ftp.upjs.sk
 * rpmfusion-nonfree: ftp.upjs.sk
 * rpmfusion-nonfree-updates: ftp.upjs.sk
0 packages excluded due to repository protections
Undoing transaction 7, from Sun Dec 13 13:05:43 2009
    Erase        kmod-nvidia-190.42-1.fc12.8.x86_64
    Erase        kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64
Resolving Dependencies
--> Running transaction check
---> Package kmod-nvidia.x86_64 0:190.42-1.fc12.8 set to be updated
---> Package kmod-nvidia-2.6.31.6-166.fc12.x86_64.x86_64 0:190.42-1.fc12.8 set to be updated
--> Finished Dependency Resolution
 
Dependencies Resolved
 
====================================================================================================================================================================================
 Package                                                   Arch                        Version                                 Repository                                      Size
====================================================================================================================================================================================
Installing:
 kmod-nvidia                                               x86_64                      190.42-1.fc12.8                         rpmfusion-nonfree-updates                       29 k
 kmod-nvidia-2.6.31.6-166.fc12.x86_64                      x86_64                      190.42-1.fc12.8                         rpmfusion-nonfree-updates                      2.2 M
 
Transaction Summary
====================================================================================================================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)
 
Total download size: 2.3 M
[root@Pegasus ~]# yum history redo 2
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * fedora: fedora.linuxman.biz
 * rpmfusion-free: ftp.upjs.sk
 * rpmfusion-free-updates: ftp.upjs.sk
 * rpmfusion-nonfree: ftp.upjs.sk
 * rpmfusion-nonfree-updates: ftp.upjs.sk
0 packages excluded due to repository protections
Repeating transaction 2, from Sat Dec 12 11:29:54 2009
    Install      kmod-nvidia-190.42-1.fc12.8.x86_64
    Dep-Install  kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64
Resolving Dependencies
--> Running transaction check
---> Package kmod-nvidia.x86_64 0:190.42-1.fc12.8 set to be updated
--> Processing Dependency: kmod-nvidia-2.6.31.6-166.fc12.x86_64 >= 190.42-1.fc12.8 for package: kmod-nvidia-190.42-1.fc12.8.x86_64
--> Running transaction check
---> Package kmod-nvidia-2.6.31.6-166.fc12.x86_64.x86_64 0:190.42-1.fc12.8 set to be updated
--> Finished Dependency Resolution
 
Dependencies Resolved
 
====================================================================================================================================================================================
 Package                                                   Arch                        Version                                 Repository                                      Size
====================================================================================================================================================================================
Installing:
 kmod-nvidia                                               x86_64                      190.42-1.fc12.8                         rpmfusion-nonfree-updates                       29 k
Installing for dependencies:
 kmod-nvidia-2.6.31.6-166.fc12.x86_64                      x86_64                      190.42-1.fc12.8                         rpmfusion-nonfree-updates                      2.2 M
 
Transaction Summary
====================================================================================================================================================================================
Install       2 Package(s)
Upgrade       0 Package(s)
 
Total download size: 2.3 M

Ако искаме повече информация за даден пакет, то може да комбинираме някои от опциите. Да речем yum history summary kmod-nvidia, yum history list kmod-nvidia или yum history info kmod-nvidia ни дават следната информация:

[root@Pegasus ~]# yum history summary kmod-nvidia
Loaded plugins: allowdowngrade, fastestmirror, presto, protectbase, refresh-packagekit, security
Login user                 | Time                | Action(s)        | Altered
-------------------------------------------------------------------------------
 Nick                    | Last day            | E, I             |        4
 Nick                    | Last week           | Install          |        2
[root@Pegasus ~]# yum history list kmod-nvidia
Loaded plugins: allowdowngrade, dellsysidplugin2, fastestmirror, presto, protectbase, refresh-packagekit, security
ID     | Login user             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     8 |  Nick                | 2009-12-13 13:11 | Install        |    2
     7 |  Nick                | 2009-12-13 13:05 | Erase         |    2
     2 |  Nick                | 2009-12-12 11:29 | Install        |    2
[root@Pegasus ~]# yum history info kmod-nvidia
Loaded plugins: allowdowngrade, dellsysidplugin2, fastestmirror, presto, protectbase, refresh-packagekit, security
Transaction ID : 8
Begin time     : Sun Dec 13 13:11:52 2009
Begin rpmdb    : 1983:4824469c95865c6b3a6548a690e9fd10f7b8d43a
End time       :            13:11:57 2009 (5 seconds)
End rpmdb      : 1985:dc98b76dd546e9edd76e8b5b8520f5f7a8c7d7c7
User           :  Nick
Return-Code    : Success
Transaction performed with:
    Installed    rpm-4.7.1-6.fc12.x86_64
    Installed    yum-3.2.25-1.fc12.noarch
    Installed    yum-plugin-fastestmirror-1.1.24-2.fc12.noarch
Packages Altered:
    Install      kmod-nvidia-190.42-1.fc12.8.x86_64
    Dep-Install  kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64
-------------------------------------------------------------------------------
Transaction ID : 7
Begin time     : Sun Dec 13 13:05:43 2009
Begin rpmdb    : 1985:dc98b76dd546e9edd76e8b5b8520f5f7a8c7d7c7
End time       :            13:05:54 2009 (11 seconds)
End rpmdb      : 1983:4824469c95865c6b3a6548a690e9fd10f7b8d43a
User           :  Nick
Return-Code    : Success
Transaction performed with:
    Installed    rpm-4.7.1-6.fc12.x86_64
    Installed    yum-3.2.25-1.fc12.noarch
    Installed    yum-plugin-fastestmirror-1.1.24-2.fc12.noarch
Packages Altered:
    Erase        kmod-nvidia-190.42-1.fc12.8.x86_64
    Erase        kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64
-------------------------------------------------------------------------------
Transaction ID : 2
Begin time     : Sat Dec 12 11:29:54 2009
Begin rpmdb    : 1968:ab76e09445bc9332ee617c5c7bf34a9859e04ade
End time       :            11:30:01 2009 (7 seconds)
End rpmdb      : 1970:c33229c535f6633f7b1ee91e1461fb56c9784e64
User           :  Nick
Return-Code    : Success
Transaction performed with:
    Installed    rpm-4.7.1-6.fc12.x86_64
    Installed    yum-3.2.25-1.fc12.noarch
    Installed    yum-plugin-fastestmirror-1.1.24-2.fc12.noarch
Packages Altered:
    Install      kmod-nvidia-190.42-1.fc12.8.x86_64
    Dep-Install  kmod-nvidia-2.6.31.6-166.fc12.x86_64-190.42-1.fc12.8.x86_64

Полезно, лесно и удобно!

Osprey 230 Linux Driver Sound Patch

четвъртък, септември 24th, 2009

Реших да драсна няколко реда относно този проблем, защото информацията в нета е доста оскъдна. Накратко, capture картите на Osprey от серия 230 (и не само те), но в моя случай ставаше дума за такава имат проблем със звука. Те варират от пълната му липса до едно дразнещо бучене, макар и да се чува някакво подобие на звук. По-често срещаният проблем е вторият и причината всъщност е във високият gain. Из мейлинг листите има доста въпроси относно този проблем, но малка част от тях водят до някакво решение.

До ядро 2.6.9 Viewcast са имали собствени драйвери за Linux за своите карти, но в последствие тяхната разработка е била прехвърлена на общността и в частност на хората зад v4l/dvb. Драйверите за v4l поначало са част от linux ядрото. В ядрото идващо с CentOS 5.2, а именно 2.6.18 нужните драйвери за разпознаване и работа на Osprey картите са налице. Това са bttv за video и snd_bt87x за звука. И докато видеото може да се каже че е с перфектно качество, то както вече стана дума не можем да кажем това и за звука. При малко по-усилено търсене могат да се намерят едни стари пачове от 2006-та година, които са решавали проблема посредством btaudio, но на мен те не ми свършиха работа. Patch-ът, който всъщност работи, може да бъде намерен ето тук . (Понеже той не може да бъде видян без регистрация за v4l mail листата, то ще направя и local mirror).

И така, ако в dmesg, или /var/log/messages виждаме нещо подобно:

bttv: driver version 0.9.18 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:0b:04.0, irq: 19, latency: 132, mmio: 0xd8000000
bttv0: detected: Osprey-200 [card=88], PCI subsystem ID is 0070:ff01
bttv0: using: Osprey 200/250 [card=88,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
bttv0: osprey eeprom: card=89 'Osprey 210/220/230' serial=5436547
bttv0: osprey eeprom: Changing card type from 88 to 89
bttv0: tuner absent
bttv0: registered device video0
bttv0: registered device vbi0

то картата ни е разпозната, модулът е зареден и можем да я ползваме по предназначение (засега без звук).

Ето и основните стъпки, по които да се ръководи човек сблъскал се с подобен род проблем, като те като цяло са малко redhat specific, но не би трябвало да бъде проблем да се ползват и за други дистрибуции.

  • Сваляваме osprey-snd-patch.
cd /usr/src/
wget http://just4nick.net/blog/wp-content/uploads/2009/09/osprey-snd.patch
  • Сваляме сорс кода на v4l-dvb и го разархивираме.
wget http://linuxtv.org/hg/~tap/bttv/archive/tip.tar.gz
tar -zxvf bttv-35ddb77b68f8.tar.gz
mv bttv-35ddb77b68f8 v4l-dvb
  • Прилагаме patch-a.
patch --dry-run -p1 -d v4l-dvb < osprey-snd.patch

Както се вижда и от самия код ползваме опцията на patch за суха тренировка –dry-run. Така се предпазваме от грешки. Ако всичко е наред, би трябвало да видим нещо от този род:

patching file linux/drivers/media/video/bt8xx/bttv-if.c
patching file linux/drivers/media/video/bt8xx/bttv.h
Hunk #1 succeeded at 302 (offset 1 line).
patching file linux/sound/pci/bt87x.c
Hunk #7 succeeded at 437 (offset 2 lines).
Hunk #9 succeeded at 778 (offset 2 lines).
Hunk #11 succeeded at 984 (offset 2 lines).
Hunk #12 succeeded at 1084 (offset 2 lines).
Hunk #13 succeeded at 1109 (offset 2 lines).

След което можем да пристъпим към същинското прилагане на patch-а с командата:

patch -p1 -d v4l-dvb < osprey-snd.patch
  • Инсталираме kernel-devel, kernel-headers, redhat-rpm-config, rpm-build.
yum -y install kernel-devel kernel-headers redhat-rpm-config rpm-build
  • Сваляме и инсталираме src rpm-a на ядрото.
cd /usr/local/src/
wget ftp://mirror.switch.ch/pool/3/mirror/centos/5.3/updates/SRPMS/kernel-2.6.18-128.4.1.el5.src.rpm
rpm -ivh kernel-2.6.18-128.4.1.el5.src.rpm
  • Билдваме модифицирания код на ядрото.
cd /usr/src/redhat/SPECS
rpmbuild -bp --target=$(arch) kernel-2.6.spec
  • Коригираме Makefile.
cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/
vim Makefile

където променяме

EXTRAVERSION = -prep

EXTRAVERSION = -128.4.1.el5
  • Компилираме и инсталираме driver-ите.
cp configs/kernel-2.6.18-x86_64.config .config
make modules_prepare
cd /usr/src/v4l-dvb
make all
make install
make sound-install

Ако всичко мине успешно, то при изпълняването на

ls -la /lib/modules/2.6.18-128.4.1.el5/kernel/sound/pci/snd-bt87x.ko

би трябвало да видим, че модула е налице и е с текуща дата и час.

  • Зареждаме модула.
rmmod snd_bt87x
modprobe snd_bt87x

След което би трябвало да е възможно да коригираме sound capture посресдством alsamixer и да имаме нормално работещ звук.

Допълнителна информация:

http://linux.lcpe.uni-sofia.bg/manuals/openintegra/xfs/RHEL_xfs_RPM.html
http://wiki.centos.org/HowTos/BuildingKernelModules
http://www.google.bg/#hl=bg&q=linux+audio+problem+Osprey+230&meta=&fp=e366587b524c8386

Fedora 11 Leonidas

сряда, юни 17th, 2009

Малко късно (все пак излезе преди повече от седмица), но и аз да драсна няколко реда за любимата дистрибуция. Този път няма да се спирам на всички обявени новости. Всеки може да ги види в release notes. За мен стана нещо като традиция да правя update от current към beta release и през rawhide отново до current. Така че реално бях в крак с новостите още от бета версията насам и така да се каже, някои от тях усещах в реално време. И така ето какво ще спомена:

  • по-бързо стартиране – обявено е като 20-секундно. Не съм го засичал, но е бързо. Значително по-бързо от Fedora 10.
  • bash 4.0 – има си преимущества да ползваш cutting edge дистрибуция :)
  • firefox 3.5 beta / thunderbird 3 beta – въпреки че са бета версии съм много доволен. Никакви проблеми и с двете.
  • ext4 – все още не съм правил тестове, но си струва да се отбележи. Трябва да намеря време и място и да видя дали е възможно да се ползва за постоянно.
  • Volume control и цялостно подобрение в поведението на звука. По-добра интеграция и работа на PulseAudio. Повече за това може да се види на ето този линк
  • Presto (yum-presto) -изисква се инсталация (yum install yum-presto). За този feature се говори поне от две версии назад. Плъгина беше готов доста отдавна, но имаше забавяне покрай организацията на огледалата. Та какво толкова е това presto в крайна сметка? При нормален update преди се сваляше целият нов пакет. Въпреки че разликата му със стария може и да е съвсем минимална. Дори и patch от 5 реда води до сваляне на целия пакет. Presto прави именно това. Сваля само разликата между стария и новия пакет, което може да редуцира размера на свалените файлове с около 60 до 80% .
  • no more ctrl-alt-backspace – тази промяна е наложена upstream от X.org.  Реално никъде не пише от какво е породена. Из мейл листите циркулира версия, че виновни са emacs потребители. В emacs има доста комбинации с ctrl-alt, и при натискане на backspace по невнимание се стига до загуба на данни. В крайна сметка не става ясно дали emacs гилдията наистина има пръст в това, но то е факт. Малко разследване показва, че всъщност предложението е дошло от Ubuntu, неясно по каква причина, но в последствие дори и там никой не го иска, като те дори са написали допълнително приложение или скрипт (вече не помня), който да оправя положението. По същия начин са решили проблема и хората от SuSe. Във fedora-devel имаше доста голяма дискусия относно това, как да се процедира и до момента до който я следях решението бе, че щом промяната е наложена upstream, те няма да правят нищо допълнително, макар и никой да не я харесва. Цялата дискусия и защо всъщност това е проблем може да се види тук. В резюме спирането води до парадокса, да е нужен принудителен рестарт в определени ситуации, който ако функцията си е активна не би бил нужен. Решението е добавянето на следните редове в xorg.conf:
  • Section "ServerFlags"
    Option "DontZap" "false"
    EndSection

    Това са впечатленията ми от Leonidas до тук. Ето и едно видео, в което Max Spevack и Paul Frields говорят за някои от новостите във Fedora 11:

    [youtube]http://www.youtube.com/watch?v=Mn5t-u7vCJ0[/youtube]

    Междувременно гласувах за избор на име за следващата 12-та версия по следния начин:

    Chilon 1т.
    Constantine 3т.
    Orville 3т.
    Rugosa 3т.
    Umbria 5т. - новия Стар Трек силно ми повлия за това решение :)

    Изборът ще бъде обявен в началото на другата седмица.

Patch and recompile source rpm

четвъртък, април 30th, 2009

Както обикновено когато е последен работен ден изникват странни проблеми. Днес попаднах на интересен client/server side bug, който се наложи да оправям. Оказа се, че в PureFTPd има проблем засягащ timestamp на файлове. При upload на файл timestamp-а локално и този на сървъра се различават с по няколко часа, в зависимост от часовата зона, като за нашата часовете са 2. Това е когато се използва preserve timestamp опцията от страна на клиента, и е доста неудобно при синхронизация на файлове. За щастие проблема се оказа елементарен за решаване – описано е как да стане тук. Аз обаче нямах време да чакам bugfix от upstream-a и взех нещата в свои ръце. Реших да прекомпилирам source rpm и по-надолу ще опиша как точно може да се направи това.

  • Като за начало имаме нужда от rpm-build, така че ако го няма, се налага да го инсталираме :
yum -y install rpm-build
  • Намираме и инсталираме src rpm-а. В моя случай той е ето тук.
rpm -ivh pure-ftpd-1.0.21-15.el5.src.rpm
  • Отиваме в specs директорията:
cd /usr/src/redhat/SPECS/
  • Където подготвяме source за компилиране, като го разархивираме и apply-ваме вече дефинираните patch-ове
rpmbuild -bp pure-ftpd.spec

#Възможно е да има проблеми със зависимости, като естествено трябва да инсталираме посочените пакети, ако има такава необходимост

  • Отиваме в /usr/src/redhat/BUILD където би трябвало да има директория от рода pure-ftpd-1.0.21. Правиме й backup, който ще ползваме при генериране на patch-a в последствие.
cd /usr/src/redhat/BUILD

cp -r pure-ftpd-1.0.21 pure-ftpd-1.0.21.orig

Промяната, която трябва да направим е да заменим "mktime()" с "timegm()" във файла ftpd.c. И така с любимия файлов редактор vim, правим нужната промяна във файла /usr/src/redhat/BUILD/pure-ftpd-1.0.21/src/ftpd.c

  • Генерираме patch-a
diff -Naur pure-ftpd-1.0.21.orig/src/ftpd.c pure-ftpd-1.0.21/src/ftpd.c > ../SOURCES/pure-ftpd-1.0.21-utime.patch

като той трябва да съдържа нещо от рода:

1
2
3
4
5
6
7
8
9
10
11
--- pure-ftpd-1.0.21.orig/src/ftpd.c    2009-04-30 13:39:37.000000000 +0300
+++ pure-ftpd-1.0.21/src/ftpd.c 2009-04-30 13:40:55.000000000 +0300
@@ -2541,7 +2541,7 @@
tm.tm_mon--;
tm.tm_year -= 1900;
if (tm.tm_mon < 0 || tm.tm_year <= 0 ||
-       (ts = mktime(&tm)) == (time_t) -1) {
+       (ts = timegm(&tm)) == (time_t) -1) {
addreply_noformat(501, MSG_TIMESTAMP_FAILURE);
return;
}
  • Редактираме spec файла /usr/src/redhat/SPECS/pure-ftpd.spec като правим следните промени
Release:    15%{?dist}

на

Release:    15%{?dist}.1
  • Добавяме ред, в който описваме направения patch
Patch3:     pure-ftpd-1.0.21-utime.patch
  • в %prep секцията, добавяме следния ред, след другите patch-ове
%patch3 -p1 -b .utime
  • в %changelog секцията описваме направената промяна
1
2
* Thu Apr 30 2009 package maintainer <mail> - 1.0.21-15.1
- patch pure-ftpd "SITE UTIME" bug</mail>
  • остава да прекомпилираме пакета
rpmbuild -ba pure-ftpd.spec
  • Ако всичко мине гладко, готовият RPM трябва да се намира в /usr/src/redhat/RPMS/$arch/ и можем да пристъпим към update/инсталация на готовия пакет.

Още информация:

http://docs.fedoraproject.org/drafts/rpm-guide-en/ch-rpmbuild.html

http://linux.die.net/man/8/rpmbuild

Допълнение:

Настройка на winscp за Daylight saving time (DST) - http://winscp.net/eng/docs/ui_login_environment#daylight_saving_time

Stop ACTA