LINUX.ORG.RU

Продолжаю искоренять интерпретаторы (тема номера «Перл»)

 , , ,


0

2

Итак, в этих ваших линуксах издавна полно всякой перловки: от красивых миниатюрных однострочников до полноценных программ. За долгое время использования перл оброс кучей полезных модулей, что делает его незаменимым инструментом для тех, кто не хочет углубляться в дебри, а просто писать маленькие работающие программы.
Итак, Perl — хороший язык, но вдруг левая пятка захотела удалить с конкретной системы. Вопросы: что отвалится? какие задачи станут невыполнимыми? какие трудности испытает пользователь?
Просьба пользователям разных дистров также отписать, есть ли в вашем дистрибутиве perl искаропки.

★★★★★
Ответ на: комментарий от router

Это был apt-get remove perl. А теперь другое кино:

root@rhea:~# apt-get remove perl perl-base 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
 ant : Зависит: default-jre-headless но он не будет установлен или
                       java2-runtime-headless или
                       java5-runtime-headless или
                       java6-runtime-headless
 fontconfig : Зависит: fontconfig-config но он не будет установлен
 gcj-4.6-jre-lib : Зависит: libgcj12 (>= 4.6.1-9) но он не будет установлен
 libenchant1c2a : Зависит: aspell-en но он не будет установлен или
                                  myspell-dictionary или
                                  aspell-dictionary или
                                  ispell-dictionary или
                                  hunspell-dictionary
 libfontconfig1 : Зависит: fontconfig-config (= 2.9.0-7.1) но он не будет установлен
 libpango1.0-0 : Зависит: libxft2 (> 2.1.1) но он не будет установлен
 libssl1.0.0 : Зависит: debconf (>= 0.5) но он не будет установлен или
                               debconf-2.0
 libxt6 : Зависит: libice6 (>= 1:1.0.0) но он не будет установлен
          Зависит: libsm6 но он не будет установлен
 mount : ПредЗависит: libblkid1 (>= 2.20.1) но он не будет установлен
         ПредЗависит: libmount1 (>= 2.20.1) но он не будет установлен
E: Ошибка, pkgProblemResolver::Resolve сгенерировал повреждённые пакеты. Это может быть вызвано отложенными (held) пакетами.

Спасибо derlafff за замечание.

router ★★★★★
()

У меня всё равно длиннее:

