Ошибка сборки Squid. Как установить Squid из исходников?

Автор Ethanol, 31 марта 2019, 16:53:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ethanol

Добрый день.
Хочу повторить действия по созданию wifi-точки. Для этого на компьютер хочу установить squid.
Делаю как в статье:

Добавляю в sources.list источник:
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free

Получаю ключи (просто скопипастил с сайта. Буду очень благодарен, если кто-то объяснит, что задаётся в параметрах):
gpg --keyserver keyserver.ubuntu.com --recv 8B48AD6246925553
gpg --export --armor 8B48AD6246925553 | sudo apt-key add -
gpg --keyserver keyserver.ubuntu.com --recv 7638D0442B90D010
gpg --export --armor 7638D0442B90D010 | sudo apt-key add -


Обновляю:
apt-get update

Перехожу в /tmp и скачиваю squid:
cd /tmp/
apt-get source squid3


В результате в /tmp у меня следующие файлы:
root@debian-wifi:/tmp# ls
squid-4.6
squid_4.6-1.debian.tar.xz
squid_4.6-1.dsc
squid_4.6-1_i386.build
squid_4.6.orig.tar.gz
systemd-private-60cf5d6114cf424d991bceadbe4e54d3-systemd-timesyncd.service-Mvg1fx


Не стал ничего менять местами как в статье и дописал в /tmp/squid-4.6/debian/rules следующие строки:
--disable-ipv6 \
--enable-icap-client \
--enable-ssl-crtd \
--with-openssl=/etc/ssl \


Описанную в статье ошибку SECURITY ALERT не стал патчить и просто пропустил (сильно плохо?).
Выполняю debuild и получаю:
root@debian-wifi:/tmp/squid-4.6# debuild
dpkg-buildpackage -rfakeroot -us -uc
dpkg-buildpackage: предупреждение: используется команда получения прав root, но уже есть права root
dpkg-buildpackage: инфо: пакет исходного кода squid
dpkg-buildpackage: инфо: версия исходного кода 4.6-1
dpkg-buildpackage: инфо: дистрибутив исходного кода unstable
dpkg-buildpackage: инфо: исходный код изменён Luigi Gangitano <luigi@debian.org>
dpkg-source --before-build squid-4.6
dpkg-buildpackage: инфо: архитектура узла i386
dpkg-checkbuilddeps: ошибка: Unmet build dependencies: ed
dpkg-buildpackage: предупреждение: неудовлетворительные зависимости/конфликты при сборке; прерываемся
dpkg-buildpackage: предупреждение: (Используйте параметр -d, чтобы продолжить сборку.)
debuild: fatal error at line 1116:
dpkg-buildpackage -rfakeroot -us -uc failed


Пробовал начать сборку без измененного debian/rules и сборка в итоге начиналась и шла около 30-40 минут. С измененным же файлом сразу ругается.
P.S. В статье, как я понял, нужно поддержка SSL, поэтому вот мучаюсь.

ferum

#1
Давайте сразу отделим суп от мух, то бишь определимся для какого дистрибутива и какой разрядности пытаемся собрать пакет.
В приведённой вами статье фигурирует уже устаревший ubuntu 16.04 а сорцовый репозиторий используется от debian testing, скорее всего это был именно stretch на стадии тестирования.
Следует так же помнить что  скачанный архив с исходным кодом должен быть удалён а в замен его создан новый, правильно упакована папка с файлами в которую вы внесли изменения.
Необходим только архив orig.tar.gz либо orig.tar.bz2  это как вам удобнее.
Да и у вас неудовлетворённые сборочные зависимости.
Русские дебианщики против цифрового слабоумия !

Ethanol

#2
Спасибо за ответ!

Цитата: ferum от 31 марта 2019, 17:11:48Давайте сразу отделим суп от мух, то бишь определимся для какого дистрибутива и какой разрядности пытаемся собрать пакет.
Собираем пакет для Debian 9.8 stretch 32-bit. i386

