Как создать список установленных пакетов для легкого/автоматического, переустанавливают после того, как диск отформатирован

Нет такой вещи как "система' веб-сервера в Unix и различных "методах".

Можно установить программное обеспечение в системе, которая содержит простой веб-сервер, и используйте его или нет.

python -m SimpleHttpServer просто загружает модуль SimpleHttpServer, который содержит основной веб-сервер.

Что-то подобное существует для Perl, просто взгляните на CPAN: http://search.cpan.org/dist/HTTP-Server-Simple/

"Простой" решение для Java: http://www.simpleframework.org/

То же может быть действительно легким achived с JavaScript и nodejs: http://nodejs.org/api.html, посмотрите раздел о HTTP.

Другое решение состояло бы в том, чтобы сделать это самостоятельно: HTTP является действительно простым протоколом, только когда дело доходит до подачи некоторые статические файлы. Для получения/foo/bar браузер запросит это с:

GET /foo/bar HTTP/1.1

Ответ должен быть в следующей форме:

HTTP/1.0 200 OK
Last-Modified: Tue, 10 Jan 2010 11:11:11 GMT
Content-Type: text/html; charset=utf-8

YOUR CONTENT

или

HTTP/1.1 404 Not Found
Last-Modified: Tue, 10 Jan 2010 11:11:11 GMT
Content-Type: text/html; charset=utf-8

YOUR 404 ERROR PAGE

Включайте Измененный в последний раз заголовок, чтобы позволить кэшироваться ресурсов. Должно быть возможно записать минимальную реализацию этого в нескольких строках кода. Свяжите его с портом, и у Вас будут свой веб-сервер и выполнение. Используйте inetd или netcat для привязки его с IP.

Править: Вот простой сценарий оболочки, который делает точно это задание. Это также поддерживает генерацию индекса для папок и 404 обработок ошибок:

8
18.09.2012, 20:16
3 ответа

Вы попытались использовать dpkg --get-selections >packages? Если Вы хотите исключить некоторые пакеты, можно отредактировать выходной файл packages. Когда Вы сделаны, передаете его целевой системе и говорите:

dpkg --set-selections <packages

И пакеты будут отмечены для установки. Необходимо будет, скорее всего, также сказать aptitude update; aptitude dist-upgrade.

Другой вопрос: если те пакеты i386 пакеты архитектуры, и Вы имеете multiarch установленный, можно установить .debs с обычным dpkg -i package.deb. Но, вероятно, лучше заняться расследованиями в зависимости от конкретного случая и установить версии на 64 бита тех пакетов, которые имеют их.

7
27.01.2020, 20:09
  • 1
    Спасибо, Вы действительно помогли мне, когда Вы сказали о пакетах, уже установленных, находятся в i386 архитектуре, я не думал об этом, я думаю, лучше, переустанавливают тех других. –  Zignd 21.06.2012, 16:52

На текущих версиях Debian можно получить список явно установленных пакетов с

apt-mark showmanual

Для тех, которые выполняют древние версии Debian, где apt-mark showmanual не существует, или если Вы хотите выполнить дополнительные выборы, можно использовать способность.

aptitude search '~i !~M' -F %p >package.list

~i соответствия установили пакеты; !~M опускает пакеты, которые были установлены автоматически как зависимость некоторого другого пакета. -F %p изменяет выходной формат для включения только имени пакета.

Можно позже установить те пакеты с

apt-get install $(cat package.list)

Debian сжимают, не имеет apt-mark showmanual, но это имеет apt-mark showauto который перечисляет автоматически установленные пакеты. При использовании этого можно перечислить все пакеты в старой системе с dpkg --get-selections >package.list, восстановите все их и затем отметьте автоматические пакеты с apt-mark markauto. Для Вашего варианта использования (32-разрядный к 64-разрядному), этот подход, вероятно, оставит несколько библиотек отмеченными как руководство, потому что у них есть различные имена под различной архитектурой.

Обратите внимание, что, если вариант использования должен воспроизвести идентичную установку, вместо того, чтобы сохранить набор пакетов, но изменить архитектуру, существует теперь инструмент, названный способным клоном (распределенный в Debian с тех пор хрипящий), который делает все автоматически.

9
27.01.2020, 20:09
  • 1
    К сожалению, это не прекрасно. Когда я делаю это, первой вещью, это перечислено, является "acl", который я явно не загрузил. Смотря rdepends, кажется, что systemd зависит от этого, и в Debian 8, который уже установлен. И, systemd находится также в этом списке. Таким образом даже при том, что systemd и acl прибыли установленные, способность не идентифицирует их как "автоматических". Это могло быть дефицитом в способности? –  Liam 01.12.2015, 20:37
  • 2
    @Liam я думаю установщик, не отмечает пакета как автоматический. Даже если бы это сделало, который имел бы смысл для библиотек, пакета как acl мог бы считаться важной частью основной системы и так будет отмечен, как вручную установлено. Это было “вручную” установлено первоначальным установщиком, а не пользователем, но несмотря на это, значение “автоматически установленного”, “можно безопасно удалить это, если это не повреждает зависимости”, и фундаментальные пакеты должны были заставить систему работать, правильно не отвечают всем требованиям. –  Gilles 'SO- stop being evil' 01.12.2015, 20:49

Я не вижу простой, стандартный способ сделать так. Я боюсь, что необходимо будет играть с dpkgжурналы и опции, потому что dpkg не отличает "стандартные программы, которые шли с системой" и другими.

ЭТО не БУДЕТ ПРОСТО, я предпочитаю прояснять при помощи полужирного капитализированного текста, но можно сделать что-то вроде этого

  • Извлеките список установленного программного обеспечения от /var/log/dpkg.log* файлы.

  • Удалите установленных во время системной установки. (Используйте время установки для обнаружения их),

  • Сохраните список в dpkg --get-selections формат

И voilà! Когда Ваша система будет в порядке, переустановите свои программы с

 apt-get update
 dpkg --set-selections < yourSelection
 apt-get -u dselect-upgrade
1
27.01.2020, 20:09

Теги

Похожие вопросы