The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.33, opennews (ok), 02-Мрт-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Выпуск языка программирования Rust 1.33"  –5 +/
Сообщение от Xasd (ok), 02-Мрт-19, 13:17 
> Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.

а можно попросить cargo собрать проект (с учётом всех зависимостей) -- но сказать ему чтобы он НЕ скачивал бы ни чего из сети (ни в коем случае!)? сказать чтобы вообще не пытался бы лесть в интернет (своими замечательными руками)?

то есть чтобы попробовал бы собрать из того что есть уже скаченного (очевидно нужно как-то указать на каталог где оно должно лежать скаченным) -- либо упасть с сообщением "ни чего не выйдет, запчастей не хватает! требуемые запчасти это РУЛЬ и КОЛЁСА, остальное всё пока-что кажется будто бы хватает"

# P.S.: сорян, не пишу на Rast поэтому такие примитивные вопросы

# P.P.S.: то есть речь идёт о ситуации когда нужно организовать на 100% ПОВТОРЯЕМЫЙ результат сборки, в независимости от того на каких компьютерах есть или нет интернета или какие-там-ip-адреса доступны/недоступны на каком-из-компьютеров (или автор пакета решил что-то удалить своего из сети, обидившись на свою жену).

> позволяющий получить нужные для программы библиотеки в один клик

подразумевается что просьба "не лезь в интернет" тоже хотелось бы в один клик :-)

Ответить | Правка | Наверх | Cообщить модератору

3. "Выпуск языка программирования Rust 1.33"  +6 +/
Сообщение от Инна Друзь (?), 02-Мрт-19, 13:26 
cargo build --frozen
Ответить | Правка | Наверх | Cообщить модератору

5. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Xasd (ok), 02-Мрт-19, 13:36 
> cargo build --frozen

судя по описанию похоже на то что надо :-) ..

а путь к РУЛЮ и КОЛЁСАМ указывать-то можно?

Ответить | Правка | Наверх | Cообщить модератору

4. "Выпуск языка программирования Rust 1.33"  +/
Сообщение от Ordu (ok), 02-Мрт-19, 13:33 
Да, можно. В депендансах надо прописать что-то типа:

[dependencies]
my-crate = { path="../my-crate" }

Или можно попробовать через git:
[dependencies]
my-crate = { git="бла-бла-бла/", tag="v1.0" }

Я сам не пробовал так, в примерах везде вместо "бла-бла-бла" ссылки, но подозреваю, что туда подставить путь к директории где git-реп лежит, то оно сработает: cargo склонирует оттуда нужную ревизию, и соберёт её.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

6. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Xasd (ok), 02-Мрт-19, 13:40 
> Да, можно. В депендансах надо прописать что-то типа:
> [dependencies]
> my-crate = { path="../my-crate" }
> Или можно попробовать через git:
> [dependencies]
> my-crate = { git="бла-бла-бла/", tag="v1.0" }

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

можно только лишь командовать СНАРУЖИ всем этим :-)

то есть предполагаем что проект уже есть (изготовленный традиционным способом) а не с расчётом на offline-сборку, а теперь мы хотим его собрать, но при этои не давая cargo шанса залесть в сеть.

> Я сам не пробовал так, в примерах везде вместо "бла-бла-бла" ссылки, но подозреваю, что туда подставить путь к директории где git-реп лежит, то оно сработает: cargo склонирует оттуда нужную ревизию, и соберёт её.

так ли я понял что вобщем судя по всему -- нужно создать локальный репозиторий и всё накопировать туда?

а при сборке cargo -- сказать ему что-то типа "используй вот этот конфигурационный файл (вместо обычного конфигурационного файла)! а в конфигурационном файле лежат уже ссылки на локальный репозиторий" -- так?

или может не репозиторий а какой-то индивидуальный каталог кэша можно сделать? чтобы возиться поменьше, но получить сходный результат

