Нажатие клавиши «Ввод» не возвращается к подсказке терминала, поскольку в этом терминале работает metacity. Будут напечатаны все сообщения об ошибках / сообщениях об ошибках. Это стандартное поведение для любого графического интерфейса. Если вы не хотите, чтобы они выполняли ваш сеанс терминала, используйте «& amp;».
О остальном - исчезновение оконных украшений и т. Д. - я сбиваю с толку.
* Сделать автономный репозиторий через локальную сеть * Установить локальный веб-сервер Apache
# apt-get install apache2
По умолчанию пакет Apache от Debian настроит веб-сайт под /var/www в вашей системе. Для наших целей это прекрасно, поэтому нет причин делать что-то еще. Вы можете легко протестировать его, указав свой любимый браузер на http://localhost. Вы должны увидеть веб-страницу после установки, которая фактически хранится в /var/www/index.html To сделать автономный репозиторий по локальной сети * решил создать для этого каталог /var/www/debs. Под ним вы должны создать каталоги «архитектуры», по одному для каждой архитектуры, которую необходимо поддерживать. Если вы используете только один компьютер (или тип компьютера), вам понадобится только один - обычно «i386» для 32-разрядных систем или «amd64» для 64 бит. Если вы используете какую-либо другую архитектуру, я предположим, что вы, вероятно, уже знаете об этом. Теперь просто скопируйте файлы пакета «.deb» для данной архитектуры в соответствующие каталоги. Если вы теперь укажете свой любимый веб-браузер на http://localhost/debs/amd64 (например), вы увидите список пакетов для 64-битных систем. Создайте файл Packages.gz Теперь нам нужно создать файл каталога для использования APT. Это делается с помощью утилиты, называемой «dpkg-scanpackages». Вот команды, которые я использую для обновления пакетов AMD64 в моей локальной сети:
# cd /var/www/debs/
# dpkg-scanpackages amd64 | gzip -9c > amd64/Packages.gz
Создать файл Packages.gz [!d18 ] Теперь остается только сообщить APT о вашем репозитории. Вы делаете это, обновляя файл /etc/apt/sources.list. Вам понадобится запись, подобная этой:
deb http://localhost/debs/ amd64/Я использовал фактическое имя хоста моей системы вместо localhost - таким образом, код будет одинаковым для всех компьютеры в моей локальной сети, но localhost будет отлично работать, если вы используете только один компьютер. Теперь обновите APT:
# apt-get update
Из вики справки Ubuntu:
Есть 4 шага к настройке простого репозитория для вас 1.Install dpkg-dev 2. Поместите пакеты в каталог 3.Создайте скрипт, который будет сканировать пакеты и создать файл apt-get update можно прочитать 4. Добавьте строку в ваш источник.list, указав на ваш репозиторий. Установите dpkg-dev. Введите в терминалsudo apt-get install dpkg-dev
. Каталог. Создайте каталог, в котором вы будете хранить свои пакеты. В этом примере мы будем использовать /usr/local/mydebs. sudo mkdir -p /usr/local/mydebs
Теперь переместите ваши пакеты в только что созданную вами директорию. Ранее загруженные пакеты обычно хранятся в вашей системе в каталоге /var/cache/apt/archives. Если вы установили apt-cacher, у вас будут дополнительные пакеты, хранящиеся в каталоге / packages. Обновление скрипта-mydebs Это простой три лайнера: #! /bin/bash
cd /usr/local/mydebs
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
Вырезать и вставить выше в gedit и сохранить его как update-mydebs в ~ / bin. (тильда '~' означает ваш домашний каталог. Если ~ / bin не существует, создайте его: Ubuntu поместит этот каталог в ваш PATH. Хорошее место для размещения личных скриптов). Затем сделайте исполняемый файл сценария: chmod u+x ~/bin/update-mydebs
How the script works:
dpkg-scanpackages просматривает все пакеты в mydebs, а результат сжимается и записывается в файл (Packages.gz), который может считывать apt-get (см. Ниже ссылку, объясняет это в мучительной детали). / dev / null - пустой файл; он заменяет файл переопределения, который содержит некоторую дополнительную информацию о пакетах, которая в этом случае действительно не нужна. См. Deb-override (5), если вы хотите узнать об этом. Sources.list добавьте строку deb file:/usr/local/mydebs ./
в /etc/apt/sources.list, и все готово. CD. Вы можете записать каталог, содержащий дебы на компакт-диск, и использовать его как репозиторий (хорошо для совместного использования компьютеров). Чтобы использовать компакт-диск в качестве репозитория, просто запустите sudo apt-cdrom add
Использование репозитория. Когда вы помещаете новый deb в каталог mydebs, запустите sudo update-mydebs
sudo apt-get update
. Теперь ваши локальные пакеты можно манипулировать с помощью команд Synaptic, aptitude и apt: apt-get , apt-cache и т. д. Когда вы пытаетесь apt-get install, любые зависимости будут разрешены для вас, если они могут быть выполнены. Плохо сделанные пакеты, вероятно, потерпят неудачу, но вы не будете терпеть адский dpkg. Создание аутентифицированного репозитория
Я рассмотрел ответы здесь и на других сайтах, и большинство из них (недостаток IMHO) - это то, что вы настраиваете не прошедший проверку подлинность репозиторий. Это означает, что вам нужно запустить apt-get с помощью --allow-unauthenticated, чтобы установить из него пакеты. Это может быть угрозой безопасности, особенно в сценариях, где пакеты, которые вы устанавливаете, могут быть не все из вашего локального репозитория.
Обратите внимание, что я не рассматривал здесь, как сделать его доступным через локальную сеть, но это довольно общая конфигурация, использующая Apache или nginx (см. другие ответы здесь).
Установите каталог репо
mkdir /home/srv/packages/local-xenial
cd /home/srv/packages/local-xenial
Затем добавьте строку, подобную этой, в sources.list: [ ! d6]
deb file:/home/srv/packages/local-xenial/ ./
Создание аутентифицированного репозитория
Установить каталог репо
rm /home/srv/packages/local-xenial/some_package_idont_like
добавить пакеты
cp /some/dir/apackage.deb /home/srv/packages/local-xenial
Добавить пакеты
#!/bin/bash
if [ -z "$1" ]; then
echo -e "usage: `basename $0` DISTRO
where DISTRO is the Ubuntu version codename (e.g. 14.04 is trusty)\n
The way to use this script is to do the changes to the repo first, i.e. delete or copy in the .deb file to /srv/packages/local-DISTRO, and then run this script\n
This script can be run as an unprivileged user - root is not needed so long as your user can write to the local repository directory"
else
cd /srv/packages/local-"$1"
# Generate the Packages file
dpkg-scanpackages . /dev/null > Packages
gzip --keep --force -9 Packages
# Generate the Release file
cat conf/distributions > Release
# The Date: field has the same format as the Debian package changelog entries,
# that is, RFC 2822 with time zone +0000
echo -e "Date: `LANG=C date -Ru`" >> Release
# Release must contain MD5 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e 'MD5Sum:' >> Release
printf ' '$(md5sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf '\n '$(md5sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Release must contain SHA256 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e '\nSHA256:' >> Release
printf ' '$(sha256sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf '\n '$(sha256sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Clearsign the Release file (that is, sign it without encrypting it)
gpg --clearsign --digest-algo SHA512 --local-user $USER -o InRelease Release
# Release.gpg only need for older apt versions
# gpg -abs --digest-algo SHA512 --local-user $USER -o Release.gpg Release
# Get apt to see the changes
sudo apt-get update
fi
Пример Содержание файла conf / distributions
Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC
Пример Содержание файла conf / distributions
https://wiki.debian.org/RepositoryFormat
https: // wiki .debian.org / RepositoryFormat
https://help.ubuntu.com/community/CreateAuthenticatedRepository
Вы также можете настроить локальный исходный сервер на nginx и reprepro:
Установить пакеты debiansudo apt-get install reprepro nginx
сделать каталоги для reprepro и отредактировать его sudo mkdir -p /srv/reprepro/ubuntu/{conf,dists,incoming,indices,logs,pool,project,tmp}
$ cd /srv/reprepro/ubuntu/
$ sudo chown -R `whoami` . # changes the repository owner to the current user
/ srv / reprepro / ubuntu / conf / distribution / srv / reprepro / ubuntu / conf / options ask-passphrase
basedir .
Включить его в reprepro, создать его $ reprepro includedeb karmic /path/to/my-package_0.1-1.deb \
# change /path/to/my-package_0.1-1.deb to the path to your package
Config nginx: /etc/nginx/sites-available/vhost-packages.conf server {
listen 80;
server_name packages.internal;
access_log /var/log/nginx/packages-access.log;
error_log /var/log/nginx/packages-error.log;
location / {
root /srv/reprepro;
index index.html;
}
location ~ /(.*)/conf {
deny all;
}
location ~ /(.*)/db {
deny all;
}
}
Оптимизировать размер ковша: / etc /nginx/conf.d/server_names_hash_bucket_size.conf server_names_hash_bucket_size 64;
Ссылка на ссылку для установки Ссылка
Вы можете взглянуть на apt-mirror и apt-cacher.
Вот руководство по установке и использованию.
apt-get install apt-mirror
После того, как вы настроили apt-mirror, вы можете начать загрузку репозитория с помощью этой команды. apt-mirror /etc/apt/mirror.list1 Читайте на
1Состав: создайте репозиторий Ubuntu
Сделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get updateЯ попытался использовать apt-rdepends, как в выбранном ответе, но когда я попытался установить пакет из своего локального репозитория, он жаловался на отсутствие зависимостей.
apt-rdepends не перечислял некоторые зависимостей для моего пакета. Я подозреваю, что это имеет какое-то отношение к факту, что apt-cache show показывает несколько записей для него.
Вместо этого я использовал apt-cache depends, и это сделало трюк:
Получение рекурсивный список зависимостей
apt-cache depends <packagename> -i --recurse
-i: только важные зависимости --recurse: рекурсивный
Получение рекурсивного списка зависимостей
Удаление символов & amp; пробелы: | tr -d "|,<,>, " Зависимые от удаления: & amp; PreDepends: | sed -e 's/^Depends://g' | sed -e 's/^PreDepends://g' Сортировка списка: | sort Только уникальные значения: | uniq > list.txtПолная команда:
apt-cache depends <packagename> -i --recurse | tr -d "|,<,>, " | sed -e \
's/^Depends://g' | sed -e 's/^PreDepends://g' | sort | uniq > list.txt
Загрузите пакеты
for i in $( cat list.txt ); do apt-get download $i; done;
Загрузите пакеты
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
Инструкции в ответе BigSack выше - и исходный пост wiki, который он цитировал, - не работали для меня, пока я не сделал два изменения:
1) Я создал плоскую Файл «Пакеты» вместо версии gzip'd:
dpkg-scanpackages -m. > Пакеты
2) Я добавил [trusted=yes] к записи репо в sources.list,
dpkg -scanpackages -m. > Пакеты
deb [доверенный = да] файл: / usr / local / mydebs ./
Я сделал, используя apt-mirror.
Хорошо, но вам нужно иметь больше места на жестком диске, поскольку он будет синхронизироваться с сервером репозитория.
Сделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get updateСделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get updateСделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get updateСделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get updateСделать автономный локальный репозиторий 1. сделать доступным dir (по крайней мере, root)
sudo mkdir / var / my-local-repo скопировать все файлы deb в этот каталог. сканировать каталогsudo mkdir / var / my-local-repo
копировать все файлы deb в этот каталог. echo "deb файл: / var / my-local-repo ./"> /tmp/my-local.list sudo mv /tmp/my-local.list /etc/apt/sources.list .d / my-local.list sudo apt-get update