Задача: где-то далеко, за высокими горами, лежат репозитории Ubuntu или репозитории Debian, которые хочется использовать локально и записать на диски. Решение: для этого потребуется установить несколько пакетов, достать скрипт на ruby и освободить побольше места на винчестере.
1. Введение Пакеты по лицензионным или прочим соображениям делятся в репозитории на секции: например, главная (main) и несвободная (non-free). Пакеты несвободной секции в официальный репозиторий не входят по лицензионным соображениям - но это не значит, что их нельзя скачать. Простое скачивание результата не даст - нужно разбить большой репозиторий на DVD-образы, чтобы пользоваться ими потом.
Для решения задачи нам потребуется несколько программ, которые в официальный свободный репозиторий гарантированно входят.
2. Создание локального зеркала Нужно установить пакет debmirror:
aptitude install debmirror
После этого можно будет качать репозиторий к себе на винчестер с возможностью автоматической докачки(если не сможете вытянуть его за один заход). Выходим в консольку и даём команду:
Теперь что всё это значит и как всем этим пользоваться. Полужирное выделение - это важные параметры, которые нужно будет менять, красным - это, собственно, значения параметров, которые меняем. Для пояснения ситуации лучше запустить броузер и скормить ему ссылку, которая стоит в --host, после чего станет ясно:
--host - это адрес репозитория (без слеша на конце, здесь это backports.org)
--root - это тот каталог, от которого начнётся зеркалирование пакетов. Короче - это каталог, который виден сразу после захода на адрес, указанный в --host и его же указываем сразу после команды debmirror.
--method - обычно это http
--dist - название версии дистрибутива, который нас интересует (например sarge, etch, lenny...). Это следующий по уровню каталог, после --host далее --root, далее каталог dist и каталог в нём будет --dist
--section - название секции, которая нам нужна (например non-free, если не одна - разделитель запятая без пробелов, типа non-free,main)
--arch - архитектура.
Здесь, насколько смог, пояснил на примере реального зеркала, полужирным выделены важные каталоги, красным - нужные нам параметры и что вместо них подставлять.
После этого запустится программа и, если нам повезёт, начнут копироваться пакеты и складываться в локальные каталоги. Поползут строки типа:
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686-smp_2.6.16-18~bpo.1_i386.deb... ok Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686_2.6.16-18~bpo.1_i386.deb... ok Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-k7-smp_2.6.16-18~bpo.1_i386.deb... ok
Это копируются пакеты. Всё отлично, переходим дальше.
3. Разделяем пакеты в каталоги размера DVD-образа Каталог с репозиторием больше, чем можно записать на болванку - следовательно, распределяем по каталогам, суммарный объём файлов которых не превышает CD / DVD диск. Нужно установить пакет debpartial:
aptitude install debpartial
Далее делаем каталог для записи на DVD (например, etch-backports-dvd):
mkdir etch-backports-dvd
и создаём с помощью debpartial описание пакетов в каждом диске:
И снова несколько пояснений. Указываем те секции, которые указали при скачивании командой debmirror, название дистрибутива из --dist, размер (CD или DVD). Потом сначала пишем откуда создавать описания, а потом куда (в каталог, который будем нарезать на болванку). После этого поползут строчки вида:
Reading dists/etch-backports/main/binary-i386/Packages.gz... done Reading dists/etch-backports/non-free/binary-i386/Packages.gz... done backports-etch0: 260 packages. Size: 1014633860 [ openoffice.org-l10n-de, ... ] /usr/bin/debpartial:230: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777 Writing Packages.gz of backports-etch0 for (etch-backports,main,i386)... 252. Writing Packages.gz of backports-etch0 for (etch-backports,non-free,i386)... 8.
А когда всё успокоится, в каталоге (в этом примере) etch-backports-dvd появятся подкаталоги с номерами, начиная с 0, в которых скопированы описания пакетов. В моём примере создался один каталог, так как пакетов немного:
backports-etch0
Теперь нам потребуется язык ruby, который скорее всего уже установлен, но тем не менее:
aptitude install ruby
После этого создаём файл скрипта под названием debcopy и записываем в него следующее (оригинал кода здесь):
#!/usr/bin/ruby # # debcopy - Debian Packages/Sources partial copy tool # # Usage: debcopy [-l] # # where is a top directory of a debian archive, # and is a top directory of a new debian partial archive. # # debcopy searches all Packages.gz and Sources.gz under /dists # and copies all files listed in the Packages.gz and Sources.gz # files into from . -l creates symbolic links # instead of copying files. # # Copyright (C) 2002 Masato Taruishi # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License with # the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL; # if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # require 'getoptlong' require 'zlib' require 'ftools' $link = false def usage $stderr.puts "Usage: #{__FILE__} [-l] " exit 1 end def each (file, &block) fin = Zlib::GzipReader.open(file) fin.each do |line| yield line end fin.close end def each_file (file, &block) each(file) do |line| if /Filename: (.*)/ =~ line yield $1 end end end def each_sourcefile (file, &block) dir = nil each(file) do |line| case line when /^Directory: (.*)$/ dir = $1 when /^ \S+ \d+ (\S+)$/ yield dir + "/" + $1 end end end def calc_relpath (source, dest) pwd = Dir::pwd Dir::chdir source source = Dir::pwd Dir::chdir pwd Dir::chdir dest dest = Dir::pwd Dir::chdir pwd src_ary = source.split("/") src_ary.shift dest_ary = dest.split("/") dest_ary.shift return dest if src_ary[0] != dest_ary[0] src_ary.clone.each_index do |i| break if src_ary[0] != dest_ary[0] src_ary.shift dest_ary.shift end src_ary.size.times do |i| dest_ary.unshift("..") end dest_ary.join("/") end def do_copy(path) if $link pwd=calc_relpath(File.dirname($dest_dir + "/" + path), $source_dir) File.symlink(pwd + "/" + path, $dest_dir + "/" + path) else File.copy($source_dir + "/" + path, $dest_dir + "/" + path) end end def copy(path) s=$source_dir + "/" + path d=$dest_dir + "/" + path if FileTest.exist?(d) $stats["ignore"] += 1 return end if FileTest.exist?(s) File.mkpath(File.dirname(d)) do_copy(path) $stats["copy"] += 1 else $stats["notfound"] += 1 $stderr.puts s + " not found." end end opts = GetoptLong.new(["--symlink", "-l", GetoptLong::NO_ARGUMENT], ["--help", "-h", GetoptLong::NO_ARGUMENT]) opts.each do |opt,arg| case opt when "--symlink" $link = true when "--help" usage end end usage if ARGV.size != 2 $source_dir = ARGV.shift $dest_dir = ARGV.shift if $link $source_dir = Dir::pwd + "/" + $source_dir unless $source_dir =~ /\A\// $dest_dir = Dir::pwd + "/" + $dest_dir unless $dest_dir =~ /\A\// end $stats = {} $stats["ignore"] = 0 $stats["copy"] = 0 $stats["notfound"] = 0 open("|find #{$dest_dir}/dists -name Packages.gz") do |o| o.each_line do |file| file.chomp! print "Processing #{file}... " $stdout.flush each_file(file) do |path| copy(path) end puts "done" end end open("|find #{$dest_dir}/dists -name Sources.gz") do |o| o.each_line do |file| file.chomp! print "Processing #{file}... " $stdout.flush each_sourcefile(file.chomp) do |path| copy(path) end puts "done" end end puts "Number of Copied Files: " + $stats["copy"].to_s puts "Number of Ignored Files: " + $stats["ignore"].to_s
puts "Number of Non-existence File: " + $stats["notfound"].to_s
Начнётся процесс копирования, который может отнять много времени. Терпеливо ждём, потягивая кофе / чай / коньяк (нужное подчеркнуть). Закончится это всё примерно следующим:
Processing backports-etch-dvd/backports-etch0//dists/etch-backports/main/binary-i386/Packages.gz... done Processing backports-etch-dvd/backports-etch0//dists/etch-backports/non-free/binary-i386/Packages.gz... done /usr/bin/myscript/debcopy:144: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777 Number of Copied Files: 260 Number of Ignored Files: 0 Number of Non-existence File: 0
Повторяем это для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем копию репозитория, нарезанного на каталоги подходящего размера.
4. Создаём ISO-образы и пропаливаем на болванки Если хочется пользоваться репозиторием на болванках на других машинах, нужно нарезать репозиторий на диски. Тут всё просто: создаём ISO-образ:
Не забываем повторить эту команду для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем ISO-образы и пропаливаем их на диски своей любимой программой прожига.
Ссылки Собственно, пост является переводом и расширением этой замечательной статьи. Решение, может, и не лучшее, но мне оно нравится тем, что работает :-) Так же очень толковое руководство тут.
2 aim комментирует... вместо "засовываем в него..." напиши "записываем в него..." - так вроде правильнее будет. Да, пропустил, согласен. Исправлено. Внесён ряд стилистических правок.
а вообще очень простая и понятная статья, спасибо! Пожалуйста, но справедливости ради нужно отметить, что в общем это расширенный перевод английской статьи. Но то, что она простая и понятная, это факт :-)
Пакет simple-cdd может решать те же задачи, однако более автоматизировано и прозрачно для пользователя. С весьма симпатичными возможностями по кастомизации.
Отлично, спасибо. Такой вопрос, если я хочу сделать например на своем FTP сервере локальное зеркало для Ubuntu я так понимаю достаточно будет воспользоваться только debmirror??? А как насчет автоматического синхронизирования локального и удаленного зеркала???
Спасибо, отличное HOWTO. Жаль, что мне пришлось искать решение на пару дней раньше. Еще до кучи добавлю про новое зеркало на Яндексе - http://mirror.yandex.ru - вдруг кому-то пригодится. В наличии debian, ubuntu и прочие.
2. На счет велосипедов, я вот сейчас написал статью как делать локальное зеркало для ubuntu, да конечно таких статей много в инете, но например я пишу именно для себя, что бы в будущем не рыскать по гуглам, а заглянуть к себе и нацти все что меня интерсует, ну или когда народ на форумах как говорят "я искал, но ничего не нашел", просто давать ссылку на мою статью. Но все же я пишу именно для себя. И я думаю virens тоже, хотя не знаю :)
2 mend0za Пакет simple-cdd может решать те же задачи, однако более автоматизировано и прозрачно для пользователя. Спасибо, посмотрю. Просто этот метод есть и работает...
2 Анонимный пишет... jigdo это я про изобретение велосипеда кто не понял Вы готовы к тому, чтобы услышать страшную тайну? Пристегнули ремни? Так вот, слушайте её: люди будут пользоваться программами тогда и только тогда, когда к этим программам есть нормальная документация!!! Понимаете? Нормальная, а не написанная впопыхах, на коленке и абы как уставшим программистом. До этих пор jidgo будет собирать пыль в репозитории, а описанный мной "велосипед" - успешно ездить.
2 Анонимный пишет... jigdo стандарт де-факто для Debian,а описанный выше способ идеотский.. Ещё раз повторю: люди будут пользоваться теми велосипедами, которые удобны, и на которые есть нормальная, вменяемая, пользовательская документация. А не написанная программистами для программистов куцая и обрывочная филькина грамота.
Этот способ может быть корявым, но он удобен простотой и доведённостью до простого пользователя. jigdo идёт лесом - а мейнтейнеру нужно оторвать гениталии за такую ублюдочную документацию с пакетом.
2 Анонимный пишет... Интернет для всех. Use google, Luke. Мсьё думает, что я забанен на гугле!? Мсьё ошибается. Я читал это. И что? И как мне создать репозиторий для моего Nokia N800? Там нет .jidgo файлов. И на debian-multimedia их нет. И много их ещё где нет.
Описанный способ прост, ОЧЕНЬ подробно описан, легок в понимании и прозрачен. Jidgo - бесполезный финт ушами. К тому же документация: 2005-12-05 ver 1.8 - этим многое сказано.
К сожалению, в Дебиан очень дерьмово с документацией. Это был ещё один мотив, который подвиг меня на этот блог. Посмотрите на wiki.debian.org - это ведь сущая помойка. Даже у генты на порядок лучше...
Я повторю ещё, ещё и ещё раз: документация, Аноним, решает всё. С такой документацией, как у jigdo, можно только винде составлять конкуренцию.
После этого создаём файл скрипта под названием debcopy и записываем в него следующее (оригинал кода здесь):
Охренеть! То есть мы копируем из Инета скрипт, написанный аж для Убунты и используем его для Дебиана??! В то время как этот самый скрипт можно найти в /usr/share/doc/debpartial/examples/debcopy.gz !!!
Достаточно просто прочесть /usr/share/doc/debpartial/README.gz (размером меньше 2 (двух!) килобайт между прочим -- никаких навороченных документаций). И помимо прочего увидеть готовый скриптик с циклом, чтобы не "повторять эту команду для всех директорий с номерами".
К тому же в examples есть и другие полезные скриптики.
А всего-то делов: прочитать README, который поставляется вместе с тем же пакетом debpartial...
2 Анонимный комментирует... вот пожалуйста разжеванное пошаговое руководство (jigdo) Спасибо, но вопрос, как мне с помощью jigdo сделать репозиторий убунты так и остался без ответа.
2 асоциальный психопат комментирует... То есть мы копируем из Инета скрипт, написанный аж для Убунты и используем его для Дебиана??! Да, именно так. Потому что тому, кто писал документацию, не хватило сообразительности упомянуть, что такой полезный скрипт есть в пакете. У меня в системе тысячи пакетов - и что, мне после каждого лезть в доки?
В то время как этот самый скрипт можно найти Нельзя найти. Ни разу. Нет упоминаний в документации - бить по голове автора мана. Большим гаечным ключом.
Достаточно просто прочесть /usr/share/doc/debpartial/README.gz Ещё раз - пакетов много, читать все доки я не могу. И никто не может. Это должно говориться в мануале.
Но за наводку спасибо. И не надо так резко писать - вы упомянули, я поправлю. Спасибо.
никаких навороченных документаций Написанное мной помогло многим людям сделать репозитории быстро и легко. И я крупно сомневаюсь, что этот самый README написан хотя бы вполовину так же доходчиво, как эта дока.
К тому же в examples есть и другие полезные скриптики. Большое спасибо. Я о них просто не знал - и ручаюсь, что большинство пользователей debpartial тоже.
Потому что тому, кто писал документацию, не хватило сообразительности упомянуть, что такой полезный скрипт есть в пакете. Простите, а мсье вообще читал документацию? Может быть мсье просто не догадывается, где нужно искать документацию в Debian'е?
Как известно, в Debian'е документация согласно FHS размещается в /usr/share/doc/имя_пакета/. Именно туда необходимо обращаться в первую очередь. Не только за документацией к пакету, но и за комментариями относительно настройки и использовании пакета в Debian -- ибо не всё может быть настроено автоматически и для некоторых пакетов вынужденно требуется доводка руками по документации. Зачастую там же можно найти полезные советы и примеры использования. В файле README.Debian обычно расположены инструкции, специфичные конкретно для Дебиана, а в README -- инструкции вообще. Опционально это всё может быть gzip'нуто. Это читается в первую очередь, а для незнакомых пакетов -- в обязательном порядке. В противном случае мсье неизбежно ждут (после обречённого гуглежа) изобретения велосипедов с открытием америк, когда на самом деле всё лежит под носом.
В папке /usr/share/doc/debpartial/ можно найти: * changelog.gz * copyright * examples/ * README.gz всё, больше там ничего нет. Совершенно очевидно, что тут есть один файл с документацией (который просит, чтобы его прочли, как видно из его имени) и папка с некими "примерами".
Нет упоминаний в документации - бить по голове автора мана. Причём здесь ман??! Ман -- он для программы, а не для описания конкретных файлов, которые идут в конкретном дистрибутиве. В идеале ман -- дистрибутивонезависим. А вот в документации и упоминание, и описание как раз есть.
Это должно говориться в мануале. Об этом не должно говориться в мануале. Ни в коем случае. Это должно быть описано в /usr/share/doc/имя_пакета/ -- куда следует идти за документацией в первую очередь.
И не надо так резко писать А не надо утверждать, что документации нет или она плохо написана, когда на самом деле Вы просто не стали её читать.
Написанное мной помогло многим людям сделать репозитории быстро и легко. Написанное Вами помешало многим людям пойти по простому Debian-way пути. Вместо этого им был предложен не самый удобный Ubuntu-way решения проблемы -- с ковырянием на стороне, когда всё лежит под носом. Не удивлюсь, если некоторые из читателей будут использовать его и пропагандировать дальше, сбивая с толку новичков.
Я о них просто не знал - и ручаюсь, что большинство пользователей debpartial тоже. Чем больше таких статей -- тем больше будет таких пользователей.
И я крупно сомневаюсь, что этот самый README написан хотя бы вполовину так же доходчиво, как эта дока.
Давайте посмотрим вместе:
This file documents some tips using debpartial as follows:
Currently, creating Debian DVD/CDs by debpartial is little complex, but it's possible. The most easiest method is now to use debmirror. For all partitions, it mirrors necessary packages and sources.
debpartial --size DVD /home/ftp/debian/ /home/ftp/debpartial/ for part in /home/ftp/debpartial/*; do debmirror -h localhost --skippackages $part mkisofs -J -r -o debian-dvd-`basename $part`.iso $part done
(Of course, It needs ftp server on localhost)
If you have a debian archive, 'debcopy' can be used to create CD easily instead of using debmirror as follows:
debpartial --size DVD /home/ftp/debian/ /home/ftp/debpartial/ for part in /home/ftp/debpartial/*; do ruby /usr/share/doc/debpartial/examples/debcopy -l \ /home/ftp/debian $part mkisofs -F $part -J -r -o debian-dvd-`basename $part`.iso $part done
Да, здесь есть ошибка -- в Etch'е пресловутый файл debcopy завёрнут в gzip и так просто напрямую его вызвать не удастся. Придётся сперва его распаковать (причём стоит ли распаковывать в той же папке -- дискутабельно). Эта ошибка легко исправима. По-хорошему надо проверить, есть ли это в lenny и есть ли на это багрепорт -- и в случае необходимости этот багрепорт тут же и написать как можно скорее! Можно прямо с патчем. Неудивительно, что есть опечатка -- инструкцию не переписывали с января 2002 года, а содержимое пакета могло меняться.
В результате на выходе имеем нужный результат. При этом нам не пришлось "повторять эту команду для всех директорий с номерами", как рекомендовал мсье в своей статье -- цикл сделал всё за нас сам. При этом нам не пришлось копировать откуда бы то ни было необходимый скрипт -- если бы не опечатка, его можно было бы вообще из папки с примерами никуда не доставать.
Да, вдогонку. Сейчас поинтересовался: пакет debpartial больше не развивается, ибо на него забил мейнтейнер. Так что багрепортить доки к нему смысла не имеет. В Lenny предусмотрены другие средства для решения описанной задачи, в частности, вышеупомнутый simple-cdd.
Спасибо аффтору, и комментаторам, почему то начав искать путь создания образов с репа, в первую очередь нашел эту статью, а почитав камменты, определился как проще и быстрее все сделать...
22 комментариев: |высказаться!| RSS-лента дискуссии.|
вместо "засовываем в него..." напиши "записываем в него..." - так вроде правильнее будет.
а вообще очень простая и понятная статья, спасибо!
2 aim комментирует...
вместо "засовываем в него..." напиши "записываем в него..." - так вроде правильнее будет.
Да, пропустил, согласен. Исправлено. Внесён ряд стилистических правок.
а вообще очень простая и понятная статья, спасибо!
Пожалуйста, но справедливости ради нужно отметить, что в общем это расширенный перевод английской статьи. Но то, что она простая и понятная, это факт :-)
APTonCD http://aptoncd.sourceforge.net/ ?
Пакет simple-cdd может решать те же задачи, однако более автоматизировано и прозрачно для пользователя. С весьма симпатичными возможностями по кастомизации.
Отлично, спасибо. Такой вопрос, если я хочу сделать например на своем FTP сервере локальное зеркало для Ubuntu я так понимаю достаточно будет воспользоваться только debmirror??? А как насчет автоматического синхронизирования локального и удаленного зеркала???
и еще вопрос, а куда по умолчанию скачиваются пакеты? В какую директорию???
jigdo
это я про изобретение велосипеда кто не понял
Спасибо, отличное HOWTO. Жаль, что мне пришлось искать решение на пару дней раньше. Еще до кучи добавлю про новое зеркало на Яндексе - http://mirror.yandex.ru - вдруг кому-то пригодится. В наличии debian, ubuntu и прочие.
1. Все я разобрался и написал статью :)
2. На счет велосипедов, я вот сейчас написал статью как делать локальное зеркало для ubuntu, да конечно таких статей много в инете, но например я пишу именно для себя, что бы в будущем не рыскать по гуглам, а заглянуть к себе и нацти все что меня интерсует, ну или когда народ на форумах как говорят "я искал, но ничего не нашел", просто давать ссылку на мою статью. Но все же я пишу именно для себя. И я думаю virens тоже, хотя не знаю :)
2 mend0za
Пакет simple-cdd может решать те же задачи, однако более автоматизировано и прозрачно для пользователя.
Спасибо, посмотрю. Просто этот метод есть и работает...
2 Анонимный пишет...
jigdo
это я про изобретение велосипеда кто не понял
Вы готовы к тому, чтобы услышать страшную тайну? Пристегнули ремни? Так вот, слушайте её: люди будут пользоваться программами тогда и только тогда, когда к этим программам есть нормальная документация!!! Понимаете? Нормальная, а не написанная впопыхах, на коленке и абы как уставшим программистом. До этих пор jidgo будет собирать пыль в репозитории, а описанный мной "велосипед" - успешно ездить.
jigdo стандарт де-факто для Debian,а описанный выше способ идеотский..
2 Анонимный пишет...
jigdo стандарт де-факто для Debian,а описанный выше способ идеотский..
Ещё раз повторю: люди будут пользоваться теми велосипедами, которые удобны, и на которые есть нормальная, вменяемая, пользовательская документация. А не написанная программистами для программистов куцая и обрывочная филькина грамота.
Этот способ может быть корявым, но он удобен простотой и доведённостью до простого пользователя. jigdo идёт лесом - а мейнтейнеру нужно оторвать гениталии за такую ублюдочную документацию с пакетом.
Интернет для всех. Use google, Luke.
http://www.tldp.org/HOWTO/Debian-Jigdo/
2 Анонимный пишет...
Интернет для всех. Use google, Luke.
Мсьё думает, что я забанен на гугле!?
Мсьё ошибается. Я читал это. И что? И как мне создать репозиторий для моего Nokia N800? Там нет .jidgo файлов. И на debian-multimedia их нет. И много их ещё где нет.
Описанный способ прост, ОЧЕНЬ подробно описан, легок в понимании и прозрачен. Jidgo - бесполезный финт ушами. К тому же документация: 2005-12-05 ver 1.8 - этим многое сказано.
К сожалению, в Дебиан очень дерьмово с документацией. Это был ещё один мотив, который подвиг меня на этот блог. Посмотрите на wiki.debian.org - это ведь сущая помойка. Даже у генты на порядок лучше...
Я повторю ещё, ещё и ещё раз: документация, Аноним, решает всё. С такой документацией, как у jigdo, можно только винде составлять конкуренцию.
вот пожалуйста разжеванное пошаговое руководство (jigdo)
http://atterer.net/jigdo/debian-jigdo-mini-howto/x205.html
После этого создаём файл скрипта под названием debcopy и записываем в него следующее (оригинал кода здесь):
Охренеть! То есть мы копируем из Инета скрипт, написанный аж для Убунты и используем его для Дебиана??! В то время как этот самый скрипт можно найти в /usr/share/doc/debpartial/examples/debcopy.gz !!!
Достаточно просто прочесть /usr/share/doc/debpartial/README.gz (размером меньше 2 (двух!) килобайт между прочим -- никаких навороченных документаций). И помимо прочего увидеть готовый скриптик с циклом, чтобы не "повторять эту команду для всех директорий с номерами".
К тому же в examples есть и другие полезные скриптики.
А всего-то делов: прочитать README, который поставляется вместе с тем же пакетом debpartial...
P.S. Это всё про Etch...
2 Анонимный комментирует...
вот пожалуйста разжеванное пошаговое руководство (jigdo)
Спасибо, но вопрос, как мне с помощью jigdo сделать репозиторий убунты так и остался без ответа.
2 асоциальный психопат комментирует...
То есть мы копируем из Инета скрипт, написанный аж для Убунты и используем его для Дебиана??!
Да, именно так. Потому что тому, кто писал документацию, не хватило сообразительности упомянуть, что такой полезный скрипт есть в пакете. У меня в системе тысячи пакетов - и что, мне после каждого лезть в доки?
В то время как этот самый скрипт можно найти
Нельзя найти. Ни разу. Нет упоминаний в документации - бить по голове автора мана. Большим гаечным ключом.
Достаточно просто прочесть /usr/share/doc/debpartial/README.gz
Ещё раз - пакетов много, читать все доки я не могу. И никто не может. Это должно говориться в мануале.
Но за наводку спасибо. И не надо так резко писать - вы упомянули, я поправлю. Спасибо.
никаких навороченных документаций
Написанное мной помогло многим людям сделать репозитории быстро и легко. И я крупно сомневаюсь, что этот самый README написан хотя бы вполовину так же доходчиво, как эта дока.
К тому же в examples есть и другие полезные скриптики.
Большое спасибо. Я о них просто не знал - и ручаюсь, что большинство пользователей debpartial тоже.
Поправлю этот пост или напишу ещё один.
Потому что тому, кто писал документацию, не хватило сообразительности упомянуть, что такой полезный скрипт есть в пакете.
Простите, а мсье вообще читал документацию? Может быть мсье просто не догадывается, где нужно искать документацию в Debian'е?
Как известно, в Debian'е документация согласно FHS размещается в /usr/share/doc/имя_пакета/. Именно туда необходимо обращаться в первую очередь. Не только за документацией к пакету, но и за комментариями относительно настройки и использовании пакета в Debian -- ибо не всё может быть настроено автоматически и для некоторых пакетов вынужденно требуется доводка руками по документации. Зачастую там же можно найти полезные советы и примеры использования.
В файле README.Debian обычно расположены инструкции, специфичные конкретно для Дебиана, а в README -- инструкции вообще. Опционально это всё может быть gzip'нуто. Это читается в первую очередь, а для незнакомых пакетов -- в обязательном порядке. В противном случае мсье неизбежно ждут (после обречённого гуглежа) изобретения велосипедов с открытием америк, когда на самом деле всё лежит под носом.
В папке /usr/share/doc/debpartial/ можно найти:
* changelog.gz
* copyright
* examples/
* README.gz
всё, больше там ничего нет. Совершенно очевидно, что тут есть один файл с документацией (который просит, чтобы его прочли, как видно из его имени) и папка с некими "примерами".
Нет упоминаний в документации - бить по голове автора мана.
Причём здесь ман??! Ман -- он для программы, а не для описания конкретных файлов, которые идут в конкретном дистрибутиве. В идеале ман -- дистрибутивонезависим. А вот в документации и упоминание, и описание как раз есть.
Это должно говориться в мануале.
Об этом не должно говориться в мануале. Ни в коем случае. Это должно быть описано в /usr/share/doc/имя_пакета/ -- куда следует идти за документацией в первую очередь.
И не надо так резко писать
А не надо утверждать, что документации нет или она плохо написана, когда на самом деле Вы просто не стали её читать.
Написанное мной помогло многим людям сделать репозитории быстро и легко.
Написанное Вами помешало многим людям пойти по простому Debian-way пути. Вместо этого им был предложен не самый удобный Ubuntu-way решения проблемы -- с ковырянием на стороне, когда всё лежит под носом. Не удивлюсь, если некоторые из читателей будут использовать его и пропагандировать дальше, сбивая с толку новичков.
Я о них просто не знал - и ручаюсь, что большинство пользователей debpartial тоже.
Чем больше таких статей -- тем больше будет таких пользователей.
И я крупно сомневаюсь, что этот самый README написан хотя бы вполовину так же доходчиво, как эта дока.
Давайте посмотрим вместе:
This file documents some tips using debpartial as follows:
1) creating partial mirror
2) creating partial debian distribution
3) creating Debian DVD/CDs
...
* Creating Debian DVD/CDs
Currently, creating Debian DVD/CDs by debpartial is little complex, but it's possible. The most easiest method is now to use debmirror.
For all partitions, it mirrors necessary packages and sources.
debpartial --size DVD /home/ftp/debian/ /home/ftp/debpartial/
for part in /home/ftp/debpartial/*; do
debmirror -h localhost --skippackages $part
mkisofs -J -r -o debian-dvd-`basename $part`.iso $part
done
(Of course, It needs ftp server on localhost)
If you have a debian archive, 'debcopy' can be used to create CD easily instead of using debmirror as follows:
debpartial --size DVD /home/ftp/debian/ /home/ftp/debpartial/
for part in /home/ftp/debpartial/*; do
ruby /usr/share/doc/debpartial/examples/debcopy -l \
/home/ftp/debian $part
mkisofs -F $part -J -r -o debian-dvd-`basename $part`.iso $part
done
Да, здесь есть ошибка -- в Etch'е пресловутый файл debcopy завёрнут в gzip и так просто напрямую его вызвать не удастся. Придётся сперва его распаковать (причём стоит ли распаковывать в той же папке -- дискутабельно). Эта ошибка легко исправима. По-хорошему надо проверить, есть ли это в lenny и есть ли на это багрепорт -- и в случае необходимости этот багрепорт тут же и написать как можно скорее! Можно прямо с патчем. Неудивительно, что есть опечатка -- инструкцию не переписывали с января 2002 года, а содержимое пакета могло меняться.
В результате на выходе имеем нужный результат. При этом нам не пришлось "повторять эту команду для всех директорий с номерами", как рекомендовал мсье в своей статье -- цикл сделал всё за нас сам. При этом нам не пришлось копировать откуда бы то ни было необходимый скрипт -- если бы не опечатка, его можно было бы вообще из папки с примерами никуда не доставать.
Где здесь недостаток документации?
Да, вдогонку.
Сейчас поинтересовался: пакет debpartial больше не развивается, ибо на него забил мейнтейнер. Так что багрепортить доки к нему смысла не имеет. В Lenny предусмотрены другие средства для решения описанной задачи, в частности, вышеупомнутый simple-cdd.
Спасибо аффтору, и комментаторам, почему то начав искать путь создания образов с репа, в первую очередь нашел эту статью, а почитав камменты, определился как проще и быстрее все сделать...
Кто нибудь осилил Debian kfreeBSD? Очень хочется поюзать, а там такие грабли ... В общем без десктопа оно работает хорошо, а с десктопом вообще никак.
Отправить комментарий