Posts Tagged ფედორა
პითონის default ვერსიის შეცვლის, სიმბოლური ლინკებისა და yum-ის KeyboardInterrupt ერორის ამბავი
Posted by kid in Linux stuff, ZZ Miscellanea on 04/12/2013
რამდენიმე ხნის წინ დამჭირდა პითონის დააფდეითება 2.7.5-დან 3.2.3-ზე ჩემს ფედორა 19-ზე. დააფდეითების შემდეგ ($ sudo yum upgrade python), ვერსიად მაინც ძველს (2.7.5) მაჩვენებდა.
მცირედი დაგუგლვის შემდეგ ვიპოვე, რომ საკითხის მოგვარება მარტივად შეიძლება პითონის სიმბოლური ლინკის შეცვლით:
/usr/bin-ში (სადაც არის პითონის ინსტალაცია), არის ფაილი python, რომელიც უთითებს პითონის ვერსიაზე.
ამის შემოწმება შეგვიძლია შემდეგნაირად:
$ readlink /usr/bin/python
python2
python2 იყო ბრძანების პასუხი.
symbolic link-ების შესაქმნელად თუ შესაცვლელად ვიყენებთ ln-ს. შეიძლება symbolic link ისე შევცვალოთ, რომ არ წავშალოთ.
პითონის შემთხვევაში:
$ ln -f -s /usr/bin/python3 /usr/bin/python
$ readlink /usr/bin/python
-f არის ბრძანების ფორსირება. -s არის სომბოლური ლინკის შექმნა. ამის შემდეგ, ჯერ ვუთითებთ target ფაილს/ფოლდერს, შემდეგ კი ლინკს.
შედეგი:
$ python –version
Python 3.2.3
ამას კიდევ ერთი შედეგი მოჰყვა. კერძოდ ის, რომ yum-მა პროტესტის ნიშნად მუშაობაზე უარი განაცხადა. ნებისმიერი პაკეტის ინსტალაციის თუ აფდეითის დროს, აგდებდა შეცდომას:
File “/usr/bin/yum”, line 30
except KeyboardInterrupt, e:
გამოძიებამ დაადგინა, რომ საქმე სამხრეთ ამერიკული სერიალის სიუჟეტივით ყოფილა ჩახლართული.
პითონის 3.2.3 ვერსიას ჰქონია ავი ზნე: სისტემას მოყოლილ პითონის ინსტალაციის ბრძანება python-ს ცვლის. რა შუაშია yum-თან? ეს უკანასკნელი პითონის (2.7.5 ვერსიის) გარვეულ მოდულებს იყენებს.
მოკლედ, ინტერნეტში ბევრი სხვადასხვა ვერსიაა პრობლემის მოსაგვარებლად. მაგალითად, რჩევა $ yum clean all ბრძანების გაშვებისა. არ დაიჯეროთ. yum საერთოდ არ ეშვება და აბა clean all-ს როგორ იზამს.
მოკლედ, “დავროლბექდი” ისევ 2.7.5-ზე სიმბოლური ლინკების გადართვით:
$ ln -f -s /usr/bin/python2 /usr/bin/python
ცოტაოდენი კითხვის შემდეგ აღმოვაჩინე, რომ თუ პითონის ახალ ვერსიას დავაინსტალირებთ make install-ით უარესად იქნება საქმე და yum-ს შეიძლება მხოლოდ პითონის ძველი ვერსიის ფორსირებულმა გადაინსტრალირებამ უშველოს. აქ არის დეტალები: http://stackoverflow.com/questions/11171015/python-and-yum-issue-centos-5-4
ალტერნატივა (ანუ საჭიროების შემთხვევაში პითონის ახალი ვერსიის გამოყენება) არის პითონის სასურველი ვერსიის ცალკე დაინსტალირება (ძველი ვერსიის შენარჩუნებით) და “პირდაპირ დაძახება” python3-ით ან /usr/bin/python3.3-ით.
$ python3 –version
Python 3.3.3