Автор Тема: Репозитарии интернетовские и локальные  (Прочитано 4811 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ludoed

  • Местный
  • *****
  • Автор темы
  • Сообщений: 861
  • ludoed1970@jabber.ru
Вопрос: Я скачал нужные мне пакеты, как добавить их, чтобы их видел 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готово =)

все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)