/*-*-linux-c-*--------------------------------------------------------
Copyright (C) 1991,1992 Linus Torvalds
Copyright 2007 rPath,Inc.-All Rights Reserved
Copyright 2009 Intel Corporation; author H. Peter Anvin
This file is part of the Linux kernel, and is made available under
the terms of the GNU General Public License version 2.
-----------------------------------------------------------------------*/
/*Main module for the real-mode kernel code*/
#include "boot.h"
struct boot_params boot_params __attribute__((aligned(16)));
char*HEAP=_end;
char*heap_end=_end;/*Default end of heap = no heap*/
/*Copy the header into the boot parameter block. Since this screws up the old-style
command line protocol, adjust by filling in the new-style command line pointer instead.*/
static void copy_boot_params(void){
	struct old_cmdline{u16 cl_magic;u16 cl_offset;};
	const struct old_cmdline*const oldcmd=(const struct old_cmdline*)OLD_CL_ADDRESS;
	BUILD_BUG_ON(sizeof boot_params!=4096);
	memcpy(&boot_params.hdr,&hdr,sizeof hdr);
	if(!boot_params.hdr.cmd_line_ptr&&oldcmd->cl_magic==OLD_CL_MAGIC){
		/*Old-style commandline protocol.*/
		u16 cmdline_seg;
		/*Figure out if the command line falls in the region of memory that an old
		kernel would have copied up to 0x90000...*/
		if(oldcmd->cl_offset<boot_params.hdr.setup_move_size)cmdline_seg=ds();
		else cmdline_seg=0x9000;
		boot_params.hdr.cmd_line_ptr=(cmdline_seg<<4)+oldcmd->cl_offset;
	}
}
/*Query the keyboard lock status as given by the BIOS, and set the keyboard repeat
rate to maximum. Unclear why the latter is done here; this might be possible to kill off as stale code.*/
static void keyboard_init(void){
	struct biosregs ireg,oreg;
	initregs(&ireg);
	ireg.ah=0x02;/*Get keyboard status*/
	intcall(0x16,&ireg,&oreg);
	boot_params.kbd_status=oreg.al;
	ireg.ax=0x0305;/*Set keyboard repeat rate*/
	intcall(0x16,&ireg,NULL);
}
/*Get Intel SpeedStep (IST) information.*/
static void query_ist(void){
	struct biosregs ireg,oreg;
	/*Some older BIOSes apparently crash on this call, so filter it from machines
	too old to have SpeedStep at all.*/
	if(cpu.level<6)return;
	initregs(&ireg);
	ireg.ax=0xe980;/*IST Support*/
	ireg.edx=0x47534943;/*Request value*/
	intcall(0x15,&ireg,&oreg);
	boot_params.ist_info.signature=oreg.eax;
	boot_params.ist_info.command=oreg.ebx;
	boot_params.ist_info.event=oreg.ecx;
	boot_params.ist_info.perf_level=oreg.edx;
}
/*Tell the BIOS what CPU mode we intend to run in.*/
static void set_bios_mode(void){
#ifdef CONFIG_X86_64
	struct biosregs ireg;
	initregs(&ireg);
	ireg.ax=0xec00;
	ireg.bx=2;
	intcall(0x15,&ireg,NULL);
#endif
}
static void init_heap(void){
	char*stack_end;
	if(boot_params.hdr.loadflags&CAN_USE_HEAP){
		asm("leal %P1(%%esp),%0":"=r"(stack_end):"i"(-STACK_SIZE));
		heap_end=(char*)((size_t)boot_params.hdr.heap_end_ptr+0x200);
		if(heap_end>stack_end)heap_end=stack_end;
	}else{
		/*Boot protocol 2.00 only, no heap available*/
		puts("WARNING: Ancient bootloader, some functionality may be limited!\n");
	}
}
void main(void){
	/*First, copy the boot header into the "zero page"*/
	copy_boot_params();
	/*Initialize the early-boot console*/
	console_init();
	if(cmdline_find_option_bool("debug"))puts("early console in setup code\n");
	/*End of heap check*/
	init_heap();
	/*Make sure we have all the proper CPU support*/
	if(validate_cpu()){puts("Unable to boot - please use a kernel appropriate for your CPU.\n");die();}
	/*Tell the BIOS what CPU mode we intend to run in.*/
	set_bios_mode();
	/*Detect memory layout*/
	detect_memory();
	/*Set keyboard repeat rate (why?) and query the lock flags*/
	keyboard_init();
	/*Query MCA information*/
	query_mca();
	/*Query Intel SpeedStep (IST) information*/
	query_ist();
	/*Query APM information*/
#if defined(CONFIG_APM)||defined(CONFIG_APM_MODULE)
	query_apm_bios();
#endif
	/*Query EDD information*/
#if defined(CONFIG_EDD)||defined(CONFIG_EDD_MODULE)
	query_edd();
#endif
	/*Set the video mode*/
	set_video();
	/*Do the last things and invoke protected mode*/
	go_to_protected_mode();
}

anonymous
()
Ответ на: комментарий от Spirit_of_Stallman

Не-не, я не искренне. Это чувство юмора у меня такое странное.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от toney

Было бы хорошо и Python искорнить

Обязательно искореню. Не так-то он глубоко сидит, если сравнивать с перлом.

CYB3R ★★★★★
() автор топика

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

shm13
()

Продолжаю искоренять интерпретаторы

ЛОР — фрики на все случаи жизни.

dmfd
()
Ответ на: комментарий от shm13

ох лол! глянул зависимости от перла - не хватило терминала. Зависят кеды(скоро снесу), хромиум, почемуто зависет sys-kernel/gentoo-sources-3.6.11 (неожиданность!), но почти все зависимости нестрогие - я думаю можно собрать систему и без перла.

shm13
()

На дебиане и производных, включая тумбу-юмбу, отвалятся dpkg и, соответственно, apt. И это бесит.

border-radius
()
Ответ на: комментарий от border-radius

Только осемблер, только борода.

anonymous
()
Ответ на: комментарий от CYB3R

Интерпретаторы с JIT-компиляцией тоже лесом пойдут? А на чём вменяемый софт писать? Неужели на компилируемых статических портянках? Или - чур меня - на шелле?

И да, из браузеров у тебя будет исключительно elinks/w3m/dillo? Браузеры ведь JSC/SpiderMonkey/V8 содержат, да и вообще браузерные движки - тоже "мерзкие интерпретаторы"...

