Поддержка > Руководства и инструкции

Репозитарии интернетовские и локальные

(1/1)

ludoed:
Вопрос: Я скачал нужные мне пакеты, как добавить их, чтобы их видел Synaptic и автоматически разрешал возникшие конфликты и зависимости?

Ответ:
Допустим скачанные пакеты у нас лежат в /home/user/localrepo,
тогда заходим в этот каталог и вызываем из него консоль.
Для этого заходим в папку, в которой лежат пакеты.
Затем вызываем в меню файлового менеджера Файл->Открыть в терминале и выполняем

--- Код: ---apt-ftparchive packages ./ | gzip -9 > Packages.gz
--- Конец кода ---
После её выполнения наберите в терминале

--- Код: ---sudo gedit /etc/apt/sources.list
--- Конец кода ---

добавляем строчку в конец такую строку:

--- Код: ---deb file:/home/user/localrepo/ ./
--- Конец кода ---
Сохраняем изменения в текстовом файле и выходим. Далее в терминале набираем

--- Код: ---sudo apt-get update
--- Конец кода ---
Всё. Пакеты содержатся в репозитарии и вы можете их поставить с помощью Synaptic (apt).

Автоматизируем процесс.
Если вы часто, добавляете, удаляете файлы из своего локального репозитария, то процесс можно автоматизировать. Пусть ваши пакеты хранятся в /home/user/localrepo и этот путь есть в sources.list (это обязательно требование)
Тогда создадим текстовый файл



--- Код: ---sudo gedit <путь до файла>/<имя файла>
--- Конец кода ---
Имя должно быть уникальным, иначе вы просто откроете существующий файл.
Пример:

--- Код: ---sudo gedit /home/user/UpdateRepo.sh
--- Конец кода ---
с таким содержанием:


--- Код: ---#!/bin/bash cd <полный путь до пакетов> apt-ftparchive packages ./ | gzip -9 > Packages.gz apt-get update
--- Конец кода ---
В нашем примере это

--- Код: ---#!/bin/bash cd /home/user/localrepo apt-ftparchive packages ./ | gzip -9 > Packages.gz apt-get update
--- Конец кода ---
Теперь необходимо сделать его исполняемым от пользователя root, причем для всех пользователей без использования команды sudo, но возможность изменения скрипта оставить только пользователю root или пользователю, имеющему права на использование sudo. Если на пользователе задан пароль, то команда sudo запрашивает его. Тем самым нет возможности изменить этот файл, не зная пароля.

--- Код: ---sudo chmod 4755 <путь до файла>/<имя файла>
--- Конец кода ---
В нашем примере

--- Код: ---sudo chmod 4755 /home/user/UpdateRepo.sh
--- Конец кода ---
Все, скрипт готов. Теперь при каждом изменение папки с пакетами запускайте его и он обновит список доступных для установки пакетов через Synaptic (apt).

Замечание: не стоит помещать в папку с пакетами файлы, ими не являющиеся. Иными словами эта директория должна содержать только deb пакеты. Это касается и скрипта обновления, он не должен быть помещен в папку вместе с пакетами. Сам скрипт может находиться где угодно.

Вариант 2 - использую его

--- Код: ---mkdir /home/user/localrepo
--- Конец кода ---
- создаём и закидываем туда свою коллекцию deb-пакетов

--- Код: ---cp /var/cache/apt/archives/*.deb /home/user/localrepo
--- Конец кода ---
- так-же, копируем туда то, что скачано программой apt-get

--- Код: ---sudo apt-get update
sudo apt-get dist-upgrade
cd /home/user/localrepo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
--- Конец кода ---
(почему не apt-ftparchive packages ./ | gzip -9 > Packages.gz ?- не уверен, но кажется, что использованная мною команда индексирует все deb-пакеты, независимо от их происхождения, поправьте, если я ошибаюсь, вообще-то, применил оба варианта, в "моём" случае, по завершении операции, кроме всего прочего появляется список пакетов, не столбцом, а в виде названий пакетов, один за другим, подряд)


--- Код: ---sudo echo "deb file:/home/user/localrepo/ ./" >>/etc/apt/sources.list
--- Конец кода ---
- добавляем запись в sources.list (или просто

--- Код: ---sudo gedit /etc/apt/sources.list
--- Конец кода ---
и добавить строку

--- Код: ---deb file:/home/user/localrepo/ ./
--- Конец кода ---
вручную
ну, и наконец:

--- Код: ---sudo apt-get update
--- Конец кода ---
готово =)

Навигация

[0] Главная страница сообщений

Перейти к полной версии