Ports/x8664/32bitOn64bit: различия между версиями

Материал из ALT Linux Wiki
< Ports‎ | x8664
Нет описания правки
мНет описания правки
 
(не показано 6 промежуточных версий 2 участников)
Строка 2: Строка 2:




* Нужно написать список репозиториев для 32-битной системы (в простейшем случае просто сделать копию <tt>/etc/apt/sources.list</tt> и заменить в этой копии <tt>x86_64</tt> на <tt>i586</tt>, если репозитории лежат рядом; можно ещё подключить i686 и i386). Файл списка http://wiki.etersoft.ru/WINEsetupx8664 можно положить в любое удобное место (не обязательно в каталог <tt>/etc/apt</tt>, но можно и туда — например, в <tt>/etc/apt/i586-sources.list</tt>). В принципе можно удалить из этого списка строки <tt>rpm-src</tt> — для работы hasher они не нужны.
* Нужно написать список репозиториев для 32-битной системы (в простейшем случае просто сделать копию <tt>/etc/apt/sources.list</tt> и заменить в этой копии <tt>x86_64</tt> на <tt>i586</tt>, если репозитории лежат рядом; можно ещё подключить i686 и i386). Файл списка можно положить в любое удобное место (не обязательно в каталог <tt>/etc/apt</tt>, но можно и туда — например, в <tt>/etc/apt/i586-sources.list</tt>). В принципе можно удалить из этого списка строки <tt>rpm-src</tt> — для работы hasher они не нужны.
* Поскольку hasher не позволяет указать файл списка репозиториев напрямую, нужно написать файл конфигурации apt (который опять-таки необязательно класть в <tt>/etc/apt</tt>). В этом файле нужно указать имя созданного списка:
* Поскольку apt не позволяет указать файл списка репозиториев напрямую, нужно написать файл конфигурации apt.conf (который опять-таки необязательно класть в <tt>/etc/apt</tt>). В этом файле нужно указать имя созданного списка:
<pre>Dir::Etc::SourceList "/path/to/i586-sources.list";
<pre>Dir::Etc::SourceList "/path/to/i586-sources.list";
Dir::Etc::SourceParts "/var/empty";</pre>
Dir::Etc::SourceParts "/var/empty";</pre>
Строка 11: Строка 11:
*: <pre>i386 hsh --target=i586 --apt-config=/path/to/i586-apt.conf</pre>
*: <pre>i386 hsh --target=i586 --apt-config=/path/to/i586-apt.conf</pre>
*: (далее остальное, как обычно)
*: (далее остальное, как обычно)
*: Можно использовать для этого режима отдельный рабочий каталог, чтобы кеш hasher не пересоздавался каждый раз при переключении между сборкой для i586 и x86_64 (но запустить сборку в разных каталогах одновременно всё равно будет нельзя, если только не использовать опцию --number).
*: Можно использовать для этого режима отдельный рабочий каталог, чтобы кеш hasher не пересоздавался каждый раз при переключении между сборкой для i586 и x86_64 (но запустить сборку в разных каталогах одновременно всё равно будет нельзя, если только не использовать параметр --number).
* Чтобы не указывать опции --target и --apt-config каждый раз, можно вписать в файл <tt>~/.hasher/config</tt> следующий кусок:
* Чтобы не указывать параметры --target и --apt-config каждый раз, можно вписать в файл <tt>~/.hasher/config</tt> следующий кусок:
<source lang="bash">if [ `uname -m` = i686 ]; then
<source lang="bash">if [ `uname -m` = i686 ]; then
         def_target=i586
         def_target=i586