Ответить | Правка | Наверх | Cообщить модератору

9. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Ordu (ok), 02-Мрт-19, 13:52 
> так ли я понял что вобщем судя по всему -- нужно создать локальный репозиторий и всё накопировать туда?

Не. Это если я сделал git clone https://github.com/.../my-crate, а потом cargo берёт этот my-crate не с github'а, а из этого локального клона репа.

> или может не репозиторий а какой-то индивидуальный каталог кэша можно сделать? чтобы возиться поменьше, но получить сходный результат

У cargo при этом есть какая-то переменная окружения, которая рулит тем, куда он скачивает пакеты. Он по умолчанию складывает их в ~/.cargo, но можно складывать их куда угодно.

А если потом использовать --frozen, то он больше не будет скачивать.

Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Xasd (ok), 02-Мрт-19, 14:10 
> Он по умолчанию складывает их в ~/.cargo, но можно складывать их куда угодно.

ну эт переменная по сути CARGO_HOME , тут понятно..

> А если потом использовать --frozen, то он больше не будет скачивать.

следовательно для того чтобы весь пазл сошёлся -- нужна ещё какая-то (какая?) инсталляционная cargo-команда которая бы взала бы исходный код пакета-зависимости (пакет-зависимость -- уже заведомо скаченный своим путём в ОБХОД cargo.. то есть это НЕ cargo fetch) и положила бы <что-то> в этот кэш ($CARGO_HOME/.cargo).

Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Ordu (ok), 02-Мрт-19, 14:33 
> нужна ещё cargo-команда которая бы собрала бы исходный код пакета-зависимости (пакет-зависимость -- уже заведомо скаченный МИМО cargo.. то есть это НЕ cargo fetch) и положила бы <что-то> в этот кэш ($CARGO_HOME/.cargo)

Эмм... То есть, ситуация примерно такая. Вчера, перед тем как лечь спать, ты скачал тарболл с офигенно нужным тебе пакетом. Когда же ты встал с утра, то прочитал в новостях, что CIA передралось с ФБР, а ФБР с китайцами, и кто-то из них, решил что crates.io -- это самое удачное место, через которое можно напихать бекдоров потенциальному противнику. В результате теперь все пакеты в интернете теперь содержат бекдоров больше, чем в них строк кода есть. Тебе тем не менее хочется собрать вчера скачанный тарболл (он был скачан до начала конфликта и поэтому без бекдоров), но скачивать ничего ты не намерен. И вопрос собственно: возможно ли это. При этом, есть ещё два условия: 1) в CARGO_HOME уже лежит куча пакетов, которые были выкачаны раньше, и возможно их достаточно; 2) модифицировать сорцы из тарболла или из CARGO_HOME нельзя. Так?

У меня нет ответа на такой вопрос. Я не знаю. Мне кажется, что это нельзя сделать, не ковыряя вручную того, что лежит в ~/.cargo. А может даже ковыряя не удастся.

Ответить | Правка | Наверх | Cообщить модератору

17. "Выпуск языка программирования Rust 1.33"  –1 +/
Сообщение от Xasd (ok), 02-Мрт-19, 14:59 
>[оверквотинг удален]
> ФБР, а ФБР с китайцами, и кто-то из них, решил что
> crates.io -- это самое удачное место, через которое можно напихать бекдоров
> потенциальному противнику. В результате теперь все пакеты в интернете теперь содержат
> бекдоров больше, чем в них строк кода есть. Тебе тем не
> менее хочется собрать вчера скачанный тарболл (он был скачан до начала
> конфликта и поэтому без бекдоров), но скачивать ничего ты не намерен.

не совсем -- подразумевается что сборка проектов происходит на разных компьютерах, в том числе на сборочных серверах без доступа к интернету (без доступа к сети).

а не на одном и том же (одном) компьютере.

но кроме того то что на сборочных серверах нет доступа к интернету (а на некоторых сборочных-серверах он есть) -- есть ещё и ВТОРОЕ требование -- нужна ещё и гарантия того что у мы ТОЧНО знаем все источники из которых компилировались зависимости к проектам (в том числе источники с модифицированным (нашими руками) исходным кодом зависимостей).

если мы модицифируем исходный-код какой-то-там-зависимости -- то следущий раз сборочный сервер во чтобы то ни стало -- должен собрать уже СООТВЕТСТВУЮЩУЮ версию проекта (проекта который использует эту зависимость).

то есть независимо там от номеров версий или ещё каких-там-сраных кэшэй -- проект всегда должен (на сборочном сервере) собираться ВСЕГДА ровно из того что указано в его сборочных скриптах.

(НАПРИМЕР: исходный код какой-то зависимости поменялся, а номер версии остался тем же самым? не важно -- это не должно ничего портить!)

на сборочных серверах -- всегда кэши очищаются (и доступа в интернет нет, который бы доставил им свежий кэш откуда-то из глубины "облака"). исходных код зависимостей доставлется до сборочных серверов -- через свои собственные каналы. причём именно исходный код, а не уже-какая-то-предкомпилированная хеератень.

и вот и требуется чтобы сборка происходила РОВНО из тех исходных кодов которые бы доставлялись бы до сборочных серверов. и не из какого другого места.

и как и раньше говорил: собираем не свою программу а обычную какую-то программу написанную в обычном стиле (НЕ расчитанную на offline-компиляцию).

> И вопрос собственно: возможно ли это. При этом, есть ещё два
> условия: 1) в CARGO_HOME уже лежит куча пакетов, которые были выкачаны
> раньше, и возможно их достаточно; 2) модифицировать сорцы из тарболла или
> из CARGO_HOME нельзя. Так?

ну тоесть на момент сборки (каждый раз перед сборкой) -- ни чего внутри $CARGO_HOME нет. для сборочного сервера -- каждая компиляция это как новая свежая система :-).

> модифицировать сорцы из тарболла или из CARGO_HOME нельзя. Так?

можно, но не желательно. судя из ответа я так понял -- это делать всё-таки придётся. а хотелось бы узнать можно ли это не делать.

> У меня нет ответа на такой вопрос. Я не знаю. Мне кажется,
> что это нельзя сделать, не ковыряя вручную того, что лежит в
> ~/.cargo. А может даже ковыряя не удастся.

жаль..

ну тогда может спасёт накладывание патча на Cargo.toml (Cargo.lock) каждый раз перед сборкой (через sed например)

то есть как ты ранее сказал -- "модифицировать сорцы из тарболла или из CARGO_HOME нельзя. Так?" -- отказаться от этого требования

Ответить | Правка | Наверх | Cообщить модератору

64. "Выпуск языка программирования Rust 1.33"  +/
Сообщение от Аноним (64), 02-Мрт-19, 22:24 
>ну тогда может спасёт накладывание патча на Cargo.toml (Cargo.lock) каждый раз перед сборкой >(через sed например)

Нет, спасет только чтение документации. Там все ваши хотелки расписаны по ключам.

Ответить | Правка | Наверх | Cообщить модератору

131. "Выпуск языка программирования Rust 1.33"  +/
Сообщение от Xasd5 (?), 04-Мрт-19, 01:00 
дай подсказку
Ответить | Правка | Наверх | Cообщить модератору

144. "Выпуск языка программирования Rust 1.33"  +/
Сообщение от Anon111 (?), 05-Мрт-19, 13:20 
работа на offline "Airplane" mode https://github.com/rust-lang/cargo/issues/4686 "почти закончена"
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

145. "Выпуск языка программирования Rust 1.33"  +/
Сообщение от Anon111 (?), 05-Мрт-19, 13:39 
https://hackmd.io/hetFa17jRem_aKBCukrjVg#Cargo
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру