Установка Git, Curl и Expat из источника

У меня есть RHEL 6.4 VM, предоставленная моими компаниями внутренним KVM.

У нас возникли проблемы с использованием yum (невозможно получить метаданные репозитория, подтвержденные Ive в этом случае, свойственные внутреннему облаку моей компании), поэтому мне нужно построить Git из источника.

EDIT # 1:

Загрузка файла RPM и выдача

sudo yum localinstall ....rpm 

Дает мне то же самое Не удается получить ошибку метаданных репозитория

Выдача

 sudo rpm -ivh ....rpm 

error: Failed dependencies с error: Failed dependencies и затем перечисляет все пакеты, которые мне нужно установить. Я предполагаю, что могу найти ссылки для скачивания для всех, но я пробовал это раньше и не смог найти ссылки d / l для правильных версий для правильных пакетов.

РЕДАКТИРОВАТЬ № 2:

Следующий код действительно работает, благодаря ответу @ slm :

 wget ftp://fr2.rpmfind.net/linux/dag/redhat/el6/en/x86_64/extras/RPMS/perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm wget http://pkgs.repoforge.org/git/git-1.7.9.6-1.el6.rfx.x86_64.rpm rpm -ivh perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm git-1.7.9.6-1.el6.rfx.x86_64.rpm 

Если я просто скачаю git-код, разблокирую его и создам, например:

 wget https://www.kernel.org/pub/software/scm/git/git-1.8.5.tar.gz tar -xvf git-1.8.5.tar.gz cd git-1.8.5 ./configure make make install 

При клонировании из протокола http:// появляется следующая ошибка:

 fatal: Unable to find remote helper for 'http' 

Гуглинг сказал мне, что мне нужен завиток и экспат. Я не могу использовать yum, поэтому я пошел и построил их:

 cd .. wget http://curl.haxx.se/download/curl-7.34.0.tar.gz tar -xvf curl-7.34.0.tar.gz cd curl-7.34.0 ./configure make make install cd .. wget http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz tar expat-2.1.0.tar.gz cd expat-2.1.0 ./configure make make install 

Однако при восстановлении Git я получаю ту же ошибку. После Googling больше я решил, что мне нужно передать следующие параметры в Git ./configure :

 cd git-1.8.5 ./configure --with-curl=<curl_install_path> --with-expat=<expat_install_path> 

Однако я не мог определить, где были установлены пути установки curl и expat.

Итак, вместо этого я создал Git, curl и expat с использованием ./configure --prefix=/path/to/desired/install/path

 mkdir curl cd curl-7.34.0 ./configure --prefix=/home/downloads/curl ... mkdir expat cd expat-2.1.0 ./configure --prefix=/home/downloads/expat ... mkdir git cd git-1.8.5 ./configure --prefix=/home/downloads/git --with-curl=/home/downloads/curl --with-expat=/home/downloads/expat ... 

и из этого я смог клонировать Git из протокола http . Однако это нарушает структуру файла linux.

