Автор Тема: [РЕШЕНО] Изменение путей установки в deb пакетах  (Прочитано 3175 раз)

PINK FLOYD

  • Ветеран
  • *****
  • Сообщений: 658
  • Карма: +48/-5
  • деГенерация... Процесс пошёл...
    • Просмотр профиля
Если вопрос обсуждался, киньте ссылку. Вот мои данные
Диск /dev/sda: 500.1 ГБ, 500107862016 байт
255 heads, 63 sectors/track, 60801 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00076b3c

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1       32223   258828801    7  HPFS/NTFS
/dev/sda2           32223       55065   183475200    7  HPFS/NTFS
/dev/sda3           55065       60802    46081025    5  Расширенный
/dev/sda5           55065       56977    15360000   83  Linux
/dev/sda6           56977       60164    25600000   83  Linux
/dev/sda7           60165       60802     5118976   82  Linux своп / Solaris

Чтоб удобнее было смотреть на размеры и всё остальное ещё вот так:
Partition: ID:/ size: 15G used: 13G (92%) fs: ext4 dev: /dev/sda5 uuid: 1225993e-aba9-449e-97f4-dcf14a7415a7
           ID:/home size: 25G used: 2.2G (10%) fs: ext4 dev: /dev/sda6 uuid: 05a95ec2-46b1-401b-a7ea-42209579fda9
           ID:/media/Разное size: 175G used: 101G (58%) fs: fuseblk dev: /dev/sda2 uuid: A07C0FC67C0F9666
           ID:/media/System size: 247G used: 126G (51%) fs: fuseblk dev: /dev/sda1 uuid: 4AC822CBC822B4DB
           ID:swap-1 size: 5.24GB used: 0.00GB (0%) fs: swap dev: /dev/sda7 uuid: ba4d0ea9-aef9-4a65-b4d5-744b6d403a79

Теперь вопрос. Решил установить игру, и место выделенное под файловую систему растаяло, как масло на сковородке. Пытался увеличить размер через LiveCD, в Gpart так не возможно внутрь расширенного раздела прикрутить извне ни мегабайта. Только снос всего расширенного раздела и разметка по новой. Неужели ничего нельзя сделать? Или есть возможность "заставить" программу ставиться в нужное мне место? Например перепаковать пакеты и везде вместо /usr/local/ указать ~/game
=====
Хотел сегодня установить игру - но ставится она как назло только по путям уже прописанным в пакетах и изменить их при установке нельзя. А ставилась она именно туда - где не было места, таким образом мне было необходимо, что установка прошла в нужное мне место.

Единственный выход - это перепаковать deb пакет. Т.к. Я сам новичок думаю мой объяснение будет понятно.
Создаём папку в которой будем работать, например
mkdir ~/tmp
Закидываем в эту папку нужный нам deb пакет и создаём там ещё одну папку, например с именем programm
mkdir ~/tmp/programm
Теперь нам необходимо распаковать наш deb пакет в эту папку, делается это так:
dpkg -x ~/tmp/programm.deb ~/tmp/programm
Теперь необходимо распаковать файл в котором описываются зависимости пакета, распаковать его необходимо в папку:
mkdir ~/tmp/programm/DEBIAN
dpkg -e ~/tmp/programm.deb ~/tmp/programm/DEBIAN

DEBIAN писать именно большими буквами.
Теперь в этой папке лежит файл с именем control. Если он там один - хорошо, ничего делать не надо. Если же есть в папке ещё исполняемые скрипты пути в них так же необходимо подправить, как именно скажу немного ниже.

Итак: файлы пакета мы распаковали, файл зависимостей тоже. Теперь нам необходимо выбрать место для установки программы. Делается это так. Папка ~/tmp/programm в данном случае считается корнем, как / (говоря проще - корнем всегда является та папка, в которой лежит папка DEBIAN, если это запомнить никогда не запутаешься ), и для того, чтобы выбрать место для установки папки достаточно положить наш распакованный пакет по нужному пути в импровизированном корне. Т.е. если нужно чтобы файл установился в /usr/bin нужно его поместить в каталог ~/tmp/programm/usr/bin. Ну соответственно если в /etc, то в ~/tmp/programm/etc и т.д. Теперь вам известен новый путь, по которому вы будете устанавливать вашу программу можно и подправить пути в скриптах в папке DEBIAN.

Создадим теперь папки, к которые нам необходимо установить наш будущий deb пакет:
mkdir -p ~/tmp/programm/usr/binпараметр -p говорит о том, что создаётся дерево папок, то есть для того, чтобы создать конечную папку, будут созданы все папки дерева папок. Это удобнее, чем заходить в каждую папку и создавать по-очереди папку в папке.

Переместим теперь наши распакованные данные из deb пакета (а распаковывали мы их сюда ~/tmp/programm) из "коренной папки" в папку, в которую установится наш пакет.
mv ~/tmp/programm/some_unpack_deb_package ~/tmp/programm/usr/bin
Теперь посмотрим, что получилось.
Расположение файла control
~/tmp/programm/DEBIAN/control

Расположение нашего будущего пакета, который уже лежит в той папке, куда мы его хотим установить:
~/tmp/programm/usr/bin/some_unpack_deb_package
Заметьте - папка DEBIAN остаётся в "корне", а распакованный пакет some_unpack_deb_package лежит в той папке, куда он будет установлен.

Теперь соберём наш пакет обратно:
dpkg -b ~/tmp/programm ~/tmp/programm_new.deb
Теперь можете запускать ваш новый пакет двойным кликом или в терминале
dpkg -i ~/tmp/programm_new.debи если вы всё сделали правильно, то программа установится без ошибок. Если же ошибки, значит ошиблись где-то в зависимостях. Чаще всего это бывает со скриптами в папке DEBIAN, намучился я сегодня с ними с непривычки. Если в папке DEBIAN нет сценариев, то пакет установится без ошибок с первого раза.
« Последнее редактирование: 17 Февраль 2012, 15:30:09 от Azure »

Большая победа приходит не после серии маленьких побед, она приходит после большого поражения.

Slen

  • Старожил
  • ****
  • Сообщений: 380
  • Карма: +39/-5
    • Просмотр профиля
    • Росинка ВКонтакте
Re: перепаковка deb пакетов [решение]
« Ответ #1 : 17 Февраль 2012, 02:25:57 »
Сборка ПО и создание .deb-пакетов из исходников в Debian-системах (Ubuntu)

Ссылка
« Последнее редактирование: 17 Февраль 2012, 02:55:11 от Slen »

PINK FLOYD

  • Ветеран
  • *****
  • Сообщений: 658
  • Карма: +48/-5
  • деГенерация... Процесс пошёл...
    • Просмотр профиля
Re: перепаковка deb пакетов [решение]
« Ответ #2 : 17 Февраль 2012, 07:32:27 »
Как выяснилось не все могут пользоваться поиском, плюс по не понятным причинам новичков учат вызывать терминал через меню или по горячим клавишам, и в терминале всегда оказываешься в домашней папке, а ходить по папкам или открыть терминал в текущей папке они не могут. Очень часто вижу как говорят "запустил терминал пишу sudo sh ./programm.run - и пишет файл не найден! Как быть?!" Здесь же я пути прописал так, что команды можно выполнять в терминале из любого места и практически все операции можно делать не выходя из терминала.
И расписал я всё так, чтоб было понятно новичку, а не в трёх строчках как в других мануалах.
« Последнее редактирование: 17 Февраль 2012, 10:36:36 от PINK FLOYD »

Большая победа приходит не после серии маленьких побед, она приходит после большого поражения.