Цитата: ferum от 31 марта 2019, 17:11:48
В приведённой вами статье фигурирует уже устаревший ubuntu 16.04 а сорцовый репозиторий используется от debian testing, скорее всего это был именно stretch на стадии тестирования.

Удалил deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
Почистил папку /tmp. Выполнил:
apt-get source squid
Я правильно понимаю, что теперь у меня squid из stable?
Скачалась версия 3.5.23.


Цитата: ferum от 31 марта 2019, 17:11:48Следует так же помнить что  скачанный архив с исходным кодом должен быть удалён а в замен его создан новый, правильно упакована папка с файлами в которую вы внесли изменения.
Окей. Можно чуть подробнее на этом шаге? Или скиньте, пожалуйста, ссылку конкретно что почитать.
То есть просто удаляю папку с исходниками и разархивирую orig.tar.gz? Что значит "правильно упакована"?

Цитата: ferum от 31 марта 2019, 17:11:48Да и у вас неудовлетворённые сборочные зависимости.
Можно как-то решить? Я установил все необходимые пакеты apt-get build-dep squid3 или это что-то не то?)

ferum

Цитата: Ethanol от 31 марта 2019, 18:59:27Я установил все необходимые пакеты apt-get build-dep squid3 или это что-то не то?)
Если вы собираете пакеты непосредственно на вашей машине и в sources.list у вас включены секции deb-src то в принципе так.
Проще всего ( хотя лучший вариант сборка в чистой среде ) сделать так
mkdir build
cd build
sudo apt update
apt source squid
ls
cd squid3-3.5.23
# узнать все ли установлены сборочные зависимости
dpkg-checkbuilddeps
# установить если что то необходимо
#отредактировать rules как вам необходимо
# во избежание обновления которое сломает вашу затею изменим версию пакета  на условно 3.5.24 нужен пакет dh-make
dch -i
# выйти из папки с исходниками
cd ..
rm squid3_3.5.23-5+deb9u1.debian.tar.xz  squid3_3.5.23-5+deb9u1.dsc  squid3_3.5.23.orig.tar.gz
#смотрим как теперь называется наша папка с исходниками
ls
# допустим squid3-3.5.24, тогда делаем архив для сборки
tar -cvf - squid3-3.5.24 | bzip2 -9 > squid3_3.5.24.orig.tar.bz2
#  переходим в папку с исходниками
cd squid3-3.5.24
# собирам пакеты
dpkg-buildpackage -rfakeroot -D

Если в статье ни чего не наврали результаты сборки должны появиться в папке build.

Русские дебианщики против цифрового слабоумия !

Ethanol

Окей. Попробовал вот эту статью.

Не собирал из исходников libecap, т.к. в репозитории подходящая версия.
Выполнил последовательность команд:
$ mkdir ~/squid3-build
$ cd ~/squid3-build
#apt-get source squid3
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.24.tar.gz
$ cd squid3-3.5.23
$ uupdate -v 3.5.24 ../squid-3.5.24.tar.gz
cd ~/squid3-build/squid3-3.5.24
$ sudo apt-get build-dep squid3
$ export QUILT_PATCHES=debian/patches
$ while quilt push; do quilt refresh; done


Поправил файл squid3 - debian/rules не так как в статье. Добавил в него строки:
--disable-ipv6 \
--enable-icap-client \
--enable-ssl-crtd \
--with-openssl=/etc/ssl \


При сборке выдаёт ошибку:
employee@debian-wifi:~/squid3-build/squid3-3.5.24$ debuild -us -uc
dpkg-buildpackage -rfakeroot -us -uc
dpkg-buildpackage: инфо: пакет исходного кода squid3
dpkg-buildpackage: инфо: версия исходного кода 3.5.24-1
dpkg-buildpackage: инфо: дистрибутив исходного кода UNRELEASED
dpkg-buildpackage: инфо: исходный код изменён employee <employee@debian-wifi>
dpkg-source --before-build squid3-3.5.24
dpkg-buildpackage: инфо: архитектура узла i386
fakeroot debian/rules clean
debian/rules:50: *** обнаружен способ до первого определения цели.  Останов.
dpkg-buildpackage: ошибка: fakeroot debian/rules clean возвратил код ошибки 2
debuild: fatal error at line 1116:
dpkg-buildpackage -rfakeroot -us -uc failed


