[Gelistirici] unpisi & comar/ dizini
Ozan Çağlayan
ozan at pardus.org.tr
17 Haz 2009 Çar 14:35:16 EEST
Selam,
İçinde comar/package.py olan *.pisi dosyalarını unpisi ile açamıyoruz:
mecbuk tmp # unpisi tetex-3.0-19-3.pisi
Traceback (most recent call last):
File "/usr/bin/unpisi", line 60, in <module>
sys.exit(main())
File "/usr/bin/unpisi", line 48, in main
arc.unpack_dir_flat('comar','comar')
File "/usr/lib/pardus/pisi/archive.py", line 436, in unpack_dir_flat
self.unpack_file_cond(lambda f:util.subpath(path, f), target_dir, path)
File "/usr/lib/pardus/pisi/archive.py", line 427, in unpack_file_cond
os.chmod(ofile, perm)
OSError: [Errno 2] No such file or directory: 'comar/package.py'
Hem unpisi'de sorun var, hem de archive.py'de. Unpisi comar/package.py'yi
comar/comar/package.py
diye açıyor, böyle yapınca yukarıdaki OSError'da görüldüğü gibi
comar/package.py bulunamıyor.
unpisi'ye aşağıdaki yamayı yapınca:
- arc.unpack_dir_flat('comar', 'comar')
+ arc.unpack_dir_flat('comar', '.')
Bu sefer düzgün yere açmaya başlıyor ancak yine exception alıyoruz:
mecbuk tetex # unpisi ../tetex-3.0-19-3.pisi
Traceback (most recent call last):
File "/usr/bin/unpisi", line 60, in <module>
sys.exit(main())
File "/usr/bin/unpisi", line 48, in main
arc.unpack_dir_flat('comar','.')
File "/usr/lib/pardus/pisi/archive.py", line 436, in unpack_dir_flat
self.unpack_file_cond(lambda f:util.subpath(path, f), target_dir, path)
File "/usr/lib/pardus/pisi/archive.py", line 427, in unpack_file_cond
os.chmod(ofile, perm)
OSError: [Errno 2] No such file or directory: './package.py'
Çünkü bu sefer de chmod o dizinde aramaya başlıyor package.py'yi, comar/
eklemeden..
Sonuçta hem unpisiye hem archive.py'ye yama yaparak sorunu çözdüm ancak
archive.py kritik bir dosya olduğu için dokunmayıp Faik'e bırakayım dedim:
--- pisi/archive.py 2009-06-06 10:16:03.030925068 +0300
+++ /usr/lib/pardus/pisi/archive.py 2009-06-17 11:31:47.764892726 +0300
@@ -424,7 +424,7 @@
zip_obj.decompressToFile(info.filename, ofile)
else:
zip_obj.extract(info.filename, target_dir)
- os.chmod(ofile, perm)
+ os.chmod(os.path.join(target_dir, info.filename), perm)
def unpack_files(self, paths, target_dir):
self.unpack_file_cond(lambda f:f in paths, target_dir)
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi