К основному контенту

makeworld или пересобирём всё под archlinux

Дано: ноутбук с процессором Celeron 430M, установлен ArchLinux i686.
Надо: пересобрать все (или почти все) пакеты под указанный процессор.
Имеется ещё другой настольный комп с процессором Core2Quad, с помощью которого будем всё пересобирать.
Для начала нужно вытащить с ноутбука список всех установленных пакетов, для можно использовать подобный скрипт:
pacman -Q | awk '{ print $1 }' | sort > /tmp/pacman-installed.tmp
pacman -Qm | awk '{ print $1 }' | sort | comm -3 /tmp/pacman-installed.tmp - > /tmp/pacman-to-reinstall.tmp

Где в итоге в файле /tmp/pacman-to-reinstall.tmp получаем сортированный список всех установленных пакетов
Рекомендую выборочно почистить данный список от пакетов, пересобирать которые смысла (времени) нет, типа openjdk2 или openoffice-base.
Далее копируем полученный файл на машину, которая будет пересобирать пакеты (хотя можно и пересобирать на том же ноуте, но это неоптимально по времени).
Для удобства создал 2 папки build и maded, в последней дополнительно папку prescott, в которой будут находиться пересобранные пакеты.
Также нужно скопировать файл /etc/makepkg.conf в ~/maded/makepg-prescott.conf и подправить флаги следующим образом:
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Потом просто запускам скрипт следующего содержания:
cd ~/build/
for pkg in $(cat /tmp/pacman-to-reinstall.tmp); do

mkdir $pkg
cd $pkg
echo y | yaourt -G --noconfirm $pkg
makepkg -scf --noconfirm --config ~/maded/makepkg-prescott.conf
if mv *.pkg.tar.gz ~/maded/prescott/; then
echo $pkg >> ~/build/done-prescott.txt
else
echo $pkg >> ~/build/error-prescott.txt
fi
cd ..
rm $pkg -r
done

В итоге в папке maded/prescott будут находиться полученные пакеты, файл ~/build/done-prescott.txt будет содержать список пересобранных пакетов, а файл ~/build/error-prescott.txt список пакетов, которые пересобрать не получилось.
Если процесс прервётся по какой-либо причине, вам будет известно, какие пакеты обработаны, поэтому просто можно запустить процесс вновь, удалив обработанные пакеты из файла /tmp/pacman-to-reinstall.tmp
Далее просто нужно перенести полученные пакеты на ноутбук (в моём случае) и установить командой sudo pacman -U *.pkg.tar.gz
Подобным образом можно пересобрать пакеты под необходимую вам архитектуру, изменив соответствующие флаги и параметры.
К примеру, можно так сразу собрать пакеты, оптимизировав под несколько разных процессоров, сэкономив на трафике и скорости, в данном примере под prescott и athlon-xp:
cd ~/build/
for pkg in $(cat /tmp/pacman-to-reinstall.tmp); do
mkdir $pkg
cd $pkg
echo y | yaourt -G --noconfirm $pkg
makepkg -scf --noconfirm --config ~/maded/makepkg-prescott.conf
if mv *.pkg.tar.gz ~/maded/prescott/; then
echo $pkg >> ~/build/done-prescott.txt
else
echo $pkg >> ~/build/error-prescott.txt
fi
makepkg -scf --noconfirm --config ~/maded/makepkg-athlon-xp.conf
if mv *.pkg.tar.gz ~/maded/athlon-xp/; then
echo $pkg >> ~/build/done-athlon-xp.txt
else
echo $pkg >> ~/build/error-athlon-xp.txt
fi
cd ..
rm $pkg -r
done

Небольшие рекомендации при пересборке пакетов, можно в файле /etc/sudorers добавить строки:
user ALL=NOPASSWD: /usr/bin/pacman
user ALL=NOPASSWD: /usr/bin/pacdiffviewer
user ALL=NOPASSWD: /usr/bin/abs

где вместо user укажите свой логин, это нужно для запуска указанных программ без ввода пароля.
Также заранее запустите abs, и используйте вместо yaourt его форк yaourt-abs, для чего скачайте файлы отсюда и запустите команду makepkg -sci

Популярные сообщения из этого блога

изменение и обновление Ubuntu LiveCD

Вот заказал через shipit диски Ubuntu Livecd, как всегда при релизах, многие пакеты серьёзно стали обновляться уже после выхода релиза. Вот как раз недавно, обновился Firefox до версии 3 RC в отличии от 5ой беты в релизе. Плюс в Livecd отсутствовали пакеты руссификации, что тоже не очень хорошо. Так почему бы не создать свой Livecd с нужным ПО. Предлагаемый способ не решает проблему с предустановленными настройками пакетов, но позволяет настроить некоторые параметры системы, к примеру, настройки времени по UTC и другое.

Целью модификации диска будет:
удаление ненужных пакетов поддержки других языков;
обновление программного обеспечения по настоящий момент;
подключение нужных репозитариев;
поддержка флеш, mp3, divx, ndiswrapper и т.п.
настройка работы со временем и другие настройки..
В результате может получится образ диска, превышающих размер компакт-диска, поэтому результат нужно будет использовать на DVD.

1. Подготовка:
Для начала нам будет нужен диск LiveCD Ubuntu 8.04 или его образ, также …

Настройка сервера на Scaleway

Для создания сервера на Scaleway потребуется зарегистрироваться, ввести данные своей карты для оплаты, а также сгенерировать ssh ключи. Последние нужны для первоначальной авторизации на свежесозданном сервере.
Как сгенерировать ssh ключ, много написано, ищите ssh-keygen. Под windows можно попробывать Putty, но у меня как-то с ним не срослось. Мне же удобнее использовать программу JuiceSSH на android, удобный клиент, достаточно для работы в терминале.

Создаем в JuiceSSH идентификатор root, генерируем секретный ключ RSA, далее через меню на созданном идентификаторе экспортируем открытый ключ, который необходимо вставить в Поле SSH keys на странице Credentials, жмакаем Use this SSH key.

Далее переходим к созданию сервера. Я выбрал тип сервера VC1S, образ Ubuntu Xenial (16.04 latest), в Advanced Options указываем - использовать ли IPv6.

Всё. Сервер будет создан и запущен через непродолжительное время.

После его запуска, через терминал, где был сгенерирован вами ключ, в моём случае в Juic…

Оффлайн (полные) установщики некоторых программ

Очень часто нужны бывают ссылки на скачивание некоторых программ в offline/full виде, оффлайновые (полные) установщики. Здесь список ссылок, часто мною используемых, как памятка:
SkypeYandex БраузерYandex Диск классической версии 1.4Yandex Диск новой версии 3.0Opera БраузерFirefox БраузерThunderbird почтовый клиентOrigin