Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
citrix:citrix-reciever-под-ubuntu-14-04-x64 [2019/02/11 09:13] – external edit 127.0.0.1citrix:citrix-reciever-под-ubuntu-14-04-x64 [2019/05/21 09:50] (current) admin
Line 1: Line 1:
 +====== Этот мануал уже не актуален. Citrix Reciever 13.1 устанавливается нормально. Хотя и небезглючен ======
  
 +======Часть Первая - запуск в 64-битной среде======
 +Довольно странным оказался тот факт, что пакет **Citrix Reciever**, скачиваемый с сайта **citrix.com** просто так не ставится и нуждается в доработке напильником. Это происходит по двум причинам. Во-первых - сам пакет 32-битный, а во вторых - пакеты, от которых он зависит в новой **Ubuntu** заменены другими. Это касается версий пакета **12.x** и **13**.\\
 +
 +Процедура описана тут: [[https://help.ubuntu.com/community/CitrixICAClientHowTo]]\\
 +
 +В двух словах. Нужно скачать пакет, распаковать его и отредактировать зависимости.\\
 +Включаем поддержку 32-битных пакетов:\\
 +<code>sudo dpkg --add-architecture i386 # only needed once
 +sudo apt-get update</code>
 +
 +Ставим зависимости:\\
 +<code>sudo apt-get install libmotif4:i386 nspluginwrapper lib32z1 libc6-i386 libxp6:i386 libxpm4:i386 libasound2:i386</code>
 +
 +Скачиваем пакет **x64 Citrix Receiver 12.1** **.deb**\\
 +
 +[[https://www.citrix.com/downloads/citrix-receiver/receivers-by-platform/]]\\
 +
 +Ремонтируем пакет. Распакуем его:\\
 +<code>cd ~/Downloads
 +mkdir ica_temp
 +dpkg-deb -x icaclient_13.0.0.256735_amd64.deb ica_temp
 +dpkg-deb --control icaclient_13.0.0.256735_amd64.deb ica_temp/DEBIAN</code>
 +
 +Корректирум список зависимостей:\\
 +<code>nano ./ica_temp/DEBIAN/control</code>
 +
 +И меняем строку **Depends: ...** на:\\
 +<code>Depends: libc6-i386 (>= 2.7-1), lib32z1, nspluginwrapper, libxp6:i386, libxpm4:i386</code>
 +
 +Теперь отредактируем постинсталляционный скрипт:\\
 +<code>nano ./ica_temp/DEBIAN/postinst</code>
 +
 +Ищем строку: <code>echo $Arch|grep "i[0-9]86" >/dev/null</code>
 +и заменяем ее на :\\
 +<code>echo $Arch|grep -E "i[0-9]86|x86_64" >/dev/null</code>
 +
 +Пересобираем пакет:\\
 +<code>dpkg -b ica_temp icaclient-modified.deb</code>
 +
 +Ставим его:\\
 +<code>sudo dpkg -i icaclient-modified.deb</code>
 +
 +Теперь добавляем сертификаты. Я сначала брал сертификат центра сертификации с сервера WIndows в файле **.cer**, потом импортировал его в Firefox **(Edit -> Prefrences -> Advanced -> Certificates -> View Certs -> Authorities -> Import)**. \\
 +А потом делал ссылку на серты Firefox в папку с сертами  Citrix:\\
 +<code>sudo ln -s /usr/share/ca-certificates/mozilla/* /opt/Citrix/ICAClient/keystore/cacerts/</code>
 +
 +Все. Теперь можно работать. Заходим на свой сайт **Citrix Web Interface**, логинимся и тыкаем в ярлычок с приложением.  Firefox спросит что делать с файлом launch.ica. Нужно указать ему путь к исполняемом файлу клиента ICA - **/opt/Citrix/ICAClient/wfica**\\
 +
 +Всё. \\
 +
 +
 +======Часть Вторая - нормальный полноценный запуск======
 +Сначала я думал, что всё... Будет работать...Однако, это оказалось совсем не всё... К сожалению, .deb пакет **Citrix Reciever** на данный момент (июль 2014 года) собран очень похабно. Фактически - в нем просто прописали что архитекртура теперь amd64.. И всё. Будучи установленным непосредственно в 64-bit систему он нуждается в некоторых 32-bit пакетах, которые невозможно установить рядом с 64-bit. То есть - работает запуск приложений из браузера, но вот получить окошко Reciever с приложенимя так просто не удается. Но выход есть! Это создание 32-х битного окружения chroot и запуск Reciever в нем. \\
 +
 +Итак, поехали. \\
 +Делаем chroot.\\
 +
 +Ставим то что нам понадобится:\\
 +<code>sudo apt-get install debootstrap schroot</code>
 +
 +Создаем директорию и конфигурационный файл для нашего chroot:\\
 +<code>sudo mkdir /trusty_i386
 +sudo nano /etc/schroot/chroot.d/trusty_i386.conf</code>
 +
 +И записываем туда вот что:\\
 +<code>[trusty_i386]
 +description=Ubuntu 14.04 Trusty for i386
 +directory=/trusty_i386
 +personality=linux32
 +root-users=mike
 +type=directory
 +users=alice,mike</code>
 +
 +Тут:\\
 +**directory** (раньше - location) - Директория где будут лежать файлы этого environment. Директория должна быть за пределами **/home**. tree. \\
 +По-умолчанию - **/srv/chroot**.\\
 +
 +**personality** - Эта строка нужна, если хост-система 64-bit, а chroot-система - 32-bit. В противном случае можно отключить или закомментировать "#".\\
 +
 +**root-users** - Пользователи хост-системы, которые имеют права запускать schroot и получат root-доступ к chroot-окружению. \\
 +
 +**users** - Пользователи хост-системы, которые имеют права запускать schroot и получат пользовательский доступ к chroot-окружению. \\
 +
 +
 +Выполнем установку нашей Ubuntu 14.04 Trusty 32-bit системы в указанную папку:\\
 +<code>sudo debootstrap --variant=buildd --arch=i386 trusty /trusty_i386 http://archive.ubuntu.com/ubuntu/</code>
 +Для других дистрибутивов просто меняем **trusty** на название дистра (например для Ubuntu 13.04 - **precise**)\\
 +
 +Смотрим на список сконфигурированных chroot:\\
 +<code>schroot  -l</code>
 +
 +Копируем туда пользователей и группы из хостовой системы:\\
 +<code>sudo cp /etc/group /trusty_i386/etc/
 +sudo cp /etc/passwd /trusty_i386/etc/</code>
 +
 +Теперь запустим наше chroot-окружение и убедимсо, что там внутри 32-bit:\\
 +<code>schroot -p -c trusty_i386 -u root
 +(trusty_i386)root@host-system:/home/mike# uname -a
 +Linux host-system 3.16.0-031600rc2-generic #201406220135 SMP Sun Jun 22 05:36:21 UTC 2014 i686 i686 i686 GNU/Linux</code>
 +В данном случае -p указывает на то, что мы хотим передать в chroot текущее окружение пользователя. Это необходимо для того, чтобы правильно передалась переменная DISPLAY, которая важна для запуска GUI-приложений.\\
 +
 +Затем в окружении chroot ставим компоненты системы:\\
 +<code>(trusty_i386)root@host-system:/home/mike# apt-get install ubuntu-minimal</code>
 +
 +Обязательно нужно реконфигурировать **locales**. Признаком ошибок в конфигурации locales является появление  при запуске **Citrix Reciever** сообщений типа: **Gtk-WARNING <nowiki>**</nowiki>: Locale not supported by C library.**. Выполянем:\\
 +<code>sudo locale-gen en_US en_US.UTF-8 ru_RU ru_RU.UTF-8
 +sudo dpkg-reconfigure locales</code>
 +
 +Теперь ставим сам Citrix Reciever. \\
 +Скачиваем 32-битный пакет и кладем его куда-нить в папку /trusty_i386.\\
 +Дальше нужно удовлетворить зависимости. Для этого я просто попытался установить пакет в лоб, а затем доставил зависимости:\\
 +<code>(trusty_i386)root@host-system:/home/mike#  dpkg -i /opt/icaclient_13.0.0.256735_i386.deb
 +(trusty_i386)root@host-system:/home/mike#  apt-get -f install</code>
 +Однако этого оказалось маловато. Есть такой пакетик **libxerces-c3.1**, который почему-то не входит в стандартный репозиторий Ubuntu.\\
 +Его ставим так:  \\
 +<code>echo "deb http://cz.archive.ubuntu.com/ubuntu trusty main universe" >> /etc/apt/sources.list
 +apt-get update
 +apt-get install libxerces-c3.1</code>
 +И уже потом делаем\\
 +<code>(trusty_i386)root@host-system:/home/mike#  dpkg -i /opt/icaclient_13.0.0.256735_i386.deb</code>
 +У меня все поставилось.\\
 +Дальше надо положить сертификаты из хост-системы в chroot в папку **/opt/Citrix/ICAClient/keystore/cacerts/**.\\
 +Их можно скопировать из папки с сертификатами mozilla. В хостовой системе выполняем:\\
 +<code>cp /usr/share/ca-certificates/mozilla/* /trusty_i386/opt/Citrix/ICAClient/keystore/cacerts/</code>
 +И это еще не все. По непонятной причине из браузера приложения запускаются с сертификатом в виндовом формате .cer (x509 der), а вот Citrix Receiver в режиме kiosk-mode cс таким сертификатом запускаться отказывается с сообщением "Your account cannot be added using this server address. Make sure you entered it correctly". И отладочных сообщений никаких. В лучших традициях Microsoft.\\
 +Для того чтобы все заработало нужно сконвертировать сертификат в форма .pem и выполнить rehash:\\
 +<code>openssl x509 -inform der -in /opt/Citrix/ICAClient/keystore/cacerts/your_CA_root_cert.cer  -out /opt/Citrix/ICAClient/keystore/cacerts/your_CA_root_cert.pem
 +c_rehash /opt/Citrix/ICAClient/keystore/cacerts/</code>
 +После этого можно смело запускать Citrix Reciever:\\
 +<code>(trusty_i386)root@host-system:/home/mike# /opt/Citrix/ICAClient/selfservice &</code>
 +
 +Для того чтобы запускать Citrix Reciever скриптом я сделал так вот что.\\
 +В окружении trusty_i386 с сделал скрипт **/opt/CitrixReciever.sh**:\\
 +<code>#! /bin/sh
 +/opt/Citrix/ICAClient/selfservice</code>
 +Сделал его исполняемым:\\
 +<code>chmod a+x /opt/CitrixReciever.sh</code>
 +
 +После этого в хост-системе я могу запускать **Citrix Reciever** командой:\\
 +<code>SESSION=$(schroot --begin-session -p -c trusty_i386 --session-name CitrixReciever) && schroot --run-session -p -c "$SESSION" -- /opt/CitrixReciever.sh && schroot --end-session -c "$SESSION" &</code>
 +
 +Эту же команду я засунул в **Link to application**, а в файле .desktop потом прописал icon - **/trusty_i386/opt/Citrix/ICAClient/icons/025_Receiver_h32bit_48.png** и получился ярлык как в Windows.\\
 +
 +Настроить параметры Reciever можно с помощью утилиты configmgr, которая запускается так:\\
 +<code>/opt/Citrix/ICAClient/util/configmgr</code>
 +Там среди всего прочего можно настроить доступ к файловой системе. Но так как мы работаем из chroot, то понадобится пробросить папки из хостовой системы в chroot.\\
 +
 +====== Установка ctxusb ======
 +
 +При установке **ctxusb** возникают проблемы с запуском. \\
 +Система пишет:*** Starting Citrix USB daemon [fail]**
 +
 +В логах следующее:
 +<code>libcap: 
 +# cat /var/log/syslog | grep ctxusbd
 +libcap.so.1: cannot open shared object file: No such file or directory
 +</code>
 +
 +Проблема в отсутствии **libcap.so.1** в репозиториях Ubuntu. Но она есть в параллельной вселенной в **.rpm**
 +Так поставим же ее:
 +<code>
 +sudo apt-get install alien
 +wget ftp://rpmfind.net/linux/opensuse/distribution/13.2/repo/oss/suse/x86_64/libcap1-32bit-1.10-60.2.1.x86_64.rpm
 +sudo alien -i ./libcap1-32bit-1.10-60.2.1.x86_64.rpm 
 +</code>
 +
 +После этих манипуляций **ctxusb** ставится и запускается.
  • citrix/citrix-reciever-под-ubuntu-14-04-x64.txt
  • Last modified: 2019/05/21 09:50
  • by admin