Я не понимаю, что ему надо)
Пока писал, увидел ваш комментарий. Сейчас осмыслю всё :)

Ethanol

Цитата: ferum от 31 марта 2019, 19:55:10
Цитата: Ethanol от 31 марта 2019, 18:59:27Я установил все необходимые пакеты apt-get build-dep squid3 или это что-то не то?)
Если вы собираете пакеты непосредственно на вашей машине и в sources.list у вас включены секции deb-src то в принципе так.
Если в статье ни чего не наврали результаты сборки должны появиться в папке build.



Ну вот вроде сделал как вы сказали. Удалил версию 3.5.23.
dch -i не менял ничего, так как у меня версия 3.5.24 (из приведенной выше статьи скачал).

Захожу в директорию squid3-3.5.24 и выполняю debuild:
employee@debian-wifi:~/squid3-build/squid3-3.5.24$ debuild -us -uc
dpkg-buildpackage -rfakeroot -us -uc
dpkg-buildpackage: инфо: пакет исходного кода squid3
dpkg-buildpackage: инфо: версия исходного кода 3.5.24-1
dpkg-buildpackage: инфо: дистрибутив исходного кода UNRELEASED
dpkg-buildpackage: инфо: исходный код изменён employee <employee@debian-wifi>
dpkg-source --before-build squid3-3.5.24
dpkg-buildpackage: инфо: архитектура узла i386
fakeroot debian/rules clean
debian/rules:50: *** обнаружен способ до первого определения цели.  Останов.
dpkg-buildpackage: ошибка: fakeroot debian/rules clean возвратил код ошибки 2
debuild: fatal error at line 1116:
dpkg-buildpackage -rfakeroot -us -uc failed


Вроде жалуется на строку под номером 50. Это параметр в debian/rules следующий:
--disable-ipv6 \
Что-то с ним не так?

ferum

Сразу не пойму за чем использовать левые исходники когда требуется только изменить параметры сборки родных source с уже наложенными патчами?
rules скрипт со строгими правилами, у меня то же всегда с ним проблемы и лучше наверное придержаться порядка описанного в статье.
Завтра если будет время посмотрю всё внимательно, ни чего не гарантирую.
Русские дебианщики против цифрового слабоумия !

Ethanol

Цитата: ferum от 31 марта 2019, 20:31:31
Сразу не пойму за чем использовать левые исходники когда требуется только изменить параметры сборки родных source с уже наложенными патчами?

Пробовал. Просто у меня это также не получалось. Потом начал гуглить разные статьи и так как не сильно в этом разбираюсь, стал просто повторять команды) Не получилась обычная сборка - попробовал с патчами. Перебор вариантов.

Цитата: ferum от 31 марта 2019, 20:31:31Завтра если будет время посмотрю всё внимательно, ни чего не гарантирую.
Большое спасибо. Есть возможность вам на пиво подкинуть?)

ferum

Необходимые вам пакеты вместе с валидными исходниками https://yadi.sk/d/30VOsfaxZ6mNBg
На ваши вопросы могу ответить следующее:
1) По приведённой вами выше статье включается поддержка openssl методом гугла а так же проб и ошибок пришлось добавить к сборочным зависимостям libssl1.0-dev
2) Для исправления ошибок в логах программы умные люди придумали патч https://habr.com/ru/post/272733/
3) Если я не досмотрел ( хотя debhelper вычисляет автоматом ) то установите openssl пакет необходим для работы программы.
Вместе с установкой сборочной машины я потратил примерно 2.5 часа времени, думаю будет справедливо если сообщество узнает о результатах ваших тестов, что из этого получилось.
Просто мне будет очень жаль если время потрачено напрасно. Удачи  :)
Русские дебианщики против цифрового слабоумия !