2 Вопросы:

  1. При создании Git из исходного кода вам необходимо включить пути установки curl и expat в ./configure . Где эти пути установки при установке curl и expact без аргумента prefix ?
  2. Я узнал, что мне нужны зависания и пути установки expact, когда я получил ошибку и искал ее. Есть ли какие-то другие программы, которые мне нужно рассказать Git, чтобы я не получал ошибок в будущем?

  • Добавление fcontext в неограниченное приложение
  • Устранение клонирования настроенного сервера RHEL, размещенного в центре обработки данных удаленно
  • Как настроить postfix smtp для каждого пользователя?
  • Перезагрузка Redhat Enterprise Linux
  • Настройка chroot для пользователей LDAP в RHEL6
  • Устранение недостающих зависимостей пакета при попытке установить октаву
  • SSH прерывается с перерывами
  • Можно ли конвертировать RHEL в CentOS?
  • 3 Solutions collect form web for “Установка Git, Curl и Expat из источника”

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

    локальная установка

    Вы можете использовать инструмент командной строки, такой как curl или wget чтобы загрузить пакеты, необходимые для их установки, либо напрямую используя yum либо rpm .

     $ sudo yum localinstall some.rpm -or- $ sudo rpm -ivh some.rpm 

    Я бы предложил посмотреть репозитории RepoForge, а также EPEL для RPM. Например, пакеты git находятся здесь.

    Простая команда в терминале будет загружать его:

     $ wget http://pkgs.repoforge.org/git/git-1.7.10.4-1.el6.rfx.x86_64.rpm 

    Восстановление исходной RPM

    В противном случае вы должны иметь последние версии, вы все равно можете использовать RPM, а не загружать версию пакета .rpm , вы захотите получить версию .src.rpm . Их можно перестроить, используя следующую команду:

     $ rpmbuild --rebuild some.src.rpm 

    Восстановление tar.gz с использованием RPM-источника донора

    Вы также можете взять .spec файлы .tar.gz и повторно использовать файл .spec который включен в приведенный выше .src.rpm . Вы делаете это с помощью следующих команд.

     $ mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp} 

    Затем создайте файл ~/.rpmmacros .

     %packager Your Name %_topdir /home/YOUR HOME DIR/rpm %_tmppath /home/YOUR HOME DIR/rpm/tmp 

    Теперь мы готовы «установить» донора .src.rpm .

     $ rpm -ivh some.src.rpm 

    Это .spec tarball и файл .spec в ваши каталоги ~/rpm . Затем вы можете отредактировать этот файл .spec и заменить tarball на новый.

    Теперь, чтобы перестроить его:

     $ rpmbuild -ba ~/rpm/SPECS/some.spec 

    Это создаст файл .rpm и новый файл .src.rpm после его завершения.

    Дополнительные советы

    Вы можете использовать инструмент yum-builddep чтобы убедиться, что все необходимые RPM установлены до начала работы.

     $ sudo yum-builddep some.src.rpm 

    Путь установки достаточно просто найти. Большинство скриптов configure довольно стандартизированы, и обычно у них есть флаг -h который печатает справочное сообщение. Посмотрите на git's:

     $ ./configure -h | grep -A 2 Insta Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] 

    Таким образом, вы установили curl используя --prefix=/home/downloads/curl и он был обнаружен git с помощью --with-curl=/home/downloads/curl . Поэтому, если вы установили в местоположения по умолчанию, вы должны были бы запустить --with-curl=/usr/local/ .

    Что касается других возможных проблем, не знаю. Вы пересечете этот мост, когда вы доберетесь до него.


    В более общем примечании, я рекомендую вам попробовать найти пакеты RPM перед установкой из источника. Вам не нужно yum для установки пакетов RPM, вы можете просто сделать:

     rpm -i rpmfile.rpm 

    Я нашел RHEL 6 RPM для git и curl на rpm.pbone.net . Не удалось найти RHEL 6 для expat но были разные для Fedora и CentOS, один из них, вероятно, сработает и для вас.

    Ответ 1. Путь установки дополнительных пакетов зависит от того, как они установлены. Если вы установите их как admin, они должны быть установлены в стандартные /usr или /usr/share места. Место, которое уже находится на пути к системе. Вы можете найти это из config.log или других журналов, оставленных скриптом configure. Кроме того, некоторые администраторы могут выбрать установку этих пакетов в каталог /opt который обозначает «дополнительные пакеты». Однако, если вы устанавливаете их как смертный пользователь, вы можете установить их в любом месте, где есть доступ на запись, скорее всего, ваш /home . Обычно я использую такое местоположение, как /home/myname/curl-install .

    Interesting Posts

    Прочитать команду интерактивно в цикле for

    Как заменить IP на определенную линию

    Утилита быстрых клавиш Linux Mint ограничивает определенные комбинации клавиш

    Automounts: все монтируются и не будут монтироваться самостоятельно

    запустить программу .jar для чтения из 2-х файлов и вычислить результат в другом файле

    Как сделать терминал без ключа независимым?

    Ошибка при загрузке общих библиотек при установке сервера каталогов Redhat

    Как настроить онлайн-сервер SVN на моем ноутбуке

    Почему я не могу удалить файл, когда у меня есть права на файл?

    Ограничение длины имени пользователя Linux / Unix

    При установке разделов Windows с использованием cifs появляется сообщение «Ошибка: 13 (Permission denied)»

    PPTP-сервер с псевдонимами NIC

    Почему мой bash не включает в себя интерактивный флаг для этого скрипта?

    Redhat Linux: как узнать мою конфигурацию системы?

    «Ip route get» показывает неправильный IP-адрес источника

    Linux и Unix - лучшая ОС в мире.