Все следующие команды эквивалентны. Они считывают байты компакт-диска /dev/sr0
и записывают их в файл image.iso
.
cat /dev/sr0 >image.iso
cat image.iso
tee image.iso
dd image.iso
dd if=/dev/cdrom of=image.iso
pv image.iso
cp /dev/sr0 image.iso
tail -c +1 /dev/sr0 >image.iso
Почему вы должны использовать одно вместо другого?
Простота. Например, если вы уже знаете cat
или cp
, вам не нужно учить еще одну команду.
Надежность. Этот пункт является разновидностью простоты. Насколько велик риск того, что изменение команды изменит то, что она делает? Рассмотрим несколько примеров:
set -o noclobber
гарантирует, что вы ничего не перезапишите; однако вы можете перезаписать устройство, если случайно напишете >/dev/sda
(для CD, который доступен только для чтения, риска, конечно, нет). Это говорит в пользу cat /dev/sr0 >image.iso
(трудно ошибиться во вред) по сравнению с такими альтернативами, как tee /sr0 >image.iso
(если вы перевернете перенаправления или забудете входное, tee
запишет на /dev/sr0
). cat
: вы можете случайно конкатенировать два файла. В этом случае данные можно легко спасти. dd
: i
и o
близки на клавиатуре и несколько необычны. Нет эквивалента noclobber
, of=
с радостью перезапишет что угодно. Синтаксис перенаправления менее подвержен ошибкам. cp
: если вы случайно поменяете местами источник и цель, устройство будет перезаписано (опять же, предполагая, что устройство не предназначено только для чтения). Если cp
вызывается с некоторыми опциями, такими как -R
или -a
, которые некоторые люди добавляют через псевдоним, то будет скопирован узел устройства, а не его содержимое. Дополнительная функциональность. Единственный инструмент здесь, который имеет полезную дополнительную функциональность - это pv
, с его мощными возможностями создания отчетов.
Но здесь вы в любом случае можете проверить, сколько было скопировано, посмотрев на размер выходного файла.
Производительность. Это процесс, связанный с вводом-выводом; основное влияние на производительность оказывает размер буфера: инструмент считывает фрагмент из источника, записывает фрагмент в место назначения, повторяет. Если кусок слишком мал, компьютер тратит свое время на переключение между задачами. Если чанк слишком большой, операции чтения и записи невозможно распараллелить. Оптимальный размер чанка на ПК обычно составляет около нескольких мегабайт, но это, очевидно, очень зависит от ОС, от аппаратного обеспечения, и от того, что еще делает компьютер. Некоторое время назад я сделал бенчмарки для копий с жесткого диска на жесткий диск в Linux, которые показали, что для копий в пределах одного диска преимущество имеет dd
с большим размером буфера, но для копий между дисками cat
выигрывает у любого dd
размера буфера.
Есть несколько причин, почему так часто упоминается dd
. Кроме производительности, это не очень хорошие причины.
cat
(это было с более ориентированными на строки инструментами, такими как head
, sed
и т.д.), но люди старались избегать этого для двоичных данных из-за ассоциации с обработкой текста. Это не является проблемой в современных системах, таких как Linux, OSX, *BSD или любых других, которые соответствуют POSIX. dd
является несколько "более низкоуровневой" программой, чем другие инструменты, такие как cat
, и обращается к устройствам напрямую. Это абсолютно неверно: dd
и cat
и tee
и другие читают байты со своего входа и записывают байты на свой выход. Настоящая магия находится в /dev/sr0
. dd
имеет необычный синтаксис командной строки, поэтому объяснение того, как он работает, дает больше возможностей блеснуть объяснением, чем простое написание cat /dev/sr0
. dd
с большим размером буфера может иметь лучшую производительность, но это не всегда так (см. некоторые бенчмарки в Linux). Основной риск с dd
заключается в том, что он может молча пропустить некоторые данные. Я думаю, что dd
безопасен, пока skip
или count
не переданы, но я не уверен, так ли это на всех платформах. Но это не имеет никаких преимуществ, кроме производительности.
Так что просто используйте pv
, если вам нужен его шикарный отчет о прогрессе, или cat
, если он вам не нужен.
Como se mencionó anteriormente, apt
, apt-get
, aptitude
e incluso dpkg
pueden usarse para administrar instalaciones de paquetes de software en sistemas Debian. Lo más probable es que utilice apt
o apt-get
para instalar GNOME. Aquí hay una guía sobre una instalación mínima de GNOME en Debian. Muestran una lista de todos los paquetes asociados y necesarios para ejecutar un escritorio GNOME funcional.
¿Está utilizando una imagen netinstall de Debian? Comenzar allí puede ayudar a que su instancia de Debian tenga la menor cantidad de paquetes posible. Alternativamente, puede eliminar cualquier paquete que considere innecesario, siempre y cuando preste atención a la salida de apt
o apt-get
y no elimine ninguno de los componentes principales de GNOME.
Sugiero comenzar con netinstall , luego ejecutar aptitude install –without-recommends gdm3
algunas personas informan que es todo lo que se necesita para obtener un escritorio GNOME que funcione.
Debian usa el mecanismo apt para instalar paquetes y resolver dependencias. Según su wiki , hay 4 paquetes disponibles para instalar gnome:
# apt install gnome-core
Para conocer las dependencias involucradas con cada paquete, apt -rdepends debería hacer el truco.
# apt install apt-rdepends
# apt-rdepends gnome-core