Ethanol

Цитата: ferum от 01 апреля 2019, 11:16:311) По приведённой вами выше статье включается поддержка openssl методом гугла а так же проб и ошибок пришлось добавить к сборочным зависимостям libssl1.0-dev
Я правильно вас понял, что чтобы добавить к сборочным зависимостям libssl1.0-dev, нужно прописать его в debian/control?

Цитата: ferum от 01 апреля 2019, 11:16:312) Для исправления ошибок в логах программы умные люди придумали патч https://habr.com/ru/post/272733/
Попробую сделать как в этой статье.

Цитата: ferum от 01 апреля 2019, 11:16:31Вместе с установкой сборочной машины я потратил примерно 2.5 часа времени
У вас возникли описанные мной ранее проблемы?

Цитата: ferum от 01 апреля 2019, 11:16:31думаю будет справедливо если сообщество узнает о результатах ваших тестов, что из этого получилось.
Если всё получится, я, конечно, с удовольствием поделюсь результатами.
Сегодня вечером буду пробовать.

ferum

Поняли вы всё правильно, но делать всё как в той статье = колхоз не асфальтированный. Checkinstall я не уважаю, он строит совершенно не полноценные пакеты. Настоящий пакет debian  обязан устанавливать конфиги и стартовые скрипты, при необходимости ставить их в автозапуск и стартовать сервисы сразу после установки. При деинсталляции останавливать сервисы и службы и удалять файлы без остатка. Конечно нам ещё учиться и учиться до уровня профессиональных сопровождающих, по этому я очень трепетно отношусь к их труду и стараюсь максимально использовать его результаты. Считаю что таким образом можно сохранять максимально стабильность и надёжность системы.
Проблемы как у вас у меня не возникали в силу того что на скрипт rules я посмотрел внимательно , однако  сообщения типа debian/rules завершил код ошибки.... строка ... естественно были. это не значит что проблема в скрипте. Смотрим выхлоп не много выше, ошибка проявляется чуть раньше, хотя бы с поисковиком её можно идентифицировать и понять чего не хватает для сборки.
Русские дебианщики против цифрового слабоумия !

Ethanol

#11
Всё равно не могу сообразить без чёткого алгоритма действий.
В статье сначала идёт сборка libressl. Здесь вроде всё проходит гладко по алгоритму.
Дальше Libecap. Его не стал ставить из testing. Уже была установлена версия 1.0.1-3.2, поэтому что-либо с ним делать не стал.

Затем скачиваю патч:
wget -O bug-4330-put_cipher_by_char-t1.patch http://bugs.squid-cache.org/attachment.cgi?id=3216 --no-check-certificate
Если без -no-check-certificate, то вылезает ошибка недействительный сертификат.

После того, как скачал патч, пробую его применить и получаю ошибку:
employee@debian-wifi:~/squid3-build/squid3-3.5.24$ patch -p0 -i bug-4330-put_cipher_by_char-t1.patch
patching file src/ssl/bio.cc
Hunk #1 FAILED at 1099.
1 out of 1 hunk FAILED -- saving rejects to file src/ssl/bio.cc.rej

Пока что вот такие дела.

Цитата: ferum от 01 апреля 2019, 13:56:51Checkinstall я не уважаю
Как тогда лучше устанавливать программы из исходников? make install? Или я что-то путаю?

p.s. Сейчас только допёрло, что я скорее всего патчу не ту версию Squid. В статье 3.5.8, а у меня 3.5.24.

Ethanol

Оставлю отдельным сообщением.

Скачал исходники LibreSSL и собрал:
wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.1.6.tar.gz
tar -xzvf libressl-2.1.6.tar.gz
cd libressl-2.1.6
./configure
make
checkinstall --pkgname libressl --pkgversion 2.1.6
dpkg -i libressl_2.1.6-1_amd64.deb
ldconfig


