[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: security update



On 01:32:17 Thu 19 Jan    , Fedir Gontsa wrote:
> Err http://172.20.80.222 deb/ w32codecs 1:20050412-0.0
>   404 Not Found
> Failed to fetch http://172.20.80.222/debian/deb/w32codecs_1%3a20050412-0.0_i386.deb  404 Not Found
> E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
> 
> непосредсвенный УРЛ файла
> http://localhost/debian/deb/w32codecs_1%253a20050412-0.0_i386.deb
> 
> тоесть проблема в основном из за '%' в имени файлов... и его различной интерпритацией
> убрал, провед действия создания Packages заново все заработало
> пакеты установились
> вопрос
> как в директории где много файлов скриптом убрать %из имен файлов...
> понимаю что mv, sed но на ум никак не могу сообразить... наверное ночь...
> помогите написать простой скрипт который будет убирать из имени скачаного пакета символ %
> 

Дело просто в том, что имена пакетов в /var/cache/apt/archives не совпадают с
именами пакетов. В вашем примере файл в /var/cache/apt/archives называется
w32codecs_1%253a20050412-0.0_i386.deb, имеет версию 1:20050412-0.0, в
действительности там, где вы его брали, он называется w32codecs_20050412-0.0_i386.deb, а apt 
при скачивании переименовал его. Соответственно, кодировал ':' как '%3a'.
Из-за этого и ваши беды. Достаточно не просто убрать '%' а раскодировать
'%3a'->':'. Можно сделать на перле:
-------
#!/usr/bin/perl
use URI::Escape;
$|=1;
while (<>) {
    chomp;
    print uri_unescape($_)."\n";
}
------

или питоне:
------
$ python
Python 2.3.5 (#2, Sep  4 2005, 22:01:42) 
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib
>>> urllib.unquote('%3a')
':'
------

-- 
:Wq
Not an editor command: Wq



Reply to: