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

Re: Как использовать пакеты, скачанные из интернета?



On Sat, May 12, 2007 at 09:45:42PM -0700, Dmitry Zhukov wrote:
> > 2. Более сложный случай --- пакетов достаточно много, чтобы было лень
> > разгребать зависимости и обновлять вручную. Тогда читать Debian
> > Repository HOWTO [1]. Он, конечно, куцеватый: про подписывание
> > репозитария там ничего нет. Если надо, могу выдать свой рецепт.
> >
> Конечно надо!!!
> что за рецепт?

Готовый рецепт создания подписанного trivial репозитария.

Этап 1. Подготовка.
~~~~~~~~~~~~~~~~~~~
** 1. Нужно создать собственный ключ GPG.

$ gpg --gen-key
<вопросы-ответы skipped>
pub   1024D/45217F7E 2007-05-13
            ^^^^^^^^
            Это запомним

      Key fingerprint = BB23 D685 341E 45E5 12FE  27C4 B836 C8FA 4521
7F7E
uid                  Dmitry Azhichakov <dmitry@localhost>
sub   2048g/25EF32F6 2007-05-13

$ KEY_ID=45217F7E # Запоминаем id ключа на будущее.

** 2. Сообщить APT'у, что я себе доверяю :)
$ gpg --armor --export $KEY_ID |sudo apt-key add -

** 3. Создать каталог репозитария, например, /usr/src/debian или
~/public_html/debian.

$ REPO_DIR=$HOME/public_html/debian
$ mkdir -p $REPO_DIR

** 4. Создаем файл конфигурации для apt-ftparchive. Я его храню прямо в
каталоге репозитария, т.к. скрывать, вроде, незачем.

$ vi $REPO_DIR/apt-ftparchive.conf

===== BEGIN apt-ftparchive.conf =====
Dir {
    ArchiveDir ".";
    CacheDir ".";
};

Default {
    Packages {
        Extensions ".deb";
        Compress ". gzip bzip2";
    };
    Sources {
        Compress ". gzip bzip2";
    };
    Contents {
        Compress ". gzip bzip2";
    }
    FileMode "0664";
};

BinDirectory "." {
    Packages "Packages";
    Sources "Sources";
    Contents "Contents";

    PathPrefix "./";
}

APT::FTPArchive::Release {
    Archive "My test repository";
    Origin "Me";
    Label "MyTest";
    Components "non-free";
    Architectures "i386 source";
    Suite "unstable";
    Codename "mytest";
};
===== END apt-ftparchive.conf =====

За объяснением что здесь что, отсылаю к man apt-ftparchive.

** 5. Создаем скрипт для генерации служебных файлов. Его я тоже храню прямо
в репозитарии.

$ vi $REPO_DIR/gen.sh

===== BEGIN gen.sh =====
#!/bin/sh

cd `dirname $0`
DIR=.
KEY_ID=45217F7E # Id созданного ключа, см. выше

# Генерация Packages*, Sources*, Contents*
apt-ftparchive generate ${DIR}/apt-ftparchive.conf
# Генерация Release
apt-ftparchive -c ${DIR}/apt-ftparchive.conf release ${DIR} >${DIR}/Release
# Подписываем Release
gpg --yes --default-key ${KEY_ID} --armor -o ${DIR}/Release.gpg -sb ${DIR}/Release
===== END gen.sh =====

$ chmod +x $REPO_DIR/gen.sh

** 6. Добавляем репозитарий в /etc/apt/sources.list

# echo "deb file:/$REPO_DIR ./" >>/etc/apt/sources.list
# echo "deb-src file:/$REPO_DIR ./" >>/etc/apt/sources.list

Этап 2. Наполнение.
~~~~~~~~~~~~~~~~~~~
** 1. Копируем все пакеты, которые нужны в $REPO_DIR.

$ cp *.deb $REPO_DIR

** 2. Генерим репозитарий.

$ $REPO_DIR/gen.sh

** 3. Пользуемся.

# aptitude update

THE END.

Если репозитарий публичный, не забудьте опубликовать также и
gpg --armor --export $KEY_ID.

-- 
Dmitry

Attachment: signature.asc
Description: Digital signature


Reply to: