Существует обширная документация о том, как создавать пользовательские установочные компакт-диски . Отвечает на ваш вопрос этот отрывок из этой страницы:
Вероятно, основной мотивацией для создания ваших собственных установочных компакт-дисков является изменение установленных пакетов; в частности, вы можете добавить несколько пакетов на компакт-диск.
Самый простой способ сделать это - создать структуру репозитория «extras», содержащую только ваши дополнительные .debs, и объединить их в иерархию CD-файлов перед перестройкой образа .ISO. Это руководство покажет вам, как это сделать.
blockquote>Я бы предостерег от чрезмерной настройки, предпочитая копировать
/home/tobin/.config
и подобные файлы, используя простойrsync
, после того, как машины загружены. Это предположение в значительной степени основано на введении на странице инструкции:Процесс настройки или «ремастеринга» установочных компакт-дисков Ubuntu не особенно сложен, но он немного утомителен и привередлив.
blockquote>Который я читаю как «чем умнее ты пытаешься быть, тем труднее будет понять»
.
Хотя это не решает проблему напрямую, вот хороший способ сделать все это из командной строки с несколькими зависимостями:
diff <(pdftotext -layout old.pdf /dev/stdout) <(pdftotext -layout new.pdf /dev/stdout)
https: //linux.die. net / man / 1 / pdftotext
Это действительно хорошо работает для базового сравнения PDF. Если у вас есть более новая версия pdftotext, вы можете попробовать -bbox
вместо -layout
.
Что касается программ сравнения, мне нравится использовать diffuse, поэтому команда меняется очень незначительно:
diffuse <(pdftotext -layout old.pdf /dev/stdout) <(pdftotext -layout new.pdf /dev/stdout)
http://diffuse.sourceforge.net/
Надеюсь, это поможет.
Если у вас есть 2-3 огромных файла в формате pdf (или epub или других форматах, см. Ниже) для сравнения, тогда можно объединить мощность:
калибр (для преобразовать ваш источник в текст)
meld (для визуального поиска различий между текстовыми файлами)
параллельно (чтобы использовать всю вашу систему ядер для ускорения)
Ниже скрипт принимает в качестве входных данных любой из следующих форматов файлов: MOBI, LIT, PRC, EPUB, ODT, HTML, CBR, CBZ, RTF, TXT, PDF и LRS.
Если не установлено, установите meld, калибр и параллель:
#install packages
sudo apt-get -y install meld calibre parallel
Чтобы иметь возможность выполнить код из любой точки вашего компьютера, сохраните следующий код в файле с именем «difpub» (без расширения) внутри каталога "/ usr / local / bin".
usage="
*** usage:
diffepub - compare text in two files. Valid format for input files are:
MOBI, LIT, PRC, EPUB, ODT, HTML, CBR, CBZ, RTF, TXT, PDF and LRS.
diffepub -h | FILE1 FILE2
-h print this message
Example:
diffepub my_file1.pdf my_file2.pdf
diffepub my_file1.epub my_file2.epub
v0.2 (added parallel and 3 files processing)
"
#parse command line options
while getopts "h" OPTIONS ; do
case ${OPTIONS} in
h|-help) echo "${usage}"; exit;;
esac
done
shift $(($OPTIND - 1))
#check if first 2 command line arguments are files
if [ -z "$1" ] || [ -z "$2" ] || [ ! -f "$1" ] || [ ! -f "$2" ]
then
echo "ERROR: input files do not exist."
echo
echo "$usage"
exit
fi
#create temporary files (first & last 10 characters of
# input files w/o extension)
file1=`basename "$1" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE1=$(mktemp --tmpdir "$file1")
file2=`basename "$2" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE2=$(mktemp --tmpdir "$file2")
if [ "$#" -gt 2 ]
then
file3=`basename "$3" | sed -r -e '
s/\..*$// #strip file extension
s/(^.{1,10}).*(.{10})/\1__\2/ #take first-last 10 chars
s/$/_XXX.txt/ #add tmp file extension
'`
TMPFILE3=$(mktemp --tmpdir "$file3")
fi
#convert to txt and compare using meld
doit(){ #to solve __space__ between filenames and parallel
ebook-convert $1
}
export -f doit
if [ "$#" -gt 2 ]
then
(parallel doit ::: "$1 $TMPFILE1" \
"$2 $TMPFILE2" \
"$3 $TMPFILE3" ) &&
(meld "$TMPFILE1" "$TMPFILE2" "$TMPFILE3")
else
(parallel doit ::: "$1 $TMPFILE1" \
"$2 $TMPFILE2" ) &&
(meld "$TMPFILE1" "$TMPFILE2")
fi
Убедитесь, что владелец является вашим пользователем и у него есть права на выполнение:
sudo chown $USER:$USER /usr/local/bin/diffepub
sudo chmod 700 /usr/local/bin/diffepub
Чтобы проверить это, просто введите:
diffepub FILE1 FILE2
Я проверяю его сравнить 2 ревизии +1600 страниц PDF, и он отлично работает. Поскольку Calibre написан с использованием Python для переносимости, преобразование обоих файлов в текст заняло 10 минут. Медленно, но надежно.
Для этого вы можете использовать DiffPDF . Из описания:
DiffPDF используется для сравнения двух файлов PDF. По умолчанию сравнение выполняется для текста на каждой паре страниц, но сравнение внешнего вида страниц также поддерживается (например, если диаграмма изменена или переформатирован абзац). Также возможно сравнение отдельных страниц или диапазонов страниц. Например, если существует две версии файла PDF, одна со страницами 1-12, а другая со страницами 1-13 из-за добавления дополнительной страницы как страницы 4, их можно сравнить, указав два диапазона страниц: 1 -12 для первого и 1-3, 5-13 для второго. Это заставит DiffPDF сравнивать страницы в парах (1, 1), (2, 2), (3, 3), (4, 5), (5, 6) и т. Д. С (12, 13).
BLOCKQUOTE>
sudo apt-get install diffpdf
, все же.
– trincot
18.05.2020, 01:11
Я только что понял, как использовать DiffPDF (программу, предложенную @qbi) для более чем незначительных изменений. Что я делаю, это объединяю все страницы pdf в длинную прокрутку, используя pdfjam , а затем сравниваю прокрутки Он работает даже при удалении или вставке больших разделов!
Вот скрипт bash, который выполняет свою работу:
#!/bin/bash
#
# Compare two PDF files.
# Dependencies:
# - pdfinfo (xpdf)
# - pdfjam (texlive-extra-utils)
# - diffpdf
#
MAX_HEIGHT=15840 #The maximum height of a page (in points), limited by pdfjam.
TMPFILE1=$(mktemp /tmp/XXXXXX.pdf)
TMPFILE2=$(mktemp /tmp/XXXXXX.pdf)
usage="usage: scrolldiff -h FILE1.pdf FILE2.pdf
-h print this message
v0.0"
while getopts "h" OPTIONS ; do
case ${OPTIONS} in
h|-help) echo "${usage}"; exit;;
esac
done
shift $(($OPTIND - 1))
if [ -z "$1" ] || [ -z "$2" ] || [ ! -f "$1" ] || [ ! -f "$2" ]
then
echo "ERROR: input files do not exist."
echo
echo "$usage"
exit
fi
#Get the number of pages:
pages1=$( pdfinfo "$1" | grep 'Pages' - | awk '{print $2}' )
pages2=$( pdfinfo "$2" | grep 'Pages' - | awk '{print $2}' )
numpages=$pages2
if [[ $pages1 > $pages2 ]]
then
numpages=$pages1
fi
#Get the paper size:
width1=$( pdfinfo "$1" | grep 'Page size' | awk '{print $3}' )
height1=$( pdfinfo "$1" | grep 'Page size' | awk '{print $5}' )
width2=$( pdfinfo "$2" | grep 'Page size' | awk '{print $3}' )
height2=$( pdfinfo "$2" | grep 'Page size' | awk '{print $5}' )
if [ $(bc <<< "$width1 < $width2") -eq 1 ]
then
width1=$width2
fi
if [ $(bc <<< "$height1 < $height2") -eq 1 ]
then
height1=$height2
fi
height=$( echo "scale=2; $height1 * $numpages" | bc )
if [ $(bc <<< "$MAX_HEIGHT < $height") -eq 1 ]
then
height=$MAX_HEIGHT
fi
papersize="${width1}pt,${height}pt"
#Make the scrolls:
pdfj="pdfjam --nup 1x$numpages --papersize {${papersize}} --outfile"
$pdfj "$TMPFILE1" "$1"
$pdfj "$TMPFILE2" "$2"
diffpdf "$TMPFILE1" "$TMPFILE2"
rm -f $TMPFILE1 $TMPFILE2