Дальше настроил использование LibleSSL (если объясните мне что делают следующие команды, буду благодарен):
mv /usr/bin/openssl /usr/bin/openssl-1
update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
update-alternatives --config openssl


Libecap не стал собирать из исходников, как писал ранее.
Далее скачал старую версию Squid:
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.8.tar.gz
tar -xf squid-3.5.8.tar.gz
cd squid-3.5.8


Патчим:
wget -O bug-4330-put_cipher_by_char-t1.patch http://bugs.squid-cache.org/attachment.cgi?id=3216
patch -p0 -i bug-4330-put_cipher_by_char-t1.patch


Так как в этой версии нет debian/rules указал параметры файлу configure:
employee@debian-wifi:~/squid3-old/squid-3.5.8$ ./configure --build=i386-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/squid --srcdir=. --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules --datadir=/usr/share/squid --sysconfdir=/etc/squid --mandir=/usr/share/man --enable-inline --disable-arch-native --enable-async-io=8 --enable-storeio=ufs,aufs,diskd,rock --enable-removal-policies=lru,heap --enable-delay-pools --enable-cache-digests --enable-icap-client --enable-follow-x-forwarded-for --enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB --enable-auth-digest=file,LDAP --enable-auth-negotiate=kerberos,wrapper --enable-auth-ntlm=fake,smb_lm --enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group --enable-url-rewrite-helpers=fake --enable-eui --enable-esi --enable-icmp --enable-zph-qos --enable-ecap --disable-translation --with-swapdir=/var/spool/squid --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid --with-filedescriptors=65536 --with-large-files --with-default-user=proxy --enable-ssl-crtd --with-openssl=/etc/ssl --enable-linux-netfilter 'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'

Выше, в отличии от статьи изменены:

  • Архитектура на i386
  • Добавлен параметр --disable-ipv6 \ (в соответствии с рекомендацией в статье)
  • Удалён параметр --enable-ssl, потому как один из комментаторов на habr заметил, что эта опция отключена в версиях 3.5 в соответствии с руководством.

После всего выполняю make и make install (как я понял вы рекомендуете данный способ).
В статье также сказано, что Squid не стартанёт пока мы не создадим вручную файл:
touch /etc/systemd/system/squid.service
nano /etc/systemd/system/squid.service

Со следующим содержимым:
## Copyright (C) 1996-2015 The Squid Software Foundation and contributors
##
## Squid software is distributed under GPLv2+ license and includes
## contributions from numerous individuals and organizations.
## Please see the COPYING and CONTRIBUTORS files for details.
##

[Unit]
Description=Squid Web Proxy Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/squid -sYC -N
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target


Дальше, как я понял, переименовываются конфигурационные файлы:
cp /etc/squid/squid.conf.default /etc/squid/squid.conf
cp /etc/squid/mime.conf.default /etc/squid/mime.conf
cp /etc/squid/cachemgr.conf.default /etc/squid/cachemgr.conf
cp /etc/squid/errorpage.css.default /etc/squid/errorpage.css


Затем создаём папку (в моём случае она уже была создана, поэтому я только оменил права):
mkdir /var/log/squid
chown proxy /var/log/squid


Запускаем Squid и проверяем статус:
systemctl start squid
systemctl status -l squid