border-radius
()
Ответ на: комментарий от border-radius

Ну, браузер, конечно, штука нужная, но не на сервере. Из языков с JIT-компиляцией — только Java, остальное — только Си (возможно, ещё плюсы, но без boost и qt).

CYB3R ★★★★★
() автор топика
Последнее исправление: CYB3R (всего исправлений: 1)

Ну здрасьте приехали. Понимаю там Пистон кому то жить мешает, но перл то чем насолил? Не пентиум2 мэйнстрим сейчас, чтобы выкидывать все пакеты, даже нужные, в целях познать некий дзен, понятный одному человеку. Или я не прав?

Кстати да, закопал бы лучше яву и флэш, вот уж действительно ненужное решето.

SjZ ★★★★★
()
Последнее исправление: SjZ (всего исправлений: 1)

git тянет перл - я плакать.
В арче например перл в базовом пакете, поэтому, видать, многовато от него зависит.

actics
()
Ответ на: комментарий от CYB3R

Ты же вроде изначально не под сервер задачу ставил.
Хотя если совсем упороться, то и под сервер, и под клиент можно одним JS обойтись. Сервер - nodejs или soupserver, а клиент - браузер либо GTK3-приложения на Gjs.

border-radius
()
Ответ на: комментарий от actics

в генте все так?

Так, это как? Где-то нестрого, но бывают и строгие зависимости, если они необходимы для работы софта. Если что-то не нужно, можно попробовать выпилить самому, написать ebuild, но руки, желательно, чтобы росли из правильного места.

iVS ★★★★★
()
Ответ на: комментарий от CYB3R

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

P.S. Жабы всякие ненужнее даже перла, инфа 100%.

border-radius
()
Ответ на: комментарий от iVS

ну я позавчера из под арча из стайдж3 поставил себе. пока только ядро собрал с genkernel, ибо совершенно не было времени ничего читать. /home и /boot из арча, новый раздел под рута создал. на все провсе потратил меньше часа (без времени сборки). прописал граб все взлетело, в систему загрузился.
У меня сегодня экзамен, сдам - будет время разобраться в ядре и вообще в фичах генты, не сдам - пойду в армейку. Такие дела)
На самом деле я не сильно понял, чего там неосиливать. Меня куда больше интересует как готовить слаку, ибо по описаниям везде у меня создалось впечатление, что слака - это лфс, только в 2 раза более бессмысленное и беспощадное.

actics
()
Ответ на: комментарий от iVS

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

actics
()
Ответ на: комментарий от CYB3R

даже если я выкину, он останется нужен миллионам пользователей, так что незачем

lazyklimm ★★★★★
()
Ответ на: комментарий от CYB3R

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

border-radius
()
Ответ на: комментарий от border-radius

Есть mozilla-dfb. Это делает ненужным всякие оконные менеджеры и прочие ненужности — всё можно сделать в браузере (тут я вдохновился конфигурялкой SliTaz), геморроя сильно меньше.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от border-radius

Ну, поддержка HTML5 сейчас везде примерно одинаковая. Есть определённые киллер-фичи, которые имеет один браузер, а другой поддерживает только с префиксом или вообще не поддерживает.
Например, эти страшные фильтры. Firefox уже давно (с 3.6, если не ошибаюсь) поддерживает нормальные svg-фильтры, а Webkit только определённый набор, которые кастует по именам hue-rotate, grayscale, sepia, blur и т.д.
Другое дело — зависимости. У mozilla-dfb в их списке числится gtk-dfb.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Например, эти страшные фильтры. Firefox уже давно (с 3.6, если не ошибаюсь) поддерживает нормальные svg-фильтры, а Webkit только определённый набор, которые кастует по именам hue-rotate, grayscale, sepia, blur и т.д.

Что не мешает ему одновременно поддерживать и SVG-фильтры наряду с CSS3-фильтрами. А вот в геко пока что только SVG.

У mozilla-dfb в их списке числится gtk-dfb.

Вот. А у WebkitDFB - только Cairo, да и та опционально.

border-radius
()
Ответ на: комментарий от border-radius

Эммм... Сильно ухожу от темы, но вот стандарт. Эти предефайны — чисто вебкитовское изобретение, к W3C никакого отношения не имеет.

CYB3R ★★★★★
() автор топика

искоренять интерпретаторы
Perl

/0

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.