Строка 18: Строка 18:
fi</source>
fi</source>
: Тогда достаточно будет просто добавить <tt>i386</tt> перед командой, вызывающей <tt>hsh</tt>, чтобы пакет собирался для i586. В последних версиях hasher в файле конфигурации можно переопределять и переменную <tt>workdir</tt>.
: Тогда достаточно будет просто добавить <tt>i386</tt> перед командой, вызывающей <tt>hsh</tt>, чтобы пакет собирался для i586. В последних версиях hasher в файле конфигурации можно переопределять и переменную <tt>workdir</tt>.
В системе сборки [http://freesource.info/wiki/korinf Korinf] можно собрать пакеты в hasher при несовпадении host и target архитектур. При этом конфиг apt будет заменён (преобразован) автоматом.


== Ссылки ==
== Ссылки ==
* [[Biarch]]
* [[Biarch]]
* http://wiki.etersoft.ru/WINEsetupx8664
* [http://wiki.etersoft.ru/WINE/x8664 WINE]
* окрестности [http://lists.altlinux.org/pipermail/devel/2009-March/168432.html этого треда]
* окрестности [http://lists.altlinux.org/pipermail/devel/2009-March/168432.html этого треда]


Строка 28: Строка 31:
* ftp://updates.etersoft.ru/pub/ALTLinux/4.1/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/4.1/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/5.0/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/5.0/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/5.1/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/Sisyphus/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/Sisyphus/x86_32/
* ftp://updates.etersoft.ru/pub/ALTLinux/Sisyphus/arepo.conf
* ftp://updates.etersoft.ru/pub/ALTLinux/Sisyphus/arepo.conf


* ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_32/ (Sisyphus)
* ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_32/ (Sisyphus)
* ftp://ftp.altlinux.ru/pub/people/jinn/biarch-repo/ (4.1/branch)
* ftp://ftp.altlinux.org/pub/distributions/ALTLinux/5.1/branch/x86_32/ (5.1/branch)
* [http://sisyphus.ru/srpm/arepo arepo] как средство приготовления i586-*
* [http://sisyphus.ru/srpm/arepo arepo] как средство приготовления i586-* (тж. [https://bugzilla.altlinux.org/arepo багрепорты])
 
* http://mithraen.ru/downloads/x86_32/


[[Категория:Sisyphus]]
[[Категория:Sisyphus]]

Текущая версия от 14:13, 25 ноября 2010

Cобираем пакеты для 32-битных систем на x86_64


  • Нужно написать список репозиториев для 32-битной системы (в простейшем случае просто сделать копию /etc/apt/sources.list и заменить в этой копии x86_64 на i586, если репозитории лежат рядом; можно ещё подключить i686 и i386). Файл списка можно положить в любое удобное место (не обязательно в каталог /etc/apt, но можно и туда — например, в /etc/apt/i586-sources.list). В принципе можно удалить из этого списка строки rpm-src — для работы hasher они не нужны.
  • Поскольку apt не позволяет указать файл списка репозиториев напрямую, нужно написать файл конфигурации apt.conf (который опять-таки необязательно класть в /etc/apt). В этом файле нужно указать имя созданного списка:
Dir::Etc::SourceList "/path/to/i586-sources.list";
Dir::Etc::SourceParts "/var/empty";
  • Вторая строка необходима, чтобы обойти грабли, заложенные в /etc/apt/sources.list.d/. Больше ничего в этом файле можно не писать, поскольку остальные параметры будут прочитаны из системного /etc/apt/apt.conf. Впрочем, можно и полностью переопределить конфигурацию apt.
  • Хотя ядро Linux на x86_64 способно запускать 32-разрядные исполняемые файлы и без дополнительных настроек, по умолчанию поведение будет несколько отличаться от «настоящего» x86 — в частности, uname() будет возвращать x86_64 даже при вызове из 32-разрядных программ, в результате сборка пакетов в таком окружении может пойти не так, как нужно. Чтобы устранить это различие, нужно использовать утилиту /usr/bin/i386 из пакета setarch — она позволяет запустить процесс в таком режиме, чтобы uname() для него и всех запущенных им процессов возвращало i686.
  • Запускать hasher для сборки нужно следующим образом:
    i386 hsh --target=i586 --apt-config=/path/to/i586-apt.conf
    (далее остальное, как обычно)
    Можно использовать для этого режима отдельный рабочий каталог, чтобы кеш hasher не пересоздавался каждый раз при переключении между сборкой для i586 и x86_64 (но запустить сборку в разных каталогах одновременно всё равно будет нельзя, если только не использовать параметр --number).
  • Чтобы не указывать параметры --target и --apt-config каждый раз, можно вписать в файл ~/.hasher/config следующий кусок:
if [ `uname -m` = i686 ]; then
        def_target=i586
        apt_config="/path/to/i586-apt.conf"
fi
Тогда достаточно будет просто добавить i386 перед командой, вызывающей hsh, чтобы пакет собирался для i586. В последних версиях hasher в файле конфигурации можно переопределять и переменную workdir.

В системе сборки Korinf можно собрать пакеты в hasher при несовпадении host и target архитектур. При этом конфиг apt будет заменён (преобразован) автоматом.


Ссылки

biarch repos