Вывод:
Открыть содержимое (спойлер)
employee@debian-wifi:~/squid3-old/squid-3.5.8$ systemctl status -l squid
● squid.service - Squid Web Proxy Server
   Loaded: loaded (/etc/systemd/system/squid.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-04-02 02:47:01 +05; 10s ago
Main PID: 20348 (squid)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/squid.service
           ├─20348 /usr/sbin/squid -sYC -N
           └─20349 (logfile-daemon) /var/log/squid/access.log

[свернуть]

Я так понимаю дела неплохи? Завтра попробую настроить Squid с его сертификатами и наверное там ещё намучаюсь.

Цитата: ferum от 01 апреля 2019, 11:16:31думаю будет справедливо если сообщество узнает о результатах ваших тестов
Вы хотели, чтобы я показал результаты установки Squid или в целом то, что я пытаюсь сделать?

Не всё понятно в процессе установки. Норм ли, что версия старая? Сильно плохо? Всё ли правильно так на вид ставил?
Проблема была в версии Squid, LibreSSL или кривых руках?
Также хотел бы узнать что делает команда update-alternatives.
Немного оффтоп,но всё же интересно, зачем так старательно отключают во многих статьях IPv6?

Ferum, большое спасибо за помощь. Я не всё понимаю о чём вы говорите, но без вас бы не справился) Предложение о пиве всё ещё в силе.

ferum

Попробую дать разъяснение по вашим вопросам.
Найденные вами статьи (вторую правда я подсказал) были актуальны на день написания для дистрибутива ubuntu 16.04. В случае автора статей , использование исходных кодов из репозитория debian testing или пакета исходного кода с сайта разработчика оправдывалось желанием получить свежую на тот момент версию программы чем в репозитории дистрибутива. Резонно что автору статей пришлось собрать свежий libressl ( на тот момент ).
Цитата: Ethanol от 02 апреля 2019, 01:20:00mv /usr/bin/openssl /usr/bin/openssl-1
update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
update-alternatives --config openssl
Здесь автор переименовывает ( таким образом делает бэкап ) штатный бинарник openssll и на его место соблюдая системные пути ставит свежий openssl из исходников, вместе с конфигами. ldconfig перезагрузила сервис в системе.
Я не знаю хорошо или плохо что вы установили версию squid старее чем в системе, всё зависит от конкретных условий и задач.
Я бы не стал так делать. Вообще я пересобрал для вас готовые deb пакеты в соответствии с требованиями первой статьи. Вы могли их просто установить без танцев с бубном и с тем же успехом бесследно удалить если что то не устроило.
В самой программе squid я не разбирался, знаю только одно, есть исходник из которого по дефолту собирается программа с определёнными функциями. Используя ключи для сборки мы можем добавлять нужные нам и убирать лишние с нашей точки зрения функции.
В данный момент что бы поставить эту программу в пакетах вам необходимо прежде будет удалить то что поставили из исходников и почистить все хвосты.
На счёт "пива" я делаю намёк только людям которые тупо хотят что бы за них кто то всё сделал, например пакет какой нибудь программы или плагина
, которые интересны только персонально для них. У вас возникли вопросы в процессе попытки собрать программу самостоятельно. Рад если смог вам помочь разобраться. Если у вас всё же есть свободные средства можете сделать пожертвование форуму.
Bulatus содержит его за счёт собственных средств.
Русские дебианщики против цифрового слабоумия !

Ethanol

Цитата: ferum от 03 апреля 2019, 10:47:32Вообще я пересобрал для вас готовые deb пакеты в соответствии с требованиями первой статьи. Вы могли их просто установить без танцев с бубном и с тем же успехом бесследно удалить если что то не устроило.
Я тоже думал, что в принципе можно установить ваши файлы, но вы же попросили, чтобы я как-то отписался сообществу о результатах. Решение с установкой собранных вами программ подошло бы именно для меня, но для сообщества форума, наверное, было бы полезнее, чтобы бы в будущем те, кто столкнется с подобной проблемой, примерно знали как им действовать в такой ситуации. Поэтому я расписал свои действия, после которых прокси вроде заработал. Правда он сегодня отвалился ... Вечером посмотрю с чем проблема.

Цитата: ferum от 03 апреля 2019, 10:47:32Если у вас всё же есть свободные средства можете сделать пожертвование форуму.
Bulatus содержит его за счёт собственных средств.
Беглым взглядом не нашёл информацию как помочь форуму. Вечером поищу внимательнее.